Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
292 commits
Select commit Hold shift + click to select a range
7e0a34c
docs(03-03): complete Tier 2/3 trust tiers plan
JakeHartnell Mar 25, 2026
7c30962
Update skill
JakeHartnell Mar 25, 2026
3aa4037
embed agent sidebar directly in in WAVS app
noahsaso Apr 3, 2026
ed6a5b9
updated wavs-mcp component scaffold logic, support new standalone mod…
noahsaso Apr 4, 2026
ff7acf0
coerce bool and number into strings for MCP tool JSON parsing
noahsaso Apr 4, 2026
8fe36c2
add app services page auto refresh
noahsaso Apr 4, 2026
059ca2e
streamline dev tools to prevent agent mistakes
noahsaso Apr 4, 2026
1cec35a
added hint to use ui_open_service to navigate to created service
noahsaso Apr 4, 2026
62f81d5
improve ui navigation tool, and encourage agent to navigate to servic…
noahsaso Apr 4, 2026
c8c8aee
update skill instructions to encourage navigating to service immediately
noahsaso Apr 4, 2026
9026d2d
docs(04): auto-generated context (infrastructure phase)
JakeHartnell Apr 7, 2026
7bdd76c
docs(04): research phase rust event foundation
JakeHartnell Apr 7, 2026
a5e0005
docs(04): create phase plan for rust event foundation
JakeHartnell Apr 7, 2026
57baf27
docs(04): plans verified, ready to execute
JakeHartnell Apr 7, 2026
bdf8413
feat(04-01): add correlation_id to TriggerAction and update all const…
JakeHartnell Apr 7, 2026
033b0bb
feat(04-01): add SubmissionFailed event path and carry correlation_id…
JakeHartnell Apr 7, 2026
a36a9f6
feat(04-01): mirror Rust event changes in TypeScript types and Tauri …
JakeHartnell Apr 7, 2026
b8f3bff
docs(04-01): complete plan summary for correlation_id and SubmissionF…
JakeHartnell Apr 7, 2026
765e39c
docs(04): phase complete — verification passed, roadmap updated
JakeHartnell Apr 7, 2026
2cd10ad
docs: add Phase 5 (Settings Decomposition) and Phase 6 (Unified Activ…
JakeHartnell Apr 7, 2026
494381b
docs(05): smart discuss context
JakeHartnell Apr 7, 2026
4849189
docs(05): UI design contract for settings decomposition
JakeHartnell Apr 7, 2026
59a2233
docs(05): UI design contract approved
JakeHartnell Apr 7, 2026
9a0bcc8
docs(05): research settings decomposition phase
JakeHartnell Apr 7, 2026
b92096b
docs(05): create phase plan for settings decomposition
JakeHartnell Apr 7, 2026
604dad9
docs(05): plans verified, ready to execute (2 plans, 2 waves)
JakeHartnell Apr 7, 2026
f3a74f0
feat(05-01): create SettingsSidebar component with SectionKey type
JakeHartnell Apr 7, 2026
2c0e279
feat(05-01): extract WalletSection, NodeSection, and EnvironmentSecti…
JakeHartnell Apr 7, 2026
f14c6f1
feat(05-01): rewrite Settings.tsx as sidebar-navigated orchestrating …
JakeHartnell Apr 7, 2026
cc881cf
docs(05-01): complete settings sidebar layout and section extraction …
JakeHartnell Apr 7, 2026
aee74f0
feat(05-02): extract AgentSection, McpSection, ResetSection; finalize…
JakeHartnell Apr 7, 2026
a9c6b3e
docs(05-02): complete settings decomposition plan summary
JakeHartnell Apr 7, 2026
1443768
test(05): persist human verification items as UAT
JakeHartnell Apr 7, 2026
f8fa9ed
docs(05): phase complete — settings decomposition done, human validat…
JakeHartnell Apr 7, 2026
a696846
docs(06): smart discuss context
JakeHartnell Apr 7, 2026
9f10a4f
docs(06): UI design contract
JakeHartnell Apr 7, 2026
b8720c6
docs(06): UI design contract approved
JakeHartnell Apr 7, 2026
b143925
docs(06): research unified activity frontend phase
JakeHartnell Apr 7, 2026
ab1d08c
docs(06): create phase plan
JakeHartnell Apr 7, 2026
a751560
docs(06): plans verified, ready to execute (2 plans, 2 waves)
JakeHartnell Apr 7, 2026
1db2422
feat(06-01): create useGroupedActivity hook with GroupedActivityEvent…
JakeHartnell Apr 7, 2026
be56461
feat(06-01): add ERR-02 eviction guard for failed events in appStore
JakeHartnell Apr 7, 2026
24bf1dd
docs(06-01): complete grouped activity data model plan
JakeHartnell Apr 7, 2026
938121d
feat(06-02): create GroupedActivityCard component with status dots an…
JakeHartnell Apr 7, 2026
3e17f3e
feat(06-02): refactor ActivityFeed with status filter tabs and groupe…
JakeHartnell Apr 7, 2026
c96a6e3
docs(06-02): complete unified activity frontend plan
JakeHartnell Apr 7, 2026
9f83967
test(06): verification report
JakeHartnell Apr 7, 2026
09b60fa
docs(06): phase complete — unified activity frontend done, human vali…
JakeHartnell Apr 7, 2026
c0623d4
docs: milestone v1.0 audit report
JakeHartnell Apr 7, 2026
8704e68
chore: complete v1.0 milestone — archive, evolve PROJECT.md, reorgani…
JakeHartnell Apr 7, 2026
d73de8a
docs: start milestone v1.1 Open Source AI Providers & Settings UX
JakeHartnell Apr 8, 2026
8e8dae4
docs: complete project research
JakeHartnell Apr 8, 2026
a236679
docs: complete project research
JakeHartnell Apr 8, 2026
98655a3
docs: define milestone v1.1 requirements
JakeHartnell Apr 8, 2026
e036c1a
docs: create milestone v1.1 roadmap (3 phases)
JakeHartnell Apr 8, 2026
d404d66
docs(07): smart discuss context
JakeHartnell Apr 8, 2026
37f7200
docs(07): research Groq & OpenRouter providers phase
JakeHartnell Apr 8, 2026
a21cfac
docs(07): create phase plan for Groq & OpenRouter providers
JakeHartnell Apr 8, 2026
ca2ef45
feat(07-01): add Groq and OpenRouter to agent provider dropdown
JakeHartnell Apr 8, 2026
3ab2b95
feat(07-01): read saved provider/model from settings.json at sidecar …
JakeHartnell Apr 8, 2026
48ea9ee
docs(07-01): complete Groq/OpenRouter provider plan summary
JakeHartnell Apr 8, 2026
92e05b3
docs(07-01): mark plan complete after human-verify approval
JakeHartnell Apr 8, 2026
f4d049e
fix(07-01): restore Groq/OpenRouter code reverted by continuation agent
JakeHartnell Apr 8, 2026
ecf8dfc
docs(phase-07): complete phase execution
JakeHartnell Apr 8, 2026
f61cd47
docs(08): smart discuss context
JakeHartnell Apr 8, 2026
00257d0
docs(08): research ollama provider phase
JakeHartnell Apr 8, 2026
8d41a56
docs(08): create phase plan for Ollama provider
JakeHartnell Apr 8, 2026
faacf66
feat(08-01): add Ollama to settings UI with conditional base URL field
JakeHartnell Apr 8, 2026
ddd0a72
feat(08-01): generate models.json in Rust and switch sidecar to Model…
JakeHartnell Apr 8, 2026
eff5551
docs(08-01): complete Ollama provider plan summary
JakeHartnell Apr 8, 2026
2a69f22
docs(08-01): complete Ollama provider plan - task 3 human verificatio…
JakeHartnell Apr 8, 2026
b24afcf
fix(08-01): restore source file changes accidentally reverted in summ…
JakeHartnell Apr 8, 2026
62634a0
docs(phase-08): complete phase execution
JakeHartnell Apr 8, 2026
9c5cf93
docs(09): smart discuss context
JakeHartnell Apr 8, 2026
ce55c0f
docs(09): create phase plan for settings scroll refactor
JakeHartnell Apr 8, 2026
621370b
feat(09-01): render all settings sections unconditionally with IDs, h…
JakeHartnell Apr 8, 2026
0c6b7cd
feat(09-01): wire IntersectionObserver scroll tracking and sidebar sc…
JakeHartnell Apr 8, 2026
d7d86dc
docs(09-01): complete settings scroll refactor plan summary
JakeHartnell Apr 8, 2026
de3297f
docs(phase-09): complete phase execution
JakeHartnell Apr 8, 2026
7d17cdc
fix(08): add agent_base_url to appStore initial state
JakeHartnell Apr 8, 2026
5daecaf
docs(v1.1): milestone audit
JakeHartnell Apr 8, 2026
4790faa
chore: complete v1.1 milestone — Open Source AI Providers & Settings UX
JakeHartnell Apr 8, 2026
82603e4
chore: archive phase directories from completed milestones
JakeHartnell Apr 8, 2026
7303053
fix: use optimistic local state in AgentSection form fields
JakeHartnell Apr 8, 2026
995a0f9
Complete new UI milestone
JakeHartnell Apr 8, 2026
6440d49
docs: start milestone v1.2 Components Explorer
JakeHartnell Apr 8, 2026
08ad6bd
docs: define milestone v1.2 requirements
JakeHartnell Apr 8, 2026
424d810
docs: create milestone v1.2 roadmap (3 phases)
JakeHartnell Apr 8, 2026
da6da46
docs(10): smart discuss context
JakeHartnell Apr 8, 2026
3a01765
docs(10): research phase backend commands
JakeHartnell Apr 8, 2026
a25b967
docs(10): create phase plan
JakeHartnell Apr 8, 2026
0b58287
docs(10): fix checker issues in plan and research
JakeHartnell Apr 8, 2026
2d5c01e
feat(10-01): add WasmEngine getters, wit-schema dep, and SchemaCacheS…
JakeHartnell Apr 8, 2026
7d5dff7
feat(10-01): implement cmd_get_component_schema and cmd_get_component…
JakeHartnell Apr 8, 2026
cbc08e2
docs(10-01): complete backend commands plan summary
JakeHartnell Apr 8, 2026
7a3e45e
fix(10): add wasmtime dependency to wavs crate for WasmEngine getter
JakeHartnell Apr 8, 2026
8f8cce3
docs(phase-10): complete phase execution
JakeHartnell Apr 8, 2026
569014a
docs(phase-10): evolve PROJECT.md after phase completion
JakeHartnell Apr 8, 2026
3f6397a
docs(11): smart discuss context
JakeHartnell Apr 8, 2026
8462978
docs(phase-11): UI design contract for Component Detail Page
JakeHartnell Apr 8, 2026
54de016
docs(11): UI design contract
JakeHartnell Apr 8, 2026
d7b3957
docs(11): research component detail page phase
JakeHartnell Apr 8, 2026
db1faa9
docs(11): create phase plan for component detail page
JakeHartnell Apr 8, 2026
e31388d
docs(11): resolve open questions in RESEARCH.md
JakeHartnell Apr 8, 2026
59f3646
feat(11-01): add ComponentSourceResult types, command wrappers, and u…
JakeHartnell Apr 8, 2026
a898819
feat(11-01): create ComponentDetailPage with header card, tab shell, …
JakeHartnell Apr 8, 2026
4ae546d
docs(11-01): complete component detail page foundation plan summary
JakeHartnell Apr 8, 2026
e0e63a8
feat(11-02): implement Interface, Permissions, and Configuration tab …
JakeHartnell Apr 8, 2026
883f096
docs(11-02): complete tab content sections plan summary
JakeHartnell Apr 8, 2026
9498ef2
docs(phase-11): complete phase execution
JakeHartnell Apr 8, 2026
3dbc215
docs(phase-11): evolve PROJECT.md after phase completion
JakeHartnell Apr 8, 2026
ded5007
docs(12): smart discuss context
JakeHartnell Apr 8, 2026
696b1e0
docs(phase-12): UI design contract for Components List Page
JakeHartnell Apr 8, 2026
7b7897a
docs(12): UI design contract
JakeHartnell Apr 8, 2026
7b82b9d
docs(12): research components list page phase
JakeHartnell Apr 8, 2026
4ceae6b
docs(12): create phase plan
JakeHartnell Apr 8, 2026
70419dd
feat(12-01): enhance ComponentsPage with rich cards, search, and filter
JakeHartnell Apr 8, 2026
804cde6
docs(12-01): complete components list page plan summary
JakeHartnell Apr 8, 2026
40cfc71
docs(phase-12): complete phase execution
JakeHartnell Apr 8, 2026
3a40894
docs(phase-12): evolve PROJECT.md after phase completion
JakeHartnell Apr 8, 2026
30fed11
docs(v1.2): milestone audit
JakeHartnell Apr 8, 2026
c51655d
chore: complete v1.2 milestone
JakeHartnell Apr 8, 2026
c34456a
fix: resolve SchemaCacheState conflicting Default and add McpServerSt…
JakeHartnell Apr 9, 2026
4c0d1d1
Complete milestone
JakeHartnell Apr 9, 2026
08646e8
docs: start milestone v1.3 Activity UX & Bug Fixes
JakeHartnell Apr 9, 2026
86d26cc
docs: define milestone v1.3 requirements
JakeHartnell Apr 9, 2026
f9a3b8d
docs: create milestone v1.3 roadmap (4 phases)
JakeHartnell Apr 9, 2026
987f407
docs(13): auto-generated context (infrastructure phase)
JakeHartnell Apr 9, 2026
58c30dd
docs(13): create phase plan
JakeHartnell Apr 9, 2026
3e9295d
feat(13-01): add tx_hash and result_payload to Rust pipeline
JakeHartnell Apr 9, 2026
9c933d9
feat(13-01): update TypeScript interfaces and listeners for new fields
JakeHartnell Apr 9, 2026
1ff651b
docs(13-01): complete activity backend pipeline plan summary
JakeHartnell Apr 9, 2026
1df7083
docs(phase-13): complete phase execution
JakeHartnell Apr 9, 2026
91603f8
docs(phase-13): evolve PROJECT.md after phase completion
JakeHartnell Apr 9, 2026
704bc00
docs(14): smart discuss context
JakeHartnell Apr 9, 2026
559660e
docs(14): UI design contract
JakeHartnell Apr 9, 2026
6f01cd0
docs(14): fix UI-SPEC typography weights and add focal point declaration
JakeHartnell Apr 9, 2026
5cfec63
docs(14): research activity frontend UX phase
JakeHartnell Apr 9, 2026
27e8efd
docs(14): create phase plan
JakeHartnell Apr 9, 2026
89b7af2
feat(14-01): add decodeResultPayload utility
JakeHartnell Apr 9, 2026
d4a3f2e
feat(14-01): add SubmissionRows inline display to activity cards
JakeHartnell Apr 9, 2026
434b6d5
docs(14-01): complete activity frontend UX plan summary
JakeHartnell Apr 9, 2026
4f1f5e5
docs(phase-14): complete phase execution
JakeHartnell Apr 9, 2026
ff156fb
docs(phase-14): evolve PROJECT.md after phase completion
JakeHartnell Apr 9, 2026
aa194d5
docs(15): auto-generated context (infrastructure phase)
JakeHartnell Apr 9, 2026
c9d7d26
docs(15): research service restart reliability phase
JakeHartnell Apr 9, 2026
55c0ecb
docs(15): create phase plan
JakeHartnell Apr 9, 2026
cf4088c
feat(15-01): add pending EVM subscription queue to trigger watcher
JakeHartnell Apr 9, 2026
970a217
test(15-01): add regression tests for pending EVM subscription queue
JakeHartnell Apr 9, 2026
02e4664
docs(15-01): complete service restart reliability plan
JakeHartnell Apr 9, 2026
945e296
docs(phase-15): complete phase execution
JakeHartnell Apr 9, 2026
7d2aa6f
docs(phase-15): evolve PROJECT.md after phase completion
JakeHartnell Apr 9, 2026
e977eca
docs(16): smart discuss context
JakeHartnell Apr 9, 2026
cf7f573
docs(16): create phase plan
JakeHartnell Apr 9, 2026
0e74c7b
feat(16-01): add kebab dropdown menu to wallet card header
JakeHartnell Apr 9, 2026
8c108fe
docs(16-01): complete wallet kebab menu plan summary
JakeHartnell Apr 9, 2026
48a7ab8
docs(phase-16): complete phase execution
JakeHartnell Apr 9, 2026
167e717
docs(phase-16): evolve PROJECT.md after phase completion
JakeHartnell Apr 9, 2026
930c424
docs(v1.3): milestone audit
JakeHartnell Apr 9, 2026
f13a6a4
chore: complete v1.3 milestone
JakeHartnell Apr 9, 2026
b21597d
Better activity cards
JakeHartnell Apr 14, 2026
4385bca
update
JakeHartnell Apr 20, 2026
678a5c6
docs: start milestone v2.0 Agent Runtime
JakeHartnell Apr 20, 2026
dc14588
docs: complete project research
JakeHartnell Apr 20, 2026
dec8497
docs: define milestone v2.0 requirements
JakeHartnell Apr 20, 2026
aa608ce
docs: create milestone v2.0 roadmap (3 phases)
JakeHartnell Apr 20, 2026
cd3b2f0
docs(17): capture phase context
JakeHartnell Apr 20, 2026
6addfa5
docs(state): record phase 17 context session
JakeHartnell Apr 20, 2026
c18f1eb
docs(phase-17): research rig-wasi fork for wasm32-wasip2
JakeHartnell Apr 20, 2026
6d0f007
docs(17): create phase plan for rig-wasi fork
JakeHartnell Apr 20, 2026
1bc8a9e
feat(17-01): add rig-wasi fork crate with rig-core 0.35.0 source
JakeHartnell Apr 20, 2026
7a01f42
docs(17-01): create FORK_BASIS.md upstream tracking document for rig-…
JakeHartnell Apr 20, 2026
1ba88f0
docs(17-01): complete rig-wasi fork scaffolding plan summary
JakeHartnell Apr 20, 2026
03fc97f
feat(17-02): apply WASI patches P1-P4 to rig-wasi fork + compile probe
JakeHartnell Apr 20, 2026
c16bdcf
fix(17-02): register compile-probe in workspace members
JakeHartnell Apr 20, 2026
199e79b
docs(17): update verification to passed after compile-probe fix
JakeHartnell Apr 20, 2026
2dd5646
docs(phase-17): complete phase execution — rig-wasi fork
JakeHartnell Apr 20, 2026
f40ab89
docs(18): smart discuss context for wavs-rig integration crate
JakeHartnell Apr 20, 2026
b9e1456
docs(phase-18): research wavs-rig integration crate
JakeHartnell Apr 20, 2026
f1815e4
docs(18): create phase plan for wavs-rig integration crate
JakeHartnell Apr 20, 2026
a51b4b7
docs(18-01): complete wavs-rig crate scaffold and WasiHttpClient plan…
JakeHartnell Apr 20, 2026
cea272e
feat(18-01): create wavs-rig crate with WasiHttpClient HTTP transport
JakeHartnell Apr 20, 2026
0a46886
feat(18-02): implement KvGetTool, KvSetTool, and LogTool
JakeHartnell Apr 20, 2026
ca6e00e
feat(18-02): implement HttpFetchTool and EvmQueryTool
JakeHartnell Apr 20, 2026
e7ca88f
docs(18-02): complete built-in WAVS tools plan summary
JakeHartnell Apr 20, 2026
81c831b
feat(18-02,18-03): implement tools, memory, agent shim, permission check
JakeHartnell Apr 20, 2026
da2f02f
docs(phase-18): complete phase execution — wavs-rig integration crate
JakeHartnell Apr 20, 2026
9f651e0
docs(19): smart discuss context for example agent & E2E validation
JakeHartnell Apr 20, 2026
8d924eb
docs(19): research phase 19 example agent & E2E validation
JakeHartnell Apr 20, 2026
1a223b3
docs(19): create phase plan for example agent E2E validation
JakeHartnell Apr 20, 2026
68b9d88
feat(19-01): create agent-example crate and register in workspace
JakeHartnell Apr 20, 2026
0c3b140
feat(19-01): implement agent-example component compiling to wasm32-wa…
JakeHartnell Apr 20, 2026
2bc641a
docs(19-01): complete agent-example component plan summary
JakeHartnell Apr 20, 2026
8949570
feat(19-02): create service.json and build agent-example WASM component
JakeHartnell Apr 20, 2026
778658f
docs(phase-19): complete phase execution — example agent & E2E valida…
JakeHartnell Apr 20, 2026
e5e8554
docs(v2.0): milestone audit — tech_debt status, 11/13 requirements sa…
JakeHartnell Apr 20, 2026
51582b8
chore: complete v2.0 Agent Runtime milestone
JakeHartnell Apr 20, 2026
7159ee2
docs: start milestone v3.0 Agent Composition
JakeHartnell Apr 22, 2026
642a7b5
docs: complete project research
JakeHartnell Apr 22, 2026
202b02c
docs: define milestone v3.0 requirements
JakeHartnell Apr 22, 2026
dbaefd9
docs: create milestone v3.0 roadmap (4 phases)
JakeHartnell Apr 22, 2026
8c24660
docs(20): auto-generated context (infrastructure phase)
JakeHartnell Apr 22, 2026
2b862e9
docs(phase-20): research WIT interface and types phase
JakeHartnell Apr 22, 2026
726e5ee
docs(20): create phase plan for WIT interface & types
JakeHartnell Apr 22, 2026
a4d62be
feat(20-01): add step-result variant, agent interface, and call-servi…
JakeHartnell Apr 22, 2026
c62db20
feat(20-01): add call_service stub to host.rs; verify both bindgen si…
JakeHartnell Apr 22, 2026
c0d1416
docs(20-01): complete WIT interface types plan — SUMMARY.md
JakeHartnell Apr 22, 2026
03106ed
feat(20-02): add AllowedServiceCalls enum and field to Permissions st…
JakeHartnell Apr 22, 2026
f6ebd0c
feat(20-02): add AllowedCallers enum, allowed_callers and max_continu…
JakeHartnell Apr 22, 2026
eb07089
docs(20-02): complete service config permission types plan
JakeHartnell Apr 22, 2026
45cb715
chore: merge executor worktree (worktree-agent-a5c37214)
JakeHartnell Apr 22, 2026
8da5fed
chore: restore .planning after worktree merge; keep 20-02 code changes
JakeHartnell Apr 22, 2026
d7bd6fd
fix(20): add missing field initializers for AllowedServiceCalls, Allo…
JakeHartnell Apr 22, 2026
032f118
docs(phase-20): complete phase 20 execution — WIT Interface & Types
JakeHartnell Apr 22, 2026
c90de0a
docs(21): auto-generated context (infrastructure phase)
JakeHartnell Apr 22, 2026
9d793dc
docs(21): research agent continuation engine phase
JakeHartnell Apr 22, 2026
63353b9
docs(21): create phase plan for agent continuation engine
JakeHartnell Apr 22, 2026
47b085b
docs(21): resolve open questions in RESEARCH.md, fix files_modified i…
JakeHartnell Apr 22, 2026
11a6cb2
feat(21-01): agent continuation loop with KV persistence, step limits…
JakeHartnell Apr 22, 2026
40daed5
feat(21-02): caller fixes, legacy world fallback, continuation integr…
JakeHartnell Apr 22, 2026
c63d648
docs(21): verification report — 3/5 verified, 2 deferred to Phase 23
JakeHartnell Apr 22, 2026
eedc8a0
docs(phase-21): complete phase 21 — Agent Continuation Engine
JakeHartnell Apr 22, 2026
ad35a6b
docs(22): auto-generated context (infrastructure phase)
JakeHartnell Apr 22, 2026
ca1b843
docs(22): research phase 22 service-to-service RPC
JakeHartnell Apr 22, 2026
429bcc3
docs(22): create phase plan for service-to-service RPC
JakeHartnell Apr 22, 2026
35f2215
docs(22-01): complete plan 01 — engine RPC infrastructure
JakeHartnell Apr 22, 2026
7085232
feat(22-01): wasmtime async feature + RpcCaller trait + error variants
JakeHartnell Apr 22, 2026
4381a6e
feat(22-01): async call_service + OperatorHostComponent RPC fields + …
JakeHartnell Apr 22, 2026
6e6b649
docs(22-01): plan summary
JakeHartnell Apr 22, 2026
5d67f60
feat(22-02): RpcCallerImpl + execute_operator_component_with_rpc + En…
JakeHartnell Apr 22, 2026
c0efef1
test(22-02): RPC unit tests for error formatting, cycle detection, de…
JakeHartnell Apr 22, 2026
86b3086
docs(22-02): complete plan 02 — RpcCallerImpl + callee permission enf…
JakeHartnell Apr 22, 2026
bd46da3
docs(22): verification passed — 4/4 must-haves verified
JakeHartnell Apr 22, 2026
cf4472c
docs(phase-22): complete phase 22 — Service-to-Service RPC
JakeHartnell Apr 22, 2026
270166a
docs(23): auto-generated context (infrastructure phase)
JakeHartnell Apr 22, 2026
d905988
docs(23): create phase plan
JakeHartnell Apr 22, 2026
0b8dfff
docs(23-01): complete plan 01 — export macro fix and multi-step-agent…
JakeHartnell Apr 23, 2026
d5884ab
feat(23-01): fix _helpers export macros — split legacy world and agen…
JakeHartnell Apr 22, 2026
949b4e8
feat(23-01): create multi-step-agent component and continuation_e2e i…
JakeHartnell Apr 23, 2026
ae074f5
feat(23-02): create utility-service and composition-agent components
JakeHartnell Apr 23, 2026
802c91a
feat(23-02): MockRpcCaller + rpc_e2e integration tests for E2E-05 and…
JakeHartnell Apr 23, 2026
da757ad
docs(23-02): complete plan 02 — utility-service, composition-agent, r…
JakeHartnell Apr 23, 2026
cd42b92
docs(23): verification report — 5.5/6 verified, live node items deferred
JakeHartnell Apr 23, 2026
6ad7e1c
docs(phase-23): complete phase 23 — Integration & Validation (last ph…
JakeHartnell Apr 23, 2026
685aefb
docs: v3.0 milestone audit — tech_debt status, 17/17 requirements sat…
JakeHartnell Apr 23, 2026
1bdddda
chore: complete v3.0 Agent Composition milestone
JakeHartnell Apr 23, 2026
dfe611a
fix: resolve Tauri app build errors — remove Oci variant, fix digest …
JakeHartnell Apr 23, 2026
4823e62
Lots of stuff...
JakeHartnell Apr 27, 2026
819407d
Show results
JakeHartnell Apr 28, 2026
6abe930
Save
JakeHartnell May 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 20 additions & 7 deletions .claude/skills/wavs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,18 @@ just setup-claude-mcp [/path/to/project]
just start-wavs-dev

# 2. Run wavs-mcp (in a separate terminal)
./target/release/wavs-mcp --wavs-url http://localhost:8000 --token <token>
./target/release/wavs-mcp --wavs-url http://localhost:8000 --token <token> \
--exec-enabled \
--signing-mnemonic "word1 word2 ... word12" \
--mcp-chain-credential "0x<private-key>"

# 3. Register with Claude Code
npx @wavs/mcp@latest
```

> **Local tools** (`scaffold_component`, `build_component`, `get_wit_interface`) work without MCP — useful for component development without a running node.
> **Execution tools** (`wavs_exec_*`) require `--exec-enabled`. Tier 2 (`signed_result`) also needs `--signing-mnemonic`. Tier 3 (`on_chain`) also needs `--mcp-chain-credential` and `exec_enabled: true` in the service definition. See [`flows/execution.md`](flows/execution.md).

> **Local tools** (`scaffold_component`, `build_component`, `validate_component`, `get_wit_interface`, `get_service_schema`) work without MCP — useful for component development without a running node.

---

Expand All @@ -57,6 +62,7 @@ npx @wavs/mcp@latest
| Build a new component from scratch | [`flows/component-dev.md`](flows/component-dev.md) |
| Deploy a new service with an on-chain contract | [`flows/deployment.md`](flows/deployment.md) |
| Update a deployed service with a new component | [`flows/update-service.md`](flows/update-service.md) |
| Execute a deployed service | [`flows/execution.md`](flows/execution.md) |

When in doubt, start with **component-dev** — it ends with a deployment step.

Expand All @@ -68,9 +74,10 @@ When in doubt, start with **component-dev** — it ends with a deployment step.
|----------|-------|---------------|
| **Read** | `get_node_info`, `get_health`, `list_services`, `get_service` | None |
| **Write** | `deploy_service`, `delete_service` | `--token` |
| **Dev** | `upload_component`, `save_service`, `simulate_trigger`, `deploy_dev_service`, `query_kv` | Dev endpoints enabled |
| **Chain-write** | `set_service_uri`, `deploy_service_manager`, `deploy_poa_service_manager`, `register_operator` | `WAVS_MCP_CHAIN_CREDENTIAL` env var |
| **Local** | `get_wit_interface`, `scaffold_component`, `build_component` | None |
| **Dev** | `upload_component`, `save_service`, `simulate_trigger`, `deploy_dev_service`, `query_kv`, `query_logs`, `query_component_logs` | Dev endpoints enabled |
| **Chain-write** | `set_service_uri`, `deploy_service_manager`, `deploy_poa_service_manager`, `register_operator`, `deploy_and_register` | `WAVS_MCP_CHAIN_CREDENTIAL` env var |
| **Local** | `get_service_schema`, `get_wit_interface`, `scaffold_component`, `build_component`, `validate_component` | None |
| **Execution** | `wavs_exec_*` (dynamic, one per deployed workflow) | `--exec-enabled`; Tier 2 needs `--signing-mnemonic`; Tier 3 needs `--mcp-chain-credential` + `exec_enabled: true` |

Full tool reference: [`reference/mcp-tools.md`](reference/mcp-tools.md)

Expand All @@ -90,12 +97,18 @@ The WAVS app "Register with Claude" button and `just setup-claude-mcp` write thi

Dev endpoints must be enabled in `wavs.toml` under `[wavs]`:
```toml
dev_endpoints_enabled = true # Required for upload, save, simulate, deploy_dev
dev_endpoints_enabled = true # Required for upload, save, simulate, deploy_dev, query_logs
```

The `exec_enabled` field in a service definition controls Tier 3 (on-chain) execution:
```json
{ "exec_enabled": true }
```
When omitted or `false`, only Tiers 1–2 are available for that service. See [`reference/service-json.md`](reference/service-json.md).

---

## Reference

- [`reference/mcp-tools.md`](reference/mcp-tools.md) — All 20 tools with auth requirements and parameter notes
- [`reference/mcp-tools.md`](reference/mcp-tools.md) — All 24+ tools with auth requirements and parameter notes (includes dynamic `wavs_exec_*`)
- [`reference/service-json.md`](reference/service-json.md) — Service/trigger JSON formats + simulate examples
164 changes: 128 additions & 36 deletions .claude/skills/wavs/flows/component-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,35 @@ Build, test, and deploy a new WAVS WASM component from scratch.

## Checklist

- [ ] **Step 1** — `wavs:wavs_get_wit_interface` — Read WIT definitions to understand available APIs before writing code.
- [ ] **Step 2** — `wavs:wavs_scaffold_component` — Generate project skeleton (`Cargo.toml` + `src/lib.rs`).
- [ ] **Step 3** — Implement logic in `src/lib.rs` using the patterns below.
- [ ] **Step 4** — `wavs:wavs_build_component` — Compile; read stderr and fix errors; repeat until exit code 0.
- [ ] **Step 1** — `wavs:wavs_scaffold_component` with `dir` parameter — Creates the complete project on disk with all WIT files, bindings, and trigger template. Nothing to write manually.
- [ ] **Step 2** — Customize `src/lib.rs` with your component logic.
- [ ] **Step 3** — `wavs:wavs_build_component` — Compile; read stderr and fix errors; repeat until exit code 0.
- [ ] **Step 4** — `wavs:wavs_validate_component` — Verify the .wasm exports the correct `run` function before uploading.
- [ ] **Step 5** — `wavs:wavs_upload_component` — Upload `.wasm`; save the returned digest (raw 64-char hex, no `sha256:` prefix).
- **OCI alternative:** If the component is published to an OCI registry (e.g. ghcr.io), you can skip upload and use an OCI source in the service definition instead: `"source": {"oci": {"uri": "oci://ghcr.io/org/component:v1.0"}}`. See [`reference/service-json.md`](../reference/service-json.md#oci-pull-from-registry-at-deploy-time) for details.
- [ ] **Step 6** — `wavs:wavs_deploy_dev_service` (no on-chain contract) **or** follow [`deployment.md`](deployment.md) for a real deployment.
- [ ] **Step 7** — `wavs:wavs_simulate_trigger` — Verify output.
- [ ] **Step 7** — If the `ui_navigate` tool is available (WAVS desktop app embedded agent only), **immediately** call it to open the service detail page (path from deploy output). Don't wait — navigate right after deploy so the user can see the service.
- [ ] **Step 8** — `wavs:wavs_simulate_trigger` — Verify output.

> **Tip:** Call `wavs:wavs_get_wit_interface` if you need to understand the full WIT API (HTTP, KV, host functions, etc.) before writing custom logic.
> **Tip:** Omit the `dir` parameter from `wavs_scaffold_component` to get file contents as text instead of writing to disk (useful when integrating into existing projects).

---

## How Scaffolding Works

**With `dir` parameter (recommended):** The tool creates `{dir}/{name}/` with all files ready to build. No manual file creation needed.

**Without `dir`:** Returns file contents as text. You must write every file yourself, including the `wit/` directory. Use this only when integrating into an existing project.

The scaffolded project is self-contained:
- Builds with `cargo build --target wasm32-wasip2 --release` (no `cargo-component` needed)
- All WIT interface definitions are bundled in `wit/`
- **Prerequisite:** `rustup target add wasm32-wasip2`

### In-Workspace Alternative (WAVS repo only)

If working inside the WAVS monorepo, you can instead create a component at `examples/components/{name}/` using `example-helpers = { workspace = true }`. This is simpler (only 2 files, no WIT copy needed) but only works within the workspace. Build with `cargo component build --release -p {name}`.

---

Expand All @@ -24,11 +46,9 @@ trigger_type: evm_contract_event | cosmos_contract_event | block_interval | cron
description: optional one-line description
```

Place the generated component at `examples/components/{name}/` to use workspace deps automatically.

---

## Component Anatomy
## Component Anatomy (In-Workspace)

Minimal working component using the prelude:

Expand All @@ -40,23 +60,24 @@ struct Component;

impl Guest for Component {
fn run(action: TriggerAction) -> Result<Vec<WasmResponse>, String> {
let (trigger_id, data) = decode_trigger_event(action.data)?;

// Process `data` bytes and compute output.
let output = data; // echo the raw input for now

Ok(vec![encode_trigger_output(
trigger_id,
&output,
action.config.service_id,
)])
match action.data {
TriggerData::Raw(data) => {
// Process raw input bytes
Ok(vec![WasmResponse {
payload: data,
ordering: None,
event_id_salt: None,
}])
}
_ => Err("Unsupported trigger data type".to_string()),
}
}
}

export_layer_trigger_world!(Component);
```

The prelude re-exports: `Guest`, `TriggerAction`, `WasmResponse`, `decode_trigger_event`, `encode_trigger_output`, `export_layer_trigger_world`, and the `host` module.
The prelude re-exports: `Guest`, `TriggerAction`, `TriggerData`, `Trigger`, `WasmResponse`, `decode_trigger_event`, `encode_trigger_output`, `export_layer_trigger_world`, and the `host` module.

Full explicit imports (when you need specific types):

Expand All @@ -73,11 +94,60 @@ use example_helpers::export_layer_trigger_world;
use example_helpers::trigger::{decode_trigger_event, encode_trigger_output};
```

## Component Anatomy (Standalone)

```rust
#[allow(warnings)]
mod bindings;

use crate::bindings::{
export,
wavs::types::events::TriggerData,
Guest, TriggerAction, WasmResponse,
};

struct Component;
export!(Component with_types_in bindings);

impl Guest for Component {
fn run(action: TriggerAction) -> std::result::Result<Vec<WasmResponse>, String> {
match action.data {
TriggerData::Raw(data) => {
let payload = data; // echo input back
Ok(vec![WasmResponse {
payload,
ordering: None,
event_id_salt: None,
}])
}
_ => Err("Unsupported trigger data type".to_string()),
}
}
}
```

With `src/bindings.rs`:
```rust
#[allow(warnings)]
mod _inner {
wit_bindgen::generate!({
world: "wavs-world",
path: "wit",
pub_export_macro: true,
generate_all,
features: ["tls"],
});
}
pub use _inner::*;
```

---

## Host APIs

```rust
// In-workspace: available via `host::` directly
// Standalone: use `crate::bindings::host`
host::config_var("my-key") // → Option<String>; reads service config
host::log(host::LogLevel::Info, "msg"); // levels: Debug, Info, Warn, Error
host::get_service() // → ServiceInfo (manager address, config, etc.)
Expand All @@ -91,18 +161,26 @@ host::get_event_id(Some(salt)) // custom salt (Vec<u8>)

```rust
match action.data {
TriggerData::EvmContractEvent(_) | TriggerData::CosmosContractEvent(_) => {
let (trigger_id, data) = decode_trigger_event(action.data)?;
TriggerData::EvmContractEvent(event_data) => {
// event_data.chain: chain key string
// event_data.log.data.data: raw ABI-encoded log bytes
// event_data.log.data.topics: Vec of topic byte arrays
}
TriggerData::CosmosContractEvent(event_data) => {
// event_data.chain: chain key string
// event_data.event.ty: event type string
// event_data.event.attributes: Vec<(String, String)>
// event_data.block_height: u64
}
TriggerData::Raw(bytes) => {
// Plain bytes — trigger_id is 0 for raw/manual triggers.
let data = bytes;
// Plain bytes — for manual/raw triggers
}
TriggerData::Cron { trigger_time } => {
// trigger_time: unix timestamp (u64)
TriggerData::Cron(data) => {
// data.trigger_time.nanos: unix timestamp in nanoseconds
}
TriggerData::BlockInterval { block_height } => {
// block_height: u64
TriggerData::BlockInterval(data) => {
// data.block_height: u64
// data.chain: chain key string
}
_ => return Err("unsupported trigger type".to_string()),
}
Expand All @@ -116,6 +194,7 @@ match action.data {

```rust
use example_helpers::bindings::world::wasi::keyvalue::{store, atomics};
// Standalone: use crate::bindings::wasi::keyvalue::{store, atomics};

let bucket = store::open("my-bucket").map_err(|e| e.to_string())?;
let value: Option<Vec<u8>> = bucket.get("key").map_err(|e| e.to_string())?;
Expand All @@ -139,38 +218,47 @@ let bytes = block_on(async {

---

## Cargo.toml Template
## Cargo.toml Template (In-Workspace)

Place at `examples/components/{name}/Cargo.toml`:

```toml
[package]
name = "{name}"
edition.workspace = true
version.workspace = true
authors.workspace = true
rust-version.workspace = true
repository.workspace = true

[lib]
crate-type = ["cdylib"]

[package.metadata.component]
package = "wavs-user:{name}"
package = "component:{name}"

[dependencies]
example-helpers = { path = "../../_helpers" }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Add for KV store or outbound HTTP:
example-helpers = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
# Uncomment for async HTTP, timers, etc:
# wstd = { workspace = true }
```

---

## Build Output Paths

After `wavs_build_component` (release mode):
After `wavs_build_component` or `cargo component build --release` (workspace):
```
target/wasm32-wasip1/release/{package_name_with_underscores}.wasm
```

After `cargo build --target wasm32-wasip2 --release` (standalone):
```
target/wasm32-wasip2/release/{package_name_with_underscores}.wasm
```

After `just wasi-build-native {component-name}` (from repo root):
```
examples/build/components/{component-name}.wasm
Expand All @@ -183,13 +271,17 @@ Use the **absolute path** when calling `wavs_upload_component`.
## Debugging

**Build errors** (read `stderr` from `wavs_build_component`):
- `cannot find type` / `unresolved import` — check `example-helpers` path; try `use example_helpers::prelude::*`
- `cannot find type` / `unresolved import` — check import paths match your scaffold mode (workspace vs standalone)
- `failed to create a target world` / `package not found` — WIT files are missing. For standalone: ensure all `wit/deps/*/package.wit` files are written. For workspace: ensure `example-helpers` path is correct.
- `the trait bound is not satisfied` — `encode_trigger_output` needs `&[u8]` or `AsRef<[u8]>`
- `does not implement Guest` — ensure `export_layer_trigger_world!(Component)` is present
- `does not implement Guest` — ensure export macro is present (`export_layer_trigger_world!` for workspace, `export!` for standalone)
- `no export 'run' found` — the export macro is missing or the `Guest` impl is not correct

**Runtime errors** (from `wavs_simulate_trigger`):
- Error message comes directly from your `?` or `return Err(...)` calls
- Add `host::log(host::LogLevel::Debug, &format!("data: {:?}", data))` and re-simulate
- Use `wavs_query_component_logs(service_id="<id>", level="debug")` to read component `host::log()` output after simulation
- Use `wavs_query_logs(target="wavs::subsystems::engine", level="warn")` for broader engine-level diagnostics

**Missing config vars** — component returns `"config var X not found"`:
- Service definition must include the key in its `config` map
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/wavs/flows/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,16 @@ Deploy a new WAVS service with an on-chain ServiceManager contract.
- **SimpleServiceManager** (lightweight PoA): `wavs:wavs_deploy_service_manager` — returns `address`
- **POAStakeRegistry** (full middleware): `wavs:wavs_deploy_poa_service_manager` — returns proxy `address`; requires Docker
- [ ] **Step 3** — `wavs:wavs_upload_component` — Upload the compiled `.wasm`; save the returned digest (raw 64-char hex, no `sha256:` prefix).
- **OCI alternative:** If the component is published to an OCI registry, skip upload and use `"source": {"oci": {"uri": "oci://ghcr.io/org/component:v1.0"}}` in the service definition. The WAVS node pulls it at deploy time. See [`reference/service-json.md`](../reference/service-json.md#oci-pull-from-registry-at-deploy-time).
- [ ] **Step 4** — `wavs:wavs_save_service` — Save the service definition JSON; get back a URI.
- [ ] **Step 5** — `wavs:wavs_set_service_uri` — Call `setServiceURI` on-chain with the URI from step 4.
- [ ] **Step 6** — `wavs:wavs_deploy_service` — Register the service with the WAVS node (reads definition from chain).
- **Verify the node picked up the service:** Call `wavs:wavs_get_service(chain, address)` and confirm `status: active`. Note: `wavs_deploy_service` returning success only means the node fetched and stored the config from the on-chain URI. Confirm active status with `wavs_get_service`.
- If the `ui_navigate` tool is available (WAVS desktop app embedded agent only), **immediately** call it to open the service detail page (use the path from the deploy output). Don't wait — navigate right after deploy so the user can see the service.
- [ ] **Step 7 (POA only)** — `wavs:wavs_register_operator` — Register the node's signing key on the POAStakeRegistry. **Must be called AFTER `wavs_deploy_service`** so the node has assigned a service-specific HD-derived signing key to register on-chain.
- [ ] **Step 8** — `wavs:wavs_simulate_trigger` — Smoke test.
- [ ] **Step 9** — `wavs:wavs_list_services` — Confirm the service appears with `status: active`.
- [ ] **Step 10 (optional)** — If `--exec-enabled` is set on the MCP server, the service is now available as a `wavs_exec_*` tool. Follow [`flows/execution.md`](execution.md) to execute it at any trust tier.

---

Expand Down Expand Up @@ -86,6 +89,7 @@ Pass to `wavs_save_service` or `wavs_deploy_dev_service`:
{
"name": "my-service",
"status": "active",
"exec_enabled": true,
"manager": {
"evm": {
"chain": "evm:31337",
Expand Down
Loading