@goondocks/myco 0.20.2 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/bin/myco-run +68 -7
  2. package/dist/agent-eval-YK2VP2S4.js +356 -0
  3. package/dist/agent-eval-YK2VP2S4.js.map +1 -0
  4. package/dist/{agent-run-X25Q2A6T.js → agent-run-GEJBD2YD.js} +10 -8
  5. package/dist/{agent-run-X25Q2A6T.js.map → agent-run-GEJBD2YD.js.map} +1 -1
  6. package/dist/{agent-tasks-7B6OFERB.js → agent-tasks-5XSRGTRX.js} +10 -8
  7. package/dist/{agent-tasks-7B6OFERB.js.map → agent-tasks-5XSRGTRX.js.map} +1 -1
  8. package/dist/{chunk-OD4AA7PV.js → chunk-53RPGOEN.js} +56 -8
  9. package/dist/chunk-53RPGOEN.js.map +1 -0
  10. package/dist/chunk-54SXG5HF.js +26 -0
  11. package/dist/chunk-54SXG5HF.js.map +1 -0
  12. package/dist/{chunk-XATDZX7U.js → chunk-6ALVMIB4.js} +19 -5
  13. package/dist/{chunk-XATDZX7U.js.map → chunk-6ALVMIB4.js.map} +1 -1
  14. package/dist/{chunk-FLLBJLHM.js → chunk-6C6QZ4PM.js} +9 -5
  15. package/dist/chunk-6C6QZ4PM.js.map +1 -0
  16. package/dist/{chunk-CCRGY3QW.js → chunk-AUIXX33A.js} +24 -95
  17. package/dist/chunk-AUIXX33A.js.map +1 -0
  18. package/dist/chunk-CISWUP5W.js +101 -0
  19. package/dist/chunk-CISWUP5W.js.map +1 -0
  20. package/dist/{chunk-MYOZLMB2.js → chunk-DTWUHHFI.js} +576 -20
  21. package/dist/chunk-DTWUHHFI.js.map +1 -0
  22. package/dist/chunk-EEOJWLMP.js +582 -0
  23. package/dist/chunk-EEOJWLMP.js.map +1 -0
  24. package/dist/{chunk-XG5RRUYF.js → chunk-ENZR5NG7.js} +2 -2
  25. package/dist/{chunk-6RFZWV4R.js → chunk-FCJ5JV54.js} +1 -1
  26. package/dist/{chunk-6RFZWV4R.js.map → chunk-FCJ5JV54.js.map} +1 -1
  27. package/dist/{chunk-US4LNCAT.js → chunk-IPPMYQ2Y.js} +5 -1
  28. package/dist/chunk-IPPMYQ2Y.js.map +1 -0
  29. package/dist/{chunk-VVNL26WX.js → chunk-KTTSXYEK.js} +22 -10
  30. package/dist/chunk-KTTSXYEK.js.map +1 -0
  31. package/dist/chunk-LQIPXVDH.js +17 -0
  32. package/dist/chunk-LQIPXVDH.js.map +1 -0
  33. package/dist/{chunk-DCSGJ7W4.js → chunk-N2DGFACQ.js} +3 -3
  34. package/dist/chunk-N7Z3LUEZ.js +858 -0
  35. package/dist/chunk-N7Z3LUEZ.js.map +1 -0
  36. package/dist/{chunk-2PDWCDKY.js → chunk-NFO7BRCO.js} +10 -7
  37. package/dist/{chunk-2PDWCDKY.js.map → chunk-NFO7BRCO.js.map} +1 -1
  38. package/dist/{chunk-Q36VMZST.js → chunk-OTQH5KZW.js} +89 -38
  39. package/dist/chunk-OTQH5KZW.js.map +1 -0
  40. package/dist/chunk-OUJSQSKE.js +113 -0
  41. package/dist/chunk-OUJSQSKE.js.map +1 -0
  42. package/dist/chunk-OZ3FBAK5.js +50 -0
  43. package/dist/chunk-OZ3FBAK5.js.map +1 -0
  44. package/dist/chunk-QATYARI5.js +408 -0
  45. package/dist/chunk-QATYARI5.js.map +1 -0
  46. package/dist/{chunk-KESLPBKV.js → chunk-QDLVIW2O.js} +4 -4
  47. package/dist/{chunk-5XIVBO25.js → chunk-QLLBJEM7.js} +6 -2
  48. package/dist/chunk-QLLBJEM7.js.map +1 -0
  49. package/dist/{chunk-EVDQKYCG.js → chunk-RQSJLWP4.js} +13 -2
  50. package/dist/chunk-RQSJLWP4.js.map +1 -0
  51. package/dist/{chunk-BPRIYNLE.js → chunk-TKAJ3JVF.js} +3 -3
  52. package/dist/chunk-TSM6VESW.js +25 -0
  53. package/dist/chunk-TSM6VESW.js.map +1 -0
  54. package/dist/{chunk-6X2ERTQV.js → chunk-USVFEWYL.js} +6 -4
  55. package/dist/{chunk-6X2ERTQV.js.map → chunk-USVFEWYL.js.map} +1 -1
  56. package/dist/{chunk-JZGN33AY.js → chunk-VRI56337.js} +4 -4
  57. package/dist/chunk-X2IRGXGF.js +14103 -0
  58. package/dist/chunk-X2IRGXGF.js.map +1 -0
  59. package/dist/{chunk-FMRZ26U5.js → chunk-X3IGT5RV.js} +5 -2
  60. package/dist/{chunk-FMRZ26U5.js.map → chunk-X3IGT5RV.js.map} +1 -1
  61. package/dist/{chunk-KHT24OWC.js → chunk-YDUOSRGD.js} +8 -94
  62. package/dist/{chunk-KHT24OWC.js.map → chunk-YDUOSRGD.js.map} +1 -1
  63. package/dist/{chunk-NGROSFOH.js → chunk-Z66IT5KL.js} +14 -9
  64. package/dist/chunk-Z66IT5KL.js.map +1 -0
  65. package/dist/{cli-GGPWH4UO.js → cli-HSLIG7EX.js} +50 -43
  66. package/dist/cli-HSLIG7EX.js.map +1 -0
  67. package/dist/{client-YXQUTXVZ.js → client-Z43DNLJH.js} +4 -4
  68. package/dist/{config-OMCYHG2S.js → config-VC4ACP42.js} +6 -4
  69. package/dist/{config-OMCYHG2S.js.map → config-VC4ACP42.js.map} +1 -1
  70. package/dist/{detect-PXNM6TA7.js → detect-7NUD5B5R.js} +2 -2
  71. package/dist/{detect-providers-5KOPZ7J2.js → detect-providers-ILLQZROY.js} +4 -4
  72. package/dist/{doctor-5JXJ36KA.js → doctor-HJCWHAU4.js} +49 -16
  73. package/dist/doctor-HJCWHAU4.js.map +1 -0
  74. package/dist/executor-DO6QFC6G.js +45 -0
  75. package/dist/{init-LMYOVZAV.js → init-4KVK7W2E.js} +16 -14
  76. package/dist/{init-LMYOVZAV.js.map → init-4KVK7W2E.js.map} +1 -1
  77. package/dist/{installer-FS257JRZ.js → installer-N4UTEACX.js} +6 -4
  78. package/dist/{llm-TH4NLIRM.js → llm-AGVEF5XD.js} +5 -4
  79. package/dist/{loader-CQYTFHEW.js → loader-LX7TFRM6.js} +5 -3
  80. package/dist/{loader-NOMBJUPW.js → loader-UDNUMEDA.js} +5 -3
  81. package/dist/{main-YTBVRTBI.js → main-4J4QZZTZ.js} +2518 -656
  82. package/dist/main-4J4QZZTZ.js.map +1 -0
  83. package/dist/{open-HG2DX6RN.js → open-7TXJQM3H.js} +10 -8
  84. package/dist/{open-HG2DX6RN.js.map → open-7TXJQM3H.js.map} +1 -1
  85. package/dist/{post-compact-JSECI44W.js → post-compact-7AEFVCZS.js} +8 -8
  86. package/dist/{post-tool-use-POGPTJBA.js → post-tool-use-TZINWWDH.js} +11 -9
  87. package/dist/post-tool-use-TZINWWDH.js.map +1 -0
  88. package/dist/{post-tool-use-failure-OT7BFWQW.js → post-tool-use-failure-TCFEU2GI.js} +8 -8
  89. package/dist/{pre-compact-OXVODKH4.js → pre-compact-LO2VZCGR.js} +8 -8
  90. package/dist/{provider-check-43LAMSMH.js → provider-check-ZEV5P4KM.js} +4 -4
  91. package/dist/{registry-U4CHXK6R.js → registry-F3THYC5M.js} +6 -4
  92. package/dist/{remove-N7ZPELFU.js → remove-F77AAALE.js} +12 -10
  93. package/dist/{remove-N7ZPELFU.js.map → remove-F77AAALE.js.map} +1 -1
  94. package/dist/{restart-ADG5GBTB.js → restart-UEFDPMLT.js} +11 -9
  95. package/dist/{restart-ADG5GBTB.js.map → restart-UEFDPMLT.js.map} +1 -1
  96. package/dist/{search-AHZEUNRR.js → search-NHNVUAQQ.js} +11 -9
  97. package/dist/{search-AHZEUNRR.js.map → search-NHNVUAQQ.js.map} +1 -1
  98. package/dist/{server-AGVYZVP5.js → server-AZJSTQEK.js} +369 -270
  99. package/dist/server-AZJSTQEK.js.map +1 -0
  100. package/dist/{session-6IU4AXYP.js → session-3HLC5KOD.js} +11 -9
  101. package/dist/{session-6IU4AXYP.js.map → session-3HLC5KOD.js.map} +1 -1
  102. package/dist/{session-end-FT27DWYZ.js → session-end-FS46UARX.js} +7 -7
  103. package/dist/session-start-46KPFV2H.js +134 -0
  104. package/dist/session-start-46KPFV2H.js.map +1 -0
  105. package/dist/{setup-llm-77MP4I2G.js → setup-llm-JMWSNQ2C.js} +11 -9
  106. package/dist/{setup-llm-77MP4I2G.js.map → setup-llm-JMWSNQ2C.js.map} +1 -1
  107. package/dist/src/agent/definitions/agent.yaml +9 -5
  108. package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +115 -0
  109. package/dist/src/agent/definitions/tasks/cortex-prompt-builder.yaml +67 -0
  110. package/dist/src/agent/definitions/tasks/digest-only.yaml +1 -1
  111. package/dist/src/agent/definitions/tasks/extract-only.yaml +1 -1
  112. package/dist/src/agent/definitions/tasks/review-session.yaml +10 -39
  113. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +181 -25
  114. package/dist/src/agent/definitions/tasks/skill-generate.yaml +21 -7
  115. package/dist/src/agent/definitions/tasks/skill-survey.yaml +2 -6
  116. package/dist/src/agent/definitions/tasks/supersession-sweep.yaml +1 -1
  117. package/dist/src/agent/definitions/tasks/title-summary.yaml +12 -19
  118. package/dist/src/agent/definitions/tasks/{full-intelligence.yaml → vault-evolve.yaml} +74 -129
  119. package/dist/src/agent/definitions/tasks/vault-seed.yaml +370 -0
  120. package/dist/src/agent/prompts/agent.md +12 -38
  121. package/dist/src/cli.js +1 -1
  122. package/dist/src/daemon/main.js +1 -1
  123. package/dist/src/hooks/post-tool-use.js +1 -1
  124. package/dist/src/hooks/session-end.js +1 -1
  125. package/dist/src/hooks/session-start.js +1 -1
  126. package/dist/src/hooks/stop.js +1 -1
  127. package/dist/src/hooks/user-prompt-submit.js +1 -1
  128. package/dist/src/mcp/server.js +1 -1
  129. package/dist/src/symbionts/manifests/claude-code.yaml +4 -0
  130. package/dist/src/symbionts/manifests/opencode.yaml +7 -0
  131. package/dist/src/symbionts/manifests/pi.yaml +22 -0
  132. package/dist/src/symbionts/templates/agents-starter.md +1 -1
  133. package/dist/src/symbionts/templates/pi/package.json +6 -0
  134. package/dist/src/symbionts/templates/pi/plugin.ts +559 -0
  135. package/dist/{stats-NVPWOYTE.js → stats-MKMETHMA.js} +11 -9
  136. package/dist/{stats-NVPWOYTE.js.map → stats-MKMETHMA.js.map} +1 -1
  137. package/dist/{stop-ZPIKVLH4.js → stop-OUEX6KA4.js} +7 -7
  138. package/dist/{stop-failure-2PX67YJC.js → stop-failure-2BWVNZEG.js} +8 -8
  139. package/dist/{subagent-start-UUE6EHQD.js → subagent-start-J4VV6DEE.js} +8 -8
  140. package/dist/{subagent-stop-KQWWWPE6.js → subagent-stop-JMLVEPIA.js} +8 -8
  141. package/dist/{task-completed-WMHOFQ7B.js → task-completed-65CHMMKA.js} +8 -8
  142. package/dist/{team-LRZ6GTQK.js → team-U2LDKIS4.js} +7 -5
  143. package/dist/{turns-YFNI5CQC.js → turns-HU2CTZAP.js} +2 -2
  144. package/dist/ui/assets/index-BUGor9dk.js +842 -0
  145. package/dist/ui/assets/index-_OP4ifzH.css +1 -0
  146. package/dist/ui/index.html +2 -2
  147. package/dist/{update-O6V4RC4W.js → update-ZSHVXWSQ.js} +12 -10
  148. package/dist/{update-O6V4RC4W.js.map → update-ZSHVXWSQ.js.map} +1 -1
  149. package/dist/{user-prompt-submit-N36KUPHI.js → user-prompt-submit-APMO6FVU.js} +10 -9
  150. package/dist/{user-prompt-submit-N36KUPHI.js.map → user-prompt-submit-APMO6FVU.js.map} +1 -1
  151. package/dist/{verify-LXPV7NYG.js → verify-R76ZFJSZ.js} +8 -5
  152. package/dist/{verify-LXPV7NYG.js.map → verify-R76ZFJSZ.js.map} +1 -1
  153. package/dist/{version-XMPPJQHR.js → version-TXPPS3L5.js} +2 -2
  154. package/dist/version-TXPPS3L5.js.map +1 -0
  155. package/package.json +3 -1
  156. package/skills/myco/SKILL.md +16 -1
  157. package/skills/myco/references/cli-usage.md +1 -1
  158. package/skills/myco-rules/SKILL.md +94 -0
  159. package/skills/{rules → myco-rules}/references/rules-bad-example.md +1 -1
  160. package/skills/{rules → myco-rules}/references/rules-good-example.md +1 -1
  161. package/dist/chunk-4YFKBL3F.js +0 -195
  162. package/dist/chunk-4YFKBL3F.js.map +0 -1
  163. package/dist/chunk-5XIVBO25.js.map +0 -1
  164. package/dist/chunk-CCRGY3QW.js.map +0 -1
  165. package/dist/chunk-CUDIZJY7.js +0 -36
  166. package/dist/chunk-CUDIZJY7.js.map +0 -1
  167. package/dist/chunk-EVDQKYCG.js.map +0 -1
  168. package/dist/chunk-FLLBJLHM.js.map +0 -1
  169. package/dist/chunk-MYOZLMB2.js.map +0 -1
  170. package/dist/chunk-NGROSFOH.js.map +0 -1
  171. package/dist/chunk-OD4AA7PV.js.map +0 -1
  172. package/dist/chunk-Q36VMZST.js.map +0 -1
  173. package/dist/chunk-US4LNCAT.js.map +0 -1
  174. package/dist/chunk-UYMFCYBF.js +0 -2326
  175. package/dist/chunk-UYMFCYBF.js.map +0 -1
  176. package/dist/chunk-VVNL26WX.js.map +0 -1
  177. package/dist/cli-GGPWH4UO.js.map +0 -1
  178. package/dist/doctor-5JXJ36KA.js.map +0 -1
  179. package/dist/executor-HWW2QNZQ.js +0 -2472
  180. package/dist/executor-HWW2QNZQ.js.map +0 -1
  181. package/dist/main-YTBVRTBI.js.map +0 -1
  182. package/dist/post-tool-use-POGPTJBA.js.map +0 -1
  183. package/dist/server-AGVYZVP5.js.map +0 -1
  184. package/dist/session-start-LAFICHII.js +0 -189
  185. package/dist/session-start-LAFICHII.js.map +0 -1
  186. package/dist/src/agent/definitions/tasks/graph-maintenance.yaml +0 -93
  187. package/dist/ui/assets/index-C2JuNtRB.css +0 -1
  188. package/dist/ui/assets/index-JLVaQKV2.js +0 -832
  189. package/skills/myco-curate/SKILL.md +0 -86
  190. package/skills/rules/SKILL.md +0 -214
  191. /package/dist/{chunk-XG5RRUYF.js.map → chunk-ENZR5NG7.js.map} +0 -0
  192. /package/dist/{chunk-DCSGJ7W4.js.map → chunk-N2DGFACQ.js.map} +0 -0
  193. /package/dist/{chunk-KESLPBKV.js.map → chunk-QDLVIW2O.js.map} +0 -0
  194. /package/dist/{chunk-BPRIYNLE.js.map → chunk-TKAJ3JVF.js.map} +0 -0
  195. /package/dist/{chunk-JZGN33AY.js.map → chunk-VRI56337.js.map} +0 -0
  196. /package/dist/{client-YXQUTXVZ.js.map → client-Z43DNLJH.js.map} +0 -0
  197. /package/dist/{detect-PXNM6TA7.js.map → detect-7NUD5B5R.js.map} +0 -0
  198. /package/dist/{detect-providers-5KOPZ7J2.js.map → detect-providers-ILLQZROY.js.map} +0 -0
  199. /package/dist/{installer-FS257JRZ.js.map → executor-DO6QFC6G.js.map} +0 -0
  200. /package/dist/{llm-TH4NLIRM.js.map → installer-N4UTEACX.js.map} +0 -0
  201. /package/dist/{loader-CQYTFHEW.js.map → llm-AGVEF5XD.js.map} +0 -0
  202. /package/dist/{loader-NOMBJUPW.js.map → loader-LX7TFRM6.js.map} +0 -0
  203. /package/dist/{provider-check-43LAMSMH.js.map → loader-UDNUMEDA.js.map} +0 -0
  204. /package/dist/{post-compact-JSECI44W.js.map → post-compact-7AEFVCZS.js.map} +0 -0
  205. /package/dist/{post-tool-use-failure-OT7BFWQW.js.map → post-tool-use-failure-TCFEU2GI.js.map} +0 -0
  206. /package/dist/{pre-compact-OXVODKH4.js.map → pre-compact-LO2VZCGR.js.map} +0 -0
  207. /package/dist/{registry-U4CHXK6R.js.map → provider-check-ZEV5P4KM.js.map} +0 -0
  208. /package/dist/{team-LRZ6GTQK.js.map → registry-F3THYC5M.js.map} +0 -0
  209. /package/dist/{session-end-FT27DWYZ.js.map → session-end-FS46UARX.js.map} +0 -0
  210. /package/dist/{stop-ZPIKVLH4.js.map → stop-OUEX6KA4.js.map} +0 -0
  211. /package/dist/{stop-failure-2PX67YJC.js.map → stop-failure-2BWVNZEG.js.map} +0 -0
  212. /package/dist/{subagent-start-UUE6EHQD.js.map → subagent-start-J4VV6DEE.js.map} +0 -0
  213. /package/dist/{subagent-stop-KQWWWPE6.js.map → subagent-stop-JMLVEPIA.js.map} +0 -0
  214. /package/dist/{task-completed-WMHOFQ7B.js.map → task-completed-65CHMMKA.js.map} +0 -0
  215. /package/dist/{turns-YFNI5CQC.js.map → team-U2LDKIS4.js.map} +0 -0
  216. /package/dist/{version-XMPPJQHR.js.map → turns-HU2CTZAP.js.map} +0 -0
