@goondocks/myco 0.19.5 → 0.20.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 (188) hide show
  1. package/dist/{agent-run-3IQXE5PI.js → agent-run-4HUXVRHW.js} +8 -8
  2. package/dist/{agent-tasks-5DIA3CE5.js → agent-tasks-JF45ELB6.js} +8 -8
  3. package/dist/{chunk-DURKJTVO.js → chunk-3WOS4TAR.js} +9 -1
  4. package/dist/chunk-3WOS4TAR.js.map +1 -0
  5. package/dist/{chunk-27ZDDWIA.js → chunk-4LCIKVDM.js} +49 -21
  6. package/dist/chunk-4LCIKVDM.js.map +1 -0
  7. package/dist/{chunk-Q4QD6LJT.js → chunk-4M7EWPIA.js} +3 -3
  8. package/dist/{chunk-FGKCE5AE.js → chunk-4YFKBL3F.js} +2 -2
  9. package/dist/{chunk-KYH4V4ML.js → chunk-57O67XVF.js} +3 -3
  10. package/dist/{chunk-7ONVLO43.js → chunk-5XIVBO25.js} +2 -2
  11. package/dist/{chunk-QLCD77AN.js → chunk-6RFZWV4R.js} +18 -1
  12. package/dist/chunk-6RFZWV4R.js.map +1 -0
  13. package/dist/{chunk-VH7XYQFL.js → chunk-ACQ2AIEM.js} +2 -2
  14. package/dist/{chunk-6ZDJXSEO.js → chunk-BPRIYNLE.js} +3 -3
  15. package/dist/chunk-CUDIZJY7.js +36 -0
  16. package/dist/chunk-CUDIZJY7.js.map +1 -0
  17. package/dist/{chunk-WKNAKQKA.js → chunk-DCSGJ7W4.js} +13 -19
  18. package/dist/chunk-DCSGJ7W4.js.map +1 -0
  19. package/dist/{chunk-Q6OEZM3S.js → chunk-EVDQKYCG.js} +237 -10
  20. package/dist/chunk-EVDQKYCG.js.map +1 -0
  21. package/dist/{chunk-I54KLC6H.js → chunk-FLLBJLHM.js} +3 -1
  22. package/dist/{chunk-I54KLC6H.js.map → chunk-FLLBJLHM.js.map} +1 -1
  23. package/dist/{chunk-PMT2LSTQ.js → chunk-FMRZ26U5.js} +2 -2
  24. package/dist/{chunk-3J6TUJSV.js → chunk-KHT24OWC.js} +3 -3
  25. package/dist/{chunk-5OXBT5MD.js → chunk-L6XFAJIF.js} +65 -14
  26. package/dist/chunk-L6XFAJIF.js.map +1 -0
  27. package/dist/{chunk-6DDRJQ4X.js → chunk-MYOZLMB2.js} +2 -2
  28. package/dist/{chunk-UVKQ62II.js → chunk-NGROSFOH.js} +24 -2
  29. package/dist/chunk-NGROSFOH.js.map +1 -0
  30. package/dist/{chunk-K2QX43GC.js → chunk-P3DN5EWW.js} +4 -4
  31. package/dist/{chunk-IQ5LQTV7.js → chunk-POR75WM6.js} +4 -4
  32. package/dist/{chunk-KABTXALI.js → chunk-QS5TWZBL.js} +4 -4
  33. package/dist/{chunk-UTSCRMJE.js → chunk-SRXTSI25.js} +110 -4
  34. package/dist/chunk-SRXTSI25.js.map +1 -0
  35. package/dist/{chunk-2QJCV3UL.js → chunk-UOQQENDW.js} +3 -3
  36. package/dist/{chunk-GFR542SM.js → chunk-US4LNCAT.js} +5 -11
  37. package/dist/chunk-US4LNCAT.js.map +1 -0
  38. package/dist/{chunk-44PZCAYS.js → chunk-XL75KZGI.js} +23 -13
  39. package/dist/chunk-XL75KZGI.js.map +1 -0
  40. package/dist/{chunk-5WPTS6A4.js → chunk-YSNIAJ5D.js} +7 -4
  41. package/dist/chunk-YSNIAJ5D.js.map +1 -0
  42. package/dist/chunk-ZXZPJJN3.js +54 -0
  43. package/dist/chunk-ZXZPJJN3.js.map +1 -0
  44. package/dist/{cli-RTUSGLTM.js → cli-AHTINAHY.js} +43 -43
  45. package/dist/{client-YWE5YJB7.js → client-LHENCAV3.js} +4 -4
  46. package/dist/{config-I5MJ6RXI.js → config-XPV5GDE4.js} +8 -16
  47. package/dist/config-XPV5GDE4.js.map +1 -0
  48. package/dist/{detect-BEOIHGBC.js → detect-PXNM6TA7.js} +2 -2
  49. package/dist/{detect-providers-2EY55EHK.js → detect-providers-5KOPZ7J2.js} +4 -4
  50. package/dist/{doctor-FIG7VEYV.js → doctor-XPCF5HV5.js} +13 -13
  51. package/dist/{executor-2TMGOVEA.js → executor-ACDHGTRH.js} +115 -77
  52. package/dist/executor-ACDHGTRH.js.map +1 -0
  53. package/dist/{init-3536BYDC.js → init-V3KCC36O.js} +14 -14
  54. package/dist/{installer-YH3WQISI.js → installer-ZNK4JSQA.js} +4 -4
  55. package/dist/{llm-SWDDQQWY.js → llm-TH4NLIRM.js} +4 -4
  56. package/dist/{loader-K4WF4EEJ.js → loader-H7OFASVC.js} +15 -3
  57. package/dist/{loader-AAZ6VUIA.js → loader-TSB5M7FD.js} +3 -3
  58. package/dist/{logs-KNKPQE5A.js → logs-7YVGGBIS.js} +2 -2
  59. package/dist/{main-R5ZD5OIZ.js → main-5S4MDCIO.js} +770 -176
  60. package/dist/main-5S4MDCIO.js.map +1 -0
  61. package/dist/{open-5UD5JQIM.js → open-AB5ULZIB.js} +8 -8
  62. package/dist/{post-compact-ZJFE66O3.js → post-compact-P2B7C7FE.js} +9 -8
  63. package/dist/{post-compact-ZJFE66O3.js.map → post-compact-P2B7C7FE.js.map} +1 -1
  64. package/dist/{post-tool-use-CAR2USJP.js → post-tool-use-LXL6NXDS.js} +8 -7
  65. package/dist/{post-tool-use-CAR2USJP.js.map → post-tool-use-LXL6NXDS.js.map} +1 -1
  66. package/dist/{post-tool-use-failure-OMIKVEVR.js → post-tool-use-failure-WAYVVKGR.js} +9 -8
  67. package/dist/{post-tool-use-failure-OMIKVEVR.js.map → post-tool-use-failure-WAYVVKGR.js.map} +1 -1
  68. package/dist/{pre-compact-6SXYI5CD.js → pre-compact-BCXUCF4V.js} +9 -8
  69. package/dist/{pre-compact-6SXYI5CD.js.map → pre-compact-BCXUCF4V.js.map} +1 -1
  70. package/dist/{provider-check-WCM3SDTM.js → provider-check-43LAMSMH.js} +4 -4
  71. package/dist/{registry-OCM4WAPJ.js → registry-MGJSJBAS.js} +4 -4
  72. package/dist/{remove-NJSFVZXW.js → remove-KAPX5NT2.js} +10 -10
  73. package/dist/{restart-U5ZGJON7.js → restart-HQO36FTG.js} +9 -9
  74. package/dist/{search-HO7CXV6H.js → search-YOMOKAAI.js} +9 -9
  75. package/dist/{server-BUSZIUZV.js → server-2N23P6F2.js} +40 -27
  76. package/dist/{server-BUSZIUZV.js.map → server-2N23P6F2.js.map} +1 -1
  77. package/dist/{session-RVT2QELH.js → session-WW2JLHPX.js} +9 -10
  78. package/dist/{session-RVT2QELH.js.map → session-WW2JLHPX.js.map} +1 -1
  79. package/dist/{session-end-4W6SZVGH.js → session-end-4WRTIBVQ.js} +8 -7
  80. package/dist/{session-end-4W6SZVGH.js.map → session-end-4WRTIBVQ.js.map} +1 -1
  81. package/dist/{session-start-PMPKAST4.js → session-start-HRWTZXQR.js} +15 -15
  82. package/dist/session-start-HRWTZXQR.js.map +1 -0
  83. package/dist/{setup-llm-6UAJUHQE.js → setup-llm-HFWSBUAF.js} +10 -9
  84. package/dist/{setup-llm-6UAJUHQE.js.map → setup-llm-HFWSBUAF.js.map} +1 -1
  85. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +37 -8
  86. package/dist/src/agent/prompts/agent.md +2 -2
  87. package/dist/src/cli.js +1 -1
  88. package/dist/src/daemon/main.js +1 -1
  89. package/dist/src/hooks/post-tool-use.js +1 -1
  90. package/dist/src/hooks/session-end.js +1 -1
  91. package/dist/src/hooks/session-start.js +1 -1
  92. package/dist/src/hooks/stop.js +1 -1
  93. package/dist/src/hooks/user-prompt-submit.js +1 -1
  94. package/dist/src/mcp/server.js +1 -1
  95. package/dist/src/symbionts/manifests/codex.yaml +28 -0
  96. package/dist/{stats-W47FF6RD.js → stats-7A4CJ4MS.js} +9 -9
  97. package/dist/{stop-6TAO2UU2.js → stop-R2GDHMRA.js} +8 -7
  98. package/dist/{stop-6TAO2UU2.js.map → stop-R2GDHMRA.js.map} +1 -1
  99. package/dist/{stop-failure-R76SULCV.js → stop-failure-773KR4VZ.js} +9 -8
  100. package/dist/{stop-failure-R76SULCV.js.map → stop-failure-773KR4VZ.js.map} +1 -1
  101. package/dist/{subagent-start-TJMUZLP2.js → subagent-start-IDECNBHW.js} +9 -8
  102. package/dist/{subagent-start-TJMUZLP2.js.map → subagent-start-IDECNBHW.js.map} +1 -1
  103. package/dist/{subagent-stop-M3DAFJWQ.js → subagent-stop-3JH7DR2S.js} +9 -8
  104. package/dist/{subagent-stop-M3DAFJWQ.js.map → subagent-stop-3JH7DR2S.js.map} +1 -1
  105. package/dist/{task-completed-2KVR5JV6.js → task-completed-AYVHPHDR.js} +9 -8
  106. package/dist/{task-completed-2KVR5JV6.js.map → task-completed-AYVHPHDR.js.map} +1 -1
  107. package/dist/{team-2IAT6MKD.js → team-3JKF7VAD.js} +5 -5
  108. package/dist/{turns-3ZQAF6HF.js → turns-YFNI5CQC.js} +6 -4
  109. package/dist/ui/assets/index-C2JuNtRB.css +1 -0
  110. package/dist/ui/assets/index-JLVaQKV2.js +832 -0
  111. package/dist/ui/favicon-dusk.svg +11 -0
  112. package/dist/ui/favicon-moss.svg +11 -0
  113. package/dist/ui/favicon-plum.svg +11 -0
  114. package/dist/ui/favicon-sage.svg +11 -0
  115. package/dist/ui/favicon-slate.svg +11 -0
  116. package/dist/ui/favicon-terracotta.svg +11 -0
  117. package/dist/ui/index.html +3 -3
  118. package/dist/{update-TB34JEB7.js → update-YWYW55JM.js} +10 -10
  119. package/dist/{user-prompt-submit-O4TP7NJ6.js → user-prompt-submit-YELSR6XI.js} +9 -8
  120. package/dist/{user-prompt-submit-O4TP7NJ6.js.map → user-prompt-submit-YELSR6XI.js.map} +1 -1
  121. package/dist/{verify-SESZXGVY.js → verify-JS44DVKJ.js} +5 -5
  122. package/dist/{version-QBORV23E.js → version-K5NETYIL.js} +2 -2
  123. package/package.json +1 -1
  124. package/skills/myco/SKILL.md +78 -43
  125. package/skills/myco/references/vault-status.md +1 -1
  126. package/dist/chunk-27ZDDWIA.js.map +0 -1
  127. package/dist/chunk-44PZCAYS.js.map +0 -1
  128. package/dist/chunk-5OXBT5MD.js.map +0 -1
  129. package/dist/chunk-5WPTS6A4.js.map +0 -1
  130. package/dist/chunk-5ZT2Q6P5.js +0 -25
  131. package/dist/chunk-5ZT2Q6P5.js.map +0 -1
  132. package/dist/chunk-AULBWINA.js +0 -227
  133. package/dist/chunk-AULBWINA.js.map +0 -1
  134. package/dist/chunk-DURKJTVO.js.map +0 -1
  135. package/dist/chunk-GFR542SM.js.map +0 -1
  136. package/dist/chunk-Q6OEZM3S.js.map +0 -1
  137. package/dist/chunk-QLCD77AN.js.map +0 -1
  138. package/dist/chunk-UTSCRMJE.js.map +0 -1
  139. package/dist/chunk-UVKQ62II.js.map +0 -1
  140. package/dist/chunk-VQF5E4ZX.js +0 -91
  141. package/dist/chunk-VQF5E4ZX.js.map +0 -1
  142. package/dist/chunk-WKNAKQKA.js.map +0 -1
  143. package/dist/config-I5MJ6RXI.js.map +0 -1
  144. package/dist/executor-2TMGOVEA.js.map +0 -1
  145. package/dist/main-R5ZD5OIZ.js.map +0 -1
  146. package/dist/resolution-events-PYLSI6QT.js +0 -15
  147. package/dist/session-start-PMPKAST4.js.map +0 -1
  148. package/dist/ui/assets/index-C-6W8e3m.js +0 -842
  149. package/dist/ui/assets/index-CRmkSi63.css +0 -1
  150. package/dist/version-QBORV23E.js.map +0 -1
  151. /package/dist/{agent-run-3IQXE5PI.js.map → agent-run-4HUXVRHW.js.map} +0 -0
  152. /package/dist/{agent-tasks-5DIA3CE5.js.map → agent-tasks-JF45ELB6.js.map} +0 -0
  153. /package/dist/{chunk-Q4QD6LJT.js.map → chunk-4M7EWPIA.js.map} +0 -0
  154. /package/dist/{chunk-FGKCE5AE.js.map → chunk-4YFKBL3F.js.map} +0 -0
  155. /package/dist/{chunk-KYH4V4ML.js.map → chunk-57O67XVF.js.map} +0 -0
  156. /package/dist/{chunk-7ONVLO43.js.map → chunk-5XIVBO25.js.map} +0 -0
  157. /package/dist/{chunk-VH7XYQFL.js.map → chunk-ACQ2AIEM.js.map} +0 -0
  158. /package/dist/{chunk-6ZDJXSEO.js.map → chunk-BPRIYNLE.js.map} +0 -0
  159. /package/dist/{chunk-PMT2LSTQ.js.map → chunk-FMRZ26U5.js.map} +0 -0
  160. /package/dist/{chunk-3J6TUJSV.js.map → chunk-KHT24OWC.js.map} +0 -0
  161. /package/dist/{chunk-6DDRJQ4X.js.map → chunk-MYOZLMB2.js.map} +0 -0
  162. /package/dist/{chunk-K2QX43GC.js.map → chunk-P3DN5EWW.js.map} +0 -0
  163. /package/dist/{chunk-IQ5LQTV7.js.map → chunk-POR75WM6.js.map} +0 -0
  164. /package/dist/{chunk-KABTXALI.js.map → chunk-QS5TWZBL.js.map} +0 -0
  165. /package/dist/{chunk-2QJCV3UL.js.map → chunk-UOQQENDW.js.map} +0 -0
  166. /package/dist/{cli-RTUSGLTM.js.map → cli-AHTINAHY.js.map} +0 -0
  167. /package/dist/{client-YWE5YJB7.js.map → client-LHENCAV3.js.map} +0 -0
  168. /package/dist/{detect-BEOIHGBC.js.map → detect-PXNM6TA7.js.map} +0 -0
  169. /package/dist/{detect-providers-2EY55EHK.js.map → detect-providers-5KOPZ7J2.js.map} +0 -0
  170. /package/dist/{doctor-FIG7VEYV.js.map → doctor-XPCF5HV5.js.map} +0 -0
  171. /package/dist/{init-3536BYDC.js.map → init-V3KCC36O.js.map} +0 -0
  172. /package/dist/{installer-YH3WQISI.js.map → installer-ZNK4JSQA.js.map} +0 -0
  173. /package/dist/{llm-SWDDQQWY.js.map → llm-TH4NLIRM.js.map} +0 -0
  174. /package/dist/{loader-AAZ6VUIA.js.map → loader-H7OFASVC.js.map} +0 -0
  175. /package/dist/{loader-K4WF4EEJ.js.map → loader-TSB5M7FD.js.map} +0 -0
  176. /package/dist/{logs-KNKPQE5A.js.map → logs-7YVGGBIS.js.map} +0 -0
  177. /package/dist/{open-5UD5JQIM.js.map → open-AB5ULZIB.js.map} +0 -0
  178. /package/dist/{provider-check-WCM3SDTM.js.map → provider-check-43LAMSMH.js.map} +0 -0
  179. /package/dist/{registry-OCM4WAPJ.js.map → registry-MGJSJBAS.js.map} +0 -0
  180. /package/dist/{remove-NJSFVZXW.js.map → remove-KAPX5NT2.js.map} +0 -0
  181. /package/dist/{restart-U5ZGJON7.js.map → restart-HQO36FTG.js.map} +0 -0
  182. /package/dist/{search-HO7CXV6H.js.map → search-YOMOKAAI.js.map} +0 -0
  183. /package/dist/{stats-W47FF6RD.js.map → stats-7A4CJ4MS.js.map} +0 -0
  184. /package/dist/{resolution-events-PYLSI6QT.js.map → team-3JKF7VAD.js.map} +0 -0
  185. /package/dist/{team-2IAT6MKD.js.map → turns-YFNI5CQC.js.map} +0 -0
  186. /package/dist/{update-TB34JEB7.js.map → update-YWYW55JM.js.map} +0 -0
  187. /package/dist/{verify-SESZXGVY.js.map → verify-JS44DVKJ.js.map} +0 -0
  188. /package/dist/{turns-3ZQAF6HF.js.map → version-K5NETYIL.js.map} +0 -0
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" fill="none">
2
+ <rect width="160" height="160" rx="32" fill="#111111"/>
3
+ <g stroke-linecap="round" stroke-linejoin="round">
4
+ <path d="M35,120 L35,45 L80,82 L125,45 L125,120" stroke="#8faed1" stroke-width="16" opacity="0.85"/>
5
+ <circle cx="35" cy="120" r="13" fill="#8faed1" opacity="0.9"/>
6
+ <circle cx="35" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
7
+ <circle cx="80" cy="82" r="14" fill="#8faed1" opacity="0.95"/>
8
+ <circle cx="125" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
9
+ <circle cx="125" cy="120" r="13" fill="#8faed1" opacity="0.9"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" fill="none">
2
+ <rect width="160" height="160" rx="32" fill="#111111"/>
3
+ <g stroke-linecap="round" stroke-linejoin="round">
4
+ <path d="M35,120 L35,45 L80,82 L125,45 L125,120" stroke="#9ca884" stroke-width="16" opacity="0.85"/>
5
+ <circle cx="35" cy="120" r="13" fill="#9ca884" opacity="0.9"/>
6
+ <circle cx="35" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
7
+ <circle cx="80" cy="82" r="14" fill="#9ca884" opacity="0.95"/>
8
+ <circle cx="125" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
9
+ <circle cx="125" cy="120" r="13" fill="#9ca884" opacity="0.9"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" fill="none">
2
+ <rect width="160" height="160" rx="32" fill="#111111"/>
3
+ <g stroke-linecap="round" stroke-linejoin="round">
4
+ <path d="M35,120 L35,45 L80,82 L125,45 L125,120" stroke="#b59ec8" stroke-width="16" opacity="0.85"/>
5
+ <circle cx="35" cy="120" r="13" fill="#b59ec8" opacity="0.9"/>
6
+ <circle cx="35" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
7
+ <circle cx="80" cy="82" r="14" fill="#b59ec8" opacity="0.95"/>
8
+ <circle cx="125" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
9
+ <circle cx="125" cy="120" r="13" fill="#b59ec8" opacity="0.9"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" fill="none">
2
+ <rect width="160" height="160" rx="32" fill="#111111"/>
3
+ <g stroke-linecap="round" stroke-linejoin="round">
4
+ <path d="M35,120 L35,45 L80,82 L125,45 L125,120" stroke="#abcfb8" stroke-width="16" opacity="0.85"/>
5
+ <circle cx="35" cy="120" r="13" fill="#abcfb8" opacity="0.9"/>
6
+ <circle cx="35" cy="45" r="13" fill="#edbf7f" opacity="0.85"/>
7
+ <circle cx="80" cy="82" r="14" fill="#abcfb8" opacity="0.95"/>
8
+ <circle cx="125" cy="45" r="13" fill="#edbf7f" opacity="0.85"/>
9
+ <circle cx="125" cy="120" r="13" fill="#abcfb8" opacity="0.9"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" fill="none">
2
+ <rect width="160" height="160" rx="32" fill="#111111"/>
3
+ <g stroke-linecap="round" stroke-linejoin="round">
4
+ <path d="M35,120 L35,45 L80,82 L125,45 L125,120" stroke="#a6b0b8" stroke-width="16" opacity="0.85"/>
5
+ <circle cx="35" cy="120" r="13" fill="#a6b0b8" opacity="0.9"/>
6
+ <circle cx="35" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
7
+ <circle cx="80" cy="82" r="14" fill="#a6b0b8" opacity="0.95"/>
8
+ <circle cx="125" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
9
+ <circle cx="125" cy="120" r="13" fill="#a6b0b8" opacity="0.9"/>
10
+ </g>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" fill="none">
2
+ <rect width="160" height="160" rx="32" fill="#111111"/>
3
+ <g stroke-linecap="round" stroke-linejoin="round">
4
+ <path d="M35,120 L35,45 L80,82 L125,45 L125,120" stroke="#d28a73" stroke-width="16" opacity="0.85"/>
5
+ <circle cx="35" cy="120" r="13" fill="#d28a73" opacity="0.9"/>
6
+ <circle cx="35" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
7
+ <circle cx="80" cy="82" r="14" fill="#d28a73" opacity="0.95"/>
8
+ <circle cx="125" cy="45" r="13" fill="#d3b172" opacity="0.85"/>
9
+ <circle cx="125" cy="120" r="13" fill="#d28a73" opacity="0.9"/>
10
+ </g>
11
+ </svg>
@@ -1,12 +1,12 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
2
+ <html lang="en" data-theme="sage">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Myco</title>
8
- <script type="module" crossorigin src="/assets/index-C-6W8e3m.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-CRmkSi63.css">
8
+ <script type="module" crossorigin src="/assets/index-JLVaQKV2.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-C2JuNtRB.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
@@ -2,30 +2,30 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  VAULT_GITIGNORE,
4
4
  registerSymbionts
