@goondocks/myco 0.16.2 → 0.17.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 (166) hide show
  1. package/CONTRIBUTING.md +3 -3
  2. package/README.md +4 -3
  3. package/dist/{agent-run-MNU2QWHR.js → agent-run-ZDHXORE2.js} +7 -7
  4. package/dist/{agent-tasks-NCRKUU6E.js → agent-tasks-IPUWMMDZ.js} +7 -7
  5. package/dist/{chunk-P6C6ADBU.js → chunk-2IJ6C63F.js} +2 -2
  6. package/dist/{chunk-V2ZBYKDU.js → chunk-2WRXLYG6.js} +3 -3
  7. package/dist/{chunk-TIAYBVSI.js → chunk-4JPUC6RL.js} +170 -56
  8. package/dist/chunk-4JPUC6RL.js.map +1 -0
  9. package/dist/{chunk-34NHDRWI.js → chunk-6SDC6V3N.js} +2 -2
  10. package/dist/{chunk-34NHDRWI.js.map → chunk-6SDC6V3N.js.map} +1 -1
  11. package/dist/{chunk-6JZEAOLG.js → chunk-CPL76CYD.js} +3 -3
  12. package/dist/{chunk-VWXDSDJU.js → chunk-DKSQMH5X.js} +2 -2
  13. package/dist/{chunk-GSKXOCFG.js → chunk-EBIYONNZ.js} +21 -1
  14. package/dist/chunk-EBIYONNZ.js.map +1 -0
  15. package/dist/{chunk-XAXQ72L3.js → chunk-FEX6ALLH.js} +2 -2
  16. package/dist/{chunk-UILSK6DK.js → chunk-GBYLHPML.js} +2 -2
  17. package/dist/{chunk-DZWSHCAC.js → chunk-KGL5QSDN.js} +2 -2
  18. package/dist/{chunk-4JVHWBZF.js → chunk-KKEMVH6D.js} +2 -2
  19. package/dist/{chunk-BNAYBGPH.js → chunk-MSM775XQ.js} +6 -5
  20. package/dist/{chunk-BNAYBGPH.js.map → chunk-MSM775XQ.js.map} +1 -1
  21. package/dist/{chunk-CJ2KTRWI.js → chunk-OGNEW5CN.js} +2 -2
  22. package/dist/{chunk-2E7YGLLN.js → chunk-PFF4KB4O.js} +2 -2
  23. package/dist/{chunk-4U6X35TH.js → chunk-QBB6LX57.js} +3 -3
  24. package/dist/{chunk-C3GNF7RJ.js → chunk-QQ7CXA7Q.js} +5 -5
  25. package/dist/{chunk-I3S6L7QC.js → chunk-U3SSOSIR.js} +2 -2
  26. package/dist/{chunk-RJRRHTAA.js → chunk-U63GDHYJ.js} +3 -3
  27. package/dist/{chunk-IRSNOBGD.js → chunk-UDBCAFXS.js} +2 -2
  28. package/dist/{chunk-SGYYOTNM.js → chunk-VGVRBSLC.js} +2 -2
  29. package/dist/{chunk-W7ZOOZMK.js → chunk-VQQ57UPG.js} +3 -3
  30. package/dist/{chunk-ZMODJWI5.js → chunk-XVWJ273L.js} +4 -4
  31. package/dist/{chunk-RPILIIYT.js → chunk-Y7QCKCEJ.js} +2 -2
  32. package/dist/{chunk-D63XTGBV.js → chunk-YTOD6L6N.js} +6 -6
  33. package/dist/{chunk-D2NTFSVO.js → chunk-ZUSTCXHT.js} +3 -3
  34. package/dist/{cli-RYYABF2X.js → cli-BRDOPJW3.js} +40 -40
  35. package/dist/{client-5VXKGNN2.js → client-AQZMD3LB.js} +4 -4
  36. package/dist/{config-VHHCGE4F.js → config-K3CJEFFO.js} +3 -3
  37. package/dist/{detect-6FNYONJF.js → detect-NJ2OREDP.js} +2 -2
  38. package/dist/{detect-providers-R7QOB3H6.js → detect-providers-OE6HWW3M.js} +4 -4
  39. package/dist/{doctor-M4Q7VCDO.js → doctor-YOUCIJJY.js} +14 -13
  40. package/dist/doctor-YOUCIJJY.js.map +1 -0
  41. package/dist/{executor-ULRFWJCH.js → executor-UYNV4EOQ.js} +17 -17
  42. package/dist/{init-AEHAQFPK.js → init-MTMEFG4E.js} +17 -17
  43. package/dist/{init-wizard-SVKDS3LR.js → init-wizard-ZS3CV6CM.js} +7 -7
  44. package/dist/{installer-AARSFXI6.js → installer-CTWQB4RS.js} +2 -2
  45. package/dist/{llm-LS7U7BHC.js → llm-PGETQHZ2.js} +7 -7
  46. package/dist/{loader-QDWQTBX4.js → loader-AVWL7PNO.js} +3 -3
  47. package/dist/{loader-YQDG5GI5.js → loader-J56KP27U.js} +3 -3
  48. package/dist/{main-GAGOE6XB.js → main-ZIMYW2AB.js} +105 -60
  49. package/dist/main-ZIMYW2AB.js.map +1 -0
  50. package/dist/{open-4QMAL32X.js → open-77QXL7VY.js} +7 -7
  51. package/dist/{openai-embeddings-FUW6CSN2.js → openai-embeddings-LZKY6RV5.js} +4 -4
  52. package/dist/{openrouter-YSIUSUQL.js → openrouter-UTOZG6Z5.js} +4 -4
  53. package/dist/{post-compact-OAWEBEDK.js → post-compact-CA7O7QPL.js} +7 -7
  54. package/dist/{post-tool-use-B3KOEOIM.js → post-tool-use-JNXJIGNK.js} +6 -6
  55. package/dist/{post-tool-use-failure-2I5ELTTN.js → post-tool-use-failure-V52CZWVZ.js} +7 -7
  56. package/dist/{pre-compact-NOXNJ5EV.js → pre-compact-J2GSDQCJ.js} +7 -7
  57. package/dist/{provider-check-VEYONGNU.js → provider-check-CESRPIY5.js} +4 -4
  58. package/dist/{registry-5R3DLJQH.js → registry-SPKP2WLI.js} +4 -4
  59. package/dist/{remove-LX4G6KP7.js → remove-ODPLWK7O.js} +9 -9
  60. package/dist/{resolution-events-CHOKR35X.js → resolution-events-CLDXZF67.js} +4 -4
  61. package/dist/{restart-WSNBSALP.js → restart-6KKZODOI.js} +8 -8
  62. package/dist/{search-Q6N3SHKP.js → search-U6N2DSOI.js} +8 -8
  63. package/dist/{server-OFRKA6N7.js → server-SP4G7MY7.js} +5 -5
  64. package/dist/{server-OFRKA6N7.js.map → server-SP4G7MY7.js.map} +1 -1
  65. package/dist/{session-SKXJLJYH.js → session-6R3RNVKD.js} +9 -9
  66. package/dist/{session-end-5EIVRCPS.js → session-end-TCFCYDBL.js} +6 -6
  67. package/dist/{session-start-OL2ICLED.js → session-start-XXN2TVNI.js} +11 -11
  68. package/dist/{setup-llm-BRNQW7K2.js → setup-llm-GISFI73Z.js} +8 -8
  69. package/dist/src/cli.js +1 -1
  70. package/dist/src/daemon/main.js +1 -1
  71. package/dist/src/hooks/post-tool-use.js +1 -1
  72. package/dist/src/hooks/session-end.js +1 -1
  73. package/dist/src/hooks/session-start.js +1 -1
  74. package/dist/src/hooks/stop.js +1 -1
  75. package/dist/src/hooks/user-prompt-submit.js +1 -1
  76. package/dist/src/mcp/server.js +1 -1
  77. package/dist/src/symbionts/manifests/claude-code.yaml +4 -0
  78. package/dist/src/symbionts/manifests/opencode.yaml +26 -0
  79. package/dist/src/symbionts/templates/opencode/mcp.json +6 -0
  80. package/dist/src/symbionts/templates/opencode/package.json +5 -0
  81. package/dist/src/symbionts/templates/opencode/plugin.ts +690 -0
  82. package/dist/src/symbionts/templates/opencode/settings.json +8 -0
  83. package/dist/{stats-U5FHDIR7.js → stats-MYQD4OVD.js} +9 -9
  84. package/dist/{stop-YUZNQBRQ.js → stop-K6TDJORY.js} +6 -6
  85. package/dist/{stop-failure-6WFAKH2U.js → stop-failure-U635O5A3.js} +7 -7
  86. package/dist/{subagent-start-GWJXAAH3.js → subagent-start-LLGQBC5Q.js} +7 -7
  87. package/dist/{subagent-stop-B44SMV2R.js → subagent-stop-BO3GZWXD.js} +7 -7
  88. package/dist/{task-completed-GIUFSRTP.js → task-completed-3ZJHSI2E.js} +7 -7
  89. package/dist/{team-3YI3UWB3.js → team-OJLQCVE3.js} +5 -5
  90. package/dist/ui/assets/{index-RYHXSJv1.js → index-2UyTdjlV.js} +12 -12
  91. package/dist/ui/assets/index-Cts1wLEW.css +1 -0
  92. package/dist/ui/index.html +2 -2
  93. package/dist/{update-QPRTLGYU.js → update-HR7WMESA.js} +9 -9
  94. package/dist/{user-prompt-submit-FSYEPW7W.js → user-prompt-submit-NM73R4I3.js} +6 -6
  95. package/dist/{verify-ITBMLK67.js → verify-PSERIZPF.js} +8 -8
  96. package/dist/{version-VS2EDHBG.js → version-YCODQZSX.js} +2 -2
  97. package/package.json +1 -1
  98. package/skills/rules/SKILL.md +1 -1
  99. package/dist/chunk-GSKXOCFG.js.map +0 -1
  100. package/dist/chunk-TIAYBVSI.js.map +0 -1
  101. package/dist/doctor-M4Q7VCDO.js.map +0 -1
  102. package/dist/main-GAGOE6XB.js.map +0 -1
  103. package/dist/ui/assets/index-Bjv_ck3c.css +0 -1
  104. /package/dist/{agent-run-MNU2QWHR.js.map → agent-run-ZDHXORE2.js.map} +0 -0
  105. /package/dist/{agent-tasks-NCRKUU6E.js.map → agent-tasks-IPUWMMDZ.js.map} +0 -0
  106. /package/dist/{chunk-P6C6ADBU.js.map → chunk-2IJ6C63F.js.map} +0 -0
  107. /package/dist/{chunk-V2ZBYKDU.js.map → chunk-2WRXLYG6.js.map} +0 -0
  108. /package/dist/{chunk-6JZEAOLG.js.map → chunk-CPL76CYD.js.map} +0 -0
  109. /package/dist/{chunk-VWXDSDJU.js.map → chunk-DKSQMH5X.js.map} +0 -0
  110. /package/dist/{chunk-XAXQ72L3.js.map → chunk-FEX6ALLH.js.map} +0 -0
  111. /package/dist/{chunk-UILSK6DK.js.map → chunk-GBYLHPML.js.map} +0 -0
  112. /package/dist/{chunk-DZWSHCAC.js.map → chunk-KGL5QSDN.js.map} +0 -0
  113. /package/dist/{chunk-4JVHWBZF.js.map → chunk-KKEMVH6D.js.map} +0 -0
  114. /package/dist/{chunk-CJ2KTRWI.js.map → chunk-OGNEW5CN.js.map} +0 -0
  115. /package/dist/{chunk-2E7YGLLN.js.map → chunk-PFF4KB4O.js.map} +0 -0
  116. /package/dist/{chunk-4U6X35TH.js.map → chunk-QBB6LX57.js.map} +0 -0
  117. /package/dist/{chunk-C3GNF7RJ.js.map → chunk-QQ7CXA7Q.js.map} +0 -0
  118. /package/dist/{chunk-I3S6L7QC.js.map → chunk-U3SSOSIR.js.map} +0 -0
  119. /package/dist/{chunk-RJRRHTAA.js.map → chunk-U63GDHYJ.js.map} +0 -0
  120. /package/dist/{chunk-IRSNOBGD.js.map → chunk-UDBCAFXS.js.map} +0 -0
  121. /package/dist/{chunk-SGYYOTNM.js.map → chunk-VGVRBSLC.js.map} +0 -0
  122. /package/dist/{chunk-W7ZOOZMK.js.map → chunk-VQQ57UPG.js.map} +0 -0
  123. /package/dist/{chunk-ZMODJWI5.js.map → chunk-XVWJ273L.js.map} +0 -0
  124. /package/dist/{chunk-RPILIIYT.js.map → chunk-Y7QCKCEJ.js.map} +0 -0
  125. /package/dist/{chunk-D63XTGBV.js.map → chunk-YTOD6L6N.js.map} +0 -0
  126. /package/dist/{chunk-D2NTFSVO.js.map → chunk-ZUSTCXHT.js.map} +0 -0
  127. /package/dist/{cli-RYYABF2X.js.map → cli-BRDOPJW3.js.map} +0 -0
  128. /package/dist/{client-5VXKGNN2.js.map → client-AQZMD3LB.js.map} +0 -0
  129. /package/dist/{config-VHHCGE4F.js.map → config-K3CJEFFO.js.map} +0 -0
  130. /package/dist/{detect-6FNYONJF.js.map → detect-NJ2OREDP.js.map} +0 -0
  131. /package/dist/{detect-providers-R7QOB3H6.js.map → detect-providers-OE6HWW3M.js.map} +0 -0
  132. /package/dist/{executor-ULRFWJCH.js.map → executor-UYNV4EOQ.js.map} +0 -0
  133. /package/dist/{init-AEHAQFPK.js.map → init-MTMEFG4E.js.map} +0 -0
  134. /package/dist/{init-wizard-SVKDS3LR.js.map → init-wizard-ZS3CV6CM.js.map} +0 -0
  135. /package/dist/{installer-AARSFXI6.js.map → installer-CTWQB4RS.js.map} +0 -0
  136. /package/dist/{llm-LS7U7BHC.js.map → llm-PGETQHZ2.js.map} +0 -0
  137. /package/dist/{loader-QDWQTBX4.js.map → loader-AVWL7PNO.js.map} +0 -0
  138. /package/dist/{loader-YQDG5GI5.js.map → loader-J56KP27U.js.map} +0 -0
  139. /package/dist/{open-4QMAL32X.js.map → open-77QXL7VY.js.map} +0 -0
  140. /package/dist/{openai-embeddings-FUW6CSN2.js.map → openai-embeddings-LZKY6RV5.js.map} +0 -0
  141. /package/dist/{openrouter-YSIUSUQL.js.map → openrouter-UTOZG6Z5.js.map} +0 -0
  142. /package/dist/{post-compact-OAWEBEDK.js.map → post-compact-CA7O7QPL.js.map} +0 -0
  143. /package/dist/{post-tool-use-B3KOEOIM.js.map → post-tool-use-JNXJIGNK.js.map} +0 -0
  144. /package/dist/{post-tool-use-failure-2I5ELTTN.js.map → post-tool-use-failure-V52CZWVZ.js.map} +0 -0
  145. /package/dist/{pre-compact-NOXNJ5EV.js.map → pre-compact-J2GSDQCJ.js.map} +0 -0
  146. /package/dist/{provider-check-VEYONGNU.js.map → provider-check-CESRPIY5.js.map} +0 -0
  147. /package/dist/{registry-5R3DLJQH.js.map → registry-SPKP2WLI.js.map} +0 -0
  148. /package/dist/{remove-LX4G6KP7.js.map → remove-ODPLWK7O.js.map} +0 -0
  149. /package/dist/{resolution-events-CHOKR35X.js.map → resolution-events-CLDXZF67.js.map} +0 -0
  150. /package/dist/{restart-WSNBSALP.js.map → restart-6KKZODOI.js.map} +0 -0
  151. /package/dist/{search-Q6N3SHKP.js.map → search-U6N2DSOI.js.map} +0 -0
  152. /package/dist/{session-SKXJLJYH.js.map → session-6R3RNVKD.js.map} +0 -0
  153. /package/dist/{session-end-5EIVRCPS.js.map → session-end-TCFCYDBL.js.map} +0 -0
  154. /package/dist/{session-start-OL2ICLED.js.map → session-start-XXN2TVNI.js.map} +0 -0
  155. /package/dist/{setup-llm-BRNQW7K2.js.map → setup-llm-GISFI73Z.js.map} +0 -0
  156. /package/dist/{stats-U5FHDIR7.js.map → stats-MYQD4OVD.js.map} +0 -0
  157. /package/dist/{stop-YUZNQBRQ.js.map → stop-K6TDJORY.js.map} +0 -0
  158. /package/dist/{stop-failure-6WFAKH2U.js.map → stop-failure-U635O5A3.js.map} +0 -0
  159. /package/dist/{subagent-start-GWJXAAH3.js.map → subagent-start-LLGQBC5Q.js.map} +0 -0
  160. /package/dist/{subagent-stop-B44SMV2R.js.map → subagent-stop-BO3GZWXD.js.map} +0 -0
  161. /package/dist/{task-completed-GIUFSRTP.js.map → task-completed-3ZJHSI2E.js.map} +0 -0
  162. /package/dist/{team-3YI3UWB3.js.map → team-OJLQCVE3.js.map} +0 -0
  163. /package/dist/{update-QPRTLGYU.js.map → update-HR7WMESA.js.map} +0 -0
  164. /package/dist/{user-prompt-submit-FSYEPW7W.js.map → user-prompt-submit-NM73R4I3.js.map} +0 -0
  165. /package/dist/{verify-ITBMLK67.js.map → verify-PSERIZPF.js.map} +0 -0
  166. /package/dist/{version-VS2EDHBG.js.map → version-YCODQZSX.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  CloudEmbeddingBase
4
- } from "./chunk-DZWSHCAC.js";
4
+ } from "./chunk-KGL5QSDN.js";
5
5
 
