@goondocks/myco 0.9.0 → 0.11.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 (223) hide show
  1. package/CONTRIBUTING.md +3 -19
  2. package/README.md +35 -11
  3. package/dist/{agent-run-EFICNTAU.js → agent-run-CGM75RS6.js} +7 -7
  4. package/dist/{agent-tasks-RXJ7Z5NG.js → agent-tasks-3RQKPRSW.js} +7 -7
  5. package/dist/{chunk-RJ6ZQKG5.js → chunk-5QERXFH7.js} +2 -2
  6. package/dist/{chunk-UBZPD4HN.js → chunk-5SDH75YC.js} +2 -2
  7. package/dist/{chunk-BUSP3OJB.js → chunk-6LL2MQHP.js} +6 -6
  8. package/dist/{chunk-5VZ52A4T.js → chunk-76ZO5RGT.js} +16 -2
  9. package/dist/{chunk-5VZ52A4T.js.map → chunk-76ZO5RGT.js.map} +1 -1
  10. package/dist/{chunk-46PWOKSI.js → chunk-AEJS57ZK.js} +2 -2
  11. package/dist/{chunk-DCXRSSBP.js → chunk-C3AEZ3BZ.js} +3 -3
  12. package/dist/{chunk-QIK2XSDQ.js → chunk-CHG652UO.js} +4 -4
  13. package/dist/{chunk-4LPQ26CK.js → chunk-CUDM5YJY.js} +25 -8
  14. package/dist/chunk-CUDM5YJY.js.map +1 -0
  15. package/dist/{chunk-YDN4OM33.js → chunk-D6DXYAFK.js} +20 -7
  16. package/dist/chunk-D6DXYAFK.js.map +1 -0
  17. package/dist/chunk-ENWBFX7F.js +50 -0
  18. package/dist/chunk-ENWBFX7F.js.map +1 -0
  19. package/dist/{chunk-OXZSXYAT.js → chunk-FFQES5MC.js} +48 -21
  20. package/dist/chunk-FFQES5MC.js.map +1 -0
  21. package/dist/{chunk-KYLDNM7H.js → chunk-FPMEIN2W.js} +2 -2
  22. package/dist/{chunk-U3IBO3O3.js → chunk-IXOHLPH7.js} +9 -8
  23. package/dist/chunk-IXOHLPH7.js.map +1 -0
  24. package/dist/{chunk-PB6TOLRQ.js → chunk-JYXMRW3T.js} +2 -2
  25. package/dist/chunk-K2UZNK25.js +83 -0
  26. package/dist/chunk-K2UZNK25.js.map +1 -0
  27. package/dist/chunk-LYFDTF7G.js +792 -0
  28. package/dist/chunk-LYFDTF7G.js.map +1 -0
  29. package/dist/{chunk-MHSCMET3.js → chunk-MAZOVVDU.js} +33 -3
  30. package/dist/chunk-MAZOVVDU.js.map +1 -0
  31. package/dist/{chunk-JYOOJCPQ.js → chunk-MKKXCCQ5.js} +5 -5
  32. package/dist/{chunk-5PEUFJ6U.js → chunk-QFMBZ72S.js} +24 -8
  33. package/dist/chunk-QFMBZ72S.js.map +1 -0
  34. package/dist/{chunk-FFAYUQ5N.js → chunk-RJMXDUMA.js} +2 -1
  35. package/dist/{chunk-WGTCA2NU.js → chunk-S6I62FAH.js} +10 -2
  36. package/dist/{chunk-WGTCA2NU.js.map → chunk-S6I62FAH.js.map} +1 -1
  37. package/dist/{chunk-3K5WGSJ4.js → chunk-U7UUJ4FD.js} +23 -8
  38. package/dist/chunk-U7UUJ4FD.js.map +1 -0
  39. package/dist/{chunk-PT5IC642.js → chunk-W6HI4CCS.js} +2 -2
  40. package/dist/{chunk-KV4OC4H3.js → chunk-WZZH3YXJ.js} +119 -16
  41. package/dist/chunk-WZZH3YXJ.js.map +1 -0
  42. package/dist/chunk-XLY3REL3.js +165 -0
  43. package/dist/chunk-XLY3REL3.js.map +1 -0
  44. package/dist/{chunk-TRUJLI6K.js → chunk-YKOEMLJJ.js} +9 -5
  45. package/dist/chunk-YKOEMLJJ.js.map +1 -0
  46. package/dist/{chunk-JMJJEQ3P.js → chunk-ZAHDA2PQ.js} +9 -9
  47. package/dist/{chunk-2T7RPVPP.js → chunk-ZESTWGJT.js} +2 -2
  48. package/dist/{cli-ODLFRIYS.js → cli-FL754H6S.js} +49 -36
  49. package/dist/cli-FL754H6S.js.map +1 -0
  50. package/dist/client-4NP7ZMLV.js +15 -0
  51. package/dist/{config-UR5BSGVX.js → config-G3CSGI7P.js} +2 -2
  52. package/dist/{detect-H5OPI7GD.js → detect-27DN6UTL.js} +3 -3
  53. package/dist/{detect-providers-Q42OD4OS.js → detect-providers-AZ6DEQU7.js} +5 -5
  54. package/dist/{doctor-JLKTXDEH.js → doctor-OFGWOYBC.js} +24 -30
  55. package/dist/doctor-OFGWOYBC.js.map +1 -0
  56. package/dist/{executor-ONSDHPGX.js → executor-SWXSN7ZC.js} +38 -25
  57. package/dist/executor-SWXSN7ZC.js.map +1 -0
  58. package/dist/{init-6GWY345B.js → init-JZJJKC4G.js} +46 -65
  59. package/dist/init-JZJJKC4G.js.map +1 -0
  60. package/dist/{init-wizard-UONLDYLI.js → init-wizard-4VHNOYFO.js} +8 -8
  61. package/dist/llm-XJFHRFHB.js +17 -0
  62. package/dist/{loader-SH67XD54.js → loader-DGWP4EFB.js} +6 -6
  63. package/dist/{loader-XVXKZZDH.js → loader-PZ7ZRSA4.js} +8 -4
  64. package/dist/{logs-QZVYF6FP.js → logs-LXHPDKUA.js} +3 -3
  65. package/dist/machine-id-RCM7TXPJ.js +13 -0
  66. package/dist/{main-BMCL7CPO.js → main-UBUZTMGV.js} +1367 -107
  67. package/dist/main-UBUZTMGV.js.map +1 -0
  68. package/dist/{openai-embeddings-C265WRNK.js → openai-embeddings-ST3B6GW7.js} +5 -5
  69. package/dist/{openrouter-U6VFCRX2.js → openrouter-HJHOO3EO.js} +5 -5
  70. package/dist/post-compact-O7HMEFKP.js +30 -0
  71. package/dist/post-compact-O7HMEFKP.js.map +1 -0
  72. package/dist/{post-tool-use-DOUM7CGQ.js → post-tool-use-OVNMZ3UG.js} +22 -15
  73. package/dist/post-tool-use-OVNMZ3UG.js.map +1 -0
  74. package/dist/post-tool-use-failure-HPXTFYBY.js +32 -0
  75. package/dist/post-tool-use-failure-HPXTFYBY.js.map +1 -0
  76. package/dist/{pre-compact-3J33CHXQ.js → pre-compact-JD3D4PBB.js} +12 -8
  77. package/dist/pre-compact-JD3D4PBB.js.map +1 -0
  78. package/dist/{provider-check-3WBPZADE.js → provider-check-SOTDYLJE.js} +5 -5
  79. package/dist/{registry-J4XTWARS.js → registry-33MEKDHT.js} +7 -7
  80. package/dist/remove-XDFMOYUL.js +92 -0
  81. package/dist/remove-XDFMOYUL.js.map +1 -0
  82. package/dist/{resolution-events-TFEQPVKS.js → resolution-events-UPHJJLDQ.js} +5 -2
  83. package/dist/{restart-2VM33WOB.js → restart-JBAMRKRJ.js} +8 -8
  84. package/dist/{search-ZGQR5MDE.js → search-43TS5RGA.js} +8 -8
  85. package/dist/{server-6KMBJCHZ.js → server-UBU7NALJ.js} +14 -14
  86. package/dist/{session-Z2FXDDG6.js → session-CPBLMD7M.js} +9 -8
  87. package/dist/{session-Z2FXDDG6.js.map → session-CPBLMD7M.js.map} +1 -1
  88. package/dist/{session-end-FLVX32LE.js → session-end-DUHUYE6J.js} +13 -8
  89. package/dist/session-end-DUHUYE6J.js.map +1 -0
  90. package/dist/{session-start-UCLK7PXE.js → session-start-I7XM3CME.js} +19 -15
  91. package/dist/{session-start-UCLK7PXE.js.map → session-start-I7XM3CME.js.map} +1 -1
  92. package/dist/{setup-llm-GKMCHURK.js → setup-llm-TTHEUWDA.js} +10 -10
  93. package/dist/src/cli.js +1 -1
  94. package/dist/src/daemon/main.js +1 -1
  95. package/dist/src/hooks/post-tool-use.js +1 -1
  96. package/dist/src/hooks/session-end.js +1 -1
  97. package/dist/src/hooks/session-start.js +1 -1
  98. package/dist/src/hooks/stop.js +1 -1
  99. package/dist/src/hooks/user-prompt-submit.js +1 -1
  100. package/dist/src/mcp/server.js +1 -1
  101. package/dist/src/symbionts/manifests/claude-code.yaml +8 -4
  102. package/dist/src/symbionts/manifests/codex.yaml +19 -0
  103. package/dist/src/symbionts/manifests/cursor.yaml +6 -3
  104. package/dist/src/symbionts/manifests/gemini.yaml +20 -0
  105. package/dist/src/symbionts/manifests/vscode-copilot.yaml +17 -0
  106. package/dist/src/symbionts/manifests/windsurf.yaml +16 -0
  107. package/dist/src/symbionts/templates/claude-code/hooks.json +134 -0
  108. package/dist/src/symbionts/templates/claude-code/mcp.json +7 -0
  109. package/dist/src/symbionts/templates/claude-code/settings.json +10 -0
  110. package/dist/src/symbionts/templates/codex/hooks.json +46 -0
  111. package/dist/src/symbionts/templates/codex/mcp.json +6 -0
  112. package/dist/src/symbionts/templates/cursor/mcp.json +7 -0
  113. package/dist/src/symbionts/templates/cursor/settings.json +6 -0
  114. package/dist/src/symbionts/templates/gemini/hooks.json +74 -0
  115. package/dist/src/symbionts/templates/gemini/mcp.json +6 -0
  116. package/dist/src/symbionts/templates/gemini/settings.json +6 -0
  117. package/dist/src/symbionts/templates/instructions-stub.md +9 -0
  118. package/dist/src/symbionts/templates/vscode-copilot/hooks.json +79 -0
  119. package/dist/src/symbionts/templates/vscode-copilot/mcp.json +7 -0
  120. package/dist/src/symbionts/templates/vscode-copilot/settings.json +6 -0
  121. package/dist/src/symbionts/templates/windsurf/hooks.json +22 -0
  122. package/dist/src/symbionts/templates/windsurf/settings.json +6 -0
  123. package/dist/{stats-IUJPZSVZ.js → stats-7CE6GEWE.js} +11 -11
  124. package/dist/{stop-XRQLLXST.js → stop-BF3AWA7S.js} +18 -12
  125. package/dist/stop-BF3AWA7S.js.map +1 -0
  126. package/dist/stop-failure-7Q2LQF2R.js +30 -0
  127. package/dist/stop-failure-7Q2LQF2R.js.map +1 -0
  128. package/dist/subagent-start-QG2J3AN4.js +30 -0
  129. package/dist/{subagent-start-MWWQTZMQ.js.map → subagent-start-QG2J3AN4.js.map} +1 -1
  130. package/dist/subagent-stop-WVA7RDIM.js +32 -0
  131. package/dist/subagent-stop-WVA7RDIM.js.map +1 -0
  132. package/dist/task-completed-AQVQ7GFL.js +31 -0
  133. package/dist/task-completed-AQVQ7GFL.js.map +1 -0
  134. package/dist/team-LC3K7UXD.js +251 -0
  135. package/dist/team-LC3K7UXD.js.map +1 -0
  136. package/dist/ui/assets/index-BGbil7f1.css +1 -0
  137. package/dist/ui/assets/index-UFE9l-Hb.js +794 -0
  138. package/dist/ui/index.html +2 -2
  139. package/dist/update-3EKXZF3H.js +70 -0
  140. package/dist/update-3EKXZF3H.js.map +1 -0
  141. package/dist/{user-prompt-submit-KSM3AR6P.js → user-prompt-submit-22YQD4XM.js} +16 -9
  142. package/dist/user-prompt-submit-22YQD4XM.js.map +1 -0
  143. package/dist/{verify-UDAYVX37.js → verify-DVIWHZXA.js} +9 -9
  144. package/dist/{version-KLBN4HZT.js → version-VPI6ERF7.js} +2 -2
  145. package/dist/version-VPI6ERF7.js.map +1 -0
  146. package/package.json +3 -3
  147. package/skills/rules/SKILL.md +32 -9
  148. package/.claude-plugin/marketplace.json +0 -29
  149. package/.claude-plugin/plugin.json +0 -27
  150. package/dist/chunk-3K5WGSJ4.js.map +0 -1
  151. package/dist/chunk-4LPQ26CK.js.map +0 -1
  152. package/dist/chunk-5PEUFJ6U.js.map +0 -1
  153. package/dist/chunk-KB4DGYIY.js +0 -436
  154. package/dist/chunk-KB4DGYIY.js.map +0 -1
  155. package/dist/chunk-KV4OC4H3.js.map +0 -1
  156. package/dist/chunk-MHSCMET3.js.map +0 -1
  157. package/dist/chunk-OXZSXYAT.js.map +0 -1
  158. package/dist/chunk-TRUJLI6K.js.map +0 -1
  159. package/dist/chunk-U3IBO3O3.js.map +0 -1
  160. package/dist/chunk-XNOCTDHF.js +0 -21
  161. package/dist/chunk-XNOCTDHF.js.map +0 -1
  162. package/dist/chunk-YDN4OM33.js.map +0 -1
  163. package/dist/cli-ODLFRIYS.js.map +0 -1
  164. package/dist/client-MXRNQ5FI.js +0 -13
  165. package/dist/doctor-JLKTXDEH.js.map +0 -1
  166. package/dist/executor-ONSDHPGX.js.map +0 -1
  167. package/dist/init-6GWY345B.js.map +0 -1
  168. package/dist/llm-BV3QNVRD.js +0 -17
  169. package/dist/main-BMCL7CPO.js.map +0 -1
  170. package/dist/post-compact-OWFSOITU.js +0 -26
  171. package/dist/post-compact-OWFSOITU.js.map +0 -1
  172. package/dist/post-tool-use-DOUM7CGQ.js.map +0 -1
  173. package/dist/post-tool-use-failure-SG3C7PE6.js +0 -28
  174. package/dist/post-tool-use-failure-SG3C7PE6.js.map +0 -1
  175. package/dist/pre-compact-3J33CHXQ.js.map +0 -1
  176. package/dist/session-end-FLVX32LE.js.map +0 -1
  177. package/dist/stop-XRQLLXST.js.map +0 -1
  178. package/dist/stop-failure-2CAJJKRG.js +0 -26
  179. package/dist/stop-failure-2CAJJKRG.js.map +0 -1
  180. package/dist/subagent-start-MWWQTZMQ.js +0 -26
  181. package/dist/subagent-stop-PJXYGRXB.js +0 -28
  182. package/dist/subagent-stop-PJXYGRXB.js.map +0 -1
  183. package/dist/task-completed-4LFRJVGI.js +0 -27
  184. package/dist/task-completed-4LFRJVGI.js.map +0 -1
  185. package/dist/ui/assets/index-DZrElonz.js +0 -744
  186. package/dist/ui/assets/index-TkeiYbZB.css +0 -1
  187. package/dist/user-prompt-submit-KSM3AR6P.js.map +0 -1
  188. /package/dist/{agent-run-EFICNTAU.js.map → agent-run-CGM75RS6.js.map} +0 -0
  189. /package/dist/{agent-tasks-RXJ7Z5NG.js.map → agent-tasks-3RQKPRSW.js.map} +0 -0
  190. /package/dist/{chunk-RJ6ZQKG5.js.map → chunk-5QERXFH7.js.map} +0 -0
  191. /package/dist/{chunk-UBZPD4HN.js.map → chunk-5SDH75YC.js.map} +0 -0
  192. /package/dist/{chunk-BUSP3OJB.js.map → chunk-6LL2MQHP.js.map} +0 -0
  193. /package/dist/{chunk-46PWOKSI.js.map → chunk-AEJS57ZK.js.map} +0 -0
  194. /package/dist/{chunk-DCXRSSBP.js.map → chunk-C3AEZ3BZ.js.map} +0 -0
  195. /package/dist/{chunk-QIK2XSDQ.js.map → chunk-CHG652UO.js.map} +0 -0
  196. /package/dist/{chunk-KYLDNM7H.js.map → chunk-FPMEIN2W.js.map} +0 -0
  197. /package/dist/{chunk-PB6TOLRQ.js.map → chunk-JYXMRW3T.js.map} +0 -0
  198. /package/dist/{chunk-JYOOJCPQ.js.map → chunk-MKKXCCQ5.js.map} +0 -0
  199. /package/dist/{chunk-FFAYUQ5N.js.map → chunk-RJMXDUMA.js.map} +0 -0
  200. /package/dist/{chunk-PT5IC642.js.map → chunk-W6HI4CCS.js.map} +0 -0
  201. /package/dist/{chunk-JMJJEQ3P.js.map → chunk-ZAHDA2PQ.js.map} +0 -0
  202. /package/dist/{chunk-2T7RPVPP.js.map → chunk-ZESTWGJT.js.map} +0 -0
  203. /package/dist/{client-MXRNQ5FI.js.map → client-4NP7ZMLV.js.map} +0 -0
  204. /package/dist/{config-UR5BSGVX.js.map → config-G3CSGI7P.js.map} +0 -0
  205. /package/dist/{detect-H5OPI7GD.js.map → detect-27DN6UTL.js.map} +0 -0
  206. /package/dist/{detect-providers-Q42OD4OS.js.map → detect-providers-AZ6DEQU7.js.map} +0 -0
  207. /package/dist/{init-wizard-UONLDYLI.js.map → init-wizard-4VHNOYFO.js.map} +0 -0
  208. /package/dist/{llm-BV3QNVRD.js.map → llm-XJFHRFHB.js.map} +0 -0
  209. /package/dist/{loader-SH67XD54.js.map → loader-DGWP4EFB.js.map} +0 -0
  210. /package/dist/{loader-XVXKZZDH.js.map → loader-PZ7ZRSA4.js.map} +0 -0
  211. /package/dist/{logs-QZVYF6FP.js.map → logs-LXHPDKUA.js.map} +0 -0
  212. /package/dist/{openai-embeddings-C265WRNK.js.map → machine-id-RCM7TXPJ.js.map} +0 -0
  213. /package/dist/{openrouter-U6VFCRX2.js.map → openai-embeddings-ST3B6GW7.js.map} +0 -0
  214. /package/dist/{provider-check-3WBPZADE.js.map → openrouter-HJHOO3EO.js.map} +0 -0
  215. /package/dist/{registry-J4XTWARS.js.map → provider-check-SOTDYLJE.js.map} +0 -0
  216. /package/dist/{resolution-events-TFEQPVKS.js.map → registry-33MEKDHT.js.map} +0 -0
  217. /package/dist/{version-KLBN4HZT.js.map → resolution-events-UPHJJLDQ.js.map} +0 -0
  218. /package/dist/{restart-2VM33WOB.js.map → restart-JBAMRKRJ.js.map} +0 -0
  219. /package/dist/{search-ZGQR5MDE.js.map → search-43TS5RGA.js.map} +0 -0
  220. /package/dist/{server-6KMBJCHZ.js.map → server-UBU7NALJ.js.map} +0 -0
  221. /package/dist/{setup-llm-GKMCHURK.js.map → setup-llm-TTHEUWDA.js.map} +0 -0
  222. /package/dist/{stats-IUJPZSVZ.js.map → stats-7CE6GEWE.js.map} +0 -0
  223. /package/dist/{verify-UDAYVX37.js.map → verify-DVIWHZXA.js.map} +0 -0