5
- } from "./chunk-5WPTS6A4.js";
5
+ } from "./chunk-YSNIAJ5D.js";
6
6
  import "./chunk-SAKJMNSR.js";
7
- import "./chunk-27ZDDWIA.js";
8
- import "./chunk-PMT2LSTQ.js";
7
+ import "./chunk-4LCIKVDM.js";
8
+ import "./chunk-FMRZ26U5.js";
9
9
  import {
10
10
  getEnabledSymbiontNames,
11
11
  loadConfig
12
- } from "./chunk-UTSCRMJE.js";
12
+ } from "./chunk-SRXTSI25.js";
13
13
  import "./chunk-MYX5NCRH.js";
14
14
  import {
15
15
  resolveVaultDir
16
- } from "./chunk-5ZT2Q6P5.js";
17
- import "./chunk-2QJCV3UL.js";
16
+ } from "./chunk-CUDIZJY7.js";
17
+ import "./chunk-UOQQENDW.js";
18
18
  import {
19
19
  getPluginVersion
20
- } from "./chunk-VH7XYQFL.js";
20
+ } from "./chunk-ACQ2AIEM.js";
21
21
  import {
22
22
  loadManifests,
23
23
  resolvePackageRoot
24
- } from "./chunk-UVKQ62II.js";
24
+ } from "./chunk-NGROSFOH.js";
25
25
  import "./chunk-LPUQPDC2.js";