@@ -4,16 +4,18 @@ import {
4
4
  } from "./chunk-5NFJTZ64.js";
5
5
  import {
6
6
  connectToDaemon
7
- } from "./chunk-KESLPBKV.js";
7
+ } from "./chunk-QDLVIW2O.js";
8
8
  import "./chunk-SAKJMNSR.js";
9
- import "./chunk-Q36VMZST.js";
10
- import "./chunk-FMRZ26U5.js";
11
- import "./chunk-OD4AA7PV.js";
9
+ import "./chunk-OTQH5KZW.js";
10
+ import "./chunk-X3IGT5RV.js";
11
+ import "./chunk-53RPGOEN.js";
12
+ import "./chunk-OUJSQSKE.js";
13
+ import "./chunk-POEPHBQK.js";
12
14
  import "./chunk-MYX5NCRH.js";
13
- import "./chunk-VVNL26WX.js";
14
- import "./chunk-XG5RRUYF.js";
15
+ import "./chunk-KTTSXYEK.js";
16
+ import "./chunk-ENZR5NG7.js";
15
17
  import "./chunk-LPUQPDC2.js";
16
- import "./chunk-FLLBJLHM.js";
18
+ import "./chunk-6C6QZ4PM.js";
17
19
  import "./chunk-UUHLLQXO.js";