6
6
  // src/cli/providers/openrouter.ts
7
7
  var OPENROUTER_API_KEY_ENV = "MYCO_OPENROUTER_API_KEY";
@@ -23,4 +23,4 @@ export {
23
23
  OPENROUTER_API_KEY_ENV,
24
24
  OpenRouterEmbeddingProvider
25
25
  };
26
- //# sourceMappingURL=chunk-I3S6L7QC.js.map
26
+ //# sourceMappingURL=chunk-U3SSOSIR.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  getPluginVersion
4
- } from "./chunk-2E7YGLLN.js";
4
+ } from "./chunk-PFF4KB4O.js";
5
5
  import {
6
6
  DAEMON_CLIENT_TIMEOUT_MS,
7
7
  DAEMON_HEALTH_CHECK_TIMEOUT_MS,
8
8
  DAEMON_HEALTH_RETRY_DELAYS,
9
9
  DAEMON_STALE_GRACE_PERIOD_MS
10
- } from "./chunk-34NHDRWI.js";
10
+ } from "./chunk-6SDC6V3N.js";
11
11
 
12
12
  // src/hooks/client.ts
13
13
  import fs from "fs";
@@ -185,4 +185,4 @@ export {
185
185
  resolveCliEntryPath,
186
186
  DaemonClient
187
187
  };