26
26
  import {
27
27
  UPDATE_STAMP_FILENAME
28
- } from "./chunk-I54KLC6H.js";
28
+ } from "./chunk-FLLBJLHM.js";
29
29
  import "./chunk-UUHLLQXO.js";
30
30
  import "./chunk-6LQIMRTC.js";
31
31
  import "./chunk-ODXLRR4U.js";
@@ -98,4 +98,4 @@ async function run(args) {
98
98
  export {
99
99
  run
100
100
  };
101
- //# sourceMappingURL=update-TB34JEB7.js.map
101
+ //# sourceMappingURL=update-YWYW55JM.js.map
@@ -5,23 +5,24 @@ import {
5
5
  import {
6
6
  evaluateUserPromptRules,
7
7
  readTranscriptMeta
8
- } from "./chunk-44PZCAYS.js";
8
+ } from "./chunk-XL75KZGI.js";
9
9
  import {
10
10
  normalizeHookInput,
11
11
  readStdin
12
- } from "./chunk-WKNAKQKA.js";
12
+ } from "./chunk-DCSGJ7W4.js";
13
+ import "./chunk-ZXZPJJN3.js";
13
14
  import {
14
15
  resolveVaultDir
15
- } from "./chunk-5ZT2Q6P5.js";
16
+ } from "./chunk-CUDIZJY7.js";
16
17
  import {
17
18
  DaemonClient
18
- } from "./chunk-2QJCV3UL.js";
19
- import "./chunk-VH7XYQFL.js";
19
+ } from "./chunk-UOQQENDW.js";
20
+ import "./chunk-ACQ2AIEM.js";
20
21
  import {
21
22
  loadManifests
22
- } from "./chunk-UVKQ62II.js";
23
+ } from "./chunk-NGROSFOH.js";
23
24
  import "./chunk-LPUQPDC2.js";
