@goondocks/myco 0.20.1 → 0.21.0

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 (196) hide show
  1. package/dist/agent-eval-RJSQI5S2.js +355 -0
  2. package/dist/agent-eval-RJSQI5S2.js.map +1 -0
  3. package/dist/{agent-run-PQXC246Y.js → agent-run-2JSYFOKU.js} +10 -8
  4. package/dist/{agent-run-PQXC246Y.js.map → agent-run-2JSYFOKU.js.map} +1 -1
  5. package/dist/{agent-tasks-323BZEBX.js → agent-tasks-APFJIM2T.js} +10 -8
  6. package/dist/{agent-tasks-323BZEBX.js.map → agent-tasks-APFJIM2T.js.map} +1 -1
  7. package/dist/{chunk-SRXTSI25.js → chunk-53RPGOEN.js} +57 -9
  8. package/dist/chunk-53RPGOEN.js.map +1 -0
  9. package/dist/chunk-54SXG5HF.js +26 -0
  10. package/dist/chunk-54SXG5HF.js.map +1 -0
  11. package/dist/{chunk-DCSGJ7W4.js → chunk-5ZG4RMUH.js} +2 -2
  12. package/dist/{chunk-FLLBJLHM.js → chunk-6C6QZ4PM.js} +9 -5
  13. package/dist/chunk-6C6QZ4PM.js.map +1 -0
  14. package/dist/chunk-6LB7XELY.js +406 -0
  15. package/dist/chunk-6LB7XELY.js.map +1 -0
  16. package/dist/{chunk-22JALAXN.js → chunk-75Z7UKDY.js} +4 -4
  17. package/dist/{chunk-AIYFHQRX.js → chunk-BUTL6IFS.js} +2 -2
  18. package/dist/chunk-CESKJD44.js +586 -0
  19. package/dist/chunk-CESKJD44.js.map +1 -0
  20. package/dist/chunk-CISWUP5W.js +101 -0
  21. package/dist/chunk-CISWUP5W.js.map +1 -0
  22. package/dist/chunk-DJ3IHNYO.js +50 -0
  23. package/dist/chunk-DJ3IHNYO.js.map +1 -0
  24. package/dist/chunk-F3OEQYLS.js +847 -0
  25. package/dist/chunk-F3OEQYLS.js.map +1 -0
  26. package/dist/{chunk-6RFZWV4R.js → chunk-FCJ5JV54.js} +1 -1
  27. package/dist/{chunk-6RFZWV4R.js.map → chunk-FCJ5JV54.js.map} +1 -1
  28. package/dist/{chunk-63ZGP4Q2.js → chunk-G6QIBNZM.js} +9 -6
  29. package/dist/{chunk-63ZGP4Q2.js.map → chunk-G6QIBNZM.js.map} +1 -1
  30. package/dist/{chunk-57O67XVF.js → chunk-ILJPRYES.js} +6 -4
  31. package/dist/{chunk-57O67XVF.js.map → chunk-ILJPRYES.js.map} +1 -1
  32. package/dist/{chunk-US4LNCAT.js → chunk-IPPMYQ2Y.js} +5 -1
  33. package/dist/chunk-IPPMYQ2Y.js.map +1 -0
  34. package/dist/{chunk-UEWMSIL3.js → chunk-JR54LTPP.js} +4 -4
  35. package/dist/{chunk-4M7EWPIA.js → chunk-JZS6GZ6T.js} +16 -93
  36. package/dist/chunk-JZS6GZ6T.js.map +1 -0
  37. package/dist/{chunk-5XIVBO25.js → chunk-LVIY7P35.js} +2 -2
  38. package/dist/chunk-NGH7U6A3.js +13844 -0
  39. package/dist/chunk-NGH7U6A3.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-3WWJOTYG.js → chunk-P66DLD6G.js} +22 -10
  43. package/dist/chunk-P66DLD6G.js.map +1 -0
  44. package/dist/{chunk-QS5TWZBL.js → chunk-R2JIJBCL.js} +18 -4
  45. package/dist/{chunk-QS5TWZBL.js.map → chunk-R2JIJBCL.js.map} +1 -1
  46. package/dist/{chunk-MYOZLMB2.js → chunk-RL5R4CQU.js} +538 -19
  47. package/dist/chunk-RL5R4CQU.js.map +1 -0
  48. package/dist/{chunk-EVDQKYCG.js → chunk-RQSJLWP4.js} +13 -2
  49. package/dist/chunk-RQSJLWP4.js.map +1 -0
  50. package/dist/{chunk-BPRIYNLE.js → chunk-TKAJ3JVF.js} +3 -3
  51. package/dist/{chunk-LZP4IJB3.js → chunk-VHNRMM4O.js} +3 -2
  52. package/dist/{chunk-FMRZ26U5.js → chunk-X3IGT5RV.js} +5 -2
  53. package/dist/{chunk-FMRZ26U5.js.map → chunk-X3IGT5RV.js.map} +1 -1
  54. package/dist/{chunk-KHT24OWC.js → chunk-YDUOSRGD.js} +8 -94
  55. package/dist/{chunk-KHT24OWC.js.map → chunk-YDUOSRGD.js.map} +1 -1
  56. package/dist/{cli-UWBAOHLL.js → cli-LNYSTDQM.js} +49 -42
  57. package/dist/cli-LNYSTDQM.js.map +1 -0
  58. package/dist/{client-SLDDMSKN.js → client-NWE4TCNO.js} +4 -4
  59. package/dist/{config-XPV5GDE4.js → config-VC4ACP42.js} +6 -4
  60. package/dist/{config-XPV5GDE4.js.map → config-VC4ACP42.js.map} +1 -1
  61. package/dist/{detect-providers-5KOPZ7J2.js → detect-providers-ILLQZROY.js} +4 -4
  62. package/dist/{doctor-UUUOVDZS.js → doctor-TI7EZ3RW.js} +48 -15
  63. package/dist/doctor-TI7EZ3RW.js.map +1 -0
  64. package/dist/executor-F2YU7HXJ.js +44 -0
  65. package/dist/{init-UDH3ZBDD.js → init-KG3TYVGE.js} +14 -12
  66. package/dist/{init-UDH3ZBDD.js.map → init-KG3TYVGE.js.map} +1 -1
  67. package/dist/{installer-I6KRGJOO.js → installer-UMH7OJ5A.js} +6 -4
  68. package/dist/{llm-TH4NLIRM.js → llm-AGVEF5XD.js} +5 -4
  69. package/dist/{loader-H7OFASVC.js → loader-LX7TFRM6.js} +5 -3
  70. package/dist/{loader-TSB5M7FD.js → loader-NAVVZK63.js} +4 -3
  71. package/dist/{main-E7HU4QYR.js → main-5PRQNEEE.js} +2457 -649
  72. package/dist/main-5PRQNEEE.js.map +1 -0
  73. package/dist/{open-4UGDPBKN.js → open-5A27BCSB.js} +10 -8
  74. package/dist/{open-4UGDPBKN.js.map → open-5A27BCSB.js.map} +1 -1
  75. package/dist/{post-compact-BFU3WZSV.js → post-compact-USAODKPQ.js} +6 -6
  76. package/dist/{post-tool-use-RYHXLCTC.js → post-tool-use-GMMSYBII.js} +9 -7
  77. package/dist/post-tool-use-GMMSYBII.js.map +1 -0
  78. package/dist/{post-tool-use-failure-DCVHK2P3.js → post-tool-use-failure-NZVSL2PO.js} +6 -6
  79. package/dist/{pre-compact-EZZCJ6AG.js → pre-compact-LZ57DLUS.js} +6 -6
  80. package/dist/{provider-check-43LAMSMH.js → provider-check-ZEV5P4KM.js} +4 -4
  81. package/dist/{registry-MGJSJBAS.js → registry-M2Z5QBWH.js} +5 -4
  82. package/dist/{remove-GBBQG3SJ.js → remove-T3KE6C5N.js} +10 -8
  83. package/dist/{remove-GBBQG3SJ.js.map → remove-T3KE6C5N.js.map} +1 -1
  84. package/dist/{restart-RMIGKMA6.js → restart-YWDEVZUJ.js} +11 -9
  85. package/dist/{restart-RMIGKMA6.js.map → restart-YWDEVZUJ.js.map} +1 -1
  86. package/dist/{search-2A5AJVNG.js → search-GKFDGELR.js} +11 -9
  87. package/dist/{search-2A5AJVNG.js.map → search-GKFDGELR.js.map} +1 -1
  88. package/dist/{server-TSYZMFFK.js → server-AHUR6CWF.js} +368 -269
  89. package/dist/server-AHUR6CWF.js.map +1 -0
  90. package/dist/{session-NKREOTEO.js → session-2ZEPLWW6.js} +11 -9
  91. package/dist/{session-NKREOTEO.js.map → session-2ZEPLWW6.js.map} +1 -1
  92. package/dist/{session-end-DQELLTGJ.js → session-end-LWJYQAXX.js} +5 -5
  93. package/dist/session-start-WTA6GCOQ.js +134 -0
  94. package/dist/session-start-WTA6GCOQ.js.map +1 -0
  95. package/dist/{setup-llm-SLX5764H.js → setup-llm-E7UU5IO7.js} +11 -9
  96. package/dist/{setup-llm-SLX5764H.js.map → setup-llm-E7UU5IO7.js.map} +1 -1
  97. package/dist/src/agent/definitions/agent.yaml +9 -5
  98. package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +93 -0
  99. package/dist/src/agent/definitions/tasks/cortex-prompt-builder.yaml +67 -0
  100. package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -1
  101. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
  102. package/dist/src/agent/definitions/tasks/review-session.yaml +10 -39
  103. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +5 -4
  104. package/dist/src/agent/definitions/tasks/skill-generate.yaml +2 -1
  105. package/dist/src/agent/definitions/tasks/skill-survey.yaml +25 -13
  106. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
  107. package/dist/src/agent/definitions/tasks/title-summary.yaml +12 -19
  108. package/dist/src/agent/definitions/tasks/{full-intelligence.yaml → vault-evolve.yaml} +18 -83
  109. package/dist/src/agent/definitions/tasks/vault-seed.yaml +370 -0
  110. package/dist/src/agent/prompts/agent.md +12 -38
  111. package/dist/src/cli.js +1 -1
  112. package/dist/src/daemon/main.js +1 -1
  113. package/dist/src/hooks/post-tool-use.js +1 -1
  114. package/dist/src/hooks/session-end.js +1 -1
  115. package/dist/src/hooks/session-start.js +1 -1
  116. package/dist/src/hooks/stop.js +1 -1
  117. package/dist/src/hooks/user-prompt-submit.js +1 -1
  118. package/dist/src/mcp/server.js +1 -1
  119. package/dist/src/symbionts/manifests/claude-code.yaml +4 -0
  120. package/dist/src/symbionts/manifests/pi.yaml +22 -0
  121. package/dist/src/symbionts/templates/pi/package.json +6 -0
  122. package/dist/src/symbionts/templates/pi/plugin.ts +559 -0
  123. package/dist/{stats-ARBLNEE3.js → stats-DFG6S23S.js} +11 -9
  124. package/dist/{stats-ARBLNEE3.js.map → stats-DFG6S23S.js.map} +1 -1
  125. package/dist/{stop-5AJXBKEE.js → stop-WRBTXEVT.js} +5 -5
  126. package/dist/{stop-failure-XGKTZPLR.js → stop-failure-32MGIG2Q.js} +6 -6
  127. package/dist/{subagent-start-2JLIPGJN.js → subagent-start-VFGHQFVL.js} +6 -6
  128. package/dist/{subagent-stop-FV4EOKWZ.js → subagent-stop-663FXG3P.js} +6 -6
  129. package/dist/{task-completed-XJKT366I.js → task-completed-ZCQYEFMZ.js} +6 -6
  130. package/dist/{team-3JKF7VAD.js → team-JTI5CDUO.js} +7 -5
  131. package/dist/{turns-YFNI5CQC.js → turns-HU2CTZAP.js} +2 -2
  132. package/dist/ui/assets/index-DGf1h-Ha.js +842 -0
  133. package/dist/ui/assets/index-_OP4ifzH.css +1 -0
  134. package/dist/ui/index.html +2 -2
  135. package/dist/{update-XVSAMN4O.js → update-3NBQTG32.js} +10 -8
  136. package/dist/{update-XVSAMN4O.js.map → update-3NBQTG32.js.map} +1 -1
  137. package/dist/{user-prompt-submit-TTBTHBBH.js → user-prompt-submit-ME2TBKOS.js} +8 -7
  138. package/dist/{user-prompt-submit-TTBTHBBH.js.map → user-prompt-submit-ME2TBKOS.js.map} +1 -1
  139. package/dist/{verify-LMHNEYIP.js → verify-R76ZFJSZ.js} +8 -5
  140. package/dist/{verify-LMHNEYIP.js.map → verify-R76ZFJSZ.js.map} +1 -1
  141. package/dist/{version-HRVSEMUR.js → version-GQAFBBPX.js} +2 -2
  142. package/dist/version-GQAFBBPX.js.map +1 -0
  143. package/package.json +3 -1
  144. package/skills/myco/SKILL.md +16 -1
  145. package/skills/myco/references/cli-usage.md +1 -1
  146. package/skills/myco-curate/SKILL.md +1 -1
  147. package/dist/chunk-3WWJOTYG.js.map +0 -1
  148. package/dist/chunk-4M7EWPIA.js.map +0 -1
  149. package/dist/chunk-4YFKBL3F.js +0 -195
  150. package/dist/chunk-4YFKBL3F.js.map +0 -1
  151. package/dist/chunk-EVDQKYCG.js.map +0 -1
  152. package/dist/chunk-FGY7J6EZ.js +0 -2276
  153. package/dist/chunk-FGY7J6EZ.js.map +0 -1
  154. package/dist/chunk-FLLBJLHM.js.map +0 -1
  155. package/dist/chunk-MYOZLMB2.js.map +0 -1
  156. package/dist/chunk-SRXTSI25.js.map +0 -1
  157. package/dist/chunk-US4LNCAT.js.map +0 -1
  158. package/dist/cli-UWBAOHLL.js.map +0 -1
  159. package/dist/doctor-UUUOVDZS.js.map +0 -1
  160. package/dist/executor-J4IBXSBY.js +0 -2472
  161. package/dist/executor-J4IBXSBY.js.map +0 -1
  162. package/dist/main-E7HU4QYR.js.map +0 -1
  163. package/dist/post-tool-use-RYHXLCTC.js.map +0 -1
  164. package/dist/server-TSYZMFFK.js.map +0 -1
  165. package/dist/session-start-5SUTR5GP.js +0 -189
  166. package/dist/session-start-5SUTR5GP.js.map +0 -1
  167. package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +0 -93
  168. package/dist/ui/assets/index-C2JuNtRB.css +0 -1
  169. package/dist/ui/assets/index-JLVaQKV2.js +0 -832
  170. /package/dist/{chunk-DCSGJ7W4.js.map → chunk-5ZG4RMUH.js.map} +0 -0
  171. /package/dist/{chunk-22JALAXN.js.map → chunk-75Z7UKDY.js.map} +0 -0
  172. /package/dist/{chunk-AIYFHQRX.js.map → chunk-BUTL6IFS.js.map} +0 -0
  173. /package/dist/{chunk-UEWMSIL3.js.map → chunk-JR54LTPP.js.map} +0 -0
  174. /package/dist/{chunk-5XIVBO25.js.map → chunk-LVIY7P35.js.map} +0 -0
  175. /package/dist/{chunk-BPRIYNLE.js.map → chunk-TKAJ3JVF.js.map} +0 -0
  176. /package/dist/{chunk-LZP4IJB3.js.map → chunk-VHNRMM4O.js.map} +0 -0
  177. /package/dist/{client-SLDDMSKN.js.map → client-NWE4TCNO.js.map} +0 -0
  178. /package/dist/{detect-providers-5KOPZ7J2.js.map → detect-providers-ILLQZROY.js.map} +0 -0
  179. /package/dist/{installer-I6KRGJOO.js.map → executor-F2YU7HXJ.js.map} +0 -0
  180. /package/dist/{llm-TH4NLIRM.js.map → installer-UMH7OJ5A.js.map} +0 -0
  181. /package/dist/{loader-H7OFASVC.js.map → llm-AGVEF5XD.js.map} +0 -0
  182. /package/dist/{loader-TSB5M7FD.js.map → loader-LX7TFRM6.js.map} +0 -0
  183. /package/dist/{provider-check-43LAMSMH.js.map → loader-NAVVZK63.js.map} +0 -0
  184. /package/dist/{post-compact-BFU3WZSV.js.map → post-compact-USAODKPQ.js.map} +0 -0
  185. /package/dist/{post-tool-use-failure-DCVHK2P3.js.map → post-tool-use-failure-NZVSL2PO.js.map} +0 -0
  186. /package/dist/{pre-compact-EZZCJ6AG.js.map → pre-compact-LZ57DLUS.js.map} +0 -0
  187. /package/dist/{registry-MGJSJBAS.js.map → provider-check-ZEV5P4KM.js.map} +0 -0
  188. /package/dist/{team-3JKF7VAD.js.map → registry-M2Z5QBWH.js.map} +0 -0
  189. /package/dist/{session-end-DQELLTGJ.js.map → session-end-LWJYQAXX.js.map} +0 -0
  190. /package/dist/{stop-5AJXBKEE.js.map → stop-WRBTXEVT.js.map} +0 -0
  191. /package/dist/{stop-failure-XGKTZPLR.js.map → stop-failure-32MGIG2Q.js.map} +0 -0
  192. /package/dist/{subagent-start-2JLIPGJN.js.map → subagent-start-VFGHQFVL.js.map} +0 -0
  193. /package/dist/{subagent-stop-FV4EOKWZ.js.map → subagent-stop-663FXG3P.js.map} +0 -0
  194. /package/dist/{task-completed-XJKT366I.js.map → task-completed-ZCQYEFMZ.js.map} +0 -0
  195. /package/dist/{turns-YFNI5CQC.js.map → team-JTI5CDUO.js.map} +0 -0
  196. /package/dist/{version-HRVSEMUR.js.map → turns-HU2CTZAP.js.map} +0 -0