18
20
  import "./chunk-6LQIMRTC.js";
19
21
  import "./chunk-ODXLRR4U.js";
@@ -41,4 +43,4 @@ async function run(_args, vaultDir) {
41
43
  export {
42
44
  run
43
45
  };
44
- //# sourceMappingURL=open-HG2DX6RN.js.map
46
+ //# sourceMappingURL=open-7TXJQM3H.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/open.ts"],"sourcesContent":["import { connectToDaemon } from './shared.js';\nimport { openBrowser } from './open-browser.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function run(_args: string[], vaultDir: string): Promise<void> {\n await connectToDaemon(vaultDir);\n\n const daemonPath = path.join(vaultDir, 'daemon.json');\n let port: number;\n try {\n const info = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n port = info.port;\n } catch {\n console.error('Could not read daemon.json. Try: myco restart');\n process.exit(1);\n }\n\n const url = `http://localhost:${port}/`;\n\n openBrowser(url);\n console.log(`Opened ${url}`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,IAAI,OAAiB,UAAiC;AAC1E,QAAM,gBAAgB,QAAQ;AAE9B,QAAM,aAAa,KAAK,KAAK,UAAU,aAAa;AACpD,MAAI;AACJ,MAAI;AACF,UAAM,OAAO,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC5D,WAAO,KAAK;AAAA,EACd,QAAQ;AACN,YAAQ,MAAM,+CAA+C;AAC7D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,MAAM,oBAAoB,IAAI;AAEpC,cAAY,GAAG;AACf,UAAQ,IAAI,UAAU,GAAG,EAAE;AAC7B;","names":[]}
1
+ {"version":3,"sources":["../src/cli/open.ts"],"sourcesContent":["import { connectToDaemon } from './shared.js';\nimport { openBrowser } from './open-browser.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function run(_args: string[], vaultDir: string): Promise<void> {\n await connectToDaemon(vaultDir);\n\n const daemonPath = path.join(vaultDir, 'daemon.json');\n let port: number;\n try {\n const info = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n port = info.port;\n } catch {\n console.error('Could not read daemon.json. Try: myco restart');\n process.exit(1);\n }\n\n const url = `http://localhost:${port}/`;\n\n openBrowser(url);\n console.log(`Opened ${url}`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,IAAI,OAAiB,UAAiC;AAC1E,QAAM,gBAAgB,QAAQ;AAE9B,QAAM,aAAa,KAAK,KAAK,UAAU,aAAa;AACpD,MAAI;AACJ,MAAI;AACF,UAAM,OAAO,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC5D,WAAO,KAAK;AAAA,EACd,QAAQ;AACN,YAAQ,MAAM,+CAA+C;AAC7D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,MAAM,oBAAoB,IAAI;AAEpC,cAAY,GAAG;AACf,UAAQ,IAAI,UAAU,GAAG,EAAE;AAC7B;","names":[]}
@@ -1,16 +1,16 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-2PDWCDKY.js";
4
+ } from "./chunk-NFO7BRCO.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-DCSGJ7W4.js";
6
+ import "./chunk-N2DGFACQ.js";
7
7
  import "./chunk-ZXZPJJN3.js";
8
- import "./chunk-CUDIZJY7.js";
9
- import "./chunk-VVNL26WX.js";
10
- import "./chunk-XG5RRUYF.js";
11
- import "./chunk-NGROSFOH.js";
8
+ import "./chunk-TSM6VESW.js";
9
+ import "./chunk-KTTSXYEK.js";
10
+ import "./chunk-ENZR5NG7.js";
11
+ import "./chunk-Z66IT5KL.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
- import "./chunk-FLLBJLHM.js";
13
+ import "./chunk-6C6QZ4PM.js";
14
14
  import "./chunk-UUHLLQXO.js";
15
15
  import "./chunk-6LQIMRTC.js";
16
16
  import "./chunk-ODXLRR4U.js";
@@ -28,4 +28,4 @@ async function main() {
28
28
  export {
29
29
  main
30
30
  };
31
- //# sourceMappingURL=post-compact-JSECI44W.js.map
31
+ //# sourceMappingURL=post-compact-7AEFVCZS.js.map
@@ -5,20 +5,20 @@ import {
5
5
  import {
6
6
  normalizeHookInput,
7
7
  readStdin
8
- } from "./chunk-DCSGJ7W4.js";
8
+ } from "./chunk-N2DGFACQ.js";
9
9
  import "./chunk-ZXZPJJN3.js";
10
10
  import {
11
11
  resolveVaultDir
12
- } from "./chunk-CUDIZJY7.js";
12
+ } from "./chunk-TSM6VESW.js";
13
13
  import {
14
14
  DaemonClient
15
- } from "./chunk-VVNL26WX.js";
16
- import "./chunk-XG5RRUYF.js";
17
- import "./chunk-NGROSFOH.js";
15
+ } from "./chunk-KTTSXYEK.js";
16
+ import "./chunk-ENZR5NG7.js";
17
+ import "./chunk-Z66IT5KL.js";
18
18
  import "./chunk-LPUQPDC2.js";