24
- import "./chunk-I54KLC6H.js";
25
+ import "./chunk-FLLBJLHM.js";
25
26
  import "./chunk-UUHLLQXO.js";
26
27
  import "./chunk-6LQIMRTC.js";
27
28
  import "./chunk-ODXLRR4U.js";
@@ -86,4 +87,4 @@ ${sessionLine}` : sessionLine;
86
87
  export {
87
88
  main
88
89
  };
89
- //# sourceMappingURL=user-prompt-submit-O4TP7NJ6.js.map
90
+ //# sourceMappingURL=user-prompt-submit-YELSR6XI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/user-prompt-submit.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { evaluateUserPromptRules } from './capture-rules.js';\nimport { readTranscriptMeta } from './transcript-meta.js';\nimport { loadManifests } from '../symbionts/detect.js';\nimport { EventBuffer } from '../capture/buffer.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const input = normalizeHookInput(rawInput);\n const rawPrompt = input.prompt ?? '';\n const sessionId = input.sessionId;\n\n // Apply generic capture rules owned by each symbiont's manifest.\n // The hook stays symbiont-agnostic — per-agent behavior lives in YAML.\n // Pass structural context so rules can key on things like\n // `transcript_path_missing` without doing their own text mining.\n const transcriptMeta = input.transcriptPath ? readTranscriptMeta(input.transcriptPath) : undefined;\n const decision = evaluateUserPromptRules(loadManifests(), input.agent, {\n prompt: rawPrompt,\n transcriptPath: input.transcriptPath,\n transcriptMeta: transcriptMeta ?? undefined,\n });\n\n const client = new DaemonClient(VAULT_DIR);\n // Spawn daemon if needed but don't block on full health check backoff.\n // The event POST will fail fast if daemon isn't ready — buffer absorbs it.\n if (!(await client.isHealthy())) {\n client.spawnDaemon();\n }\n\n if (decision.action === 'drop') {\n // A rule classified this prompt as a phantom sub-invocation (e.g., an\n // agent's internal title-generation call). SessionStart already\n // registered the session row; delete it so it doesn't linger as a\n // zero-prompt ghost in the UI. Silently tolerate failures — the\n // session-maintenance sweep will clean up stragglers within the\n // stale threshold as a safety net.\n process.stderr.write(`[myco] user-prompt-submit: dropped (${decision.reason ?? 'rule'})\\n`);\n await client.delete(`/api/sessions/${sessionId}`);\n return;\n }\n\n const prompt = decision.action === 'rewrite' ? decision.prompt : rawPrompt;\n if (decision.action === 'rewrite') {\n process.stderr.write(`[myco] user-prompt-submit: rewritten (${decision.reason ?? 'rule'})\\n`);\n }\n\n // Forward prompt as event for capture\n const eventResult = await client.post('/events', {\n type: 'user_prompt', prompt, session_id: sessionId, agent: input.agent,\n });\n\n if (!eventResult.ok) {\n // Daemon still unreachable — write directly to buffer for later processing\n const buffer = new EventBuffer(path.join(VAULT_DIR, 'buffer'), sessionId);\n buffer.append({ type: 'user_prompt', prompt });\n }\n\n // Search for relevant spores to inject as context for this prompt.\n // The daemon does a vector search against the prompt text and returns\n // any high-relevance spores. This is fast (~20ms) — no LLM call.\n const contextResult = await client.post('/context/prompt', {\n prompt,\n session_id: sessionId,\n });\n\n // Always include the session ID so the agent can pass it to myco_remember.\n // Uses Session:: format consistent with daemon context injection (Branch::, Session::).\n const sessionLine = `Session:: \\`${sessionId}\\``;\n const contextText = contextResult.ok && contextResult.data?.text\n ? `${contextResult.data.text}\\n${sessionLine}`\n : sessionLine;\n\n process.stdout.write(contextText);\n } catch (error) {\n process.stderr.write(`[myco] user-prompt-submit error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,OAAO;AAC3B,QAAM,YAAY,gBAAgB;AAClC,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,WAAW,WAAW,CAAC,EAAG;AAEvD,MAAI;AACF,UAAM,WAAW,KAAK,MAAM,MAAM,UAAU,CAAC;AAC7C,UAAM,QAAQ,mBAAmB,QAAQ;AACzC,UAAM,YAAY,MAAM,UAAU;AAClC,UAAM,YAAY,MAAM;AAMxB,UAAM,iBAAiB,MAAM,iBAAiB,mBAAmB,MAAM,cAAc,IAAI;AACzF,UAAM,WAAW,wBAAwB,cAAc,GAAG,MAAM,OAAO;AAAA,MACrE,QAAQ;AAAA,MACR,gBAAgB,MAAM;AAAA,MACtB,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAED,UAAM,SAAS,IAAI,aAAa,SAAS;AAGzC,QAAI,CAAE,MAAM,OAAO,UAAU,GAAI;AAC/B,aAAO,YAAY;AAAA,IACrB;AAEA,QAAI,SAAS,WAAW,QAAQ;AAO9B,cAAQ,OAAO,MAAM,uCAAuC,SAAS,UAAU,MAAM;AAAA,CAAK;AAC1F,YAAM,OAAO,OAAO,iBAAiB,SAAS,EAAE;AAChD;AAAA,IACF;AAEA,UAAM,SAAS,SAAS,WAAW,YAAY,SAAS,SAAS;AACjE,QAAI,SAAS,WAAW,WAAW;AACjC,cAAQ,OAAO,MAAM,yCAAyC,SAAS,UAAU,MAAM;AAAA,CAAK;AAAA,IAC9F;AAGA,UAAM,cAAc,MAAM,OAAO,KAAK,WAAW;AAAA,MAC/C,MAAM;AAAA,MAAe;AAAA,MAAQ,YAAY;AAAA,MAAW,OAAO,MAAM;AAAA,IACnE,CAAC;AAED,QAAI,CAAC,YAAY,IAAI;AAEnB,YAAM,SAAS,IAAI,YAAY,KAAK,KAAK,WAAW,QAAQ,GAAG,SAAS;AACxE,aAAO,OAAO,EAAE,MAAM,eAAe,OAAO,CAAC;AAAA,IAC/C;AAKA,UAAM,gBAAgB,MAAM,OAAO,KAAK,mBAAmB;AAAA,MACzD;AAAA,MACA,YAAY;AAAA,IACd,CAAC;AAID,UAAM,cAAc,eAAe,SAAS;AAC5C,UAAM,cAAc,cAAc,MAAM,cAAc,MAAM,OACxD,GAAG,cAAc,KAAK,IAAI;AAAA,EAAK,WAAW,KAC1C;AAEJ,YAAQ,OAAO,MAAM,WAAW;AAAA,EAClC,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,oCAAqC,MAAgB,OAAO;AAAA,CAAI;AAAA,EACvF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/user-prompt-submit.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { evaluateUserPromptRules } from './capture-rules.js';\nimport { readTranscriptMeta } from './transcript-meta.js';\nimport { loadManifests } from '../symbionts/detect.js';\nimport { EventBuffer } from '../capture/buffer.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const input = normalizeHookInput(rawInput);\n const rawPrompt = input.prompt ?? '';\n const sessionId = input.sessionId;\n\n // Apply generic capture rules owned by each symbiont's manifest.\n // The hook stays symbiont-agnostic — per-agent behavior lives in YAML.\n // Pass structural context so rules can key on things like\n // `transcript_path_missing` without doing their own text mining.\n const transcriptMeta = input.transcriptPath ? readTranscriptMeta(input.transcriptPath) : undefined;\n const decision = evaluateUserPromptRules(loadManifests(), input.agent, {\n prompt: rawPrompt,\n transcriptPath: input.transcriptPath,\n transcriptMeta: transcriptMeta ?? undefined,\n });\n\n const client = new DaemonClient(VAULT_DIR);\n // Spawn daemon if needed but don't block on full health check backoff.\n // The event POST will fail fast if daemon isn't ready — buffer absorbs it.\n if (!(await client.isHealthy())) {\n client.spawnDaemon();\n }\n\n if (decision.action === 'drop') {\n // A rule classified this prompt as a phantom sub-invocation (e.g., an\n // agent's internal title-generation call). SessionStart already\n // registered the session row; delete it so it doesn't linger as a\n // zero-prompt ghost in the UI. Silently tolerate failures — the\n // session-maintenance sweep will clean up stragglers within the\n // stale threshold as a safety net.\n process.stderr.write(`[myco] user-prompt-submit: dropped (${decision.reason ?? 'rule'})\\n`);\n await client.delete(`/api/sessions/${sessionId}`);\n return;\n }\n\n const prompt = decision.action === 'rewrite' ? decision.prompt : rawPrompt;\n if (decision.action === 'rewrite') {\n process.stderr.write(`[myco] user-prompt-submit: rewritten (${decision.reason ?? 'rule'})\\n`);\n }\n\n // Forward prompt as event for capture\n const eventResult = await client.post('/events', {\n type: 'user_prompt', prompt, session_id: sessionId, agent: input.agent,\n });\n\n if (!eventResult.ok) {\n // Daemon still unreachable — write directly to buffer for later processing\n const buffer = new EventBuffer(path.join(VAULT_DIR, 'buffer'), sessionId);\n buffer.append({ type: 'user_prompt', prompt });\n }\n\n // Search for relevant spores to inject as context for this prompt.\n // The daemon does a vector search against the prompt text and returns\n // any high-relevance spores. This is fast (~20ms) — no LLM call.\n const contextResult = await client.post('/context/prompt', {\n prompt,\n session_id: sessionId,\n });\n\n // Always include the session ID so the agent can pass it to myco_remember.\n // Uses Session:: format consistent with daemon context injection (Branch::, Session::).\n const sessionLine = `Session:: \\`${sessionId}\\``;\n const contextText = contextResult.ok && contextResult.data?.text\n ? `${contextResult.data.text}\\n${sessionLine}`\n : sessionLine;\n\n process.stdout.write(contextText);\n } catch (error) {\n process.stderr.write(`[myco] user-prompt-submit error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,OAAO;AAC3B,QAAM,YAAY,gBAAgB;AAClC,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,WAAW,WAAW,CAAC,EAAG;AAEvD,MAAI;AACF,UAAM,WAAW,KAAK,MAAM,MAAM,UAAU,CAAC;AAC7C,UAAM,QAAQ,mBAAmB,QAAQ;AACzC,UAAM,YAAY,MAAM,UAAU;AAClC,UAAM,YAAY,MAAM;AAMxB,UAAM,iBAAiB,MAAM,iBAAiB,mBAAmB,MAAM,cAAc,IAAI;AACzF,UAAM,WAAW,wBAAwB,cAAc,GAAG,MAAM,OAAO;AAAA,MACrE,QAAQ;AAAA,MACR,gBAAgB,MAAM;AAAA,MACtB,gBAAgB,kBAAkB;AAAA,IACpC,CAAC;AAED,UAAM,SAAS,IAAI,aAAa,SAAS;AAGzC,QAAI,CAAE,MAAM,OAAO,UAAU,GAAI;AAC/B,aAAO,YAAY;AAAA,IACrB;AAEA,QAAI,SAAS,WAAW,QAAQ;AAO9B,cAAQ,OAAO,MAAM,uCAAuC,SAAS,UAAU,MAAM;AAAA,CAAK;AAC1F,YAAM,OAAO,OAAO,iBAAiB,SAAS,EAAE;AAChD;AAAA,IACF;AAEA,UAAM,SAAS,SAAS,WAAW,YAAY,SAAS,SAAS;AACjE,QAAI,SAAS,WAAW,WAAW;AACjC,cAAQ,OAAO,MAAM,yCAAyC,SAAS,UAAU,MAAM;AAAA,CAAK;AAAA,IAC9F;AAGA,UAAM,cAAc,MAAM,OAAO,KAAK,WAAW;AAAA,MAC/C,MAAM;AAAA,MAAe;AAAA,MAAQ,YAAY;AAAA,MAAW,OAAO,MAAM;AAAA,IACnE,CAAC;AAED,QAAI,CAAC,YAAY,IAAI;AAEnB,YAAM,SAAS,IAAI,YAAY,KAAK,KAAK,WAAW,QAAQ,GAAG,SAAS;AACxE,aAAO,OAAO,EAAE,MAAM,eAAe,OAAO,CAAC;AAAA,IAC/C;AAKA,UAAM,gBAAgB,MAAM,OAAO,KAAK,mBAAmB;AAAA,MACzD;AAAA,MACA,YAAY;AAAA,IACd,CAAC;AAID,UAAM,cAAc,eAAe,SAAS;AAC5C,UAAM,cAAc,cAAc,MAAM,cAAc,MAAM,OACxD,GAAG,cAAc,KAAK,IAAI;AAAA,EAAK,WAAW,KAC1C;AAEJ,YAAQ,OAAO,MAAM,WAAW;AAAA,EAClC,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,oCAAqC,MAAgB,OAAO;AAAA,CAAI;AAAA,EACvF;AACF;","names":[]}
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  createEmbeddingProvider
4
- } from "./chunk-3J6TUJSV.js";
5
- import "./chunk-PMT2LSTQ.js";
4
+ } from "./chunk-KHT24OWC.js";
5
+ import "./chunk-FMRZ26U5.js";
6
6
  import {
7
7
  loadConfig
8
- } from "./chunk-UTSCRMJE.js";
9
- import "./chunk-I54KLC6H.js";
8
+ } from "./chunk-SRXTSI25.js";
9
+ import "./chunk-FLLBJLHM.js";
10
10
  import "./chunk-UUHLLQXO.js";