188
- //# sourceMappingURL=chunk-RJRRHTAA.js.map
188
+ //# sourceMappingURL=chunk-U63GDHYJ.js.map
@@ -2,7 +2,7 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  getTeamMachineId,
4
4
  syncRow
5
- } from "./chunk-4JVHWBZF.js";
5
+ } from "./chunk-KKEMVH6D.js";
6
6
  import {
7
7
  getDatabase
8
8
  } from "./chunk-MYX5NCRH.js";
@@ -183,4 +183,4 @@ export {
183
183
  listSporeIdsSince,
184
184
  updateSporeStatus
185
185
  };
186
- //# sourceMappingURL=chunk-IRSNOBGD.js.map
186
+ //# sourceMappingURL=chunk-UDBCAFXS.js.map
@@ -2,7 +2,7 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  getTeamMachineId,
4
4
  syncRow
5
- } from "./chunk-4JVHWBZF.js";
5
+ } from "./chunk-KKEMVH6D.js";
6
6
  import {
7
7
  getDatabase
8
8
  } from "./chunk-MYX5NCRH.js";
@@ -302,4 +302,4 @@ export {
302
302
  getSessionImpact,
303
303
  deleteSessionCascade
304
304
  };
305
- //# sourceMappingURL=chunk-SGYYOTNM.js.map
305
+ //# sourceMappingURL=chunk-VGVRBSLC.js.map
@@ -11,7 +11,7 @@ import {
11
11
  SCHEDULABLE_POWER_STATES,
12
12
  USER_TASK_SOURCE,
13
13
  epochSeconds
14
- } from "./chunk-34NHDRWI.js";
14
+ } from "./chunk-6SDC6V3N.js";
15
15
  import {
16
16
  require_dist
17
17
  } from "./chunk-D7TYRPRM.js";