@@ -2,14 +2,14 @@
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
3
  import {
4
4
  loadEnv
5
- } from "./chunk-KB4DGYIY.js";
5
+ } from "./chunk-LYFDTF7G.js";
6
6
  import "./chunk-SAKJMNSR.js";
7
- import "./chunk-UBZPD4HN.js";
7
+ import "./chunk-5SDH75YC.js";
8
8
  import "./chunk-MYX5NCRH.js";
9
- import "./chunk-TRUJLI6K.js";
10
- import "./chunk-5VZ52A4T.js";
11
- import "./chunk-WGTCA2NU.js";
12
- import "./chunk-PB6TOLRQ.js";
9
+ import "./chunk-YKOEMLJJ.js";
10
+ import "./chunk-76ZO5RGT.js";
11
+ import "./chunk-S6I62FAH.js";
12
+ import "./chunk-JYXMRW3T.js";
13
13
  import "./chunk-LPUQPDC2.js";
14
14
  import {
15
15
  resolveVaultDir
@@ -24,6 +24,8 @@ var USAGE = `Usage: myco <command> [args]
24
24
 
25
25
  Commands:
26
26
  init [options] Initialize a new vault
27
+ update Update vault files and agent registration
28
+ remove [--remove-vault] Remove Myco from this project (vault preserved by default)
27
29
  config <get|set> [args] Get or set vault config values
28
30
  detect-providers Detect available LLM/embedding providers (JSON)
29
31
  verify Test LLM and embedding connectivity
@@ -36,6 +38,7 @@ Commands:
36
38
  setup-digest [options] Configure digest and capture settings
37
39
  agent [options] Run the intelligence agent
38
40
  task <subcommand> Manage agent task definitions
41
+ team <init|upgrade> Provision or upgrade team sync infrastructure
39
42
  doctor [--fix] Check vault health and repair issues
40
43
  restart Restart the daemon
41
44
  version Show plugin version
@@ -49,29 +52,29 @@ async function main() {
49
52
  process.stdout.write(USAGE);
50
53
  return;
51
54
  }
52
- if (cmd === "init") return (await import("./init-6GWY345B.js")).run(args);
53
- if (cmd === "detect-providers") return (await import("./detect-providers-Q42OD4OS.js")).run(args);
55
+ if (cmd === "init") return (await import("./init-JZJJKC4G.js")).run(args);
56
+ if (cmd === "detect-providers") return (await import("./detect-providers-AZ6DEQU7.js")).run(args);
54
57
  if (cmd === "version" || cmd === "--version" || cmd === "-v") {
55
- const { getPluginVersion } = await import("./version-KLBN4HZT.js");
58
+ const { getPluginVersion } = await import("./version-VPI6ERF7.js");
56
59
  console.log(getPluginVersion());
57
60
  return;
58
61
  }
59
- if (cmd === "mcp") return (await import("./server-6KMBJCHZ.js")).main();
62
+ if (cmd === "mcp") return (await import("./server-UBU7NALJ.js")).main();
60
63
  if (cmd === "hook") {
61
64
  const hookName = args[0];
62
65
  const HOOK_DISPATCH = {
63
- "session-start": () => import("./session-start-UCLK7PXE.js"),
64
- "session-end": () => import("./session-end-FLVX32LE.js"),
65
- "stop": () => import("./stop-XRQLLXST.js"),
66
- "user-prompt-submit": () => import("./user-prompt-submit-KSM3AR6P.js"),
67
- "post-tool-use": () => import("./post-tool-use-DOUM7CGQ.js"),
68
- "post-tool-use-failure": () => import("./post-tool-use-failure-SG3C7PE6.js"),
69
- "subagent-start": () => import("./subagent-start-MWWQTZMQ.js"),
70
- "subagent-stop": () => import("./subagent-stop-PJXYGRXB.js"),
71
- "stop-failure": () => import("./stop-failure-2CAJJKRG.js"),
72
- "task-completed": () => import("./task-completed-4LFRJVGI.js"),
73
- "pre-compact": () => import("./pre-compact-3J33CHXQ.js"),
74
- "post-compact": () => import("./post-compact-OWFSOITU.js")
66
+ "session-start": () => import("./session-start-I7XM3CME.js"),
67
+ "session-end": () => import("./session-end-DUHUYE6J.js"),
68
+ "stop": () => import("./stop-BF3AWA7S.js"),
69
+ "user-prompt-submit": () => import("./user-prompt-submit-22YQD4XM.js"),
70
+ "post-tool-use": () => import("./post-tool-use-OVNMZ3UG.js"),
71
+ "post-tool-use-failure": () => import("./post-tool-use-failure-HPXTFYBY.js"),
72
+ "subagent-start": () => import("./subagent-start-QG2J3AN4.js"),
73
+ "subagent-stop": () => import("./subagent-stop-WVA7RDIM.js"),
74
+ "stop-failure": () => import("./stop-failure-7Q2LQF2R.js"),
75
+ "task-completed": () => import("./task-completed-AQVQ7GFL.js"),
76
+ "pre-compact": () => import("./pre-compact-JD3D4PBB.js"),
77
+ "post-compact": () => import("./post-compact-O7HMEFKP.js")
75
78
  };
76
79
  const loader = HOOK_DISPATCH[hookName];
77
80
  if (!loader) {
@@ -80,11 +83,13 @@ async function main() {
80
83
  }
81
84
  return (await loader()).main();
82
85
  }
83
- if (cmd === "daemon") return (await import("./main-BMCL7CPO.js")).main();
86
+ if (cmd === "daemon") return (await import("./main-UBUZTMGV.js")).main();
84
87
  if (cmd === "doctor") {
85
88
  const vaultDir2 = resolveVaultDir();
86
- return (await import("./doctor-JLKTXDEH.js")).run(args, vaultDir2);
89
+ return (await import("./doctor-OFGWOYBC.js")).run(args, vaultDir2);
87
90
  }
91
+ if (cmd === "update") return (await import("./update-3EKXZF3H.js")).run(args);
92
+ if (cmd === "remove") return (await import("./remove-XDFMOYUL.js")).run(args);
88
93
  const vaultDir = resolveVaultDir();
89
94
  if (!fs.existsSync(path.join(vaultDir, "myco.yaml"))) {
90
95
  console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);
@@ -92,29 +97,37 @@ async function main() {
92
97
  }
93
98
  switch (cmd) {
94
99
  case "config":
95
- return (await import("./config-UR5BSGVX.js")).run(args, vaultDir);
100
+ return (await import("./config-G3CSGI7P.js")).run(args, vaultDir);
96
101
  case "verify":
97
- return (await import("./verify-UDAYVX37.js")).run(args, vaultDir);
102
+ return (await import("./verify-DVIWHZXA.js")).run(args, vaultDir);
98
103
  case "stats":
99
- return (await import("./stats-IUJPZSVZ.js")).run(args, vaultDir);
104
+ return (await import("./stats-7CE6GEWE.js")).run(args, vaultDir);
100
105
  case "search":
101
- return (await import("./search-ZGQR5MDE.js")).run(args, vaultDir);
106
+ return (await import("./search-43TS5RGA.js")).run(args, vaultDir);
102
107
  case "vectors":
103
- return (await import("./search-ZGQR5MDE.js")).runVectors(args, vaultDir);
108
+ return (await import("./search-43TS5RGA.js")).runVectors(args, vaultDir);
104
109
  case "session":
105
- return (await import("./session-Z2FXDDG6.js")).run(args, vaultDir);
110
+ return (await import("./session-CPBLMD7M.js")).run(args, vaultDir);
106
111
  case "setup-llm":
107
- return (await import("./setup-llm-GKMCHURK.js")).run(args, vaultDir);
112
+ return (await import("./setup-llm-TTHEUWDA.js")).run(args, vaultDir);
108
113
  case "setup-digest":
109
114
  return (await import("./setup-digest-4KDSXAIV.js")).run(args, vaultDir);
110
115
  case "agent":
111
- return (await import("./agent-run-EFICNTAU.js")).run(args, vaultDir);
116
+ return (await import("./agent-run-CGM75RS6.js")).run(args, vaultDir);
112
117
  case "task":
113
- return (await import("./agent-tasks-RXJ7Z5NG.js")).run(args, vaultDir);
118
+ return (await import("./agent-tasks-3RQKPRSW.js")).run(args, vaultDir);
119
+ case "team": {
120
+ const sub = args[0];
121
+ if (sub === "init") return (await import("./team-LC3K7UXD.js")).teamInit(vaultDir);
122
+ if (sub === "upgrade") return (await import("./team-LC3K7UXD.js")).teamUpgrade(vaultDir);
123
+ console.error("Usage: myco team <init|upgrade>");
124
+ process.exit(1);
125
+ break;
126
+ }
114
127
  case "restart":
115
- return (await import("./restart-2VM33WOB.js")).run(args, vaultDir);
128
+ return (await import("./restart-JBAMRKRJ.js")).run(args, vaultDir);
116
129
  case "logs":
117
- return (await import("./logs-QZVYF6FP.js")).run(args, vaultDir);
130
+ return (await import("./logs-LXHPDKUA.js")).run(args, vaultDir);
118
131
  default:
119
132
  console.error(`Unknown command: ${cmd}`);
120
133
  process.stdout.write(USAGE);
@@ -125,4 +138,4 @@ main().catch((err) => {
125
138
  console.error(`myco: ${err.message}`);
126
139
  process.exit(1);
127
140
  });
128
- //# sourceMappingURL=cli-ODLFRIYS.js.map
141
+ //# sourceMappingURL=cli-FL754H6S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { loadEnv } from './cli/shared.js';\nimport { resolveVaultDir } from './vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nloadEnv();\n\nconst USAGE = `Usage: myco <command> [args]\n\nCommands:\n init [options] Initialize a new vault\n update Update vault files and agent registration\n remove [--remove-vault] Remove Myco from this project (vault preserved by default)\n config <get|set> [args] Get or set vault config values\n detect-providers Detect available LLM/embedding providers (JSON)\n verify Test LLM and embedding connectivity\n stats Vault health, index counts, vector count\n search <query> Combined FTS + vector search with scores\n vectors <query> Raw vector search with similarity scores\n session [id|latest] Show a session\n logs [options] View daemon logs\n setup-llm [options] Configure LLM and embedding providers\n setup-digest [options] Configure digest and capture settings\n agent [options] Run the intelligence agent\n task <subcommand> Manage agent task definitions\n team <init|upgrade> Provision or upgrade team sync infrastructure\n doctor [--fix] Check vault health and repair issues\n restart Restart the daemon\n version Show plugin version\n mcp Start the MCP stdio server\n hook <name> Run a hook (session-start, session-end, stop, user-prompt-submit, post-tool-use, post-tool-use-failure, subagent-start, subagent-stop, stop-failure, task-completed, pre-compact, post-compact)\n daemon --vault <dir> Start the daemon process\n`;\n\nasync function main(): Promise<void> {\n const [cmd, ...args] = process.argv.slice(2);\n if (!cmd || cmd === '--help' || cmd === '-h') {\n process.stdout.write(USAGE);\n return;\n }\n\n if (cmd === 'init') return (await import('./cli/init.js')).run(args);\n if (cmd === 'detect-providers') return (await import('./cli/detect-providers.js')).run(args);\n if (cmd === 'version' || cmd === '--version' || cmd === '-v') {\n const { getPluginVersion } = await import('./version.js');\n console.log(getPluginVersion());\n return;\n }\n if (cmd === 'mcp') return (await import('./mcp/server.js')).main();\n if (cmd === 'hook') {\n const hookName = args[0];\n const HOOK_DISPATCH: Record<string, () => Promise<{ main: () => Promise<void> }>> = {\n 'session-start': () => import('./hooks/session-start.js'),\n 'session-end': () => import('./hooks/session-end.js'),\n 'stop': () => import('./hooks/stop.js'),\n 'user-prompt-submit': () => import('./hooks/user-prompt-submit.js'),\n 'post-tool-use': () => import('./hooks/post-tool-use.js'),\n 'post-tool-use-failure': () => import('./hooks/post-tool-use-failure.js'),\n 'subagent-start': () => import('./hooks/subagent-start.js'),\n 'subagent-stop': () => import('./hooks/subagent-stop.js'),\n 'stop-failure': () => import('./hooks/stop-failure.js'),\n 'task-completed': () => import('./hooks/task-completed.js'),\n 'pre-compact': () => import('./hooks/pre-compact.js'),\n 'post-compact': () => import('./hooks/post-compact.js'),\n };\n const loader = HOOK_DISPATCH[hookName];\n if (!loader) {\n console.error(`Unknown hook: ${hookName}. Available: ${Object.keys(HOOK_DISPATCH).join(', ')}`);\n process.exit(1);\n }\n return (await loader()).main();\n }\n if (cmd === 'daemon') return (await import('./daemon/main.js')).main();\n\n if (cmd === 'doctor') {\n const vaultDir = resolveVaultDir();\n return (await import('./cli/doctor.js')).run(args, vaultDir);\n }\n\n if (cmd === 'update') return (await import('./cli/update.js')).run(args);\n if (cmd === 'remove') return (await import('./cli/remove.js')).run(args);\n\n const vaultDir = resolveVaultDir();\n if (!fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);\n process.exit(1);\n }\n\n switch (cmd) {\n case 'config': return (await import('./cli/config.js')).run(args, vaultDir);\n case 'verify': return (await import('./cli/verify.js')).run(args, vaultDir);\n case 'stats': return (await import('./cli/stats.js')).run(args, vaultDir);\n case 'search': return (await import('./cli/search.js')).run(args, vaultDir);\n case 'vectors': return (await import('./cli/search.js')).runVectors(args, vaultDir);\n case 'session': return (await import('./cli/session.js')).run(args, vaultDir);\n case 'setup-llm': return (await import('./cli/setup-llm.js')).run(args, vaultDir);\n case 'setup-digest': return (await import('./cli/setup-digest.js')).run(args, vaultDir);\n case 'agent': return (await import('./cli/agent-run.js')).run(args, vaultDir);\n case 'task': return (await import('./cli/agent-tasks.js')).run(args, vaultDir);\n case 'team': {\n const sub = args[0];\n if (sub === 'init') return (await import('./cli/team.js')).teamInit(vaultDir);\n if (sub === 'upgrade') return (await import('./cli/team.js')).teamUpgrade(vaultDir);\n console.error('Usage: myco team <init|upgrade>');\n process.exit(1);\n break;\n }\n case 'restart': return (await import('./cli/restart.js')).run(args, vaultDir);\n case 'logs': return (await import('./cli/logs.js')).run(args, vaultDir);\n default:\n console.error(`Unknown command: ${cmd}`);\n process.stdout.write(USAGE);\n process.exit(1);\n }\n}\n\nmain().catch((err) => {\n console.error(`myco: ${(err as Error).message}`);\n process.exit(1);\n});\n"],"mappings":"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","names":["vaultDir"]}
@@ -0,0 +1,15 @@
1
+ import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
+ import {
3
+ DaemonClient,
4
+ resolveCliEntryPath
5
+ } from "./chunk-YKOEMLJJ.js";
6
+ import "./chunk-76ZO5RGT.js";
7
+ import "./chunk-S6I62FAH.js";
8
+ import "./chunk-JYXMRW3T.js";
9
+ import "./chunk-LPUQPDC2.js";
10
+ import "./chunk-PZUWP5VK.js";
11
+ export {
12
+ DaemonClient,
13
+ resolveCliEntryPath
14
+ };
15
+ //# sourceMappingURL=client-4NP7ZMLV.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  loadConfig,
7
7
  updateConfig
8
- } from "./chunk-MHSCMET3.js";
8
+ } from "./chunk-MAZOVVDU.js";
9
9
  import "./chunk-D7TYRPRM.js";
10
10
  import "./chunk-E4VLWIJC.js";
11
11
  import "./chunk-KH64DHOY.js";
@@ -85,4 +85,4 @@ function parseValue(raw) {
85
85
  export {
86
86
  run
87
87
  };
88
- //# sourceMappingURL=config-UR5BSGVX.js.map
88
+ //# sourceMappingURL=config-G3CSGI7P.js.map
@@ -3,15 +3,15 @@ import {
3
3
  detectSymbionts,
4
4
  loadManifests,
5
5
  resolvePackageRoot
6
- } from "./chunk-5PEUFJ6U.js";
6
+ } from "./chunk-QFMBZ72S.js";
7
+ import "./chunk-LPUQPDC2.js";
7
8
  import "./chunk-D7TYRPRM.js";
8
9
  import "./chunk-E4VLWIJC.js";
9
10
  import "./chunk-KH64DHOY.js";
10
- import "./chunk-LPUQPDC2.js";
11
11
  import "./chunk-PZUWP5VK.js";
12
12
  export {
13
13
  detectSymbionts,
14
14
  loadManifests,
15
15
  resolvePackageRoot
16
16
  };
17
- //# sourceMappingURL=detect-H5OPI7GD.js.map
17
+ //# sourceMappingURL=detect-27DN6UTL.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
  checkLocalProvider
4
- } from "./chunk-DCXRSSBP.js";
5
- import "./chunk-UBZPD4HN.js";
6
- import "./chunk-5VZ52A4T.js";
7
- import "./chunk-WGTCA2NU.js";
4
+ } from "./chunk-C3AEZ3BZ.js";
5
+ import "./chunk-5SDH75YC.js";
6
+ import "./chunk-76ZO5RGT.js";
7
+ import "./chunk-S6I62FAH.js";
8
8
  import "./chunk-PZUWP5VK.js";
9
9
 
10
10
  // src/cli/detect-providers.ts
@@ -23,4 +23,4 @@ async function run(_args) {
23
23
  export {
24
24
  run
25
25
  };
26
- //# sourceMappingURL=detect-providers-Q42OD4OS.js.map
26
+ //# sourceMappingURL=detect-providers-AZ6DEQU7.js.map
@@ -1,14 +1,15 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
+ MYCO_MCP_SERVER_NAME,
3
4
  isProcessAlive
4
- } from "./chunk-KB4DGYIY.js";
5
+ } from "./chunk-LYFDTF7G.js";
5
6
  import "./chunk-SAKJMNSR.js";
6
- import "./chunk-UBZPD4HN.js";
7
+ import "./chunk-5SDH75YC.js";
7
8
  import "./chunk-MYX5NCRH.js";
8
- import "./chunk-TRUJLI6K.js";
9
- import "./chunk-5VZ52A4T.js";
10
- import "./chunk-WGTCA2NU.js";
11
- import "./chunk-PB6TOLRQ.js";
9
+ import "./chunk-YKOEMLJJ.js";
10
+ import "./chunk-76ZO5RGT.js";
11
+ import "./chunk-S6I62FAH.js";
12
+ import "./chunk-JYXMRW3T.js";
12
13
  import "./chunk-LPUQPDC2.js";
13
14
  import "./chunk-PZUWP5VK.js";
14
15
 
@@ -26,7 +27,7 @@ async function checkVault(vaultDir) {
26
27
  return { check: { name: "Vault", status: "fail", detail: `${CONFIG_FILENAME} not found in ${vaultDir}`, fixable: false }, config: null };
27
28
  }
28
29
  try {
29
- const { loadConfig } = await import("./loader-XVXKZZDH.js");
30
+ const { loadConfig } = await import("./loader-PZ7ZRSA4.js");
30
31
  const config = loadConfig(vaultDir);
31
32
  return { check: { name: "Vault", status: "ok", detail: `.myco/ (v${config.version})`, fixable: false }, config };
32
33
  } catch (err) {
@@ -65,7 +66,7 @@ async function checkIntelligence(config) {
65
66
  return { name: "Intelligence", status: "ok", detail: `${label} (SDK handles auth)`, fixable: false };
66
67
  }
67
68
  if (provider.type === "ollama" || provider.type === "lmstudio") {
68
- const { checkLocalProvider } = await import("./provider-check-3WBPZADE.js");
69
+ const { checkLocalProvider } = await import("./provider-check-SOTDYLJE.js");
69
70
  const status = await checkLocalProvider(provider.type, provider.base_url);
70
71
  if (!status.available) {
71
72
  return { name: "Intelligence", status: "warn", detail: `${label} (not reachable)`, fixable: false };
@@ -79,7 +80,7 @@ async function checkIntelligence(config) {
79
80
  }
80
81
  async function checkEmbeddings(config) {
81
82
  try {
82
- const { createEmbeddingProvider } = await import("./llm-BV3QNVRD.js");
83
+ const { createEmbeddingProvider } = await import("./llm-XJFHRFHB.js");
83
84
  const provider = createEmbeddingProvider(config.embedding);
84
85
  const available = await provider.isAvailable();
85
86
  const label = `${config.embedding.provider} / ${config.embedding.model}`;
@@ -93,7 +94,7 @@ async function checkEmbeddings(config) {
93
94
  }
94
95
  async function checkAgents(vaultDir) {
95
96
  try {
96
- const { detectSymbionts } = await import("./detect-H5OPI7GD.js");
97
+ const { detectSymbionts } = await import("./detect-27DN6UTL.js");
97
98
  const { resolveVaultDir } = await import("./resolve-3FEUV462.js");
98
99
  const projectRoot = path.dirname(resolveVaultDir());
99
100
  const detected = detectSymbionts(projectRoot);
@@ -114,8 +115,8 @@ async function checkAgents(vaultDir) {
114
115
  checks.push({
115
116
  name: checks.length === 0 ? "Agents" : "",
116
117
  status: "warn",
117
- detail: `${d.manifest.displayName} (detected but not registered)`,
118
- fixable: true
118
+ detail: `${d.manifest.displayName} (detected but not registered \u2014 run \`myco init\`)`,
119
+ fixable: false
119
120
  });
