@goondocks/myco 0.20.2 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/bin/myco-run +68 -7
  2. package/dist/agent-eval-YK2VP2S4.js +356 -0
  3. package/dist/agent-eval-YK2VP2S4.js.map +1 -0
  4. package/dist/{agent-run-X25Q2A6T.js → agent-run-GEJBD2YD.js} +10 -8
  5. package/dist/{agent-run-X25Q2A6T.js.map → agent-run-GEJBD2YD.js.map} +1 -1
  6. package/dist/{agent-tasks-7B6OFERB.js → agent-tasks-5XSRGTRX.js} +10 -8
  7. package/dist/{agent-tasks-7B6OFERB.js.map → agent-tasks-5XSRGTRX.js.map} +1 -1
  8. package/dist/{chunk-OD4AA7PV.js → chunk-53RPGOEN.js} +56 -8
  9. package/dist/chunk-53RPGOEN.js.map +1 -0
  10. package/dist/chunk-54SXG5HF.js +26 -0
  11. package/dist/chunk-54SXG5HF.js.map +1 -0
  12. package/dist/{chunk-XATDZX7U.js → chunk-6ALVMIB4.js} +19 -5
  13. package/dist/{chunk-XATDZX7U.js.map → chunk-6ALVMIB4.js.map} +1 -1
  14. package/dist/{chunk-FLLBJLHM.js → chunk-6C6QZ4PM.js} +9 -5
  15. package/dist/chunk-6C6QZ4PM.js.map +1 -0
  16. package/dist/{chunk-CCRGY3QW.js → chunk-AUIXX33A.js} +24 -95
  17. package/dist/chunk-AUIXX33A.js.map +1 -0
  18. package/dist/chunk-CISWUP5W.js +101 -0
  19. package/dist/chunk-CISWUP5W.js.map +1 -0
  20. package/dist/{chunk-MYOZLMB2.js → chunk-DTWUHHFI.js} +576 -20
  21. package/dist/chunk-DTWUHHFI.js.map +1 -0
  22. package/dist/chunk-EEOJWLMP.js +582 -0
  23. package/dist/chunk-EEOJWLMP.js.map +1 -0
  24. package/dist/{chunk-XG5RRUYF.js → chunk-ENZR5NG7.js} +2 -2
  25. package/dist/{chunk-6RFZWV4R.js → chunk-FCJ5JV54.js} +1 -1
  26. package/dist/{chunk-6RFZWV4R.js.map → chunk-FCJ5JV54.js.map} +1 -1
  27. package/dist/{chunk-US4LNCAT.js → chunk-IPPMYQ2Y.js} +5 -1
  28. package/dist/chunk-IPPMYQ2Y.js.map +1 -0
  29. package/dist/{chunk-VVNL26WX.js → chunk-KTTSXYEK.js} +22 -10
  30. package/dist/chunk-KTTSXYEK.js.map +1 -0
  31. package/dist/chunk-LQIPXVDH.js +17 -0
  32. package/dist/chunk-LQIPXVDH.js.map +1 -0
  33. package/dist/{chunk-DCSGJ7W4.js → chunk-N2DGFACQ.js} +3 -3
  34. package/dist/chunk-N7Z3LUEZ.js +858 -0
  35. package/dist/chunk-N7Z3LUEZ.js.map +1 -0
  36. package/dist/{chunk-2PDWCDKY.js → chunk-NFO7BRCO.js} +10 -7
  37. package/dist/{chunk-2PDWCDKY.js.map → chunk-NFO7BRCO.js.map} +1 -1
  38. package/dist/{chunk-Q36VMZST.js → chunk-OTQH5KZW.js} +89 -38
  39. package/dist/chunk-OTQH5KZW.js.map +1 -0
  40. package/dist/chunk-OUJSQSKE.js +113 -0
  41. package/dist/chunk-OUJSQSKE.js.map +1 -0
  42. package/dist/chunk-OZ3FBAK5.js +50 -0
  43. package/dist/chunk-OZ3FBAK5.js.map +1 -0
  44. package/dist/chunk-QATYARI5.js +408 -0
  45. package/dist/chunk-QATYARI5.js.map +1 -0
  46. package/dist/{chunk-KESLPBKV.js → chunk-QDLVIW2O.js} +4 -4
  47. package/dist/{chunk-5XIVBO25.js → chunk-QLLBJEM7.js} +6 -2
  48. package/dist/chunk-QLLBJEM7.js.map +1 -0
  49. package/dist/{chunk-EVDQKYCG.js → chunk-RQSJLWP4.js} +13 -2
  50. package/dist/chunk-RQSJLWP4.js.map +1 -0
  51. package/dist/{chunk-BPRIYNLE.js → chunk-TKAJ3JVF.js} +3 -3
  52. package/dist/chunk-TSM6VESW.js +25 -0
  53. package/dist/chunk-TSM6VESW.js.map +1 -0
  54. package/dist/{chunk-6X2ERTQV.js → chunk-USVFEWYL.js} +6 -4
  55. package/dist/{chunk-6X2ERTQV.js.map → chunk-USVFEWYL.js.map} +1 -1
  56. package/dist/{chunk-JZGN33AY.js → chunk-VRI56337.js} +4 -4
  57. package/dist/chunk-X2IRGXGF.js +14103 -0
  58. package/dist/chunk-X2IRGXGF.js.map +1 -0
  59. package/dist/{chunk-FMRZ26U5.js → chunk-X3IGT5RV.js} +5 -2
  60. package/dist/{chunk-FMRZ26U5.js.map → chunk-X3IGT5RV.js.map} +1 -1
  61. package/dist/{chunk-KHT24OWC.js → chunk-YDUOSRGD.js} +8 -94
  62. package/dist/{chunk-KHT24OWC.js.map → chunk-YDUOSRGD.js.map} +1 -1
  63. package/dist/{chunk-NGROSFOH.js → chunk-Z66IT5KL.js} +14 -9
  64. package/dist/chunk-Z66IT5KL.js.map +1 -0
  65. package/dist/{cli-GGPWH4UO.js → cli-HSLIG7EX.js} +50 -43
  66. package/dist/cli-HSLIG7EX.js.map +1 -0
  67. package/dist/{client-YXQUTXVZ.js → client-Z43DNLJH.js} +4 -4
  68. package/dist/{config-OMCYHG2S.js → config-VC4ACP42.js} +6 -4
  69. package/dist/{config-OMCYHG2S.js.map → config-VC4ACP42.js.map} +1 -1
  70. package/dist/{detect-PXNM6TA7.js → detect-7NUD5B5R.js} +2 -2
  71. package/dist/{detect-providers-5KOPZ7J2.js → detect-providers-ILLQZROY.js} +4 -4
  72. package/dist/{doctor-5JXJ36KA.js → doctor-HJCWHAU4.js} +49 -16
  73. package/dist/doctor-HJCWHAU4.js.map +1 -0
  74. package/dist/executor-DO6QFC6G.js +45 -0
  75. package/dist/{init-LMYOVZAV.js → init-4KVK7W2E.js} +16 -14
  76. package/dist/{init-LMYOVZAV.js.map → init-4KVK7W2E.js.map} +1 -1
  77. package/dist/{installer-FS257JRZ.js → installer-N4UTEACX.js} +6 -4
  78. package/dist/{llm-TH4NLIRM.js → llm-AGVEF5XD.js} +5 -4
  79. package/dist/{loader-CQYTFHEW.js → loader-LX7TFRM6.js} +5 -3
  80. package/dist/{loader-NOMBJUPW.js → loader-UDNUMEDA.js} +5 -3
  81. package/dist/{main-YTBVRTBI.js → main-4J4QZZTZ.js} +2518 -656
  82. package/dist/main-4J4QZZTZ.js.map +1 -0
  83. package/dist/{open-HG2DX6RN.js → open-7TXJQM3H.js} +10 -8
  84. package/dist/{open-HG2DX6RN.js.map → open-7TXJQM3H.js.map} +1 -1
  85. package/dist/{post-compact-JSECI44W.js → post-compact-7AEFVCZS.js} +8 -8
  86. package/dist/{post-tool-use-POGPTJBA.js → post-tool-use-TZINWWDH.js} +11 -9
  87. package/dist/post-tool-use-TZINWWDH.js.map +1 -0
  88. package/dist/{post-tool-use-failure-OT7BFWQW.js → post-tool-use-failure-TCFEU2GI.js} +8 -8
  89. package/dist/{pre-compact-OXVODKH4.js → pre-compact-LO2VZCGR.js} +8 -8
  90. package/dist/{provider-check-43LAMSMH.js → provider-check-ZEV5P4KM.js} +4 -4
  91. package/dist/{registry-U4CHXK6R.js → registry-F3THYC5M.js} +6 -4
  92. package/dist/{remove-N7ZPELFU.js → remove-F77AAALE.js} +12 -10
  93. package/dist/{remove-N7ZPELFU.js.map → remove-F77AAALE.js.map} +1 -1
  94. package/dist/{restart-ADG5GBTB.js → restart-UEFDPMLT.js} +11 -9
  95. package/dist/{restart-ADG5GBTB.js.map → restart-UEFDPMLT.js.map} +1 -1
  96. package/dist/{search-AHZEUNRR.js → search-NHNVUAQQ.js} +11 -9
  97. package/dist/{search-AHZEUNRR.js.map → search-NHNVUAQQ.js.map} +1 -1
  98. package/dist/{server-AGVYZVP5.js → server-AZJSTQEK.js} +369 -270
  99. package/dist/server-AZJSTQEK.js.map +1 -0
  100. package/dist/{session-6IU4AXYP.js → session-3HLC5KOD.js} +11 -9
  101. package/dist/{session-6IU4AXYP.js.map → session-3HLC5KOD.js.map} +1 -1
  102. package/dist/{session-end-FT27DWYZ.js → session-end-FS46UARX.js} +7 -7
  103. package/dist/session-start-46KPFV2H.js +134 -0
  104. package/dist/session-start-46KPFV2H.js.map +1 -0
  105. package/dist/{setup-llm-77MP4I2G.js → setup-llm-JMWSNQ2C.js} +11 -9
  106. package/dist/{setup-llm-77MP4I2G.js.map → setup-llm-JMWSNQ2C.js.map} +1 -1
  107. package/dist/src/agent/definitions/agent.yaml +9 -5
  108. package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +115 -0
  109. package/dist/src/agent/definitions/tasks/cortex-prompt-builder.yaml +67 -0
  110. package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -1
  111. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
  112. package/dist/src/agent/definitions/tasks/review-session.yaml +10 -39
  113. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +181 -25
  114. package/dist/src/agent/definitions/tasks/skill-generate.yaml +21 -7
  115. package/dist/src/agent/definitions/tasks/skill-survey.yaml +2 -6
  116. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
  117. package/dist/src/agent/definitions/tasks/title-summary.yaml +12 -19
  118. package/dist/src/agent/definitions/tasks/{full-intelligence.yaml → vault-evolve.yaml} +74 -129
  119. package/dist/src/agent/definitions/tasks/vault-seed.yaml +370 -0
  120. package/dist/src/agent/prompts/agent.md +12 -38
  121. package/dist/src/cli.js +1 -1
  122. package/dist/src/daemon/main.js +1 -1
  123. package/dist/src/hooks/post-tool-use.js +1 -1
  124. package/dist/src/hooks/session-end.js +1 -1
  125. package/dist/src/hooks/session-start.js +1 -1
  126. package/dist/src/hooks/stop.js +1 -1
  127. package/dist/src/hooks/user-prompt-submit.js +1 -1
  128. package/dist/src/mcp/server.js +1 -1
  129. package/dist/src/symbionts/manifests/claude-code.yaml +4 -0
  130. package/dist/src/symbionts/manifests/opencode.yaml +7 -0
  131. package/dist/src/symbionts/manifests/pi.yaml +22 -0
  132. package/dist/src/symbionts/templates/agents-starter.md +1 -1
  133. package/dist/src/symbionts/templates/pi/package.json +6 -0
  134. package/dist/src/symbionts/templates/pi/plugin.ts +559 -0
  135. package/dist/{stats-NVPWOYTE.js → stats-MKMETHMA.js} +11 -9
  136. package/dist/{stats-NVPWOYTE.js.map → stats-MKMETHMA.js.map} +1 -1
  137. package/dist/{stop-ZPIKVLH4.js → stop-OUEX6KA4.js} +7 -7
  138. package/dist/{stop-failure-2PX67YJC.js → stop-failure-2BWVNZEG.js} +8 -8
  139. package/dist/{subagent-start-UUE6EHQD.js → subagent-start-J4VV6DEE.js} +8 -8
  140. package/dist/{subagent-stop-KQWWWPE6.js → subagent-stop-JMLVEPIA.js} +8 -8
  141. package/dist/{task-completed-WMHOFQ7B.js → task-completed-65CHMMKA.js} +8 -8
  142. package/dist/{team-LRZ6GTQK.js → team-U2LDKIS4.js} +7 -5
  143. package/dist/{turns-YFNI5CQC.js → turns-HU2CTZAP.js} +2 -2
  144. package/dist/ui/assets/index-BUGor9dk.js +842 -0
  145. package/dist/ui/assets/index-_OP4ifzH.css +1 -0
  146. package/dist/ui/index.html +2 -2
  147. package/dist/{update-O6V4RC4W.js → update-ZSHVXWSQ.js} +12 -10
  148. package/dist/{update-O6V4RC4W.js.map → update-ZSHVXWSQ.js.map} +1 -1
  149. package/dist/{user-prompt-submit-N36KUPHI.js → user-prompt-submit-APMO6FVU.js} +10 -9
  150. package/dist/{user-prompt-submit-N36KUPHI.js.map → user-prompt-submit-APMO6FVU.js.map} +1 -1
  151. package/dist/{verify-LXPV7NYG.js → verify-R76ZFJSZ.js} +8 -5
  152. package/dist/{verify-LXPV7NYG.js.map → verify-R76ZFJSZ.js.map} +1 -1
  153. package/dist/{version-XMPPJQHR.js → version-TXPPS3L5.js} +2 -2
  154. package/dist/version-TXPPS3L5.js.map +1 -0
  155. package/package.json +3 -1
  156. package/skills/myco/SKILL.md +16 -1
  157. package/skills/myco/references/cli-usage.md +1 -1
  158. package/skills/myco-rules/SKILL.md +94 -0
  159. package/skills/{rules → myco-rules}/references/rules-bad-example.md +1 -1
  160. package/skills/{rules → myco-rules}/references/rules-good-example.md +1 -1
  161. package/dist/chunk-4YFKBL3F.js +0 -195
  162. package/dist/chunk-4YFKBL3F.js.map +0 -1
  163. package/dist/chunk-5XIVBO25.js.map +0 -1
  164. package/dist/chunk-CCRGY3QW.js.map +0 -1
  165. package/dist/chunk-CUDIZJY7.js +0 -36
  166. package/dist/chunk-CUDIZJY7.js.map +0 -1
  167. package/dist/chunk-EVDQKYCG.js.map +0 -1
  168. package/dist/chunk-FLLBJLHM.js.map +0 -1
  169. package/dist/chunk-MYOZLMB2.js.map +0 -1
  170. package/dist/chunk-NGROSFOH.js.map +0 -1
  171. package/dist/chunk-OD4AA7PV.js.map +0 -1
  172. package/dist/chunk-Q36VMZST.js.map +0 -1
  173. package/dist/chunk-US4LNCAT.js.map +0 -1
  174. package/dist/chunk-UYMFCYBF.js +0 -2326
  175. package/dist/chunk-UYMFCYBF.js.map +0 -1
  176. package/dist/chunk-VVNL26WX.js.map +0 -1
  177. package/dist/cli-GGPWH4UO.js.map +0 -1
  178. package/dist/doctor-5JXJ36KA.js.map +0 -1
  179. package/dist/executor-HWW2QNZQ.js +0 -2472
  180. package/dist/executor-HWW2QNZQ.js.map +0 -1
  181. package/dist/main-YTBVRTBI.js.map +0 -1
  182. package/dist/post-tool-use-POGPTJBA.js.map +0 -1
  183. package/dist/server-AGVYZVP5.js.map +0 -1
  184. package/dist/session-start-LAFICHII.js +0 -189
  185. package/dist/session-start-LAFICHII.js.map +0 -1
  186. package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +0 -93
  187. package/dist/ui/assets/index-C2JuNtRB.css +0 -1
  188. package/dist/ui/assets/index-JLVaQKV2.js +0 -832
  189. package/skills/myco-curate/SKILL.md +0 -86
  190. package/skills/rules/SKILL.md +0 -214
  191. /package/dist/{chunk-XG5RRUYF.js.map → chunk-ENZR5NG7.js.map} +0 -0
  192. /package/dist/{chunk-DCSGJ7W4.js.map → chunk-N2DGFACQ.js.map} +0 -0
  193. /package/dist/{chunk-KESLPBKV.js.map → chunk-QDLVIW2O.js.map} +0 -0
  194. /package/dist/{chunk-BPRIYNLE.js.map → chunk-TKAJ3JVF.js.map} +0 -0
  195. /package/dist/{chunk-JZGN33AY.js.map → chunk-VRI56337.js.map} +0 -0
  196. /package/dist/{client-YXQUTXVZ.js.map → client-Z43DNLJH.js.map} +0 -0
  197. /package/dist/{detect-PXNM6TA7.js.map → detect-7NUD5B5R.js.map} +0 -0
  198. /package/dist/{detect-providers-5KOPZ7J2.js.map → detect-providers-ILLQZROY.js.map} +0 -0
  199. /package/dist/{installer-FS257JRZ.js.map → executor-DO6QFC6G.js.map} +0 -0
  200. /package/dist/{llm-TH4NLIRM.js.map → installer-N4UTEACX.js.map} +0 -0
  201. /package/dist/{loader-CQYTFHEW.js.map → llm-AGVEF5XD.js.map} +0 -0
  202. /package/dist/{loader-NOMBJUPW.js.map → loader-LX7TFRM6.js.map} +0 -0
  203. /package/dist/{provider-check-43LAMSMH.js.map → loader-UDNUMEDA.js.map} +0 -0
  204. /package/dist/{post-compact-JSECI44W.js.map → post-compact-7AEFVCZS.js.map} +0 -0
  205. /package/dist/{post-tool-use-failure-OT7BFWQW.js.map → post-tool-use-failure-TCFEU2GI.js.map} +0 -0
  206. /package/dist/{pre-compact-OXVODKH4.js.map → pre-compact-LO2VZCGR.js.map} +0 -0
  207. /package/dist/{registry-U4CHXK6R.js.map → provider-check-ZEV5P4KM.js.map} +0 -0
  208. /package/dist/{team-LRZ6GTQK.js.map → registry-F3THYC5M.js.map} +0 -0
  209. /package/dist/{session-end-FT27DWYZ.js.map → session-end-FS46UARX.js.map} +0 -0
  210. /package/dist/{stop-ZPIKVLH4.js.map → stop-OUEX6KA4.js.map} +0 -0
  211. /package/dist/{stop-failure-2PX67YJC.js.map → stop-failure-2BWVNZEG.js.map} +0 -0
  212. /package/dist/{subagent-start-UUE6EHQD.js.map → subagent-start-J4VV6DEE.js.map} +0 -0
  213. /package/dist/{subagent-stop-KQWWWPE6.js.map → subagent-stop-JMLVEPIA.js.map} +0 -0
  214. /package/dist/{task-completed-WMHOFQ7B.js.map → task-completed-65CHMMKA.js.map} +0 -0
  215. /package/dist/{turns-YFNI5CQC.js.map → team-U2LDKIS4.js.map} +0 -0
  216. /package/dist/{version-XMPPJQHR.js.map → turns-HU2CTZAP.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  # =============================================================================
2
- # Built-in Task: Full Intelligence (Phased)
2
+ # Built-in Task: Vault Evolve (Phased)
3
3
  # =============================================================================
4
4
  # Default task for: myco-agent
5
5
  #
@@ -8,18 +8,18 @@
8
8
  # controls the loop — the LLM cannot skip phases.
9
9
  # =============================================================================
10
10
 
11
- name: full-intelligence
12
- displayName: Full Intelligence
11
+ name: vault-evolve
12
+ displayName: Vault Evolve
13
13
  description: >
14
14
  Complete intelligence pass over all unprocessed session data. Extracts
15
15
  observations as spores, updates session summaries, consolidates related
16
- spores into wisdom, builds knowledge graph entities and edges, and
17
- regenerates digest extracts.
16
+ spores into wisdom, and regenerates digest extracts. Runs automatically
17
+ on a schedule once sessions have settled.
18
18
  agent: myco-agent
19
19
  isDefault: true
20
20
  maxTurns: 150
21
21
  timeoutSeconds: 1800
22
- model: claude-sonnet-4-6
22
+ reasoningLevel: default
23
23
 
24
24
  schedule:
25
25
  enabled: true
@@ -31,7 +31,7 @@ schedule:
31
31
 
32
32
  orchestrator:
33
33
  enabled: true
34
- model: claude-sonnet-4-6
34
+ reasoningLevel: default
35
35
  maxTurns: 3
36
36
 
37
37
  contextQueries:
@@ -61,7 +61,7 @@ prompt: >
61
61
 
62
62
  phases:
63
63
  - name: read-state
64
- model: claude-haiku-4-5-20251001
64
+ reasoningLevel: low
65
65
  # Root phase — no dependsOn
66
66
  prompt: |
67
67
  Read the current vault state to determine what needs processing.
@@ -81,7 +81,7 @@ phases:
81
81
  readOnly: true
82
82
 
83
83
  - name: extract
84
- model: claude-haiku-4-5-20251001
84
+ reasoningLevel: low
85
85
  dependsOn: [read-state]
86
86
  prompt: |
87
87
  Extract observations from unprocessed batches as spores.
@@ -134,7 +134,7 @@ phases:
134
134
  required: true
135
135
 
136
136
  - name: summarize
137
- model: claude-haiku-4-5-20251001
137
+ reasoningLevel: low
138
138
  dependsOn: [read-state]
139
139
  prompt: |
140
140
  Update session titles and summaries for sessions touched during extraction.
@@ -189,7 +189,7 @@ phases:
189
189
  required: false
190
190
 
191
191
  - name: consolidate
192
- model: claude-sonnet-4-6
192
+ reasoningLevel: default
193
193
  dependsOn: [extract]
194
194
  prompt: |
195
195
  Consolidate related spores into wisdom and clean up redundancy.
@@ -254,143 +254,89 @@ phases:
254
254
  maxTurns: 25
255
255
  required: false
256
256
 
257
- - name: graph
258
- model: claude-sonnet-4-6
259
- dependsOn: [extract]
257
+ # ---- Digest: assess + 3 parallel tier writes ----
258
+ # The assess phase gathers context, then each tier runs independently
259
+ # in the same wave via Promise.allSettled().
260
+
261
+ - name: digest-assess
262
+ reasoningLevel: default
263
+ dependsOn: [consolidate]
260
264
  prompt: |
261
- Build the knowledge graph: create entities, then link spores to them.
265
+ Gather material for AT MOST ONE digest tier update per run. The
266
+ rotation decision is made by the `vault_read_digest` tool, not
267
+ by you — the tool returns which tier needs attention (or tells
268
+ you to skip). Over 3 runs every tier gets one deep pass.
262
269
 
263
- New graph work may still be warranted even when extract skipped, because
264
- spores and entities can be created by coding agents or manual curation.
265
- Focus on recent or high-signal active spores and obvious entity gaps.
266
- If a quick review shows no meaningful new graph work, report "skip".
270
+ Total budget: {{max_turns}} turns.
267
271
 
268
- The graph has two layers:
269
- - Lineage (automatic): spore→session, spore→batch — already done
270
- - Semantic (your job): spore→entity, entity→entity — you create these
272
+ ## Step 1: Get the rotation decision (1 turn)
271
273
 
272
- ## Step 1: Review spores and existing entities (2 turns)
274
+ Call `vault_read_digest` with:
275
+ pick: "rotate_oldest"
276
+ min_staleness_seconds: 1800
273
277
 
274
- 1. Call `vault_spores` with status "active" to see current spores
275
- 2. Call `vault_entities` to see existing graph entities
276
- 3. Call `vault_edges` to see existing relationships
278
+ The tool returns one of two shapes:
277
279
 
278
- ## Step 2: Create entities (budget: 6 turns)
280
+ **Skip shape** — `{mode:"rotate_oldest", skip:true, reason, all_tiers}`.
281
+ Every tier was generated within the last 30 minutes. Call
282
+ `vault_report` with action "skip" passing the reason through.
283
+ STOP — do not run steps 2-3.
279
284
 
280
- For components/concepts/people that appear across multiple spores:
281
- - Call `vault_create_entity` with type: component | concept | person
282
- - Focus on entities that help understand the system architecture
283
- - Prefer fewer well-defined entities over many vague ones
285
+ **Rotate shape** `{mode:"rotate_oldest", selected_tier,
286
+ selected_generated_at, selected_content, rotation_reason, all_tiers}`.
287
+ Proceed to step 2, scoped to `selected_tier`.
284
288
 
285
- ## Step 3: Link spores to entities (budget: 12 turns) — CRITICAL
289
+ ## Step 2: Gather material for `selected_tier` (budget: half
290
+ of remaining)
286
291
 