@@ -464,7 +464,7 @@ async function registerBuiltInAgentsAndTasks(definitionsDir, vaultDir) {
464
464
  ).run(BUILT_IN_SOURCE, definition.name, ...validTaskIds);
465
465
  }
466
466
  if (vaultDir) {
467
- const { loadAllTasks } = await import("./registry-5R3DLJQH.js");
467
+ const { loadAllTasks } = await import("./registry-SPKP2WLI.js");
468
468
  const allTasks = loadAllTasks(definitionsDir, vaultDir);
469
469
  for (const [name, task] of allTasks) {
470
470
  if (task.source === USER_TASK_SOURCE) {
@@ -505,4 +505,4 @@ export {
505
505
  resolveEffectiveConfig,
506
506
  registerBuiltInAgentsAndTasks
507
507
  };
508
- //# sourceMappingURL=chunk-W7ZOOZMK.js.map
508
+ //# sourceMappingURL=chunk-VQQ57UPG.js.map
@@ -1,16 +1,16 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-BNAYBGPH.js";
4
+ } from "./chunk-MSM775XQ.js";
5
5
  import {
6
6
  loadConfig
7
- } from "./chunk-XAXQ72L3.js";
7
+ } from "./chunk-FEX6ALLH.js";
8
8
  import {
9
9
  getDatabase
10
10
  } from "./chunk-MYX5NCRH.js";
11
11
  import {
12
12
  DIGEST_TIERS
13
- } from "./chunk-34NHDRWI.js";
13
+ } from "./chunk-6SDC6V3N.js";
14
14
 