120
121
  }
121
122
  }
@@ -126,20 +127,16 @@ async function checkAgents(vaultDir) {
126
127
  }
127
128
  function isSymbiontRegistered(d, projectRoot) {
128
129
  try {
129
- if (d.manifest.settingsPath) {
130
- const settingsFile = path.join(projectRoot, d.manifest.settingsPath);
131
- if (!fs.existsSync(settingsFile)) return false;
132
- const settings = JSON.parse(fs.readFileSync(settingsFile, "utf-8"));
133
- const env = settings.env;
134
- return !!env?.MYCO_VAULT_DIR;
135
- }
136
- if (d.manifest.mcpConfigPath) {
137
- const mcpFile = path.join(projectRoot, d.manifest.mcpConfigPath);
138
- if (!fs.existsSync(mcpFile)) return false;
139
- const config = JSON.parse(fs.readFileSync(mcpFile, "utf-8"));
140
- const servers = config.mcpServers;
141
- return !!servers?.myco?.env?.MYCO_VAULT_DIR;
142
- }
130
+ const mcpTarget = d.manifest.registration?.mcpTarget;
131
+ if (!mcpTarget) return false;
132
+ const mcpFile = path.join(projectRoot, mcpTarget);
133
+ const raw = fs.readFileSync(mcpFile, "utf-8");
134
+ if (mcpTarget.endsWith(".toml")) {
135
+ return raw.includes(`[mcp_servers.${MYCO_MCP_SERVER_NAME}]`);
136
+ }
137
+ const config = JSON.parse(raw);
138
+ const servers = config.mcpServers;
139
+ return !!servers?.[MYCO_MCP_SERVER_NAME];
143
140
  } catch {
144
141
  }
145
142
  return false;
@@ -196,9 +193,6 @@ async function fix(vaultDir, checks) {
196
193
  fs.unlinkSync(daemonFile);
197
194
  actions.push("Removed malformed daemon.json");
198
195
  }
199
- if ((check.name === "Agents" || check.name === "") && check.detail.includes("not registered")) {
200
- actions.push("Run `myco init` to register detected agents");
201
- }
202
196
  if (check.name === "Database" && check.status === "fail") {
203
197
  actions.push("Run `myco init` to initialize the database");
204
198
  }
@@ -255,4 +249,4 @@ export {
255
249
  run,
256
250
  runChecks
257
251
  };
258
- //# sourceMappingURL=doctor-JLKTXDEH.js.map
252
+ //# sourceMappingURL=doctor-OFGWOYBC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/doctor.ts"],"sourcesContent":["/**\n * CLI: myco doctor — check vault health and auto-repair fixable issues.\n *\n * Runs a series of health checks against the vault directory and reports\n * status. With --fix, attempts to repair issues it can handle automatically.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { isProcessAlive } from './shared.js';\nimport { MYCO_MCP_SERVER_NAME } from '../symbionts/installer.js';\n\n// --- Named constants (no magic literals) ---\n\n\n/** Filename of the vault config file. */\nconst CONFIG_FILENAME = 'myco.yaml';\n\n/** Filename of the daemon state file. */\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\n/** Filename of the SQLite database. */\nconst DB_FILENAME = 'myco.db';\n\n/** Column width for the check name in output. */\nconst NAME_COL_WIDTH = 17;\n\n/** Prefix for indented continuation lines (e.g. multi-line agent output). */\nconst CONTINUATION_INDENT = ' '.repeat(NAME_COL_WIDTH);\n\n// --- Types ---\n\nexport interface DoctorCheck {\n name: string;\n status: 'ok' | 'fail' | 'warn';\n detail: string;\n fixable: boolean;\n}\n\n// --- Checks ---\n\n/** Check that myco.yaml exists and parses. Returns the parsed config on success. */\nasync function checkVault(vaultDir: string): Promise<{ check: DoctorCheck; config: import('../config/schema.js').MycoConfig | null }> {\n const configPath = path.join(vaultDir, CONFIG_FILENAME);\n if (!fs.existsSync(configPath)) {\n return { check: { name: 'Vault', status: 'fail', detail: `${CONFIG_FILENAME} not found in ${vaultDir}`, fixable: false }, config: null };\n }\n try {\n const { loadConfig } = await import('../config/loader.js');\n const config = loadConfig(vaultDir);\n return { check: { name: 'Vault', status: 'ok', detail: `.myco/ (v${config.version})`, fixable: false }, config };\n } catch (err) {\n return { check: { name: 'Vault', status: 'fail', detail: `${CONFIG_FILENAME} parse error: ${(err as Error).message}`, fixable: false }, config: null };\n }\n}\n\n/** Check that the SQLite database exists and can be queried. */\nasync function checkDatabase(vaultDir: string): Promise<DoctorCheck> {\n const dbPath = path.join(vaultDir, DB_FILENAME);\n if (!fs.existsSync(dbPath)) {\n return { name: 'Database', status: 'fail', detail: `${DB_FILENAME} not found — run \\`myco init\\``, fixable: false };\n }\n try {\n const { initDatabase, closeDatabase, vaultDbPath } = await import('../db/client.js');\n const db = initDatabase(vaultDbPath(vaultDir));\n const row = db.prepare('SELECT count(*) AS cnt FROM sessions').get() as { cnt: number } | undefined;\n const count = row?.cnt ?? 0;\n closeDatabase();\n return { name: 'Database', status: 'ok', detail: `${DB_FILENAME} (${count.toLocaleString()} sessions)`, fixable: false };\n } catch (err) {\n // Ensure DB is closed even on error\n try { const { closeDatabase } = await import('../db/client.js'); closeDatabase(); } catch { /* ignore */ }\n return { name: 'Database', status: 'fail', detail: `Database error: ${(err as Error).message}`, fixable: false };\n }\n}\n\n/** Check that the intelligence (agent) provider is configured. */\nasync function checkIntelligence(config: import('../config/schema.js').MycoConfig): Promise<DoctorCheck> {\n try {\n const provider = config.agent.provider;\n\n if (!provider) {\n return { name: 'Intelligence', status: 'warn', detail: 'No agent provider configured — run `myco init` to set up', fixable: false };\n }\n\n const label = `${provider.type}${provider.model ? ` / ${provider.model}` : ''}`;\n\n if (provider.type === 'cloud') {\n return { name: 'Intelligence', status: 'ok', detail: `${label} (SDK handles auth)`, fixable: false };\n }\n\n // Local provider — check reachability\n if (provider.type === 'ollama' || provider.type === 'lmstudio') {\n const { checkLocalProvider } = await import('../intelligence/provider-check.js');\n const status = await checkLocalProvider(provider.type, provider.base_url);\n if (!status.available) {\n return { name: 'Intelligence', status: 'warn', detail: `${label} (not reachable)`, fixable: false };\n }\n return { name: 'Intelligence', status: 'ok', detail: label, fixable: false };\n }\n\n return { name: 'Intelligence', status: 'ok', detail: label, fixable: false };\n } catch (err) {\n return { name: 'Intelligence', status: 'fail', detail: `Intelligence check failed: ${(err as Error).message}`, fixable: false };\n }\n}\n\n/** Check that the embedding provider is configured and reachable. */\nasync function checkEmbeddings(config: import('../config/schema.js').MycoConfig): Promise<DoctorCheck> {\n try {\n const { createEmbeddingProvider } = await import('../intelligence/llm.js');\n const provider = createEmbeddingProvider(config.embedding);\n const available = await provider.isAvailable();\n const label = `${config.embedding.provider} / ${config.embedding.model}`;\n if (available) {\n return { name: 'Embeddings', status: 'ok', detail: label, fixable: false };\n }\n return { name: 'Embeddings', status: 'warn', detail: `${label} (not reachable)`, fixable: false };\n } catch (err) {\n return { name: 'Embeddings', status: 'fail', detail: `Embedding check failed: ${(err as Error).message}`, fixable: false };\n }\n}\n\n/** Check symbiont detection and registration status. */\nasync function checkAgents(vaultDir: string): Promise<DoctorCheck[]> {\n try {\n const { detectSymbionts } = await import('../symbionts/detect.js');\n const { resolveVaultDir } = await import('../vault/resolve.js');\n const projectRoot = path.dirname(resolveVaultDir());\n const detected = detectSymbionts(projectRoot);\n\n if (detected.length === 0) {\n return [{ name: 'Agents', status: 'warn', detail: 'No symbionts detected', fixable: false }];\n }\n\n const checks: DoctorCheck[] = [];\n for (const d of detected) {\n const registered = isSymbiontRegistered(d, projectRoot);\n if (registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'ok',\n detail: `${d.manifest.displayName} (registered)`,\n fixable: false,\n });\n } else {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'warn',\n detail: `${d.manifest.displayName} (detected but not registered — run \\`myco init\\`)`,\n fixable: false,\n });\n }\n }\n return checks;\n } catch (err) {\n return [{ name: 'Agents', status: 'fail', detail: `Agent check failed: ${(err as Error).message}`, fixable: false }];\n }\n}\n\n/** Check if a symbiont has the Myco MCP server registered. */\nfunction isSymbiontRegistered(\n d: import('../symbionts/detect.js').DetectedSymbiont,\n projectRoot: string,\n): boolean {\n try {\n const mcpTarget = d.manifest.registration?.mcpTarget;\n if (!mcpTarget) return false;\n\n const mcpFile = path.join(projectRoot, mcpTarget);\n const raw = fs.readFileSync(mcpFile, 'utf-8');\n\n // TOML: check for section header\n if (mcpTarget.endsWith('.toml')) {\n return raw.includes(`[mcp_servers.${MYCO_MCP_SERVER_NAME}]`);\n }\n\n // JSON: check for server entry\n const config = JSON.parse(raw) as Record<string, unknown>;\n const servers = config.mcpServers as Record<string, unknown> | undefined;\n return !!servers?.[MYCO_MCP_SERVER_NAME];\n } catch { /* config missing or malformed */ }\n return false;\n}\n\n/** Check the daemon state file and process liveness. */\nasync function checkDaemon(vaultDir: string): Promise<DoctorCheck> {\n const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);\n if (!fs.existsSync(daemonFile)) {\n return { name: 'Daemon', status: 'warn', detail: 'Not running (no daemon.json)', fixable: false };\n }\n try {\n const state = JSON.parse(fs.readFileSync(daemonFile, 'utf-8')) as { pid?: number; port?: number };\n if (!state.pid) {\n return { name: 'Daemon', status: 'warn', detail: 'daemon.json exists but no PID', fixable: true };\n }\n if (isProcessAlive(state.pid)) {\n return { name: 'Daemon', status: 'ok', detail: `PID ${state.pid}, port ${state.port ?? 'unknown'}`, fixable: false };\n }\n return { name: 'Daemon', status: 'warn', detail: `Stale daemon.json (PID ${state.pid} not running)`, fixable: true };\n } catch (err) {\n return { name: 'Daemon', status: 'fail', detail: `daemon.json parse error: ${(err as Error).message}`, fixable: true };\n }\n}\n\n\n// --- Public API ---\n\n/** Run all health checks against a vault directory. */\nexport async function runChecks(vaultDir: string): Promise<DoctorCheck[]> {\n const { check: vaultCheck, config } = await checkVault(vaultDir);\n const checks: DoctorCheck[] = [vaultCheck];\n\n if (!config) {\n checks.push(\n { name: 'Database', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n { name: 'Intelligence', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n { name: 'Embeddings', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n { name: 'Agents', status: 'fail', detail: 'Skipped (vault check failed)', fixable: false },\n await checkDaemon(vaultDir),\n );\n return checks;\n }\n\n checks.push(await checkDatabase(vaultDir));\n checks.push(await checkIntelligence(config));\n checks.push(await checkEmbeddings(config));\n checks.push(...await checkAgents(vaultDir));\n checks.push(await checkDaemon(vaultDir));\n\n return checks;\n}\n\n/** Auto-repair fixable issues. Returns descriptions of actions taken. */\nexport async function fix(vaultDir: string, checks: DoctorCheck[]): Promise<string[]> {\n const actions: string[] = [];\n\n for (const check of checks) {\n if (!check.fixable || check.status === 'ok') continue;\n\n // Fix stale daemon.json\n if (check.name === 'Daemon' && check.detail.includes('Stale')) {\n const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);\n fs.unlinkSync(daemonFile);\n actions.push('Removed stale daemon.json');\n }\n\n // Fix malformed daemon.json\n if (check.name === 'Daemon' && check.detail.includes('parse error')) {\n const daemonFile = path.join(vaultDir, DAEMON_STATE_FILENAME);\n fs.unlinkSync(daemonFile);\n actions.push('Removed malformed daemon.json');\n }\n\n // Advise on database issues\n if (check.name === 'Database' && check.status === 'fail') {\n actions.push('Run `myco init` to initialize the database');\n }\n }\n\n return actions;\n}\n\n// --- Output formatting ---\n\n/** Status label width (visible characters). */\nconst STATUS_COL_WIDTH = 6;\n\nconst STATUS_LABELS: Record<DoctorCheck['status'], { text: string; color: string }> = {\n ok: { text: 'ok', color: '\\x1b[32m' },\n fail: { text: 'FAIL', color: '\\x1b[31m' },\n warn: { text: '!!', color: '\\x1b[33m' },\n};\n\nfunction formatCheck(check: DoctorCheck): string {\n const name = check.name ? check.name.padEnd(NAME_COL_WIDTH) : CONTINUATION_INDENT;\n const { text, color } = STATUS_LABELS[check.status];\n const paddedText = text.padEnd(STATUS_COL_WIDTH);\n return ` ${name}${color}${paddedText}\\x1b[0m${check.detail}`;\n}\n\n// --- CLI entry point ---\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const shouldFix = args.includes('--fix');\n\n console.log('\\nmyco doctor\\n');\n\n const checks = await runChecks(vaultDir);\n\n for (const check of checks) {\n console.log(formatCheck(check));\n }\n\n const issues = checks.filter(c => c.status !== 'ok');\n const fixable = issues.filter(c => c.fixable);\n\n console.log('');\n\n if (issues.length === 0) {\n console.log(' All checks passed.\\n');\n return;\n }\n\n console.log(` ${issues.length} issue(s) found.`);\n\n if (shouldFix) {\n const actions = await fix(vaultDir, checks);\n if (actions.length > 0) {\n console.log('');\n for (const action of actions) {\n console.log(` Fixed: ${action}`);\n }\n console.log('');\n } else {\n console.log(' No auto-fixable issues.\\n');\n }\n } else if (fixable.length > 0) {\n console.log(` Run \\`myco doctor --fix\\` to repair ${fixable.length} fixable issue(s).\\n`);\n } else {\n console.log('');\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  insertResolutionEvent
4
- } from "./chunk-YDN4OM33.js";
4
+ } from "./chunk-D6DXYAFK.js";
5
5
  import {
6
6
  STATUS_COMPLETED,
7
7
  STATUS_FAILED,
@@ -21,13 +21,13 @@ import {
21
21
  markBatchProcessed,
22
22
  updateRunStatus,
23
23
  upsertDigestExtract
24
- } from "./chunk-OXZSXYAT.js";
24
+ } from "./chunk-FFQES5MC.js";
25
25
  import {
26
26
  fullTextSearch
27
- } from "./chunk-PT5IC642.js";
27
+ } from "./chunk-W6HI4CCS.js";
28
28
  import {
29
29
  loadAllTasks
30
- } from "./chunk-BUSP3OJB.js";
30
+ } from "./chunk-6LL2MQHP.js";
31
31
  import {
32
32
  getAgent,
33
33
  getDefaultTask,
@@ -36,29 +36,25 @@ import {
36
36
  loadSystemPrompt,
37
37
  resolveDefinitionsDir,
38
38
  resolveEffectiveConfig
39
- } from "./chunk-JMJJEQ3P.js";
39
+ } from "./chunk-ZAHDA2PQ.js";
40
40
  import "./chunk-IB76KGBY.js";