19
19
  import {
20
20
  TOOL_OUTPUT_PREVIEW_CHARS
21
- } from "./chunk-FLLBJLHM.js";
21
+ } from "./chunk-6C6QZ4PM.js";
22
22
  import "./chunk-UUHLLQXO.js";
23
23
  import "./chunk-6LQIMRTC.js";
24
24
  import "./chunk-ODXLRR4U.js";
@@ -42,7 +42,8 @@ async function main() {
42
42
  tool_input: input.toolInput,
43
43
  output_preview: typeof input.toolOutput === "string" ? input.toolOutput.slice(0, TOOL_OUTPUT_PREVIEW_CHARS) : void 0,
44
44
  session_id: sessionId,
45
- agent: input.agent
45
+ agent: input.agent,
46
+ transcript_path: input.transcriptPath
46
47
  });
47
48
  if (!result.ok) {
48
49
  const buffer = new EventBuffer(path.join(VAULT_DIR, "buffer"), sessionId);
@@ -50,7 +51,8 @@ async function main() {
50
51
  type: "tool_use",
51
52
  tool: input.toolName,
52
53
  input: input.toolInput,
53
- output_preview: typeof input.toolOutput === "string" ? input.toolOutput.slice(0, TOOL_OUTPUT_PREVIEW_CHARS) : void 0
54
+ output_preview: typeof input.toolOutput === "string" ? input.toolOutput.slice(0, TOOL_OUTPUT_PREVIEW_CHARS) : void 0,
55
+ transcript_path: input.transcriptPath
54
56
  });
55
57
  }
56
58
  } catch (error) {
@@ -61,4 +63,4 @@ async function main() {
61
63
  export {
62
64
  main
63
65
  };
64
- //# sourceMappingURL=post-tool-use-POGPTJBA.js.map
66
+ //# sourceMappingURL=post-tool-use-TZINWWDH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/post-tool-use.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { EventBuffer } from '../capture/buffer.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport { TOOL_OUTPUT_PREVIEW_CHARS } from '../constants.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const input = normalizeHookInput(rawInput);\n const sessionId = input.sessionId;\n\n const client = new DaemonClient(VAULT_DIR);\n\n // PostToolUse fires frequently — don't spawn the daemon here.\n // If it's down, buffer to disk. The stop or prompt hook will respawn it.\n const result = await client.post('/events', {\n type: 'tool_use',\n tool_name: input.toolName,\n tool_input: input.toolInput,\n output_preview: typeof input.toolOutput === 'string' ? input.toolOutput.slice(0, TOOL_OUTPUT_PREVIEW_CHARS) : undefined,\n session_id: sessionId,\n agent: input.agent,\n transcript_path: input.transcriptPath,\n });\n\n if (!result.ok) {\n const buffer = new EventBuffer(path.join(VAULT_DIR, 'buffer'), sessionId);\n buffer.append({\n type: 'tool_use',\n tool: input.toolName,\n input: input.toolInput,\n output_preview: typeof input.toolOutput === 'string' ? input.toolOutput.slice(0, TOOL_OUTPUT_PREVIEW_CHARS) : undefined,\n transcript_path: input.transcriptPath,\n });\n }\n } catch (error) {\n process.stderr.write(`[myco] post-tool-use error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,OAAO;AAC3B,QAAM,YAAY,gBAAgB;AAClC,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,WAAW,WAAW,CAAC,EAAG;AAEvD,MAAI;AACF,UAAM,WAAW,KAAK,MAAM,MAAM,UAAU,CAAC;AAC7C,UAAM,QAAQ,mBAAmB,QAAQ;AACzC,UAAM,YAAY,MAAM;AAExB,UAAM,SAAS,IAAI,aAAa,SAAS;AAIzC,UAAM,SAAS,MAAM,OAAO,KAAK,WAAW;AAAA,MAC1C,MAAM;AAAA,MACN,WAAW,MAAM;AAAA,MACjB,YAAY,MAAM;AAAA,MAClB,gBAAgB,OAAO,MAAM,eAAe,WAAW,MAAM,WAAW,MAAM,GAAG,yBAAyB,IAAI;AAAA,MAC9G,YAAY;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,iBAAiB,MAAM;AAAA,IACzB,CAAC;AAED,QAAI,CAAC,OAAO,IAAI;AACd,YAAM,SAAS,IAAI,YAAY,KAAK,KAAK,WAAW,QAAQ,GAAG,SAAS;AACxE,aAAO,OAAO;AAAA,QACZ,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,gBAAgB,OAAO,MAAM,eAAe,WAAW,MAAM,WAAW,MAAM,GAAG,yBAAyB,IAAI;AAAA,QAC9G,iBAAiB,MAAM;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,+BAAgC,MAAgB,OAAO;AAAA,CAAI;AAAA,EAClF;AACF;","names":[]}
@@ -1,16 +1,16 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-2PDWCDKY.js";
4
+ } from "./chunk-NFO7BRCO.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-DCSGJ7W4.js";
6
+ import "./chunk-N2DGFACQ.js";
7
7
  import "./chunk-ZXZPJJN3.js";
8
- import "./chunk-CUDIZJY7.js";
9
- import "./chunk-VVNL26WX.js";
10
- import "./chunk-XG5RRUYF.js";
11
- import "./chunk-NGROSFOH.js";
8
+ import "./chunk-TSM6VESW.js";
9
+ import "./chunk-KTTSXYEK.js";
10
+ import "./chunk-ENZR5NG7.js";
11
+ import "./chunk-Z66IT5KL.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
- import "./chunk-FLLBJLHM.js";
13
+ import "./chunk-6C6QZ4PM.js";
14
14
  import "./chunk-UUHLLQXO.js";
15
15
  import "./chunk-6LQIMRTC.js";
16
16
  import "./chunk-ODXLRR4U.js";
@@ -30,4 +30,4 @@ async function main() {
30
30
  export {
31
31
  main
32
32
  };
33
- //# sourceMappingURL=post-tool-use-failure-OT7BFWQW.js.map
33
+ //# sourceMappingURL=post-tool-use-failure-TCFEU2GI.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
  sendEvent
4
- } from "./chunk-2PDWCDKY.js";
4
+ } from "./chunk-NFO7BRCO.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-DCSGJ7W4.js";
6
+ import "./chunk-N2DGFACQ.js";
7
7
  import "./chunk-ZXZPJJN3.js";
8
- import "./chunk-CUDIZJY7.js";
9
- import "./chunk-VVNL26WX.js";
10
- import "./chunk-XG5RRUYF.js";
11
- import "./chunk-NGROSFOH.js";
8
+ import "./chunk-TSM6VESW.js";
9
+ import "./chunk-KTTSXYEK.js";
10
+ import "./chunk-ENZR5NG7.js";
11
+ import "./chunk-Z66IT5KL.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
- import "./chunk-FLLBJLHM.js";
13
+ import "./chunk-6C6QZ4PM.js";
14
14
  import "./chunk-UUHLLQXO.js";
15
15
  import "./chunk-6LQIMRTC.js";
16
16
  import "./chunk-ODXLRR4U.js";
@@ -27,4 +27,4 @@ async function main() {
27
27
  export {
28
28
  main
29
29
  };
30
- //# sourceMappingURL=pre-compact-OXVODKH4.js.map
30
+ //# sourceMappingURL=pre-compact-LO2VZCGR.js.map
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  checkLocalProvider
4
- } from "./chunk-BPRIYNLE.js";
5
- import "./chunk-FMRZ26U5.js";
6
- import "./chunk-FLLBJLHM.js";
4
+ } from "./chunk-TKAJ3JVF.js";
5
+ import "./chunk-X3IGT5RV.js";
6
+ import "./chunk-6C6QZ4PM.js";
7
7
  import "./chunk-UUHLLQXO.js";
8
8
  import "./chunk-PZUWP5VK.js";
9
9
  export {
10
10
  checkLocalProvider
11
11
  };
12
- //# sourceMappingURL=provider-check-43LAMSMH.js.map
12
+ //# sourceMappingURL=provider-check-ZEV5P4KM.js.map
@@ -5,12 +5,14 @@ import {
5
5
  loadAllTasks,
6
6
  validateTaskName,
7
7
  writeUserTask
8
- } from "./chunk-6X2ERTQV.js";
9
- import "./chunk-CCRGY3QW.js";
8
+ } from "./chunk-USVFEWYL.js";
9
+ import "./chunk-AUIXX33A.js";
10
+ import "./chunk-LQIPXVDH.js";
11
+ import "./chunk-OUJSQSKE.js";
10
12
  import "./chunk-POEPHBQK.js";
11
13
  import "./chunk-MYX5NCRH.js";
12
14
  import "./chunk-LPUQPDC2.js";
13
- import "./chunk-FLLBJLHM.js";
15
+ import "./chunk-6C6QZ4PM.js";
14
16
  import "./chunk-UUHLLQXO.js";
15
17
  import "./chunk-6LQIMRTC.js";