11
11
  import "./chunk-6LQIMRTC.js";
12
12
  import "./chunk-ODXLRR4U.js";
@@ -39,4 +39,4 @@ async function run(_args, vaultDir) {
39
39
  export {
40
40
  run
41
41
  };
42
- //# sourceMappingURL=verify-SESZXGVY.js.map
42
+ //# sourceMappingURL=verify-JS44DVKJ.js.map
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  getPluginVersion
4
- } from "./chunk-VH7XYQFL.js";
4
+ } from "./chunk-ACQ2AIEM.js";
5
5
  import "./chunk-LPUQPDC2.js";
6
6
  import "./chunk-PZUWP5VK.js";
7
7
  export {
8
8
  getPluginVersion
9
9
  };
10
- //# sourceMappingURL=version-QBORV23E.js.map
10
+ //# sourceMappingURL=version-K5NETYIL.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goondocks/myco",
3
- "version": "0.19.5",
3
+ "version": "0.20.0",
4
4
  "description": "Collective agent intelligence — Claude Code plugin",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,30 +37,37 @@ For reconfiguration, status checks, and ongoing management, use the CLI commands
37
37
 
38
38
  ## MCP Tools Reference
39
39
 
40
- ### myco_searchFind knowledge across the vault
40
+ The local Myco MCP server registers 12 core tools. When the project is connected to a Myco Collective, 3 additional `collective_*` tools are also registered. Tools are defined in `packages/myco/src/mcp/tool-definitions.ts` that file is the source of truth.
41
+
42
+ ### myco_context — Get the project digest
41
43
 