287
- For EACH entity (newly created AND existing unlinked ones):
288
- 1. Call `vault_search_semantic` with the entity name to find related spores
289
- 2. Before creating an edge, call `vault_edges` with `source_id` and
290
- `target_id` to verify it does not already exist
291
- 3. For each relevant search result, call `vault_create_edge`:
292
- - type: REFERENCES
293
- - source_id: the spore ID, source_type: spore
294
- - target_id: the entity ID, target_type: entity
295
- 4. Entities without edges are invisible — always link after creating
292
+ Scope the search to what belongs at the selected tier:
293
+ - **1500 (executive briefing):** only critical decisions,
294
+ reversals, state-of-system changes.
295
+ - **5000 (deep onboarding):** trade-offs, patterns, active
296
+ decisions, unresolved gotchas.
297
+ - **10000 (full archive):** any new content worth preserving.
296
298
 
297
- ## Step 4: Structural edges between entities (remaining turns)
299
+ Use `vault_search_semantic` for themes from new/superseded spores,
300
+ `vault_spores` for specific content, `vault_sessions` for recent
301
+ session context. Make each call count — do not repeatedly search
302
+ for variations of the same theme. Accept "good enough" findings
303
+ and move on.
298
304
 
299
- For architectural dependencies between entities:
300
- - DEPENDS_ON (entity→entity): "daemon" depends on "SQLite"
301
- - AFFECTS (spore→entity): a gotcha that impacts a component
305
+ ## Step 3: Produce findings
302
306
 