16
18
  import "./chunk-U6PF3YII.js";
@@ -22,4 +24,4 @@ export {
22
24
  validateTaskName,
23
25
  writeUserTask
24
26
  };
25
- //# sourceMappingURL=registry-U4CHXK6R.js.map
27
+ //# sourceMappingURL=registry-F3THYC5M.js.map
@@ -1,29 +1,31 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-KESLPBKV.js";
4
+ } from "./chunk-QDLVIW2O.js";
5
5
  import {
6
6
  parseStringFlag
7
7
  } from "./chunk-SAKJMNSR.js";
8
8
  import {
9
9
  SymbiontInstaller
10
- } from "./chunk-Q36VMZST.js";
11
- import "./chunk-FMRZ26U5.js";
10
+ } from "./chunk-OTQH5KZW.js";
11
+ import "./chunk-X3IGT5RV.js";
12
12
  import {
13
13
  updateConfig
14
- } from "./chunk-OD4AA7PV.js";
14
+ } from "./chunk-53RPGOEN.js";
15
+ import "./chunk-OUJSQSKE.js";
16
+ import "./chunk-POEPHBQK.js";
15
17
  import "./chunk-MYX5NCRH.js";
16
18
  import {
17
19
  resolveVaultDir
18
- } from "./chunk-CUDIZJY7.js";
19
- import "./chunk-VVNL26WX.js";
20
- import "./chunk-XG5RRUYF.js";
20
+ } from "./chunk-TSM6VESW.js";
21
+ import "./chunk-KTTSXYEK.js";
22
+ import "./chunk-ENZR5NG7.js";
21
23
  import {
22
24
  loadManifests,
23
25
  resolvePackageRoot
24
- } from "./chunk-NGROSFOH.js";
26
+ } from "./chunk-Z66IT5KL.js";
25
27
  import "./chunk-LPUQPDC2.js";
26
- import "./chunk-FLLBJLHM.js";
28
+ import "./chunk-6C6QZ4PM.js";
27
29
  import "./chunk-UUHLLQXO.js";
28
30
  import "./chunk-6LQIMRTC.js";
29
31
  import "./chunk-ODXLRR4U.js";
@@ -123,4 +125,4 @@ async function run(args) {
123
125
  export {
124
126
  run
125
127
  };
126
- //# sourceMappingURL=remove-N7ZPELFU.js.map
128
+ //# sourceMappingURL=remove-F77AAALE.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/remove.ts"],"sourcesContent":["import { resolveVaultDir } from '../vault/resolve.js';\nimport { isProcessAlive, parseStringFlag } from './shared.js';\nimport { loadManifests, resolvePackageRoot } from '../symbionts/detect.js';\nimport { SymbiontInstaller } from '../symbionts/installer.js';\nimport { updateConfig } from '../config/loader.js';\nimport type { SymbiontManifest } from '../symbionts/manifest-schema.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\n/** Map uninstall result to human-readable component labels. */\nfunction uninstallLabels(result: ReturnType<SymbiontInstaller['uninstall']>): string[] {\n return [\n result.hooks && 'hooks',\n result.mcp && 'MCP server',\n result.skills && 'skills',\n result.settings && 'settings',\n result.instructions && 'instructions',\n ].filter(Boolean) as string[];\n}\n\nexport async function run(args: string[]): Promise<void> {\n const vaultDir = resolveVaultDir();\n if (!fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.error(`No myco.yaml found in ${vaultDir}. Nothing to remove.`);\n process.exit(1);\n }\n\n const symbiontName = parseStringFlag(args, '--symbiont');\n\n // --- Per-symbiont removal ---\n if (symbiontName) {\n const allManifests = loadManifests();\n const manifest = allManifests.find((m) => m.name === symbiontName);\n if (!manifest) {\n console.error(`Unknown symbiont: ${symbiontName}. Available: ${allManifests.map((m) => m.name).join(', ')}`);\n process.exit(1);\n }\n\n const projectRoot = path.dirname(vaultDir);\n const pkgRoot = resolvePackageRoot();\n const installer = new SymbiontInstaller(manifest, projectRoot, pkgRoot);\n const removed = uninstallLabels(installer.uninstall());\n\n if (removed.length > 0) {\n console.log(` \\u2713 Removed ${manifest.displayName}: ${removed.join(', ')}`);\n } else {\n console.log(` \\u2013 ${manifest.displayName}: nothing to remove`);\n }\n\n // Remove from config (updateConfig reads internally, no need for separate loadConfig)\n updateConfig(vaultDir, (c) => {\n if (!c.symbionts?.[symbiontName]) return c;\n const { [symbiontName]: _, ...rest } = c.symbionts;\n return { ...c, symbionts: Object.keys(rest).length > 0 ? rest : undefined };\n });\n console.log(` \\u2713 Removed ${symbiontName} from myco.yaml`);\n\n return;\n }\n\n // --- Full removal ---\n\n const projectRoot = path.dirname(vaultDir);\n const allManifests = loadManifests();\n const pkgRoot = resolvePackageRoot();\n const removeVault = args.includes('--remove-vault');\n\n console.log(`Removing Myco from ${projectRoot}\\n`);\n\n // --- Stop daemon ---\n\n const daemonPath = path.join(vaultDir, 'daemon.json');\n try {\n const daemon = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n if (isProcessAlive(daemon.pid)) {\n process.kill(daemon.pid, 'SIGTERM');\n console.log(` \\u2713 Stopped daemon (pid ${daemon.pid})`);\n }\n fs.unlinkSync(daemonPath);\n } catch { /* no daemon running */ }\n\n // --- Unregister from all configured agents ---\n\n const configured = allManifests.filter((m) =>\n fs.existsSync(path.join(projectRoot, m.configDir)),\n );\n\n for (const manifest of configured) {\n try {\n const installer = new SymbiontInstaller(manifest, projectRoot, pkgRoot);\n const removed = uninstallLabels(installer.uninstall());\n\n if (removed.length > 0) {\n console.log(` \\u2713 Removed from ${manifest.displayName}: ${removed.join(', ')}`);\n }\n } catch (err) {\n console.error(` \\u2717 Failed to clean ${manifest.displayName}: ${(err as Error).message}`);\n }\n }\n\n // --- Remove .mcp.json if it's now empty ---\n\n const mcpJsonPath = path.join(projectRoot, '.mcp.json');\n try {\n const config = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\n if (!config.mcpServers || Object.keys(config.mcpServers).length === 0) {\n fs.unlinkSync(mcpJsonPath);\n console.log(' \\u2713 Removed empty .mcp.json');\n }\n } catch { /* doesn't exist or already clean */ }\n\n // --- Remove vault ---\n\n if (removeVault) {\n fs.rmSync(vaultDir, { recursive: true, force: true });\n console.log(` \\u2713 Removed vault at ${vaultDir}`);\n } else {\n console.log(` \\u2013 Vault preserved at ${vaultDir} (use --remove-vault to delete)`);\n }\n\n console.log('\\nMyco has been removed from this project.');\n}\n"],"mappings":"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","names":["allManifests","projectRoot","pkgRoot"]}
1
+ {"version":3,"sources":["../src/cli/remove.ts"],"sourcesContent":["import { resolveVaultDir } from '../vault/resolve.js';\nimport { isProcessAlive, parseStringFlag } from './shared.js';\nimport { loadManifests, resolvePackageRoot } from '../symbionts/detect.js';\nimport { SymbiontInstaller } from '../symbionts/installer.js';\nimport { updateConfig } from '../config/loader.js';\nimport type { SymbiontManifest } from '../symbionts/manifest-schema.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\n/** Map uninstall result to human-readable component labels. */\nfunction uninstallLabels(result: ReturnType<SymbiontInstaller['uninstall']>): string[] {\n return [\n result.hooks && 'hooks',\n result.mcp && 'MCP server',\n result.skills && 'skills',\n result.settings && 'settings',\n result.instructions && 'instructions',\n ].filter(Boolean) as string[];\n}\n\nexport async function run(args: string[]): Promise<void> {\n const vaultDir = resolveVaultDir();\n if (!fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.error(`No myco.yaml found in ${vaultDir}. Nothing to remove.`);\n process.exit(1);\n }\n\n const symbiontName = parseStringFlag(args, '--symbiont');\n\n // --- Per-symbiont removal ---\n if (symbiontName) {\n const allManifests = loadManifests();\n const manifest = allManifests.find((m) => m.name === symbiontName);\n if (!manifest) {\n console.error(`Unknown symbiont: ${symbiontName}. Available: ${allManifests.map((m) => m.name).join(', ')}`);\n process.exit(1);\n }\n\n const projectRoot = path.dirname(vaultDir);\n const pkgRoot = resolvePackageRoot();\n const installer = new SymbiontInstaller(manifest, projectRoot, pkgRoot);\n const removed = uninstallLabels(installer.uninstall());\n\n if (removed.length > 0) {\n console.log(` \\u2713 Removed ${manifest.displayName}: ${removed.join(', ')}`);\n } else {\n console.log(` \\u2013 ${manifest.displayName}: nothing to remove`);\n }\n\n // Remove from config (updateConfig reads internally, no need for separate loadConfig)\n updateConfig(vaultDir, (c) => {\n if (!c.symbionts?.[symbiontName]) return c;\n const { [symbiontName]: _, ...rest } = c.symbionts;\n return { ...c, symbionts: Object.keys(rest).length > 0 ? rest : undefined };\n });\n console.log(` \\u2713 Removed ${symbiontName} from myco.yaml`);\n\n return;\n }\n\n // --- Full removal ---\n\n const projectRoot = path.dirname(vaultDir);\n const allManifests = loadManifests();\n const pkgRoot = resolvePackageRoot();\n const removeVault = args.includes('--remove-vault');\n\n console.log(`Removing Myco from ${projectRoot}\\n`);\n\n // --- Stop daemon ---\n\n const daemonPath = path.join(vaultDir, 'daemon.json');\n try {\n const daemon = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n if (isProcessAlive(daemon.pid)) {\n process.kill(daemon.pid, 'SIGTERM');\n console.log(` \\u2713 Stopped daemon (pid ${daemon.pid})`);\n }\n fs.unlinkSync(daemonPath);\n } catch { /* no daemon running */ }\n\n // --- Unregister from all configured agents ---\n\n const configured = allManifests.filter((m) =>\n fs.existsSync(path.join(projectRoot, m.configDir)),\n );\n\n for (const manifest of configured) {\n try {\n const installer = new SymbiontInstaller(manifest, projectRoot, pkgRoot);\n const removed = uninstallLabels(installer.uninstall());\n\n if (removed.length > 0) {\n console.log(` \\u2713 Removed from ${manifest.displayName}: ${removed.join(', ')}`);\n }\n } catch (err) {\n console.error(` \\u2717 Failed to clean ${manifest.displayName}: ${(err as Error).message}`);\n }\n }\n\n // --- Remove .mcp.json if it's now empty ---\n\n const mcpJsonPath = path.join(projectRoot, '.mcp.json');\n try {\n const config = JSON.parse(fs.readFileSync(mcpJsonPath, 'utf-8'));\n if (!config.mcpServers || Object.keys(config.mcpServers).length === 0) {\n fs.unlinkSync(mcpJsonPath);\n console.log(' \\u2713 Removed empty .mcp.json');\n }\n } catch { /* doesn't exist or already clean */ }\n\n // --- Remove vault ---\n\n if (removeVault) {\n fs.rmSync(vaultDir, { recursive: true, force: true });\n console.log(` \\u2713 Removed vault at ${vaultDir}`);\n } else {\n console.log(` \\u2013 Vault preserved at ${vaultDir} (use --remove-vault to delete)`);\n }\n\n console.log('\\nMyco has been removed from this project.');\n}\n"],"mappings":"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","names":["allManifests","projectRoot","pkgRoot"]}
@@ -1,16 +1,18 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-KESLPBKV.js";
4
+ } from "./chunk-QDLVIW2O.js";
5
5
  import "./chunk-SAKJMNSR.js";