41
41
  import {
42
42
  DEFAULT_IMPORTANCE,
43
43
  insertSpore,
44
44
  listSpores,
45
45
  updateSporeStatus
46
- } from "./chunk-3K5WGSJ4.js";
46
+ } from "./chunk-U7UUJ4FD.js";
47
47
  import {
48
48
  listSessions,
49
49
  updateSession
50
- } from "./chunk-4LPQ26CK.js";
50
+ } from "./chunk-CUDM5YJY.js";
51
+ import "./chunk-XLY3REL3.js";
51
52
  import {
52
53
  createSchema
53
- } from "./chunk-KV4OC4H3.js";
54
+ } from "./chunk-WZZH3YXJ.js";
54
55
  import {
55
56
  loadConfig
56
- } from "./chunk-MHSCMET3.js";
57
- import "./chunk-D7TYRPRM.js";
58
- import "./chunk-E4VLWIJC.js";
59
- import {
60
- external_exports
61
- } from "./chunk-KH64DHOY.js";
57
+ } from "./chunk-MAZOVVDU.js";
62
58
  import {
63
59
  getDatabase,
64
60
  initDatabase,
@@ -69,15 +65,21 @@ import {
69
65
  MS_PER_SECOND,
70
66
  PHASE_SUMMARY_MAX_CHARS,
71
67
  SEARCH_SIMILARITY_THRESHOLD,
68
+ TEAM_SOURCE_PREFIX,
72
69
  epochSeconds
73
- } from "./chunk-5VZ52A4T.js";
74
- import "./chunk-WGTCA2NU.js";
70
+ } from "./chunk-76ZO5RGT.js";
71
+ import "./chunk-S6I62FAH.js";
75
72
  import {
76
73
  getPluginVersion
77
- } from "./chunk-PB6TOLRQ.js";
74
+ } from "./chunk-JYXMRW3T.js";
78
75
  import {
79
76
  findPackageRoot
80
77
  } from "./chunk-LPUQPDC2.js";