303
- Do NOT create lineage edges (FROM_SESSION, EXTRACTED_FROM, etc.)
307
+ Your final response is the per-tier phases' primary context
308
+ (they cannot call vault_spores or vault_sessions). Structure it:
304
309
 
305
- Call `vault_report` with action "graph" reporting:
306
- - Entities created: N
307
- - Spore→entity REFERENCES edges: N
308
- - Entity→entity structural edges: N
309
- tools:
310
- - vault_spores
311
- - vault_sessions
312
- - vault_search_semantic
313
- - vault_entities
314
- - vault_edges
315
- - vault_create_entity
316
- - vault_create_edge
317
- - vault_report
318
- maxTurns: 35
319
- required: false
310
+ **Chosen tier for this run: <selected_tier>**
311
+ Include the rotation_reason verbatim from the tool so readers
312
+ can audit the decision.
320
313
 
321
- # ---- Digest: assess + 3 parallel tier writes ----
322
- # The assess phase gathers context, then each tier runs independently
323
- # in the same wave via Promise.allSettled().
314
+ **New material to integrate (scoped to the chosen tier):**
315
+ - List each insight with enough detail that the tier writer can
316
+ incorporate it without re-searching
317
+ - Include specific spore content, not just spore counts
324
318
 
325
- - name: digest-assess
326
- model: claude-sonnet-4-6
327
- dependsOn: [consolidate]
328
- prompt: |
329
- Assess current digest state and gather material for tier updates.
330
- The 3 digest tier phases run in parallel after you — your summary
331
- is their primary input. Be thorough.
332
-
333
- ## Step 1: Check current state (budget: 2 turns)
334
-
335
- Call `vault_read_digest` (no tier param) to see current digest state.
336
- Note each tier's `generated_at` timestamp — this tells you how fresh
337
- each tier is. Review the prior phase results (in your context):
338
- - How many spores were created/superseded?
339
- - How many entities/edges were added?
340
- - Did consolidate or graph act on externally-created spores or entities?
341
-
342
- If changes are minor (< 3 new spores, 0 entity changes), call
343
- `vault_report` with action "skip" and reason explaining why the
344
- current digest is still sufficient. STOP.
345
-
346
- ## Step 2: Gather new material (budget: 5 turns)
347
-
348
- Search for material relevant to what changed:
349
- 1. Call `vault_search_semantic` with themes from newly created/superseded
350
- spores and new entity names
351
- 2. Call `vault_spores` to see recently created observations
352
- 3. Call `vault_sessions` for recent session context
353
-
354
- ## Step 3: Produce detailed findings
355
-
356
- Your final response is critical — the per-tier phases see it as their
357
- primary context (they cannot call vault_spores or vault_sessions).
358
- Structure your summary as:
359
-
360
- **New material to integrate:**
361
- - List each new insight, decision, pattern, gotcha with enough detail
362
- that a tier writer can incorporate it without re-searching
363
- - Include specific spore content, not just "3 new spores were created"
364
-
365
- **Themes and connections:**
366
- - What overarching themes connect the new material?
367
- - What existing digest sections are affected?
368
-
369
- **Per-tier freshness and guidance:**
370
- For each tier, state whether it should UPDATE or SKIP based on both
371
- the volume of new material AND the tier's `generated_at` freshness:
372
- - A tier written < 30 minutes ago with only minor changes → SKIP
373
- - A tier written hours ago or with significant changes → UPDATE
374
- - Larger tiers (10000) tolerate more frequent updates since
375
- they have room for incremental additions
376
- - Smaller tiers (1500) should only update for material that
377
- genuinely changes the executive picture
378
-
379
- Per-tier directives:
380
- - 10000: UPDATE/SKIP + what to add (any new content)
381
- - 5000: UPDATE/SKIP + what to add (trade-offs and patterns)
382
- - 1500: UPDATE/SKIP + what to add (only critical changes)
319
+ **Themes and connections** relevant to the chosen tier.
320
+
321
+ **Per-tier directives** — mark exactly the `selected_tier` as
322
+ UPDATE, the other two as SKIP, and include the tool's
323
+ rotation_reason in the UPDATE line:
324
+ - 10000: UPDATE or SKIP + one-line reason
325
+ - 5000: UPDATE or SKIP + one-line reason
326
+ - 1500: UPDATE or SKIP + one-line reason
327
+
328
+ Tools available: {{phase_tools}}.
383
329
  tools:
384
330
  - vault_spores
385
331
  - vault_sessions
386
332
  - vault_search_semantic
387
333
  - vault_read_digest
388
334
  - vault_report
389
- maxTurns: 10
335
+ maxTurns: 12
390
336
  required: true
391
337
 
392
338
  - name: digest-10000
393
- model: claude-haiku-4-5-20251001
339
+ reasoningLevel: low
394
340
  dependsOn: [digest-assess]
395
341
  prompt: |
396
342
  Update digest tier 10000 — Full institutional knowledge.
@@ -427,7 +373,7 @@ phases:
427
373
  required: false
428
374
 
429
375
  - name: digest-5000
430
- model: claude-haiku-4-5-20251001
376
+ reasoningLevel: low
431
377
  dependsOn: [digest-assess]
432
378
  prompt: |
433
379
  Update digest tier 5000 — Deep onboarding.
@@ -463,7 +409,7 @@ phases:
463
409
  required: false
464
410
 
465
411
  - name: digest-1500
466
- model: claude-haiku-4-5-20251001
412
+ reasoningLevel: low
467
413
  dependsOn: [digest-assess]
468
414
  prompt: |
469
415
  Update digest tier 1500 — Executive briefing.
@@ -499,8 +445,8 @@ phases:
499
445
  required: false