15
15
  // src/db/queries/embeddings.ts
16
16
  var EMBEDDABLE_TABLES = ["sessions", "spores", "plans", "artifacts"];
@@ -184,4 +184,4 @@ export {
184
184
  getEmbeddingQueueDepth,
185
185
  gatherStats
186
186
  };
187
- //# sourceMappingURL=chunk-ZMODJWI5.js.map
187
+ //# sourceMappingURL=chunk-XVWJ273L.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  CloudEmbeddingBase
4
- } from "./chunk-DZWSHCAC.js";
4
+ } from "./chunk-KGL5QSDN.js";
5
5
 
6
6
  // src/cli/providers/openai-embeddings.ts
7
7
  var OPENAI_API_KEY_ENV = "MYCO_OPENAI_API_KEY";
@@ -23,4 +23,4 @@ export {
23
23
  OPENAI_API_KEY_ENV,
24
24
  OpenAIEmbeddingProvider
25
25
  };
26
- //# sourceMappingURL=chunk-RPILIIYT.js.map
26
+ //# sourceMappingURL=chunk-Y7QCKCEJ.js.map
@@ -2,17 +2,17 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  getSpore,
4
4
  listSporeIdsSince
5
- } from "./chunk-IRSNOBGD.js";
5
+ } from "./chunk-UDBCAFXS.js";
6
6
  import {
7
7
  getSession
8
- } from "./chunk-SGYYOTNM.js";
8
+ } from "./chunk-VGVRBSLC.js";
9
9
  import {
10
10
  getTeamMachineId,
11
11
  syncRow
12
- } from "./chunk-4JVHWBZF.js";
12
+ } from "./chunk-KKEMVH6D.js";
13
13
  import {
14
14
  loadConfig
15
- } from "./chunk-XAXQ72L3.js";
15
+ } from "./chunk-FEX6ALLH.js";
16
16
  import {
17
17
  getDatabase
18
18
  } from "./chunk-MYX5NCRH.js";
@@ -26,7 +26,7 @@ import {
26
26
  GRAPH_EDGE_DEFAULT_CONFIDENCE,
27
27
  QUERY_DEFAULT_LIST_LIMIT,
28
28
  epochSeconds
29
- } from "./chunk-34NHDRWI.js";
29
+ } from "./chunk-6SDC6V3N.js";
30
30
 
31
31
  // src/utils/error-message.ts
32
32
  function errorMessage(err) {
@@ -1579,4 +1579,4 @@ export {
1579
1579
  insertReport,
1580
1580
  listReports
1581
1581
  };
1582
- //# sourceMappingURL=chunk-D63XTGBV.js.map
1582
+ //# sourceMappingURL=chunk-YTOD6L6N.js.map
@@ -3,14 +3,14 @@ import {
3
3
  AgentTaskSchema,
4
4
  loadAgentTasks,
5
5
  taskFromParsed
6
- } from "./chunk-W7ZOOZMK.js";
6
+ } from "./chunk-VQQ57UPG.js";
7
7
  import {
8
8
  BUILT_IN_SOURCE,
9
9
  MAX_TASK_NAME_LENGTH,
10
10
  TASK_NAME_PATTERN,
11
11
  USER_TASKS_DIR,
12
12
  USER_TASK_SOURCE
13
- } from "./chunk-34NHDRWI.js";
13
+ } from "./chunk-6SDC6V3N.js";
14
14
  import {
15
15
  require_dist
16
16
  } from "./chunk-D7TYRPRM.js";
@@ -100,4 +100,4 @@ export {
100
100
  deleteUserTask,
101
101
  copyTaskToUser
102
102
  };
103
- //# sourceMappingURL=chunk-D2NTFSVO.js.map
103
+ //# sourceMappingURL=chunk-ZUSTCXHT.js.map
@@ -2,18 +2,18 @@
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
3
  import {
4
4
  loadEnv
5
- } from "./chunk-BNAYBGPH.js";
5
+ } from "./chunk-MSM775XQ.js";
6
6
  import "./chunk-SAKJMNSR.js";
7
- import "./chunk-TIAYBVSI.js";
8
- import "./chunk-VWXDSDJU.js";
7
+ import "./chunk-4JPUC6RL.js";
8
+ import "./chunk-DKSQMH5X.js";
9
9
  import "./chunk-MYX5NCRH.js";
10
10
  import {
11
11
  resolveVaultDir
12
12
  } from "./chunk-5ZT2Q6P5.js";
13
- import "./chunk-RJRRHTAA.js";
14
- import "./chunk-2E7YGLLN.js";
13
+ import "./chunk-U63GDHYJ.js";
14
+ import "./chunk-PFF4KB4O.js";
15
15
  import "./chunk-LPUQPDC2.js";
16
- import "./chunk-34NHDRWI.js";
16
+ import "./chunk-6SDC6V3N.js";
17
17
  import "./chunk-E7NUADTQ.js";
18
18
  import "./chunk-PZUWP5VK.js";
19
19
 
@@ -55,29 +55,29 @@ async function main() {
55
55
  process.stdout.write(USAGE);
56
56
  return;
57
57
  }
58
- if (cmd === "init") return (await import("./init-AEHAQFPK.js")).run(args);
59
- if (cmd === "detect-providers") return (await import("./detect-providers-R7QOB3H6.js")).run(args);
58
+ if (cmd === "init") return (await import("./init-MTMEFG4E.js")).run(args);
59
+ if (cmd === "detect-providers") return (await import("./detect-providers-OE6HWW3M.js")).run(args);
60
60
  if (cmd === "version" || cmd === "--version" || cmd === "-v") {
61
- const { getPluginVersion } = await import("./version-VS2EDHBG.js");
61
+ const { getPluginVersion } = await import("./version-YCODQZSX.js");
62
62
  console.log(getPluginVersion());
63
63
  return;
64
64
  }