6
- import "./chunk-Q36VMZST.js";
7
- import "./chunk-FMRZ26U5.js";
8
- import "./chunk-OD4AA7PV.js";
6
+ import "./chunk-OTQH5KZW.js";
7
+ import "./chunk-X3IGT5RV.js";
8
+ import "./chunk-53RPGOEN.js";
9
+ import "./chunk-OUJSQSKE.js";
10
+ import "./chunk-POEPHBQK.js";
9
11
  import "./chunk-MYX5NCRH.js";
10
- import "./chunk-VVNL26WX.js";
11
- import "./chunk-XG5RRUYF.js";
12
+ import "./chunk-KTTSXYEK.js";
13
+ import "./chunk-ENZR5NG7.js";
12
14
  import "./chunk-LPUQPDC2.js";
13
- import "./chunk-FLLBJLHM.js";
15
+ import "./chunk-6C6QZ4PM.js";
14
16
  import "./chunk-UUHLLQXO.js";
15
17
  import "./chunk-6LQIMRTC.js";
16
18
  import "./chunk-ODXLRR4U.js";
@@ -38,7 +40,7 @@ async function run(_args, vaultDir) {
38
40
  } catch {
39
41
  }
40
42
  }
41
- const { DaemonClient } = await import("./client-YXQUTXVZ.js");
43
+ const { DaemonClient } = await import("./client-Z43DNLJH.js");
42
44
  const client = new DaemonClient(vaultDir);
43
45
  console.log("Waiting for health check...");
44
46
  const healthy = await client.ensureRunning();
@@ -57,4 +59,4 @@ async function run(_args, vaultDir) {
57
59
  export {
58
60
  run
59
61
  };
60
- //# sourceMappingURL=restart-ADG5GBTB.js.map
62
+ //# sourceMappingURL=restart-UEFDPMLT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/restart.ts"],"sourcesContent":["import { isProcessAlive } from './shared.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function run(_args: string[], vaultDir: string): Promise<void> {\n const daemonPath = path.join(vaultDir, 'daemon.json');\n\n // Kill existing daemon if running\n if (fs.existsSync(daemonPath)) {\n try {\n const daemon = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n if (isProcessAlive(daemon.pid)) {\n process.kill(daemon.pid, 'SIGTERM');\n console.log(`Stopped daemon (pid ${daemon.pid})`);\n } else {\n console.log(`Daemon pid ${daemon.pid} was already dead`);\n }\n } catch { /* ignore */ }\n try { fs.unlinkSync(daemonPath); } catch { /* already gone */ }\n }\n\n // Spawn and wait for health using the shared client\n // (handles CLAUDE_PLUGIN_ROOT + CURSOR_PLUGIN_ROOT resolution)\n const { DaemonClient } = await import('../hooks/client.js');\n const client = new DaemonClient(vaultDir);\n\n console.log('Waiting for health check...');\n const healthy = await client.ensureRunning();\n if (healthy) {\n try {\n const info = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n console.log(`Daemon healthy on port ${info.port}`);\n console.log(`Dashboard: http://localhost:${info.port}/`);\n } catch {\n console.log('Daemon healthy');\n }\n } else {\n console.error('Daemon failed to become healthy');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,IAAI,OAAiB,UAAiC;AAC1E,QAAM,aAAa,KAAK,KAAK,UAAU,aAAa;AAGpD,MAAI,GAAG,WAAW,UAAU,GAAG;AAC7B,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC9D,UAAI,eAAe,OAAO,GAAG,GAAG;AAC9B,gBAAQ,KAAK,OAAO,KAAK,SAAS;AAClC,gBAAQ,IAAI,uBAAuB,OAAO,GAAG,GAAG;AAAA,MAClD,OAAO;AACL,gBAAQ,IAAI,cAAc,OAAO,GAAG,mBAAmB;AAAA,MACzD;AAAA,IACF,QAAQ;AAAA,IAAe;AACvB,QAAI;AAAE,SAAG,WAAW,UAAU;AAAA,IAAG,QAAQ;AAAA,IAAqB;AAAA,EAChE;AAIA,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,sBAAoB;AAC1D,QAAM,SAAS,IAAI,aAAa,QAAQ;AAExC,UAAQ,IAAI,6BAA6B;AACzC,QAAM,UAAU,MAAM,OAAO,cAAc;AAC3C,MAAI,SAAS;AACX,QAAI;AACF,YAAM,OAAO,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC5D,cAAQ,IAAI,0BAA0B,KAAK,IAAI,EAAE;AACjD,cAAQ,IAAI,+BAA+B,KAAK,IAAI,GAAG;AAAA,IACzD,QAAQ;AACN,cAAQ,IAAI,gBAAgB;AAAA,IAC9B;AAAA,EACF,OAAO;AACL,YAAQ,MAAM,iCAAiC;AAAA,EACjD;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/cli/restart.ts"],"sourcesContent":["import { isProcessAlive } from './shared.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function run(_args: string[], vaultDir: string): Promise<void> {\n const daemonPath = path.join(vaultDir, 'daemon.json');\n\n // Kill existing daemon if running\n if (fs.existsSync(daemonPath)) {\n try {\n const daemon = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n if (isProcessAlive(daemon.pid)) {\n process.kill(daemon.pid, 'SIGTERM');\n console.log(`Stopped daemon (pid ${daemon.pid})`);\n } else {\n console.log(`Daemon pid ${daemon.pid} was already dead`);\n }\n } catch { /* ignore */ }\n try { fs.unlinkSync(daemonPath); } catch { /* already gone */ }\n }\n\n // Spawn and wait for health using the shared client\n // (handles CLAUDE_PLUGIN_ROOT + CURSOR_PLUGIN_ROOT resolution)\n const { DaemonClient } = await import('../hooks/client.js');\n const client = new DaemonClient(vaultDir);\n\n console.log('Waiting for health check...');\n const healthy = await client.ensureRunning();\n if (healthy) {\n try {\n const info = JSON.parse(fs.readFileSync(daemonPath, 'utf-8'));\n console.log(`Daemon healthy on port ${info.port}`);\n console.log(`Dashboard: http://localhost:${info.port}/`);\n } catch {\n console.log('Daemon healthy');\n }\n } else {\n console.error('Daemon failed to become healthy');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,eAAsB,IAAI,OAAiB,UAAiC;AAC1E,QAAM,aAAa,KAAK,KAAK,UAAU,aAAa;AAGpD,MAAI,GAAG,WAAW,UAAU,GAAG;AAC7B,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC9D,UAAI,eAAe,OAAO,GAAG,GAAG;AAC9B,gBAAQ,KAAK,OAAO,KAAK,SAAS;AAClC,gBAAQ,IAAI,uBAAuB,OAAO,GAAG,GAAG;AAAA,MAClD,OAAO;AACL,gBAAQ,IAAI,cAAc,OAAO,GAAG,mBAAmB;AAAA,MACzD;AAAA,IACF,QAAQ;AAAA,IAAe;AACvB,QAAI;AAAE,SAAG,WAAW,UAAU;AAAA,IAAG,QAAQ;AAAA,IAAqB;AAAA,EAChE;AAIA,QAAM,EAAE,aAAa,IAAI,MAAM,OAAO,sBAAoB;AAC1D,QAAM,SAAS,IAAI,aAAa,QAAQ;AAExC,UAAQ,IAAI,6BAA6B;AACzC,QAAM,UAAU,MAAM,OAAO,cAAc;AAC3C,MAAI,SAAS;AACX,QAAI;AACF,YAAM,OAAO,KAAK,MAAM,GAAG,aAAa,YAAY,OAAO,CAAC;AAC5D,cAAQ,IAAI,0BAA0B,KAAK,IAAI,EAAE;AACjD,cAAQ,IAAI,+BAA+B,KAAK,IAAI,GAAG;AAAA,IACzD,QAAQ;AACN,cAAQ,IAAI,gBAAgB;AAAA,IAC9B;AAAA,EACF,OAAO;AACL,YAAQ,MAAM,iCAAiC;AAAA,EACjD;AACF;","names":[]}
@@ -1,22 +1,24 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  fullTextSearch
4
- } from "./chunk-5XIVBO25.js";
4
+ } from "./chunk-QLLBJEM7.js";
5
5
  import {
6
6
  connectToDaemon,
7
7
  initVaultDb
8
- } from "./chunk-KESLPBKV.js";
8
+ } from "./chunk-QDLVIW2O.js";
9
9
  import "./chunk-SAKJMNSR.js";