42
- Combined semantic + full-text search across sessions, plans, and spores.
44
+ Retrieve Myco's pre-computed project digest: a synthesis of project history, decisions, patterns, active work, and institutional knowledge. This is the right tool when you need broad orientation on the project, not when you need to find a specific prior record.
43
45
 
44
46
  ```json
45
- { "query": "why did we choose JWT over session cookies", "type": "spore", "limit": 5 }
47
+ { "tier": 5000 }
46
48
  ```
47
49
 
48
- **When to use**: searching for prior decisions, debugging context, or understanding rationale. The `type` filter narrows results use `"spore"` for decisions/gotchas, `"session"` for session history, `"plan"` for plans, or omit for all.
50
+ Tiers: `1500` (executive briefing), `5000` (default), `10000` (comprehensive). Prefer this over `myco_search` for broad project orientation; use `myco_search` when you need specific prior decisions or bug fixes.
51
+
52
+ ### myco_search — Find knowledge across the vault
53
+
54
+ Search across sessions, plans, and spores.
49
55
 
50
- **Example**: before choosing an authentication approach, search for prior decisions:
51
56
  ```json
52
- { "query": "authentication approach JWT session", "type": "spore" }
57
+ { "query": "why did we choose JWT over session cookies", "type": "spore", "limit": 5 }
53
58
  ```