65
- if (cmd === "mcp") return (await import("./server-OFRKA6N7.js")).main();
65
+ if (cmd === "mcp") return (await import("./server-SP4G7MY7.js")).main();
66
66
  if (cmd === "hook") {
67
67
  const hookName = args[0];
68
68
  const HOOK_DISPATCH = {
69
- "session-start": () => import("./session-start-OL2ICLED.js"),
70
- "session-end": () => import("./session-end-5EIVRCPS.js"),
71
- "stop": () => import("./stop-YUZNQBRQ.js"),
72
- "user-prompt-submit": () => import("./user-prompt-submit-FSYEPW7W.js"),
73
- "post-tool-use": () => import("./post-tool-use-B3KOEOIM.js"),
74
- "post-tool-use-failure": () => import("./post-tool-use-failure-2I5ELTTN.js"),
75
- "subagent-start": () => import("./subagent-start-GWJXAAH3.js"),
76
- "subagent-stop": () => import("./subagent-stop-B44SMV2R.js"),
77
- "stop-failure": () => import("./stop-failure-6WFAKH2U.js"),
78
- "task-completed": () => import("./task-completed-GIUFSRTP.js"),
79
- "pre-compact": () => import("./pre-compact-NOXNJ5EV.js"),
80
- "post-compact": () => import("./post-compact-OAWEBEDK.js")
69
+ "session-start": () => import("./session-start-XXN2TVNI.js"),
70
+ "session-end": () => import("./session-end-TCFCYDBL.js"),
71
+ "stop": () => import("./stop-K6TDJORY.js"),
72
+ "user-prompt-submit": () => import("./user-prompt-submit-NM73R4I3.js"),
73
+ "post-tool-use": () => import("./post-tool-use-JNXJIGNK.js"),
74
+ "post-tool-use-failure": () => import("./post-tool-use-failure-V52CZWVZ.js"),
75
+ "subagent-start": () => import("./subagent-start-LLGQBC5Q.js"),
76
+ "subagent-stop": () => import("./subagent-stop-BO3GZWXD.js"),
77
+ "stop-failure": () => import("./stop-failure-U635O5A3.js"),
78
+ "task-completed": () => import("./task-completed-3ZJHSI2E.js"),
79
+ "pre-compact": () => import("./pre-compact-J2GSDQCJ.js"),
80
+ "post-compact": () => import("./post-compact-CA7O7QPL.js")
81
81
  };
82
82
  const loader = HOOK_DISPATCH[hookName];
83
83
  if (!loader) {
@@ -86,13 +86,13 @@ async function main() {
86
86
  }
87
87
  return (await loader()).main();
88
88
  }
89
- if (cmd === "daemon") return (await import("./main-GAGOE6XB.js")).main();
89
+ if (cmd === "daemon") return (await import("./main-ZIMYW2AB.js")).main();
90
90
  if (cmd === "doctor") {
91
91
  const vaultDir2 = resolveVaultDir();
92
- return (await import("./doctor-M4Q7VCDO.js")).run(args, vaultDir2);
92
+ return (await import("./doctor-YOUCIJJY.js")).run(args, vaultDir2);
93
93
  }
94
- if (cmd === "update") return (await import("./update-QPRTLGYU.js")).run(args);
95
- if (cmd === "remove") return (await import("./remove-LX4G6KP7.js")).run(args);
94
+ if (cmd === "update") return (await import("./update-HR7WMESA.js")).run(args);
95
+ if (cmd === "remove") return (await import("./remove-ODPLWK7O.js")).run(args);
96
96
  const vaultDir = resolveVaultDir();
97
97
  if (!fs.existsSync(path.join(vaultDir, "myco.yaml"))) {
98
98
  console.error(`No myco.yaml found in ${vaultDir}. Run 'myco init' first.`);
@@ -100,37 +100,37 @@ async function main() {
100
100
  }
101
101
  switch (cmd) {
102
102
  case "config":
103
- return (await import("./config-VHHCGE4F.js")).run(args, vaultDir);
103
+ return (await import("./config-K3CJEFFO.js")).run(args, vaultDir);
104
104
  case "verify":
105
- return (await import("./verify-ITBMLK67.js")).run(args, vaultDir);
105
+ return (await import("./verify-PSERIZPF.js")).run(args, vaultDir);
106
106
  case "stats":
107
- return (await import("./stats-U5FHDIR7.js")).run(args, vaultDir);
107
+ return (await import("./stats-MYQD4OVD.js")).run(args, vaultDir);
108
108
  case "search":
109
- return (await import("./search-Q6N3SHKP.js")).run(args, vaultDir);
109
+ return (await import("./search-U6N2DSOI.js")).run(args, vaultDir);
110
110
  case "vectors":
111
- return (await import("./search-Q6N3SHKP.js")).runVectors(args, vaultDir);
111
+ return (await import("./search-U6N2DSOI.js")).runVectors(args, vaultDir);
112
112
  case "session":
113
- return (await import("./session-SKXJLJYH.js")).run(args, vaultDir);
113
+ return (await import("./session-6R3RNVKD.js")).run(args, vaultDir);
114
114
  case "setup-llm":
115
- return (await import("./setup-llm-BRNQW7K2.js")).run(args, vaultDir);
115
+ return (await import("./setup-llm-GISFI73Z.js")).run(args, vaultDir);
116
116
  case "setup-digest":
117
117
  return (await import("./setup-digest-4KDSXAIV.js")).run(args, vaultDir);
118
118
  case "agent":
119
- return (await import("./agent-run-MNU2QWHR.js")).run(args, vaultDir);
119
+ return (await import("./agent-run-ZDHXORE2.js")).run(args, vaultDir);
120
120
  case "task":
121
- return (await import("./agent-tasks-NCRKUU6E.js")).run(args, vaultDir);
121
+ return (await import("./agent-tasks-IPUWMMDZ.js")).run(args, vaultDir);
122
122
  case "team": {
123
123
  const sub = args[0];
124
- if (sub === "init") return (await import("./team-3YI3UWB3.js")).teamInit(vaultDir);
125
- if (sub === "upgrade") return (await import("./team-3YI3UWB3.js")).teamUpgrade(vaultDir);
124
+ if (sub === "init") return (await import("./team-OJLQCVE3.js")).teamInit(vaultDir);
125
+ if (sub === "upgrade") return (await import("./team-OJLQCVE3.js")).teamUpgrade(vaultDir);
126
126
  console.error("Usage: myco team <init|upgrade>");
127
127
  process.exit(1);
128
128
  break;
129
129
  }
130
130
  case "open":
131
- return (await import("./open-4QMAL32X.js")).run(args, vaultDir);
131
+ return (await import("./open-77QXL7VY.js")).run(args, vaultDir);
132
132
  case "restart":
133
- return (await import("./restart-WSNBSALP.js")).run(args, vaultDir);
133
+ return (await import("./restart-6KKZODOI.js")).run(args, vaultDir);
134
134
  case "logs":
135
135
  return (await import("./logs-TMKNLSJY.js")).run(args, vaultDir);
136
136
  default:
@@ -143,4 +143,4 @@ main().catch((err) => {
143
143
  console.error(`myco: ${err.message}`);
144
144
  process.exit(1);
145
145
  });
146
- //# sourceMappingURL=cli-RYYABF2X.js.map
146
+ //# sourceMappingURL=cli-BRDOPJW3.js.map
@@ -2,14 +2,14 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  DaemonClient,
4
4
  resolveCliEntryPath
5
- } from "./chunk-RJRRHTAA.js";
6
- import "./chunk-2E7YGLLN.js";
5
+ } from "./chunk-U63GDHYJ.js";
6
+ import "./chunk-PFF4KB4O.js";
7
7
  import "./chunk-LPUQPDC2.js";
8
- import "./chunk-34NHDRWI.js";
8
+ import "./chunk-6SDC6V3N.js";
9
9
  import "./chunk-E7NUADTQ.js";
10
10
  import "./chunk-PZUWP5VK.js";
11
11
  export {
12
12
  DaemonClient,
13
13
  resolveCliEntryPath
14
14
  };
15
- //# sourceMappingURL=client-5VXKGNN2.js.map
15
+ //# sourceMappingURL=client-AQZMD3LB.js.map
@@ -5,8 +5,8 @@ import {
5
5
  import {
6
6
  loadConfig,
7
7
  updateConfig
8
- } from "./chunk-XAXQ72L3.js";
9
- import "./chunk-34NHDRWI.js";
8
+ } from "./chunk-FEX6ALLH.js";
9
+ import "./chunk-6SDC6V3N.js";
10
10
  import "./chunk-E7NUADTQ.js";
11
11
  import "./chunk-D7TYRPRM.js";
12
12
  import "./chunk-E4VLWIJC.js";
@@ -87,4 +87,4 @@ function parseValue(raw) {
87
87
  export {
88
88
  run
89
89
  };
90
- //# sourceMappingURL=config-VHHCGE4F.js.map
90
+ //# sourceMappingURL=config-K3CJEFFO.js.map
@@ -3,7 +3,7 @@ import {
3
3
  detectSymbionts,
4
4
  loadManifests,
5
5
  resolvePackageRoot
6
- } from "./chunk-GSKXOCFG.js";
6
+ } from "./chunk-EBIYONNZ.js";
7
7
  import "./chunk-LPUQPDC2.js";
8
8
  import "./chunk-D7TYRPRM.js";
9
9
  import "./chunk-E4VLWIJC.js";
@@ -14,4 +14,4 @@ export {
14
14
  loadManifests,
15
15
  resolvePackageRoot
16
16
  };
17
- //# sourceMappingURL=detect-6FNYONJF.js.map
17
+ //# sourceMappingURL=detect-NJ2OREDP.js.map
@@ -1,9 +1,9 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  checkLocalProvider
4
- } from "./chunk-6JZEAOLG.js";
5
- import "./chunk-VWXDSDJU.js";
6
- import "./chunk-34NHDRWI.js";
4
+ } from "./chunk-CPL76CYD.js";
5
+ import "./chunk-DKSQMH5X.js";
6
+ import "./chunk-6SDC6V3N.js";
7
7
  import "./chunk-E7NUADTQ.js";