78
+ import "./chunk-D7TYRPRM.js";
79
+ import "./chunk-E4VLWIJC.js";
80
+ import {
81
+ external_exports
82
+ } from "./chunk-KH64DHOY.js";
81
83
  import "./chunk-PZUWP5VK.js";
82
84
 
83
85
  // src/agent/executor.ts
@@ -137,7 +139,7 @@ var DEFAULT_EDGES_LIMIT = 50;
137
139
  function textResult(data) {
138
140
  return { content: [{ type: "text", text: JSON.stringify(data) }] };
139
141
  }
140
- function createVaultTools(agentId, runId, turnOffset = 0, embeddingManager) {
142
+ function createVaultTools(agentId, runId, turnOffset = 0, embeddingManager, teamClient, machineId) {
141
143
  let turnCounter = turnOffset;
142
144
  function recordTurn(toolName, toolInput) {
143
145
  turnCounter++;
@@ -250,12 +252,23 @@ function createVaultTools(agentId, runId, turnOffset = 0, embeddingManager) {
250
252
  if (!queryVector) {
251
253
  return textResult({ results: [], message: "Embedding provider unavailable" });
252
254
  }
253
- const results = embeddingManager.searchVectors(queryVector, {
254
- namespace: args.namespace,
255
- limit: args.limit ?? DEFAULT_SEARCH_LIMIT,
256
- threshold: SEARCH_SIMILARITY_THRESHOLD
257
- });
258
- return textResult({ results });
255
+ const searchLimit = args.limit ?? DEFAULT_SEARCH_LIMIT;
256
+ const [localResults, teamResults] = await Promise.all([
257
+ Promise.resolve(
258
+ embeddingManager.searchVectors(queryVector, {
259
+ namespace: args.namespace,
260
+ limit: searchLimit,
261
+ threshold: SEARCH_SIMILARITY_THRESHOLD
262
+ }).map((r) => ({ ...r, source: "local" }))
263
+ ),
264
+ teamClient ? teamClient.search(args.query, { limit: searchLimit }).then((res) => res.results.map((r) => ({ ...r, source: `${TEAM_SOURCE_PREFIX}${r.machine_id}` }))).catch(() => []) : Promise.resolve([])
265
+ ]);
266
+ const dedupedTeam = machineId ? teamResults.filter((r) => r.machine_id !== machineId) : teamResults;
267
+ const merged = [
268
+ ...localResults.map((r) => ({ ...r, score: r.similarity })),
269
+ ...dedupedTeam
270
+ ].sort((a, b) => (b.score ?? 0) - (a.score ?? 0)).slice(0, searchLimit);
271
+ return textResult({ results: merged });
259
272
  } catch {
260
273
  return textResult({ results: [], message: "Semantic search unavailable" });
261
274
  }
@@ -1438,4 +1451,4 @@ export {
1438
1451
  computeWaves,
1439
1452
  runAgent
1440
1453
  };
1441
- //# sourceMappingURL=executor-ONSDHPGX.js.map
1454
+ //# sourceMappingURL=executor-SWXSN7ZC.js.map