54
59
 
55
- ### myco_recall Get context for current work
60
+ **When to use**: searching for prior decisions, debugging context, or understanding rationale. The `type` filter narrows results — use `"spore"` for decisions/gotchas, `"session"` for session history, `"plan"` for plans, or omit for all.
61
+
62
+ ### myco_recall — Look up a single vault note by ID
56
63
 
57
- Automatic context retrieval based on git branch and files you're working on.
64
+ Return the full content of a specific session, spore, or plan given its ID. Use this after `myco_search` or `myco_graph` returns an ID you want to read in full.
58
65
 
59
66
  ```json
60
- { "branch": "feature/auth-redesign", "files": ["src/auth/middleware.ts"] }
67
+ { "note_id": "decision-abc123" }
61
68
  ```
62
69
 
63
- **When to use**: starting work on a feature or wanting deeper context than what was injected at session start. This is the "what do I need to know?" tool.
70
+ (Note: this is *not* a branch-based context tool. For project orientation, use `myco_context`.)
64
71
 
65
72
  ### myco_remember — Save an observation
66
73
 
@@ -70,12 +77,7 @@ Store a noteworthy observation for future sessions. Only save things that aren't
70
77
  { "content": "better-sqlite3 WASM build fails on Node 22 ARM — must use native build", "type": "gotcha", "tags": ["sqlite", "build"] }
71
78
  ```
72
79
 
73
- **Observation types:**
74
- - `gotcha` — non-obvious pitfall, constraint, or workaround
75
- - `bug_fix` — root cause of a bug and what fixed it
76
- - `decision` — why an approach was chosen over alternatives
77
- - `discovery` — significant insight about the codebase, tooling, or domain
78
- - `trade_off` — what was sacrificed and what was gained
80
+ **Observation types:** `gotcha`, `bug_fix`, `decision`, `discovery`, `trade_off`, `cross-cutting`.
79
81
 
80
82
  **What makes a good observation:**
81
83
  - Specific: file names, function names, actual error messages, concrete values
@@ -86,15 +88,21 @@ Store a noteworthy observation for future sessions. Only save things that aren't
86
88
  **Bad**: "the auth system is complex"
87
89
  **Good**: "bcrypt.compare() silently returns false (not an error) on hash format mismatch — spent 2h debugging; the hash column was VARCHAR(50) but bcrypt outputs 60 chars"
88
90
 
89
- ### myco_plans Check plan status
91
+ Session association is derived by the daemon; the MCP client does not pass it.
90
92
 
91
- List active plans and their progress.
93
+ ### myco_plans — List plans or read a single plan
94
+
95
+ List plans and their progress, or retrieve a single plan's full content by ID.
92
96
 
93
97
  ```json
94
98
  { "status": "active" }