10
- import "./chunk-Q36VMZST.js";
11
- import "./chunk-FMRZ26U5.js";
12
- import "./chunk-OD4AA7PV.js";
10
+ import "./chunk-OTQH5KZW.js";
11
+ import "./chunk-X3IGT5RV.js";
12
+ import "./chunk-53RPGOEN.js";
13
+ import "./chunk-OUJSQSKE.js";
14
+ import "./chunk-POEPHBQK.js";
13
15
  import "./chunk-MYX5NCRH.js";
14
- import "./chunk-VVNL26WX.js";
15
- import "./chunk-XG5RRUYF.js";
16
+ import "./chunk-KTTSXYEK.js";
17
+ import "./chunk-ENZR5NG7.js";
16
18
  import "./chunk-LPUQPDC2.js";
17
19
  import {
18
20
  CONTENT_SNIPPET_CHARS
19
- } from "./chunk-FLLBJLHM.js";
21
+ } from "./chunk-6C6QZ4PM.js";
20
22
  import "./chunk-UUHLLQXO.js";
21
23
  import "./chunk-6LQIMRTC.js";
22
24
  import "./chunk-ODXLRR4U.js";
@@ -93,4 +95,4 @@ export {
93
95
  run,
94
96
  runVectors
95
97
  };
96
- //# sourceMappingURL=search-AHZEUNRR.js.map
98
+ //# sourceMappingURL=search-NHNVUAQQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/search.ts"],"sourcesContent":["/**\n * CLI: myco search — full-text search via direct SQLite reads.\n * CLI: myco vectors — semantic search via daemon API (requires vector store).\n *\n * The `search` command opens the database directly (WAL mode allows concurrent\n * reads) and does NOT require the daemon. The `vectors` command still routes\n * through the daemon because it needs the in-process vector store.\n */\n\nimport { CONTENT_SNIPPET_CHARS } from '@myco/constants.js';\nimport { fullTextSearch } from '@myco/db/queries/search.js';\nimport { connectToDaemon, initVaultDb } from './shared.js';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Default result limit for CLI search. */\nconst CLI_SEARCH_LIMIT = 10;\n\n/** Default result limit for CLI vectors. */\nconst CLI_VECTORS_LIMIT = 20;\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface SearchResult {\n id: string;\n type: string;\n title: string;\n preview: string;\n score: number;\n session_id?: string;\n}\n\n// ---------------------------------------------------------------------------\n// search command — direct DB read\n// ---------------------------------------------------------------------------\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const query = args.join(' ');\n if (!query) { console.error('Usage: myco search <query>'); process.exit(1); }\n\n const cleanup = initVaultDb(vaultDir);\n try {\n const results = fullTextSearch(query, { limit: CLI_SEARCH_LIMIT });\n\n console.log(`=== Text Search: \"${query}\" ===`);\n if (results.length === 0) {\n console.log(' (no results)');\n } else {\n for (const r of results) {\n const preview = (r.preview ?? r.title ?? '').slice(0, CONTENT_SNIPPET_CHARS);\n console.log(` [${r.type}] ${preview}`);\n }\n }\n } catch (err) {\n console.error('Search failed:', (err as Error).message);\n process.exit(1);\n } finally {\n cleanup();\n }\n}\n\n// ---------------------------------------------------------------------------\n// vectors command — requires daemon for vector store\n// ---------------------------------------------------------------------------\n\nexport async function runVectors(args: string[], vaultDir: string): Promise<void> {\n const query = args.join(' ');\n if (!query) { console.error('Usage: myco vectors <query>'); process.exit(1); }\n\n const client = await connectToDaemon(vaultDir);\n\n const params = new URLSearchParams({\n q: query,\n limit: String(CLI_VECTORS_LIMIT),\n mode: 'semantic',\n });\n const result = await client.get(`/api/search?${params.toString()}`);\n\n if (!result.ok || !result.data?.results) {\n console.error('Semantic search failed — embedding provider may not be configured');\n process.exit(1);\n }\n\n const results = result.data.results as SearchResult[];\n\n console.log(`Query: \"${query}\"`);\n console.log();\n\n if (results.length === 0) {\n console.log('(no results)');\n } else {\n const topScore = results[0].score;\n const DEFAULT_RELATIVE_THRESHOLD = 0.5;\n console.log(`Top score: ${topScore.toFixed(4)}`);\n console.log(`Default threshold (${DEFAULT_RELATIVE_THRESHOLD}x): ${(topScore * DEFAULT_RELATIVE_THRESHOLD).toFixed(4)}`);\n console.log();\n console.log(' Sim Ratio Type ID');\n console.log(' ------ ----- --------- ' + '-'.repeat(50));\n for (const r of results) {\n const ratio = (r.score / topScore).toFixed(2);\n const pass = r.score >= topScore * DEFAULT_RELATIVE_THRESHOLD ? '\\u2713' : ' ';\n const type = r.type ?? 'unknown';\n console.log(`${pass} ${r.score.toFixed(4)} ${ratio} ${type.padEnd(9)} ${r.id.slice(0, 50)}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,mBAAmB;AAGzB,IAAM,oBAAoB;AAmB1B,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,MAAI,CAAC,OAAO;AAAE,YAAQ,MAAM,4BAA4B;AAAG,YAAQ,KAAK,CAAC;AAAA,EAAG;AAE5E,QAAM,UAAU,YAAY,QAAQ;AACpC,MAAI;AACF,UAAM,UAAU,eAAe,OAAO,EAAE,OAAO,iBAAiB,CAAC;AAEjE,YAAQ,IAAI,qBAAqB,KAAK,OAAO;AAC7C,QAAI,QAAQ,WAAW,GAAG;AACxB,cAAQ,IAAI,gBAAgB;AAAA,IAC9B,OAAO;AACL,iBAAW,KAAK,SAAS;AACvB,cAAM,WAAW,EAAE,WAAW,EAAE,SAAS,IAAI,MAAM,GAAG,qBAAqB;AAC3E,gBAAQ,IAAI,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE;AAAA,MACxC;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,MAAM,kBAAmB,IAAc,OAAO;AACtD,YAAQ,KAAK,CAAC;AAAA,EAChB,UAAE;AACA,YAAQ;AAAA,EACV;AACF;AAMA,eAAsB,WAAW,MAAgB,UAAiC;AAChF,QAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,MAAI,CAAC,OAAO;AAAE,YAAQ,MAAM,6BAA6B;AAAG,YAAQ,KAAK,CAAC;AAAA,EAAG;AAE7E,QAAM,SAAS,MAAM,gBAAgB,QAAQ;AAE7C,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,GAAG;AAAA,IACH,OAAO,OAAO,iBAAiB;AAAA,IAC/B,MAAM;AAAA,EACR,CAAC;AACD,QAAM,SAAS,MAAM,OAAO,IAAI,eAAe,OAAO,SAAS,CAAC,EAAE;AAElE,MAAI,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,SAAS;AACvC,YAAQ,MAAM,wEAAmE;AACjF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,OAAO,KAAK;AAE5B,UAAQ,IAAI,WAAW,KAAK,GAAG;AAC/B,UAAQ,IAAI;AAEZ,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,IAAI,cAAc;AAAA,EAC5B,OAAO;AACL,UAAM,WAAW,QAAQ,CAAC,EAAE;AAC5B,UAAM,6BAA6B;AACnC,YAAQ,IAAI,cAAc,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC/C,YAAQ,IAAI,sBAAsB,0BAA0B,QAAQ,WAAW,4BAA4B,QAAQ,CAAC,CAAC,EAAE;AACvH,YAAQ,IAAI;AACZ,YAAQ,IAAI,gCAAgC;AAC5C,YAAQ,IAAI,iCAAiC,IAAI,OAAO,EAAE,CAAC;AAC3D,eAAW,KAAK,SAAS;AACvB,YAAM,SAAS,EAAE,QAAQ,UAAU,QAAQ,CAAC;AAC5C,YAAM,OAAO,EAAE,SAAS,WAAW,6BAA6B,WAAW;AAC3E,YAAM,OAAO,EAAE,QAAQ;AACvB,cAAQ,IAAI,GAAG,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE;AAAA,IACjG;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/cli/search.ts"],"sourcesContent":["/**\n * CLI: myco search — full-text search via direct SQLite reads.\n * CLI: myco vectors — semantic search via daemon API (requires vector store).\n *\n * The `search` command opens the database directly (WAL mode allows concurrent\n * reads) and does NOT require the daemon. The `vectors` command still routes\n * through the daemon because it needs the in-process vector store.\n */\n\nimport { CONTENT_SNIPPET_CHARS } from '@myco/constants.js';\nimport { fullTextSearch } from '@myco/db/queries/search.js';\nimport { connectToDaemon, initVaultDb } from './shared.js';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Default result limit for CLI search. */\nconst CLI_SEARCH_LIMIT = 10;\n\n/** Default result limit for CLI vectors. */\nconst CLI_VECTORS_LIMIT = 20;\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface SearchResult {\n id: string;\n type: string;\n title: string;\n preview: string;\n score: number;\n session_id?: string;\n}\n\n// ---------------------------------------------------------------------------\n// search command — direct DB read\n// ---------------------------------------------------------------------------\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const query = args.join(' ');\n if (!query) { console.error('Usage: myco search <query>'); process.exit(1); }\n\n const cleanup = initVaultDb(vaultDir);\n try {\n const results = fullTextSearch(query, { limit: CLI_SEARCH_LIMIT });\n\n console.log(`=== Text Search: \"${query}\" ===`);\n if (results.length === 0) {\n console.log(' (no results)');\n } else {\n for (const r of results) {\n const preview = (r.preview ?? r.title ?? '').slice(0, CONTENT_SNIPPET_CHARS);\n console.log(` [${r.type}] ${preview}`);\n }\n }\n } catch (err) {\n console.error('Search failed:', (err as Error).message);\n process.exit(1);\n } finally {\n cleanup();\n }\n}\n\n// ---------------------------------------------------------------------------\n// vectors command — requires daemon for vector store\n// ---------------------------------------------------------------------------\n\nexport async function runVectors(args: string[], vaultDir: string): Promise<void> {\n const query = args.join(' ');\n if (!query) { console.error('Usage: myco vectors <query>'); process.exit(1); }\n\n const client = await connectToDaemon(vaultDir);\n\n const params = new URLSearchParams({\n q: query,\n limit: String(CLI_VECTORS_LIMIT),\n mode: 'semantic',\n });\n const result = await client.get(`/api/search?${params.toString()}`);\n\n if (!result.ok || !result.data?.results) {\n console.error('Semantic search failed — embedding provider may not be configured');\n process.exit(1);\n }\n\n const results = result.data.results as SearchResult[];\n\n console.log(`Query: \"${query}\"`);\n console.log();\n\n if (results.length === 0) {\n console.log('(no results)');\n } else {\n const topScore = results[0].score;\n const DEFAULT_RELATIVE_THRESHOLD = 0.5;\n console.log(`Top score: ${topScore.toFixed(4)}`);\n console.log(`Default threshold (${DEFAULT_RELATIVE_THRESHOLD}x): ${(topScore * DEFAULT_RELATIVE_THRESHOLD).toFixed(4)}`);\n console.log();\n console.log(' Sim Ratio Type ID');\n console.log(' ------ ----- --------- ' + '-'.repeat(50));\n for (const r of results) {\n const ratio = (r.score / topScore).toFixed(2);\n const pass = r.score >= topScore * DEFAULT_RELATIVE_THRESHOLD ? '\\u2713' : ' ';\n const type = r.type ?? 'unknown';\n console.log(`${pass} ${r.score.toFixed(4)} ${ratio} ${type.padEnd(9)} ${r.id.slice(0, 50)}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,mBAAmB;AAGzB,IAAM,oBAAoB;AAmB1B,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,MAAI,CAAC,OAAO;AAAE,YAAQ,MAAM,4BAA4B;AAAG,YAAQ,KAAK,CAAC;AAAA,EAAG;AAE5E,QAAM,UAAU,YAAY,QAAQ;AACpC,MAAI;AACF,UAAM,UAAU,eAAe,OAAO,EAAE,OAAO,iBAAiB,CAAC;AAEjE,YAAQ,IAAI,qBAAqB,KAAK,OAAO;AAC7C,QAAI,QAAQ,WAAW,GAAG;AACxB,cAAQ,IAAI,gBAAgB;AAAA,IAC9B,OAAO;AACL,iBAAW,KAAK,SAAS;AACvB,cAAM,WAAW,EAAE,WAAW,EAAE,SAAS,IAAI,MAAM,GAAG,qBAAqB;AAC3E,gBAAQ,IAAI,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE;AAAA,MACxC;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,MAAM,kBAAmB,IAAc,OAAO;AACtD,YAAQ,KAAK,CAAC;AAAA,EAChB,UAAE;AACA,YAAQ;AAAA,EACV;AACF;AAMA,eAAsB,WAAW,MAAgB,UAAiC;AAChF,QAAM,QAAQ,KAAK,KAAK,GAAG;AAC3B,MAAI,CAAC,OAAO;AAAE,YAAQ,MAAM,6BAA6B;AAAG,YAAQ,KAAK,CAAC;AAAA,EAAG;AAE7E,QAAM,SAAS,MAAM,gBAAgB,QAAQ;AAE7C,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,GAAG;AAAA,IACH,OAAO,OAAO,iBAAiB;AAAA,IAC/B,MAAM;AAAA,EACR,CAAC;AACD,QAAM,SAAS,MAAM,OAAO,IAAI,eAAe,OAAO,SAAS,CAAC,EAAE;AAElE,MAAI,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,SAAS;AACvC,YAAQ,MAAM,wEAAmE;AACjF,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,OAAO,KAAK;AAE5B,UAAQ,IAAI,WAAW,KAAK,GAAG;AAC/B,UAAQ,IAAI;AAEZ,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,IAAI,cAAc;AAAA,EAC5B,OAAO;AACL,UAAM,WAAW,QAAQ,CAAC,EAAE;AAC5B,UAAM,6BAA6B;AACnC,YAAQ,IAAI,cAAc,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC/C,YAAQ,IAAI,sBAAsB,0BAA0B,QAAQ,WAAW,4BAA4B,QAAQ,CAAC,CAAC,EAAE;AACvH,YAAQ,IAAI;AACZ,YAAQ,IAAI,gCAAgC;AAC5C,YAAQ,IAAI,iCAAiC,IAAI,OAAO,EAAE,CAAC;AAC3D,eAAW,KAAK,SAAS;AACvB,YAAM,SAAS,EAAE,QAAQ,UAAU,QAAQ,CAAC;AAC5C,YAAM,OAAO,EAAE,SAAS,WAAW,6BAA6B,WAAW;AAC3E,YAAM,OAAO,EAAE,QAAQ;AACvB,cAAQ,IAAI,GAAG,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE;AAAA,IACjG;AAAA,EACF;AACF;","names":[]}