500
446
 
501
447
  - name: report
502
- model: claude-haiku-4-5-20251001
503
- dependsOn: [extract, summarize, consolidate, graph, digest-assess, digest-10000, digest-5000, digest-1500]
448
+ reasoningLevel: low
449
+ dependsOn: [extract, summarize, consolidate, digest-assess, digest-10000, digest-5000, digest-1500]
504
450
  prompt: |
505
451
  Summarize what was done across all phases.
506
452
 
@@ -509,7 +455,6 @@ phases:
509
455
  - Spores created: N (by type)
510
456
  - Sessions updated: N
511
457
  - Wisdom created: N
512
- - Entities created: N, edges created: N
513
458
  - Digest tiers written: N
514
459
 
515
460
  This report MUST be the last tool call of the run.
@@ -0,0 +1,370 @@
1
+ # =============================================================================
2
+ # Built-in Task: Vault Seed (Phased)
3
+ # =============================================================================
4
+ # Manual-only task for: myco-agent
5
+ #
6
+ # One-shot seeding pass for brownfield codebases. Unlike vault-evolve,
7
+ # which processes session transcripts, vault-seed infers knowledge
8
+ # directly from source files using filesystem + grep tools. Intended to
9
+ # be run when adopting Myco on an existing repo — fills the vault with
10
+ # an initial spore set and digest so the assistant has useful context
11
+ # from day one.
12
+ # =============================================================================
13
+
14
+ name: vault-seed
15
+ displayName: Vault Seed
16
+ description: >
17
+ One-shot seeding pass for a brownfield codebase. Explores the project
18
+ with filesystem and grep tools, identifies architectural patterns,
19
+ conventions, and gotchas, then populates the vault with an initial
20
+ spore set and a starter digest. Manual trigger only — no session data
21
+ required.
22
+ agent: myco-agent
23
+ isDefault: false
24
+ maxTurns: 300
25
+ timeoutSeconds: 3600
26
+ reasoningLevel: default
27
+
28
+ # No schedule — always manual. Running automatically would re-seed an
29
+ # already-populated vault.
30
+
31
+ prompt: >
32
+ You are running a one-shot seeding pass over a brownfield codebase.
33
+ There are no session transcripts to process — infer knowledge directly
34
+ from source. Focus on architectural patterns, conventions, trade-offs,
35
+ and gotchas that a new developer or agent onboarding to this code
36
+ would benefit from. Quality over quantity — one precise observation is
37
+ worth more than ten vague ones.
38
+
39
+ IMPORTANT: the pipeline is phased, and each phase has a different
40
+ tool surface. Early phases explore source with filesystem tools;
41
+ later phases write observations to the vault using vault_* tools.
42
+ Each phase's prompt lists the tools it has. Trust that list and call
43
+ those tools directly. Do not rationalize that a declared tool is
44
+ "unavailable" based on what earlier phases used.
45
+
46
+ phases:
47
+ - name: orient
48
+ reasoningLevel: default
49
+ readOnly: true
50
+ prompt: |
51
+ **Your ONLY job this phase: produce a 3-8 item theme list from
52
+ surface signals.** You are NOT verifying themes, NOT reading
53
+ implementation, and NOT building a comprehensive understanding.
54
+ That work belongs to the next phase (explore-themes), which has
55
+ a much larger budget and is designed for it.
56
+
57
+ **Hard turn budget: {{max_turns}}.** Each tool call costs one
58
+ turn. If you exhaust the budget before calling `vault_report`
59
+ with the theme list, this phase fails and blocks the rest of
60
+ the pipeline. Treat the budget as a constraint, not a suggestion
61
+ — finish well under it.
62
+
63
+ **Scope guard:** if you find yourself opening a file under
64
+ `packages/*/src/**`, `src/**`, `lib/**`, or any implementation
65
+ directory, STOP. That is explore-themes's job. Orient reads
66
+ top-level metadata and docs only.
67
+
68
+ ## Exact tool plan (budget: ~8 tool calls total)
69
+
70
+ Call ONLY these tools, in this order. Do NOT add calls.
71
+
72
+ 1. `fs_tree` at `.` with depth=1 — 1 call, 1 turn.
73
+ 2. `fs_read` the README (no line window) — 1 call, 1 turn.
74
+ 3. `fs_read` the primary manifest (package.json / pyproject.toml /
75
+ Cargo.toml / go.mod / Gemfile / pom.xml — pick the one that
76
+ exists, skip if unclear) — 0 or 1 call.
77
+ 4. `fs_list` at `.` — 1 call, 1 turn. After this call you have
78
+ seen every top-level tooling signal. DO NOT list additional
79
+ directories in this phase; recursive layout exploration is
80
+ explore-themes's job.
81
+ 5. (Optional) `fs_list` on `docs/` — 0 or 1 call. If you do, then
82
+ `fs_read` AT MOST 2 files that clearly look like architecture
83
+ or overview docs — max 2 more calls.
84
+ 6. `vault_report` with action "orient" and the theme list — 1
85
+ call. This is your last tool call. The phase ends here.
86
+
87
+ Skipping steps is fine. Adding steps is not. If you are tempted
88
+ to list a subdirectory to "see what's inside it," resist —
89
+ explore-themes will do that with more budget.
90
+
91
+ **Frugality:** every tool response comes back as tokens on your
92
+ next turn's input. Narrow calls keep the budget healthy.
93
+
94
+ ## Output: theme outline
95
+
96
+ From those surface signals alone, name 3-8 themes worth deeper
97
+ exploration in the next phase. Name them confidently even if you
98
+ don't have full evidence yet — the next phase will verify them.
99
+ Good themes:
100
+ - major architectural layers ("agent harness", "daemon", "UI")
101
+ - cross-cutting domain concepts ("team sync", "session lifecycle")
102
+ - notable integration points ("MCP server", "SQLite vault")
103
+ - conventions worth surfacing (testing style, error handling)
104
+
105
+ Avoid generic themes like "TypeScript code" or "tests exist".
106
+
107
+ Call `vault_report` with action "orient" and the structured theme
108
+ list. This is your final tool call for this phase.
109
+ tools:
110
+ - fs_tree
111
+ - fs_list
112
+ - fs_read
113
+ - vault_report
114
+ maxTurns: 25
115
+ required: true
116
+
117
+ - name: explore-themes
118
+ reasoningLevel: default
119
+ readOnly: true
120
+ dependsOn: [orient]
121
+ prompt: |
122
+ For each theme identified in the orient phase, drill down with
123
+ `code_grep` and targeted `fs_read` calls. Collect specific,
124
+ concrete observations that would survive the code evolving.
125
+
126
+ ## Strategy (budget: 4-6 turns per theme)
127
+
128
+ For each theme:
129
+ 1. `code_grep` for signature patterns — class/interface names,
130
+ distinctive function names, keywords. Use a `glob` filter when
131
+ the language is known (e.g., `*.ts`, `*.py`).
132
+ 2. `fs_read` the 2-4 most informative files you find. Prefer
133
+ cross-cutting modules over leaf files.
134
+ 3. Note 3-6 concrete observations for the theme. Anchor each to
135
+ file paths or function names.
136
+
137
+ ## What makes a good observation
138
+
139
+ - Anchored to specific file paths, function names, or patterns
140
+ - Captures trade-offs, gotchas, or non-obvious invariants
141
+ - Explains WHY when the reasoning is evident from the code
142
+ - Would be useful to an agent or developer onboarding
143
+
144
+ ## What to skip
145
+
146
+ - Boilerplate (standard manifest fields, generated code)
147
+ - Implementation details that change frequently
148
+ - Things obvious from the README
149
+ - Generic advice ("use TypeScript") — only observations specific to
150
+ THIS codebase belong in the vault
151
+
152
+ ## Output
153
+
154
+ Produce a structured summary grouped by theme, focused on
155
+ OBSERVATIONS (the conclusions) rather than a log of what you did.
156
+ Write the summary as if a separate agent will read it cold and
157
+ turn each observation into a durable note. Avoid phrases like
158
+ "I ran fs_tree on…" or "I read the README" — name the observation
159
+ and anchor it to specific paths. The seed-spores phase runs with
160
+ a different tool surface and should not be primed to expect
161
+ filesystem access.
162
+
163
+ Call `vault_report` with action "explore" and the structured result.
164
+ tools:
165
+ - fs_tree
166
+ - fs_list
167
+ - fs_read
168
+ - code_grep
169
+ - vault_report
170
+ maxTurns: 120
171
+ required: true
172
+
173
+ - name: seed-spores
174
+ reasoningLevel: default
175
+ dependsOn: [explore-themes]
176
+ prompt: |
177
+ Create spores for the observations from the explore phase.
178
+
179
+ **Hard turn budget: {{max_turns}}.** Each tool call costs one
180
+ turn. Every observation needs one `vault_create_spore` call;
181
+ budget your work accordingly.
182
+
183
+ ## Your tools this phase
184
+
185
+ You have these tools and ONLY these tools: {{phase_tools}}.
186
+ They are registered and available. Call them directly. Do NOT
187
+ verify or second-guess. Filesystem tools from earlier phases
188
+ are not needed here — the explore-themes summary in your
189
+ context contains everything you need to create spores.
190
+
191
+ ## Step 1: Re-seed check (1 tool call)
192
+
193
+ This phase runs on cold vaults AND on vaults that have been
194
+ seeded before. Call `vault_search_semantic` ONCE with a broad
195
+ query derived from the strongest theme (e.g. the name of the
196
+ highest-signal architectural layer from the explore summary).
197
+
198
+ - If the search returns several high-similarity results (many
199
+ scores > 0.85), the vault is already populated. Call
200
+ `vault_report` with action "skip" and reason "vault already
201
+ populated" and STOP. Do not create duplicate spores.
202
+ - If the search returns nothing or only low-similarity results
203
+ (typical for a cold vault with no embeddings, or a vault with
204
+ unrelated prior content), proceed to Step 2.
205
+
206
+ Do NOT run per-observation similarity searches — dedup across
207
+ existing spores is the job of the separate consolidation task,
208
+ not seed-spores. One broad re-seed check is enough.
209
+
210
+ ## Step 2: Create spores (the bulk of your budget)
211
+
212
+ For each observation in the explore summary, call
213
+ `vault_create_spore` with:
214
+ - observation_type: "decision", "pattern", "wisdom", "gotcha",
215
+ or "architecture" based on what the observation captures
216
+ - content: the full observation — concrete and specific
217
+ - importance: 1-10 (10 = load-bearing architectural invariant,
218
+ 3 = minor stylistic preference)
219
+ - tags: 2-4 tags covering theme and domain
220
+ - file_path: the primary source file when the observation
221
+ anchors to one specific location
222
+ - session_id: null (no session provenance — this is seed data)
223
+ - prompt_batch_id: null
224
+ - context: "Seeded from vault-seed exploration pass"
225
+
226
+ ## Quality rules
227
+
228
+ - One observation per spore — specific, not vague
229
+ - Prefer fewer, higher-signal spores over many low-signal ones
230
+ - Target: 10-40 spores per seed run. If the exploration produced
231
+ far more candidates, prioritize by importance and drop the rest
232
+ rather than creating everything
233
+ - Observations anchored to specific file paths are stronger than
234
+ abstract statements
235
+ tools:
236
+ - vault_search_semantic
237
+ - vault_create_spore
238
+ - vault_report
239
+ maxTurns: 80
240
+ required: true
241
+
242
+ # ---- Digest tiers (parallel after seed-spores) ----
243
+ # Mirrors the vault-evolve pattern: three tiers writing in the same
244
+ # wave after seeding completes.
245
+
246
+ - name: digest-10000
247
+ reasoningLevel: default
248
+ dependsOn: [seed-spores]
249
+ prompt: |
250
+ Write digest tier 10000 — Full institutional knowledge (~10k tokens).
251
+
252
+ ## Your tools this phase
253
+
254
+ You have these tools and ONLY these tools:
255
+ `vault_spores`, `vault_search_semantic`, `vault_read_digest`,
256
+ `vault_write_digest`, `vault_report`. They are registered and
257
+ available. Call them directly. Filesystem tools from earlier
258
+ phases are NOT in scope here — the spores created in seed-spores
259
+ contain everything you need.
260
+
261
+ If the seed-spores phase short-circuited with "vault already populated",
262
+ call `vault_report` with action "skip" for tier 10000 and finish.
263
+
264
+ 1. Call `vault_read_digest` with tier 10000 to see any existing content.
265
+ If this is a first seed run, it will be empty.
266
+ 2. Call `vault_spores` with status "active" to read the freshly seeded
267
+ observations.
268
+ 3. Organize the digest around the themes from the explore phase.
269
+ Include concrete file paths and function names. A reader should
270
+ come away with a thorough picture of the architecture, key
271
+ decisions, and gotchas.
272
+ 4. Call `vault_write_digest` with tier 10000.
273
+
274
+ If the existing digest already contains comparable content (re-seed
275
+ case), integrate rather than overwrite — preserve well-crafted text.
276
+ tools:
277
+ - vault_spores
278
+ - vault_search_semantic
279
+ - vault_read_digest
280
+ - vault_write_digest
281
+ - vault_report
282
+ maxTurns: 15
283
+ required: false
284
+
285
+ - name: digest-5000
286
+ reasoningLevel: default
287
+ dependsOn: [seed-spores]
288
+ prompt: |
289
+ Write digest tier 5000 — Deep onboarding (~5k tokens).
290
+
291
+ ## Your tools this phase
292
+
293
+ You have these tools and ONLY these tools:
294
+ `vault_spores`, `vault_read_digest`, `vault_write_digest`,
295
+ `vault_report`. They are registered and available. Call them
296
+ directly. Filesystem tools from earlier phases are NOT in scope.
297
+
298
+ If the seed-spores phase short-circuited, call `vault_report` with
299
+ action "skip" for tier 5000 and finish.
300
+
301
+ This tier focuses on trade-offs and patterns — what a developer
302
+ needs after the README but before diving into code.
303
+
304
+ 1. Call `vault_read_digest` with tier 5000 for the baseline.
305
+ 2. Call `vault_spores` as the primary source (digest-10000 may still
306
+ be in-flight — don't depend on it).
307
+ 3. Call `vault_write_digest` with tier 5000. Trim and synthesize;
308
+ this tier is a compression of tier 10000's material.
309
+ tools:
310
+ - vault_spores
311
+ - vault_read_digest
312
+ - vault_write_digest
313
+ - vault_report
314
+ maxTurns: 12
315
+ required: false
316
+
317
+ - name: digest-1500
318
+ reasoningLevel: default
319
+ dependsOn: [seed-spores]
320
+ prompt: |
321
+ Write digest tier 1500 — Executive briefing (~1.5k tokens).
322
+
323
+ ## Your tools this phase
324
+
325
+ You have these tools and ONLY these tools:
326
+ `vault_spores`, `vault_read_digest`, `vault_write_digest`,
327
+ `vault_report`. They are registered and available. Call them
328
+ directly. Filesystem tools from earlier phases are NOT in scope.
329
+
330
+ If the seed-spores phase short-circuited, call `vault_report` with
331
+ action "skip" for tier 1500 and finish.
332
+
333
+ The tightest tier: what someone needs to know in 2 minutes.
334
+ Architectural overview in 1-2 sentences, 2-3 load-bearing decisions,
335
+ the critical gotchas. Ruthlessly selective.
336
+
337
+ 1. Call `vault_spores` filtered to importance >= 8 to find the
338
+ top-signal observations.
339
+ 2. Call `vault_write_digest` with tier 1500.
340
+ tools:
341
+ - vault_spores
342
+ - vault_read_digest
343
+ - vault_write_digest
344
+ - vault_report
345
+ maxTurns: 8
346
+ required: false
347
+
348
+ - name: report
349
+ reasoningLevel: low
350
+ dependsOn: [seed-spores, digest-10000, digest-5000, digest-1500]
351
+ prompt: |
352
+ Summarize the seeding pass.
353
+
354
+ Your only tool this phase is `vault_report`. Call it — it is
355
+ registered and available.
356
+
357
+ Call `vault_report` with action "complete" and these details:
358
+ - Themes explored: N
359
+ - Spores created: N (by type)
360
+ - Spores superseded: N
361
+ - Digest tiers written: [list]
362
+ - Thin coverage: any themes where the exploration surfaced fewer than
363
+ 3 observations — surface these so the user can follow up with a
364
+ targeted review-session or additional manual curation
365
+
366
+ This report MUST be the last tool call of the run.
367
+ tools:
368
+ - vault_report
369
+ maxTurns: 5
370
+ required: true