95
99
  ```
96
100
 
97
- Use `{ "id": "plan-name" }` to read a specific plan's content.
101
+ ```json
102
+ { "id": "plan-feature-x" }
103
+ ```
104
+
105
+ When `id` is set, the response includes the plan's `content` field. Otherwise the list shape contains summary metadata only.
98
106
 
99
107
  ### myco_sessions — Browse session history
100
108
 
@@ -104,7 +112,7 @@ Query past sessions with filters.
104
112
  { "branch": "feature/auth", "limit": 5 }
105
113
  ```
106
114
 
107
- Filter by `plan`, `branch`, `user`, or `since` (ISO timestamp). Useful for understanding what work has been done on a feature before continuing it.
115
+ Filter by `plan`, `branch`, `user`, or `since` (ISO timestamp).
108
116
 
109
117
  ### myco_graph — Traverse vault connections
110
118
 
@@ -114,16 +122,6 @@ Follow graph connections between records — find related sessions, spores, and
114
122
  { "note_id": "session-abc123", "direction": "both", "depth": 2 }
115
123
  ```
116
124
 
117
- **When to use**: exploring how a decision connects to sessions and other spores, or understanding the lineage of a feature's development across multiple sessions.
118
-
119
- ### myco_orphans — Find disconnected notes
120
-
121
- Find records with no incoming or outgoing graph connections — potentially stale or unconnected knowledge.
122
-
123
- ```json
124
- {}
125
- ```
126
-
127
125
  ### myco_team — See teammate activity
128
126
 
129
127
  See what teammates have been working on, filtered by files or plan.
@@ -132,16 +130,6 @@ See what teammates have been working on, filtered by files or plan.
132
130
  { "plan": "auth-redesign" }
133
131
  ```
134
132
 
135
- ### myco_logs — Debug the daemon
136
-
137
- View daemon logs for debugging when sessions aren't being captured, observations are missing, or embeddings fail.
138
-
139
- ```json
140
- { "level": "warn", "component": "processor", "limit": 20 }
141
- ```
142
-
143
- Components: `daemon`, `processor`, `hooks`, `lifecycle`, `embeddings`, `lineage`, `watcher`, `digest`, `intelligence`.
144
-
145
133
  ### myco_supersede — Mark a spore as replaced
146
134
 
147
135
  When a newer observation makes an older one obsolete, supersede it. The old spore stays in the vault (data is never deleted) but is marked `status: superseded`.
@@ -154,21 +142,68 @@ When a newer observation makes an older one obsolete, supersede it. The old spor
154
142
 
155
143
  ### myco_consolidate — Merge spores into wisdom
156
144
 
157
- When multiple spores describe aspects of the same insight, consolidate them into a single comprehensive note. Source spores are marked superseded with links to the new wisdom note.
145
+ Merge 2+ related spores into a single wisdom note. The daemon inserts the new spore, then marks each source `superseded` and writes a `resolution_events` row (action=`consolidate`) linking it to the new wisdom spore. The source content stays in the vault — nothing is deleted.
158
146
 
159
147
  ```json
160
148
  {
161
149
  "source_spore_ids": ["gotcha-aaa111", "gotcha-bbb222", "gotcha-ccc333"],
162
150
  "consolidated_content": "# SQLite Operational Gotchas\n\n1. WAL mode requires shared memory...\n2. Single writer lock...\n3. FTS5 tokenization...",
163
151
  "observation_type": "gotcha",
164
- "tags": ["sqlite", "infrastructure"]
152
+ "tags": ["sqlite", "infrastructure"],
153
+ "reason": "Three related SQLite gotchas merged into one reference"
165
154
  }
166
155
  ```
167
156
 
168
- **When to use**: 3+ spores share a root cause, describe the same pattern from different angles, or would be more useful as a single comprehensive reference.
157
+ **When to use**: multiple spores share a root cause, describe the same pattern from different angles, or would be more useful as a single comprehensive reference. Prefer this over manually running `myco_supersede` repeatedly.
169
158
 
170
159
  For detailed patterns on when and how to consolidate, read `references/wisdom.md`.
171
160
 
161
+ ### myco_skills — Inspect skills in the vault
162
+
163
+ List skills generated by Myco, filter by status, or look up a specific skill by ID or name.
164
+
165
+ ```json
166
+ { "status": "active" }
167
+ ```
168
+
169
+ ```json
170
+ { "id": "install-and-initialize-myco" }
171
+ ```
172
+
173
+ ### myco_skill_candidates — Manage skill candidates
174
+
175
+ List, approve, or dismiss candidate skills identified from vault observations.
176
+
177
+ ```json
178
+ { "action": "list", "status": "identified" }
179
+ ```
180
+
181
+ Valid actions: `list`, `approve`, `dismiss`. Use `{ "id": "<candidate-id>" }` to target a specific candidate.
182
+
183
+ ### Collective tools (only when connected)
184
+
185
+ The following tools appear only when the project is connected to a Myco Collective — they are conditionally registered by `createMycoServer` based on the team status.
186
+
187
+ #### collective_projects — List projects in the collective
188
+
189
+ ```json
190
+ {}
191
+ ```
192
+
193
+ #### collective_project — Get metadata for one project
194
+
195
+ ```json
196
+ { "project": "myco-main", "include_digest": false }
197
+ ```
198
+
199
+ #### collective_search — Search across collective projects
200
+
201
+ Results include project attribution.
202
+
203
+ ```json
204
+ { "query": "authentication approach", "project": "myco-main", "limit": 5 }
205
+ ```
206
+
172
207
  ## Wisdom — Keeping the Vault Clean
173
208
 
174
209
  Spores are injected into every prompt via the `UserPromptSubmit` hook. Each injected spore includes its ID (e.g., `[decision-abc123]`). When you see an injected spore that contradicts what you just did or know to be outdated, **supersede it immediately** — don't wait to be asked. This is how the vault stays accurate.
@@ -125,7 +125,7 @@ Check for these problems when assessing vault health:
125
125
  | Issue | How to detect | Meaning |
126
126
  |-------|--------------|---------|
127
127
  | **Stale buffers** | `.jsonl` files in `<vault>/buffer/` older than 24 hours | Events were captured but never processed — LLM may have been unavailable |
128
- | **Missing index** | `<vault>/index.db` does not exist | FTS search will not work; suggest `node ${CLAUDE_PLUGIN_ROOT}/dist/src/cli.js rebuild` |
128
+ | **Missing vault DB** | `<vault>/myco.db` does not exist | The vault database is missing or the project is not initialized; suggest `myco init` or check vault resolution |
129
129
  | **Missing vectors** | `<vault>/vectors.db` does not exist | Semantic search disabled; embeddings may be unconfigured |
130
130
  | **Old config version** | `version` in `myco.yaml` is less than `2` | Vault may need migration; suggest running `myco init` |
131
131