@@ -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
@@ -1,6 +1,6 @@
1
1
  # Myco Intelligence Agent
2
2
 
3
- You are the Myco intelligence agent. You process captured developer session data to build institutional knowledge. Your job is to read raw session activity, extract meaningful observations, build a knowledge graph, maintain spore lifecycle, and synthesize digest context.
3
+ You are the Myco intelligence agent. You process captured developer session data to build institutional knowledge. Your job is to read raw session activity, extract meaningful observations, maintain spore lifecycle, and synthesize digest context.
4
4
 
5
5
  You operate on a vault database. The capture layer writes raw data (sessions, prompt batches, activities) without any intelligence. You provide the intelligence — deciding what matters, what connects, and what has changed.
6
6
 
@@ -12,17 +12,15 @@ You operate on a vault database. The capture layer writes raw data (sessions, pr
12
12
  - **vault_unprocessed** — Get prompt batches not yet processed, ordered by ID. Supports cursor-based pagination via `after_id`.
13
13
  - **vault_spores** — List existing spores with filters: `observation_type`, `status` (active/superseded/archived), `agent_id`, `session_id`, or fetch exact spores by `ids` when you need full content for a semantic shortlist.
14
14
  - **vault_sessions** — List sessions with optional `status` filter, ordered by most recent.
15
+ - **vault_session_summary_material** — Get compact title/summary material for one session in a single read: current title/summary plus the ordered prompt-batch arc with only user prompts and assistant summaries.
15
16
  - **vault_search_fts** — Full-text search across prompt batches and activities using FTS5. Best for keyword matches and finding session content. Params: `query`, `type` (prompt_batch, activity), `limit`.
16
17
  - **vault_search_semantic** — Semantic similarity search across embedded vault content (spores, sessions, plans, artifacts). Best for finding conceptually related content and shortlist candidates before reading exact records. Params: `query`, `namespace` (spores, sessions, plans, artifacts — omit to search all), `limit`.
17
18
  - **vault_read_digest** — Read current digest extracts. Call with no params for metadata, or with a `tier` number (1500/5000/10000) to read that tier's content.
18
- - **vault_entities** — List knowledge graph entities with optional `type` and `name` filters. Use to check existing entities before creating new ones.
19
- - **vault_edges** — List graph edges with optional `source_id`, `target_id`, and `type` filters. Use to check existing relationships before creating edges.
19
+ - **vault_edges** — List lineage edges between sessions, prompt batches, and spores. Use for provenance walks: `FROM_SESSION` (spore→session), `EXTRACTED_FROM` (spore→batch), `HAS_BATCH` (session→batch), `DERIVED_FROM` (wisdom→source spores), `SUPERSEDED_BY` (spore→spore). Filters: `source_id`, `target_id`, `type`.
20
20
 
21
21
  ### Write Tools
22
22
 
23
23
  - **vault_create_spore** — Create a new observation. Requires `observation_type` and `content`. Optional: `session_id`, `prompt_batch_id`, `importance` (1-10), `tags`, `context`, `file_path`, `properties` (JSON string, e.g., `'{"consolidated_from": ["id1", "id2"]}'`).
24
- - **vault_create_entity** — Create or update a knowledge graph node. Requires `type` and `name`. Upserts on (type, name). Optional: `properties` object.
25
- - **vault_create_edge** — Create a directed relationship between entities. Requires `source_id`, `target_id`, `type`. Optional: `session_id`, `confidence` (0-1), `valid_from`, `properties`.
26
24
  - **vault_resolve_spore** — Resolve a spore's lifecycle. Requires `spore_id` and `action` (supersede/archive/merge/split/consolidate). Optional: `new_spore_id`, `reason`, `session_id`.
27
25
  - **vault_update_session** — Set a session's `title` and/or `summary`.
28
26
  - **vault_set_state** — Store a key-value pair for your cursor and preferences.
@@ -61,37 +59,15 @@ A good spore is specific and captures insight, not activity.
61
59
  - Create vague spores like "worked on authentication" — be precise about what was discovered or decided
62
60
  - Inflate importance scores — most spores should be 3-6
63
61
 
64
- ## Entity Types
62
+ ## Lineage Edges (read-only, daemon-created)
65
63
 
66
- Only create an entity when it is referenced by 3+ spores from 2+ different sessions and represents a specific, named thing. Entities are hubs in the knowledge graph — not labels for every concept mentioned.
64
+ The daemon maintains a lineage graph automatically you do not create edges. Use `vault_edges` to walk provenance:
67
65
 
68
- Good entity names: "DaemonClient", "cursor-based pagination", "Chris"
69
- Bad entity names: "testing phase", "technical debt", "code quality"
70
-
71
- Three types only:
72
-
73
- - **component** — A module, class, service, or significant function (e.g., "EventBuffer", "DaemonClient", "SQLite")
74
- - **concept** — An architectural pattern or domain concept that spans multiple sessions. Must be specific and named, not abstract categories (e.g., "idempotent writes", "cursor-based pagination")
75
- - **person** — A contributor or team member mentioned in sessions
76
-
77
- ## Relationship Types
78
-
79
- **Semantic edges** (you create these via `vault_create_edge`):
80
-
81
- - **RELATES_TO** — General semantic relationship (spore→spore or entity→entity)
82
- - **SUPERSEDED_BY** — A newer observation replaces an older one (spore→spore)
83
- - **REFERENCES** — A spore references an entity (spore→entity)
84
- - **DEPENDS_ON** — Architectural dependency (entity→entity)
85
- - **AFFECTS** — An observation impacts a component (spore→entity)
86
-
87
- **Lineage edges** (created automatically — do NOT create these):
88
-
89
- - **FROM_SESSION** — spore → session (auto-created on spore insert)
90
- - **EXTRACTED_FROM** — spore → batch (auto-created on spore insert)
91
- - **HAS_BATCH** — session → batch (auto-created on batch insert)
92
- - **DERIVED_FROM** — wisdom spore → source spore (auto-created on consolidation)
93
-
94
- Set `confidence` below 1.0 when the relationship is inferred rather than explicitly stated. Include `session_id` for provenance.
66
+ - **FROM_SESSION** spore session (which session produced this observation)
67
+ - **EXTRACTED_FROM** spore batch (which prompt batch surfaced it)
68
+ - **HAS_BATCH** — session → batch (structural containment)
69
+ - **DERIVED_FROM** — wisdom spore → source spore (consolidation provenance)
70
+ - **SUPERSEDED_BY** — spore → spore (supersession link)
95
71
 
96
72
  ## Skill Lifecycle Tools
97
73
 
@@ -130,15 +106,13 @@ When running as a single-query task (no phased executor), follow this general se
130
106
  2. **Extract** — process batches, create/supersede spores, mark processed, update cursor
131
107
  3. **Summarize** — update session titles and summaries for touched sessions
132
108
  4. **Consolidate** — search for related spores, create wisdom from 3+ clusters, supersede stale pairs
133
- 5. **Build graph** — create entities (check `vault_entities` first), link with semantic edges (check `vault_edges` first)
134
- 6. **Update digest** — read current tiers via `vault_read_digest`, integrate new material, write updated tiers
135
- 7. **Report** — call `vault_report` with counts and outcomes
109
+ 5. **Update digest** — read current tiers via `vault_read_digest`, integrate new material, write updated tiers
110
+ 6. **Report** — call `vault_report` with counts and outcomes
136
111
 
137
112
  For phased tasks, follow only your assigned phase instructions. The executor controls phase sequencing.
138
113
 
139
114
  **Key rules across all modes:**
140
115
  - Supersede rather than duplicate — the vault gets sharper, not bigger
141
- - Check existing entities/edges before creating to avoid duplicates
142
116
  - One observation per spore, specific not vague
143
117
  - Report via `vault_report` after each significant action
144
118
  - If no work to do, report "skip" with reason and finish
package/dist/src/cli.js CHANGED
@@ -2,5 +2,5 @@
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
3
 
4
4
  // src/entries/cli.ts
5
- await import("../cli-UWBAOHLL.js");
5
+ await import("../cli-LNYSTDQM.js");
6
6
  //# sourceMappingURL=cli.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/daemon.ts
4
- var { main } = await import("../../main-E7HU4QYR.js");
4
+ var { main } = await import("../../main-5PRQNEEE.js");
5
5
  await main();
6
6
  //# sourceMappingURL=main.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/post-tool-use.ts
4
- var { main } = await import("../../post-tool-use-RYHXLCTC.js");
4
+ var { main } = await import("../../post-tool-use-GMMSYBII.js");
5
5
  await main();
6
6
  //# sourceMappingURL=post-tool-use.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-end.ts
4
- var { main } = await import("../../session-end-DQELLTGJ.js");
4
+ var { main } = await import("../../session-end-LWJYQAXX.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-end.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-start.ts
4
- var { main } = await import("../../session-start-5SUTR5GP.js");
4
+ var { main } = await import("../../session-start-WTA6GCOQ.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-start.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/stop.ts
4
- var { main } = await import("../../stop-5AJXBKEE.js");
4
+ var { main } = await import("../../stop-WRBTXEVT.js");
5
5
  await main();
6
6
  //# sourceMappingURL=stop.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/user-prompt-submit.ts
4
- var { main } = await import("../../user-prompt-submit-TTBTHBBH.js");
4
+ var { main } = await import("../../user-prompt-submit-ME2TBKOS.js");
5
5
  await main();
6
6
  //# sourceMappingURL=user-prompt-submit.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/mcp-server.ts
4
- var { main } = await import("../../server-TSYZMFFK.js");
4
+ var { main } = await import("../../server-AHUR6CWF.js");
5
5
  await main();
6
6
  //# sourceMappingURL=server.js.map
@@ -16,6 +16,10 @@ capture:
16
16
  # user-committed plans in the repo.
17
17
  - ~/.claude/plans/
18
18
  - .claude/plans/
19
+ planTags:
20
+ # Ultraplan sends the approved cloud plan back to the terminal by injecting
21
+ # it into the next user prompt as <ultraplan>...</ultraplan>.
22
+ - ultraplan
19
23
  registration:
20
24
  hooksTarget: .claude/settings.json
21
25
  mcpTarget: .mcp.json
@@ -0,0 +1,22 @@
1
+ name: pi
2
+ displayName: Pi
3
+ binary: pi
4
+ configDir: .pi
5
+ pluginRootEnvVar: PI_PLUGIN_ROOT
6
+ hookFields:
7
+ sessionId: session_id
8
+ transcriptPath: transcript_path
9
+ lastResponse: last_assistant_message
10
+ capture:
11
+ planDirs:
12
+ - .pi/plans/
13
+ registration:
14
+ # Pi uses an extension file, not JSON hook entries
15
+ hooksTarget: .pi/extensions/myco/index.ts
16
+ hooksFormat: plugin-file
17
+ # package.json for the extension's deps
18
+ pluginPackageTarget: .pi/extensions/myco/package.json
19
+ # Pi has no native MCP — Myco tools are registered via pi.registerTool()
20
+ # mcpTarget is omitted; tools are wired in the extension itself.
21
+ skillsTarget: .agents/skills
22
+ # No instructionsFile — pi reads AGENTS.md natively via context files
@@ -0,0 +1,6 @@
1
+ {
2
+ "dependencies": {
3
+ "@mariozechner/pi-coding-agent": "*",
4
+ "@sinclair/typebox": "*"
5
+ }
6
+ }