8
8
  import "./chunk-PZUWP5VK.js";
9
9
 
@@ -23,4 +23,4 @@ async function run(_args) {
23
23
  export {
24
24
  run
25
25
  };
26
- //# sourceMappingURL=detect-providers-R7QOB3H6.js.map
26
+ //# sourceMappingURL=detect-providers-OE6HWW3M.js.map
@@ -1,17 +1,17 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-BNAYBGPH.js";
4
+ } from "./chunk-MSM775XQ.js";
5
5
  import "./chunk-SAKJMNSR.js";
6
6
  import {
7
7
  MYCO_MCP_SERVER_NAME
8
- } from "./chunk-TIAYBVSI.js";
9
- import "./chunk-VWXDSDJU.js";
8
+ } from "./chunk-4JPUC6RL.js";
9
+ import "./chunk-DKSQMH5X.js";
10
10
  import "./chunk-MYX5NCRH.js";
11
- import "./chunk-RJRRHTAA.js";
12
- import "./chunk-2E7YGLLN.js";
11
+ import "./chunk-U63GDHYJ.js";
12
+ import "./chunk-PFF4KB4O.js";
13
13
  import "./chunk-LPUQPDC2.js";
14
- import "./chunk-34NHDRWI.js";
14
+ import "./chunk-6SDC6V3N.js";
15
15
  import "./chunk-E7NUADTQ.js";
16
16
  import "./chunk-PZUWP5VK.js";
17
17
 
@@ -29,7 +29,7 @@ async function checkVault(vaultDir) {
29
29
  return { check: { name: "Vault", status: "fail", detail: `${CONFIG_FILENAME} not found in ${vaultDir}`, fixable: false }, config: null };
30
30
  }
31
31
  try {
32
- const { loadConfig } = await import("./loader-QDWQTBX4.js");
32
+ const { loadConfig } = await import("./loader-AVWL7PNO.js");
33
33
  const config = loadConfig(vaultDir);
34
34
  return { check: { name: "Vault", status: "ok", detail: `.myco/ (v${config.version})`, fixable: false }, config };
35
35
  } catch (err) {
@@ -68,7 +68,7 @@ async function checkIntelligence(config) {
68
68
  return { name: "Intelligence", status: "ok", detail: `${label} (SDK handles auth)`, fixable: false };
69
69
  }
70
70
  if (provider.type === "ollama" || provider.type === "lmstudio") {
71
- const { checkLocalProvider } = await import("./provider-check-VEYONGNU.js");
71
+ const { checkLocalProvider } = await import("./provider-check-CESRPIY5.js");
72
72
  const status = await checkLocalProvider(provider.type, provider.base_url);
73
73
  if (!status.available) {
74
74
  return { name: "Intelligence", status: "warn", detail: `${label} (not reachable)`, fixable: false };
@@ -82,7 +82,7 @@ async function checkIntelligence(config) {
82
82
  }
83
83
  async function checkEmbeddings(config) {
84
84
  try {
85
- const { createEmbeddingProvider } = await import("./llm-LS7U7BHC.js");
85
+ const { createEmbeddingProvider } = await import("./llm-PGETQHZ2.js");
86
86
  const provider = createEmbeddingProvider(config.embedding);
87
87
  const available = await provider.isAvailable();
88
88
  const label = `${config.embedding.provider} / ${config.embedding.model}`;
@@ -96,8 +96,8 @@ async function checkEmbeddings(config) {
96
96
  }
97
97
  async function checkAgents(vaultDir, config) {
98
98
  try {
99
- const { detectSymbionts } = await import("./detect-6FNYONJF.js");
100
- const { getEnabledSymbiontNames } = await import("./loader-QDWQTBX4.js");
99
+ const { detectSymbionts } = await import("./detect-NJ2OREDP.js");
100
+ const { getEnabledSymbiontNames } = await import("./loader-AVWL7PNO.js");
101
101
  const projectRoot = path.dirname(vaultDir);
102
102
  const detected = detectSymbionts(projectRoot);
103
103
  const enabledNames = config ? getEnabledSymbiontNames(config) : null;
@@ -156,7 +156,8 @@ function isSymbiontRegistered(d, projectRoot) {
156
156
  return raw.includes(`[mcp_servers.${MYCO_MCP_SERVER_NAME}]`);
157
157
  }
158
158
  const config = JSON.parse(raw);
159
- const servers = config.mcpServers;
159
+ const serversKey = d.manifest.registration?.mcpServersKey ?? "mcpServers";
160
+ const servers = config[serversKey];
160
161
  return !!servers?.[MYCO_MCP_SERVER_NAME];
161
162
  } catch {
162
163
  }
@@ -270,4 +271,4 @@ export {
270
271
  run,
271
272
  runChecks
272
273
  };
273
- //# sourceMappingURL=doctor-M4Q7VCDO.js.map
274
+ //# sourceMappingURL=doctor-YOUCIJJY.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, config: import('../config/schema.js').MycoConfig | null): Promise<DoctorCheck[]> {\n try {\n const { detectSymbionts } = await import('../symbionts/detect.js');\n const { getEnabledSymbiontNames } = await import('../config/loader.js');\n const projectRoot = path.dirname(vaultDir);\n const detected = detectSymbionts(projectRoot);\n\n const enabledNames = config ? getEnabledSymbiontNames(config) : null;\n\n if (detected.length === 0 && !enabledNames) {\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 const enabled = enabledNames ? enabledNames.has(d.manifest.name) : registered;\n\n if (enabled && registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'ok',\n detail: `${d.manifest.displayName} (enabled, registered)`,\n fixable: false,\n });\n } else if (enabled && !registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'warn',\n detail: `${d.manifest.displayName} (enabled but not registered — run \\`myco update\\`)`,\n fixable: false,\n });\n } else if (!enabled && registered) {\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'warn',\n detail: `${d.manifest.displayName} (registered but not enabled — run \\`myco remove --symbiont ${d.manifest.name}\\`)`,\n fixable: false,\n });\n } else {\n // Detected but neither enabled nor registered\n checks.push({\n name: checks.length === 0 ? 'Agents' : '',\n status: 'ok',\n detail: `${d.manifest.displayName} (detected, not enabled)`,\n fixable: false,\n });\n }\n }\n\n if (checks.length === 0) {\n return [{ name: 'Agents', status: 'warn', detail: 'No symbionts detected or enabled', fixable: false }];\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 under the configured key (defaults to 'mcpServers').\n // opencode uses 'mcp' — without the manifest lookup, doctor reports opencode as\n // unregistered even after a successful install.\n const config = JSON.parse(raw) as Record<string, unknown>;\n const serversKey = d.manifest.registration?.mcpServersKey ?? 'mcpServers';\n const servers = config[serversKey] 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, config));\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":[]}