@goondocks/myco 0.19.6 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/{agent-run-WK5NKBYA.js → agent-run-4HUXVRHW.js} +8 -8
  2. package/dist/{agent-tasks-2E73GG3A.js → agent-tasks-JF45ELB6.js} +8 -8
  3. package/dist/{chunk-DURKJTVO.js → chunk-3WOS4TAR.js} +9 -1
  4. package/dist/chunk-3WOS4TAR.js.map +1 -0
  5. package/dist/{chunk-TMNFCUAD.js → chunk-4LCIKVDM.js} +49 -21
  6. package/dist/chunk-4LCIKVDM.js.map +1 -0
  7. package/dist/{chunk-Q4QD6LJT.js → chunk-4M7EWPIA.js} +3 -3
  8. package/dist/{chunk-FGKCE5AE.js → chunk-4YFKBL3F.js} +2 -2
  9. package/dist/{chunk-KYH4V4ML.js → chunk-57O67XVF.js} +3 -3
  10. package/dist/{chunk-7ONVLO43.js → chunk-5XIVBO25.js} +2 -2
  11. package/dist/{chunk-ST2D3SGM.js → chunk-ACQ2AIEM.js} +2 -2
  12. package/dist/{chunk-6ZDJXSEO.js → chunk-BPRIYNLE.js} +3 -3
  13. package/dist/chunk-CUDIZJY7.js +36 -0
  14. package/dist/chunk-CUDIZJY7.js.map +1 -0
  15. package/dist/{chunk-WKNAKQKA.js → chunk-DCSGJ7W4.js} +13 -19
  16. package/dist/chunk-DCSGJ7W4.js.map +1 -0
  17. package/dist/{chunk-Q6OEZM3S.js → chunk-EVDQKYCG.js} +237 -10
  18. package/dist/chunk-EVDQKYCG.js.map +1 -0
  19. package/dist/{chunk-I54KLC6H.js → chunk-FLLBJLHM.js} +3 -1
  20. package/dist/{chunk-I54KLC6H.js.map → chunk-FLLBJLHM.js.map} +1 -1
  21. package/dist/{chunk-PMT2LSTQ.js → chunk-FMRZ26U5.js} +2 -2
  22. package/dist/{chunk-3J6TUJSV.js → chunk-KHT24OWC.js} +3 -3
  23. package/dist/{chunk-P5VNHGVZ.js → chunk-L6XFAJIF.js} +64 -13
  24. package/dist/chunk-L6XFAJIF.js.map +1 -0
  25. package/dist/{chunk-6DDRJQ4X.js → chunk-MYOZLMB2.js} +2 -2
  26. package/dist/{chunk-UVKQ62II.js → chunk-NGROSFOH.js} +24 -2
  27. package/dist/chunk-NGROSFOH.js.map +1 -0
  28. package/dist/{chunk-VLGBWOBY.js → chunk-P3DN5EWW.js} +4 -4
  29. package/dist/{chunk-W3JUH5S3.js → chunk-POR75WM6.js} +4 -4
  30. package/dist/{chunk-FKBPXCH3.js → chunk-QS5TWZBL.js} +4 -4
  31. package/dist/{chunk-NKQZ73LL.js → chunk-SRXTSI25.js} +109 -3
  32. package/dist/chunk-SRXTSI25.js.map +1 -0
  33. package/dist/{chunk-QH5HS54N.js → chunk-UOQQENDW.js} +3 -3
  34. package/dist/{chunk-GFR542SM.js → chunk-US4LNCAT.js} +5 -11
  35. package/dist/chunk-US4LNCAT.js.map +1 -0
  36. package/dist/{chunk-44PZCAYS.js → chunk-XL75KZGI.js} +23 -13
  37. package/dist/chunk-XL75KZGI.js.map +1 -0
  38. package/dist/{chunk-NCBLB2C6.js → chunk-YSNIAJ5D.js} +7 -4
  39. package/dist/chunk-YSNIAJ5D.js.map +1 -0
  40. package/dist/chunk-ZXZPJJN3.js +54 -0
  41. package/dist/chunk-ZXZPJJN3.js.map +1 -0
  42. package/dist/{cli-LCTXK7N6.js → cli-AHTINAHY.js} +43 -43
  43. package/dist/{client-S47ENM76.js → client-LHENCAV3.js} +4 -4
  44. package/dist/{config-IO5WALOD.js → config-XPV5GDE4.js} +8 -16
  45. package/dist/config-XPV5GDE4.js.map +1 -0
  46. package/dist/{detect-BEOIHGBC.js → detect-PXNM6TA7.js} +2 -2
  47. package/dist/{detect-providers-2EY55EHK.js → detect-providers-5KOPZ7J2.js} +4 -4
  48. package/dist/{doctor-EE6GAC54.js → doctor-XPCF5HV5.js} +13 -13
  49. package/dist/{executor-NXNSUEMQ.js → executor-ACDHGTRH.js} +21 -22
  50. package/dist/executor-ACDHGTRH.js.map +1 -0
  51. package/dist/{init-IPL3XV6F.js → init-V3KCC36O.js} +14 -14
  52. package/dist/{installer-WMTB4NCX.js → installer-ZNK4JSQA.js} +4 -4
  53. package/dist/{llm-SWDDQQWY.js → llm-TH4NLIRM.js} +4 -4
  54. package/dist/{loader-V774GZU4.js → loader-H7OFASVC.js} +15 -3
  55. package/dist/{loader-AAZ6VUIA.js → loader-TSB5M7FD.js} +3 -3
  56. package/dist/{logs-KNKPQE5A.js → logs-7YVGGBIS.js} +2 -2
  57. package/dist/{main-RPJSS7PT.js → main-5S4MDCIO.js} +635 -156
  58. package/dist/main-5S4MDCIO.js.map +1 -0
  59. package/dist/{open-OYBKVBYX.js → open-AB5ULZIB.js} +8 -8
  60. package/dist/{post-compact-E2OVMNGQ.js → post-compact-P2B7C7FE.js} +9 -8
  61. package/dist/{post-compact-E2OVMNGQ.js.map → post-compact-P2B7C7FE.js.map} +1 -1
  62. package/dist/{post-tool-use-FGQE26GJ.js → post-tool-use-LXL6NXDS.js} +8 -7
  63. package/dist/{post-tool-use-FGQE26GJ.js.map → post-tool-use-LXL6NXDS.js.map} +1 -1
  64. package/dist/{post-tool-use-failure-3CITJYQK.js → post-tool-use-failure-WAYVVKGR.js} +9 -8
  65. package/dist/{post-tool-use-failure-3CITJYQK.js.map → post-tool-use-failure-WAYVVKGR.js.map} +1 -1
  66. package/dist/{pre-compact-GYMHCXII.js → pre-compact-BCXUCF4V.js} +9 -8
  67. package/dist/{pre-compact-GYMHCXII.js.map → pre-compact-BCXUCF4V.js.map} +1 -1
  68. package/dist/{provider-check-WCM3SDTM.js → provider-check-43LAMSMH.js} +4 -4
  69. package/dist/{registry-OCM4WAPJ.js → registry-MGJSJBAS.js} +4 -4
  70. package/dist/{remove-72ER3TG5.js → remove-KAPX5NT2.js} +10 -10
  71. package/dist/{restart-EQHEJCGT.js → restart-HQO36FTG.js} +9 -9
  72. package/dist/{search-JOBYIW43.js → search-YOMOKAAI.js} +9 -9
  73. package/dist/{server-PZCWYWZL.js → server-2N23P6F2.js} +40 -27
  74. package/dist/{server-PZCWYWZL.js.map → server-2N23P6F2.js.map} +1 -1
  75. package/dist/{session-APO4A2C7.js → session-WW2JLHPX.js} +9 -10
  76. package/dist/{session-APO4A2C7.js.map → session-WW2JLHPX.js.map} +1 -1
  77. package/dist/{session-end-4V4VHAOQ.js → session-end-4WRTIBVQ.js} +8 -7
  78. package/dist/{session-end-4V4VHAOQ.js.map → session-end-4WRTIBVQ.js.map} +1 -1
  79. package/dist/{session-start-K6ESRZU7.js → session-start-HRWTZXQR.js} +15 -15
  80. package/dist/session-start-HRWTZXQR.js.map +1 -0
  81. package/dist/{setup-llm-QUWOSB7A.js → setup-llm-HFWSBUAF.js} +10 -9
  82. package/dist/{setup-llm-QUWOSB7A.js.map → setup-llm-HFWSBUAF.js.map} +1 -1
  83. package/dist/src/cli.js +1 -1
  84. package/dist/src/daemon/main.js +1 -1
  85. package/dist/src/hooks/post-tool-use.js +1 -1
  86. package/dist/src/hooks/session-end.js +1 -1
  87. package/dist/src/hooks/session-start.js +1 -1
  88. package/dist/src/hooks/stop.js +1 -1
  89. package/dist/src/hooks/user-prompt-submit.js +1 -1
  90. package/dist/src/mcp/server.js +1 -1
  91. package/dist/src/symbionts/manifests/codex.yaml +28 -0
  92. package/dist/{stats-TYOZAOP2.js → stats-7A4CJ4MS.js} +9 -9
  93. package/dist/{stop-2COOWEYG.js → stop-R2GDHMRA.js} +8 -7
  94. package/dist/{stop-2COOWEYG.js.map → stop-R2GDHMRA.js.map} +1 -1
  95. package/dist/{stop-failure-UQ33GZLE.js → stop-failure-773KR4VZ.js} +9 -8
  96. package/dist/{stop-failure-UQ33GZLE.js.map → stop-failure-773KR4VZ.js.map} +1 -1
  97. package/dist/{subagent-start-YENEY6VF.js → subagent-start-IDECNBHW.js} +9 -8
  98. package/dist/{subagent-start-YENEY6VF.js.map → subagent-start-IDECNBHW.js.map} +1 -1
  99. package/dist/{subagent-stop-W2757YDB.js → subagent-stop-3JH7DR2S.js} +9 -8
  100. package/dist/{subagent-stop-W2757YDB.js.map → subagent-stop-3JH7DR2S.js.map} +1 -1
  101. package/dist/{task-completed-KU6GWMWV.js → task-completed-AYVHPHDR.js} +9 -8
  102. package/dist/{task-completed-KU6GWMWV.js.map → task-completed-AYVHPHDR.js.map} +1 -1
  103. package/dist/{team-SNLC6FZM.js → team-3JKF7VAD.js} +5 -5
  104. package/dist/ui/assets/index-C2JuNtRB.css +1 -0
  105. package/dist/ui/assets/index-JLVaQKV2.js +832 -0
  106. package/dist/ui/favicon-dusk.svg +11 -0
  107. package/dist/ui/favicon-moss.svg +11 -0
  108. package/dist/ui/favicon-plum.svg +11 -0
  109. package/dist/ui/favicon-sage.svg +11 -0
  110. package/dist/ui/favicon-slate.svg +11 -0
  111. package/dist/ui/favicon-terracotta.svg +11 -0
  112. package/dist/ui/index.html +3 -3
  113. package/dist/{update-5VYNQZJ4.js → update-YWYW55JM.js} +10 -10
  114. package/dist/{user-prompt-submit-KATLHAKA.js → user-prompt-submit-YELSR6XI.js} +9 -8
  115. package/dist/{user-prompt-submit-KATLHAKA.js.map → user-prompt-submit-YELSR6XI.js.map} +1 -1
  116. package/dist/{verify-BGJVB3K2.js → verify-JS44DVKJ.js} +5 -5
  117. package/dist/{version-MKNN5GYM.js → version-K5NETYIL.js} +2 -2
  118. package/package.json +1 -1
  119. package/skills/myco/SKILL.md +78 -43
  120. package/skills/myco/references/vault-status.md +1 -1
  121. package/dist/chunk-44PZCAYS.js.map +0 -1
  122. package/dist/chunk-5ZT2Q6P5.js +0 -25
  123. package/dist/chunk-5ZT2Q6P5.js.map +0 -1
  124. package/dist/chunk-AULBWINA.js +0 -227
  125. package/dist/chunk-AULBWINA.js.map +0 -1
  126. package/dist/chunk-DURKJTVO.js.map +0 -1
  127. package/dist/chunk-GFR542SM.js.map +0 -1
  128. package/dist/chunk-NCBLB2C6.js.map +0 -1
  129. package/dist/chunk-NKQZ73LL.js.map +0 -1
  130. package/dist/chunk-P5VNHGVZ.js.map +0 -1
  131. package/dist/chunk-Q6OEZM3S.js.map +0 -1
  132. package/dist/chunk-TMNFCUAD.js.map +0 -1
  133. package/dist/chunk-UVKQ62II.js.map +0 -1
  134. package/dist/chunk-VQF5E4ZX.js +0 -91
  135. package/dist/chunk-VQF5E4ZX.js.map +0 -1
  136. package/dist/chunk-WKNAKQKA.js.map +0 -1
  137. package/dist/config-IO5WALOD.js.map +0 -1
  138. package/dist/executor-NXNSUEMQ.js.map +0 -1
  139. package/dist/main-RPJSS7PT.js.map +0 -1
  140. package/dist/resolution-events-PYLSI6QT.js +0 -15
  141. package/dist/session-start-K6ESRZU7.js.map +0 -1
  142. package/dist/ui/assets/index-816yFmz_.js +0 -842
  143. package/dist/ui/assets/index-Dj6vQpFd.css +0 -1
  144. package/dist/version-MKNN5GYM.js.map +0 -1
  145. /package/dist/{agent-run-WK5NKBYA.js.map → agent-run-4HUXVRHW.js.map} +0 -0
  146. /package/dist/{agent-tasks-2E73GG3A.js.map → agent-tasks-JF45ELB6.js.map} +0 -0
  147. /package/dist/{chunk-Q4QD6LJT.js.map → chunk-4M7EWPIA.js.map} +0 -0
  148. /package/dist/{chunk-FGKCE5AE.js.map → chunk-4YFKBL3F.js.map} +0 -0
  149. /package/dist/{chunk-KYH4V4ML.js.map → chunk-57O67XVF.js.map} +0 -0
  150. /package/dist/{chunk-7ONVLO43.js.map → chunk-5XIVBO25.js.map} +0 -0
  151. /package/dist/{chunk-ST2D3SGM.js.map → chunk-ACQ2AIEM.js.map} +0 -0
  152. /package/dist/{chunk-6ZDJXSEO.js.map → chunk-BPRIYNLE.js.map} +0 -0
  153. /package/dist/{chunk-PMT2LSTQ.js.map → chunk-FMRZ26U5.js.map} +0 -0
  154. /package/dist/{chunk-3J6TUJSV.js.map → chunk-KHT24OWC.js.map} +0 -0
  155. /package/dist/{chunk-6DDRJQ4X.js.map → chunk-MYOZLMB2.js.map} +0 -0
  156. /package/dist/{chunk-VLGBWOBY.js.map → chunk-P3DN5EWW.js.map} +0 -0
  157. /package/dist/{chunk-W3JUH5S3.js.map → chunk-POR75WM6.js.map} +0 -0
  158. /package/dist/{chunk-FKBPXCH3.js.map → chunk-QS5TWZBL.js.map} +0 -0
  159. /package/dist/{chunk-QH5HS54N.js.map → chunk-UOQQENDW.js.map} +0 -0
  160. /package/dist/{cli-LCTXK7N6.js.map → cli-AHTINAHY.js.map} +0 -0
  161. /package/dist/{client-S47ENM76.js.map → client-LHENCAV3.js.map} +0 -0
  162. /package/dist/{detect-BEOIHGBC.js.map → detect-PXNM6TA7.js.map} +0 -0
  163. /package/dist/{detect-providers-2EY55EHK.js.map → detect-providers-5KOPZ7J2.js.map} +0 -0
  164. /package/dist/{doctor-EE6GAC54.js.map → doctor-XPCF5HV5.js.map} +0 -0
  165. /package/dist/{init-IPL3XV6F.js.map → init-V3KCC36O.js.map} +0 -0
  166. /package/dist/{installer-WMTB4NCX.js.map → installer-ZNK4JSQA.js.map} +0 -0
  167. /package/dist/{llm-SWDDQQWY.js.map → llm-TH4NLIRM.js.map} +0 -0
  168. /package/dist/{loader-AAZ6VUIA.js.map → loader-H7OFASVC.js.map} +0 -0
  169. /package/dist/{loader-V774GZU4.js.map → loader-TSB5M7FD.js.map} +0 -0
  170. /package/dist/{logs-KNKPQE5A.js.map → logs-7YVGGBIS.js.map} +0 -0
  171. /package/dist/{open-OYBKVBYX.js.map → open-AB5ULZIB.js.map} +0 -0
  172. /package/dist/{provider-check-WCM3SDTM.js.map → provider-check-43LAMSMH.js.map} +0 -0
  173. /package/dist/{registry-OCM4WAPJ.js.map → registry-MGJSJBAS.js.map} +0 -0
  174. /package/dist/{remove-72ER3TG5.js.map → remove-KAPX5NT2.js.map} +0 -0
  175. /package/dist/{restart-EQHEJCGT.js.map → restart-HQO36FTG.js.map} +0 -0
  176. /package/dist/{search-JOBYIW43.js.map → search-YOMOKAAI.js.map} +0 -0
  177. /package/dist/{stats-TYOZAOP2.js.map → stats-7A4CJ4MS.js.map} +0 -0
  178. /package/dist/{resolution-events-PYLSI6QT.js.map → team-3JKF7VAD.js.map} +0 -0
  179. /package/dist/{update-5VYNQZJ4.js.map → update-YWYW55JM.js.map} +0 -0
  180. /package/dist/{verify-BGJVB3K2.js.map → verify-JS44DVKJ.js.map} +0 -0
  181. /package/dist/{team-SNLC6FZM.js.map → version-K5NETYIL.js.map} +0 -0
@@ -1,21 +1,20 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  initVaultDb
4
- } from "./chunk-NCBLB2C6.js";
4
+ } from "./chunk-YSNIAJ5D.js";
5
5
  import "./chunk-SAKJMNSR.js";
6
- import "./chunk-TMNFCUAD.js";
7
- import "./chunk-PMT2LSTQ.js";
6
+ import "./chunk-4LCIKVDM.js";
7
+ import "./chunk-FMRZ26U5.js";
8
8
  import {
9
9
  getSession,
10
10
  listSessions
11
- } from "./chunk-Q6OEZM3S.js";
12
- import "./chunk-AULBWINA.js";
13
- import "./chunk-NKQZ73LL.js";
11
+ } from "./chunk-EVDQKYCG.js";
12
+ import "./chunk-SRXTSI25.js";
14
13
  import "./chunk-MYX5NCRH.js";
15
- import "./chunk-QH5HS54N.js";
16
- import "./chunk-ST2D3SGM.js";
14
+ import "./chunk-UOQQENDW.js";
15
+ import "./chunk-ACQ2AIEM.js";
17
16
  import "./chunk-LPUQPDC2.js";
18
- import "./chunk-I54KLC6H.js";
17
+ import "./chunk-FLLBJLHM.js";
19
18
  import "./chunk-UUHLLQXO.js";
20
19
  import "./chunk-6LQIMRTC.js";
21
20
  import "./chunk-ODXLRR4U.js";
@@ -71,4 +70,4 @@ ${target.summary}`);
71
70
  export {
72
71
  run
73
72
  };
74
- //# sourceMappingURL=session-APO4A2C7.js.map
73
+ //# sourceMappingURL=session-WW2JLHPX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/session.ts"],"sourcesContent":["/**\n * CLI: myco session — display session info via direct SQLite reads.\n *\n * Opens the database directly (WAL mode allows concurrent reads).\n * Does NOT require the daemon to be running.\n */\n\nimport { listSessions, getSession } from '@myco/db/queries/sessions.js';\nimport { initVaultDb } from './shared.js';\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const idOrLatest = args[0];\n\n const cleanup = initVaultDb(vaultDir);\n try {\n const sessions = listSessions({ limit: 100 });\n if (sessions.length === 0) {\n console.log('No sessions found');\n return;\n }\n\n // Resolve target session ID\n let targetId: string;\n if (!idOrLatest || idOrLatest === 'latest') {\n targetId = sessions[0].id;\n } else {\n const match = sessions.find((s) => s.id.includes(idOrLatest));\n if (!match) {\n console.error(`Session not found: ${idOrLatest}`);\n console.log('Available:', sessions.map((s) => s.id.slice(0, 12)).join(', '));\n return;\n }\n targetId = match.id;\n }\n\n // Fetch full session detail\n const target = getSession(targetId);\n if (!target) {\n console.error(`Failed to fetch session: ${targetId}`);\n return;\n }\n\n console.log(`Session: ${target.id}`);\n console.log(`Status: ${target.status}`);\n if (target.title) console.log(`Title: ${target.title}`);\n if (target.branch) console.log(`Branch: ${target.branch}`);\n if (target.user) console.log(`User: ${target.user}`);\n console.log(`Started: ${new Date(target.started_at * 1000).toISOString()}`);\n if (target.ended_at) console.log(`Ended: ${new Date(target.ended_at * 1000).toISOString()}`);\n if (target.prompt_count) console.log(`Prompts: ${target.prompt_count}`);\n if (target.tool_count) console.log(`Tools: ${target.tool_count}`);\n if (target.summary) console.log(`\\nSummary:\\n${target.summary}`);\n } catch (err) {\n console.error('Failed to read vault database:', (err as Error).message);\n process.exit(1);\n } finally {\n cleanup();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAcA,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,aAAa,KAAK,CAAC;AAEzB,QAAM,UAAU,YAAY,QAAQ;AACpC,MAAI;AACF,UAAM,WAAW,aAAa,EAAE,OAAO,IAAI,CAAC;AAC5C,QAAI,SAAS,WAAW,GAAG;AACzB,cAAQ,IAAI,mBAAmB;AAC/B;AAAA,IACF;AAGA,QAAI;AACJ,QAAI,CAAC,cAAc,eAAe,UAAU;AAC1C,iBAAW,SAAS,CAAC,EAAE;AAAA,IACzB,OAAO;AACL,YAAM,QAAQ,SAAS,KAAK,CAAC,MAAM,EAAE,GAAG,SAAS,UAAU,CAAC;AAC5D,UAAI,CAAC,OAAO;AACV,gBAAQ,MAAM,sBAAsB,UAAU,EAAE;AAChD,gBAAQ,IAAI,cAAc,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AAC3E;AAAA,MACF;AACA,iBAAW,MAAM;AAAA,IACnB;AAGA,UAAM,SAAS,WAAW,QAAQ;AAClC,QAAI,CAAC,QAAQ;AACX,cAAQ,MAAM,4BAA4B,QAAQ,EAAE;AACpD;AAAA,IACF;AAEA,YAAQ,IAAI,YAAY,OAAO,EAAE,EAAE;AACnC,YAAQ,IAAI,YAAY,OAAO,MAAM,EAAE;AACvC,QAAI,OAAO,MAAO,SAAQ,IAAI,YAAY,OAAO,KAAK,EAAE;AACxD,QAAI,OAAO,OAAQ,SAAQ,IAAI,YAAY,OAAO,MAAM,EAAE;AAC1D,QAAI,OAAO,KAAM,SAAQ,IAAI,YAAY,OAAO,IAAI,EAAE;AACtD,YAAQ,IAAI,YAAY,IAAI,KAAK,OAAO,aAAa,GAAI,EAAE,YAAY,CAAC,EAAE;AAC1E,QAAI,OAAO,SAAU,SAAQ,IAAI,YAAY,IAAI,KAAK,OAAO,WAAW,GAAI,EAAE,YAAY,CAAC,EAAE;AAC7F,QAAI,OAAO,aAAc,SAAQ,IAAI,YAAY,OAAO,YAAY,EAAE;AACtE,QAAI,OAAO,WAAY,SAAQ,IAAI,YAAY,OAAO,UAAU,EAAE;AAClE,QAAI,OAAO,QAAS,SAAQ,IAAI;AAAA;AAAA,EAAe,OAAO,OAAO,EAAE;AAAA,EACjE,SAAS,KAAK;AACZ,YAAQ,MAAM,kCAAmC,IAAc,OAAO;AACtE,YAAQ,KAAK,CAAC;AAAA,EAChB,UAAE;AACA,YAAQ;AAAA,EACV;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/cli/session.ts"],"sourcesContent":["/**\n * CLI: myco session — display session info via direct SQLite reads.\n *\n * Opens the database directly (WAL mode allows concurrent reads).\n * Does NOT require the daemon to be running.\n */\n\nimport { listSessions, getSession } from '@myco/db/queries/sessions.js';\nimport { initVaultDb } from './shared.js';\n\n// ---------------------------------------------------------------------------\n// Command\n// ---------------------------------------------------------------------------\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const idOrLatest = args[0];\n\n const cleanup = initVaultDb(vaultDir);\n try {\n const sessions = listSessions({ limit: 100 });\n if (sessions.length === 0) {\n console.log('No sessions found');\n return;\n }\n\n // Resolve target session ID\n let targetId: string;\n if (!idOrLatest || idOrLatest === 'latest') {\n targetId = sessions[0].id;\n } else {\n const match = sessions.find((s) => s.id.includes(idOrLatest));\n if (!match) {\n console.error(`Session not found: ${idOrLatest}`);\n console.log('Available:', sessions.map((s) => s.id.slice(0, 12)).join(', '));\n return;\n }\n targetId = match.id;\n }\n\n // Fetch full session detail\n const target = getSession(targetId);\n if (!target) {\n console.error(`Failed to fetch session: ${targetId}`);\n return;\n }\n\n console.log(`Session: ${target.id}`);\n console.log(`Status: ${target.status}`);\n if (target.title) console.log(`Title: ${target.title}`);\n if (target.branch) console.log(`Branch: ${target.branch}`);\n if (target.user) console.log(`User: ${target.user}`);\n console.log(`Started: ${new Date(target.started_at * 1000).toISOString()}`);\n if (target.ended_at) console.log(`Ended: ${new Date(target.ended_at * 1000).toISOString()}`);\n if (target.prompt_count) console.log(`Prompts: ${target.prompt_count}`);\n if (target.tool_count) console.log(`Tools: ${target.tool_count}`);\n if (target.summary) console.log(`\\nSummary:\\n${target.summary}`);\n } catch (err) {\n console.error('Failed to read vault database:', (err as Error).message);\n process.exit(1);\n } finally {\n cleanup();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAcA,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,aAAa,KAAK,CAAC;AAEzB,QAAM,UAAU,YAAY,QAAQ;AACpC,MAAI;AACF,UAAM,WAAW,aAAa,EAAE,OAAO,IAAI,CAAC;AAC5C,QAAI,SAAS,WAAW,GAAG;AACzB,cAAQ,IAAI,mBAAmB;AAC/B;AAAA,IACF;AAGA,QAAI;AACJ,QAAI,CAAC,cAAc,eAAe,UAAU;AAC1C,iBAAW,SAAS,CAAC,EAAE;AAAA,IACzB,OAAO;AACL,YAAM,QAAQ,SAAS,KAAK,CAAC,MAAM,EAAE,GAAG,SAAS,UAAU,CAAC;AAC5D,UAAI,CAAC,OAAO;AACV,gBAAQ,MAAM,sBAAsB,UAAU,EAAE;AAChD,gBAAQ,IAAI,cAAc,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AAC3E;AAAA,MACF;AACA,iBAAW,MAAM;AAAA,IACnB;AAGA,UAAM,SAAS,WAAW,QAAQ;AAClC,QAAI,CAAC,QAAQ;AACX,cAAQ,MAAM,4BAA4B,QAAQ,EAAE;AACpD;AAAA,IACF;AAEA,YAAQ,IAAI,YAAY,OAAO,EAAE,EAAE;AACnC,YAAQ,IAAI,YAAY,OAAO,MAAM,EAAE;AACvC,QAAI,OAAO,MAAO,SAAQ,IAAI,YAAY,OAAO,KAAK,EAAE;AACxD,QAAI,OAAO,OAAQ,SAAQ,IAAI,YAAY,OAAO,MAAM,EAAE;AAC1D,QAAI,OAAO,KAAM,SAAQ,IAAI,YAAY,OAAO,IAAI,EAAE;AACtD,YAAQ,IAAI,YAAY,IAAI,KAAK,OAAO,aAAa,GAAI,EAAE,YAAY,CAAC,EAAE;AAC1E,QAAI,OAAO,SAAU,SAAQ,IAAI,YAAY,IAAI,KAAK,OAAO,WAAW,GAAI,EAAE,YAAY,CAAC,EAAE;AAC7F,QAAI,OAAO,aAAc,SAAQ,IAAI,YAAY,OAAO,YAAY,EAAE;AACtE,QAAI,OAAO,WAAY,SAAQ,IAAI,YAAY,OAAO,UAAU,EAAE;AAClE,QAAI,OAAO,QAAS,SAAQ,IAAI;AAAA;AAAA,EAAe,OAAO,OAAO,EAAE;AAAA,EACjE,SAAS,KAAK;AACZ,YAAQ,MAAM,kCAAmC,IAAc,OAAO;AACtE,YAAQ,KAAK,CAAC;AAAA,EAChB,UAAE;AACA,YAAQ;AAAA,EACV;AACF;","names":[]}
@@ -2,17 +2,18 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  normalizeHookInput,
4
4
  readStdin
5
- } from "./chunk-WKNAKQKA.js";
5
+ } from "./chunk-DCSGJ7W4.js";
6
+ import "./chunk-ZXZPJJN3.js";
6
7
  import {
7
8
  resolveVaultDir
8
- } from "./chunk-5ZT2Q6P5.js";
9
+ } from "./chunk-CUDIZJY7.js";
9
10
  import {
10
11
  DaemonClient
11
- } from "./chunk-QH5HS54N.js";
12
- import "./chunk-ST2D3SGM.js";
13
- import "./chunk-UVKQ62II.js";
12
+ } from "./chunk-UOQQENDW.js";
13
+ import "./chunk-ACQ2AIEM.js";
14
+ import "./chunk-NGROSFOH.js";
14
15
  import "./chunk-LPUQPDC2.js";
15
- import "./chunk-I54KLC6H.js";
16
+ import "./chunk-FLLBJLHM.js";
16
17
  import "./chunk-UUHLLQXO.js";
17
18
  import "./chunk-6LQIMRTC.js";
18
19
  import "./chunk-ODXLRR4U.js";
@@ -40,4 +41,4 @@ async function main() {
40
41
  export {
41
42
  main
42
43
  };
43
- //# sourceMappingURL=session-end-4V4VHAOQ.js.map
44
+ //# sourceMappingURL=session-end-4WRTIBVQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/session-end.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const { sessionId } = normalizeHookInput(rawInput);\n\n const client = new DaemonClient(VAULT_DIR);\n if (sessionId) {\n await client.post('/sessions/unregister', { session_id: sessionId });\n }\n } catch (error) {\n process.stderr.write(`[myco] session-end error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,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,EAAE,UAAU,IAAI,mBAAmB,QAAQ;AAEjD,UAAM,SAAS,IAAI,aAAa,SAAS;AACzC,QAAI,WAAW;AACb,YAAM,OAAO,KAAK,wBAAwB,EAAE,YAAY,UAAU,CAAC;AAAA,IACrE;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,6BAA8B,MAAgB,OAAO;AAAA,CAAI;AAAA,EAChF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/session-end.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const { sessionId } = normalizeHookInput(rawInput);\n\n const client = new DaemonClient(VAULT_DIR);\n if (sessionId) {\n await client.post('/sessions/unregister', { session_id: sessionId });\n }\n } catch (error) {\n process.stderr.write(`[myco] session-end error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,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,EAAE,UAAU,IAAI,mBAAmB,QAAQ;AAEjD,UAAM,SAAS,IAAI,aAAa,SAAS;AACzC,QAAI,WAAW;AACb,YAAM,OAAO,KAAK,wBAAwB,EAAE,YAAY,UAAU,CAAC;AAAA,IACrE;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,6BAA8B,MAAgB,OAAO;AAAA,CAAI;AAAA,EAChF;AACF;","names":[]}
@@ -1,21 +1,20 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  listSpores
4
- } from "./chunk-FGKCE5AE.js";
4
+ } from "./chunk-4YFKBL3F.js";
5
5
  import {
6
6
  listSessions
7
- } from "./chunk-Q6OEZM3S.js";
8
- import "./chunk-AULBWINA.js";
7
+ } from "./chunk-EVDQKYCG.js";
9
8
  import {
10
- evaluateSessionStartRules,
9
+ evaluateSessionCaptureRules,
11
10
  readTranscriptMeta
12
- } from "./chunk-44PZCAYS.js";
11
+ } from "./chunk-XL75KZGI.js";
13
12
  import {
14
13
  createSchema
15
- } from "./chunk-6DDRJQ4X.js";
14
+ } from "./chunk-MYOZLMB2.js";
16
15
  import {
17
16
  loadConfig
18
- } from "./chunk-NKQZ73LL.js";
17
+ } from "./chunk-SRXTSI25.js";
19
18
  import {
20
19
  getDatabase,
21
20
  initDatabase,
@@ -24,24 +23,25 @@ import {
24
23
  import {
25
24
  normalizeHookInput,
26
25
  readStdin
27
- } from "./chunk-WKNAKQKA.js";
26
+ } from "./chunk-DCSGJ7W4.js";
27
+ import "./chunk-ZXZPJJN3.js";
28
28
  import {
29
29
  resolveVaultDir
30
- } from "./chunk-5ZT2Q6P5.js";
30
+ } from "./chunk-CUDIZJY7.js";
31
31
  import {
32
32
  DaemonClient
33
- } from "./chunk-QH5HS54N.js";
34
- import "./chunk-ST2D3SGM.js";
33
+ } from "./chunk-UOQQENDW.js";
34
+ import "./chunk-ACQ2AIEM.js";
35
35
  import {
36
36
  loadManifests
37
- } from "./chunk-UVKQ62II.js";
37
+ } from "./chunk-NGROSFOH.js";
38
38
  import "./chunk-LPUQPDC2.js";
39
39
  import {
40
40
  CONTEXT_SESSION_PREVIEW_CHARS,
41
41
  CONTEXT_SPORE_PREVIEW_CHARS,
42
42
  EXCLUDED_SPORE_STATUSES,
43
43
  estimateTokens
44
- } from "./chunk-I54KLC6H.js";
44
+ } from "./chunk-FLLBJLHM.js";
45
45
  import "./chunk-UUHLLQXO.js";
46
46
  import "./chunk-6LQIMRTC.js";
47
47
  import "./chunk-ODXLRR4U.js";
@@ -140,7 +140,7 @@ async function main() {
140
140
  const rawInput = JSON.parse(await readStdin());
141
141
  const { sessionId, agent, transcriptPath } = normalizeHookInput(rawInput);
142
142
  const transcriptMeta = transcriptPath ? readTranscriptMeta(transcriptPath) : void 0;
143
- const decision = evaluateSessionStartRules(loadManifests(), agent, {
143
+ const decision = evaluateSessionCaptureRules(loadManifests(), agent, {
144
144
  transcriptPath,
145
145
  transcriptMeta: transcriptMeta ?? void 0
146
146
  });
@@ -186,4 +186,4 @@ async function main() {
186
186
  export {
187
187
  main
188
188
  };
189
- //# sourceMappingURL=session-start-K6ESRZU7.js.map
189
+ //# sourceMappingURL=session-start-HRWTZXQR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/context/injector.ts","../src/hooks/session-start.ts"],"sourcesContent":["/**\n * Context injector — assembles context from SQLite for hook injection.\n *\n * Queries sessions and spores from SQLite. For prompt-submit context,\n * semantic search is deferred to Phase 2 (requires daemon vector store).\n * If no data exists (zero-config), returns empty context gracefully.\n */\n\nimport { getDatabase } from '@myco/db/client.js';\nimport { listSessions } from '@myco/db/queries/sessions.js';\nimport { listSpores } from '@myco/db/queries/spores.js';\nimport type { MycoConfig } from '@myco/config/schema.js';\nimport {\n estimateTokens,\n CONTEXT_SESSION_PREVIEW_CHARS,\n CONTEXT_SPORE_PREVIEW_CHARS,\n PROMPT_CONTEXT_MIN_LENGTH,\n EXCLUDED_SPORE_STATUSES,\n} from '@myco/constants.js';\n\n// ---------------------------------------------------------------------------\n// Constants\n// ---------------------------------------------------------------------------\n\n/** Max recent sessions to include in context. */\nconst CONTEXT_SESSION_LIMIT = 10;\n\n/** Max sessions displayed after scoring. */\nconst CONTEXT_SESSION_DISPLAY_LIMIT = 5;\n\n/** Max spores to fetch for scoring. */\nconst CONTEXT_SPORE_FETCH_LIMIT = 20;\n\n/** Max spores displayed after scoring. */\nconst CONTEXT_SPORE_DISPLAY_LIMIT = 5;\n\n/** Default token budget for sessions layer. */\nconst DEFAULT_SESSIONS_BUDGET = 500;\n\n/** Default token budget for spores layer. */\nconst DEFAULT_SPORES_BUDGET = 300;\n\n/** Default token budget for team layer. */\nconst DEFAULT_TEAM_BUDGET = 200;\n\n/** Default total context max tokens. */\nconst DEFAULT_CONTEXT_MAX_TOKENS = 1200;\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ninterface InjectionContext {\n branch?: string;\n}\n\ninterface InjectedContext {\n text: string;\n tokenEstimate: number;\n layers: {\n sessions: string;\n spores: string;\n team: string;\n };\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Build injected context from SQLite data.\n *\n * Returns empty context gracefully when no data exists (zero-config behavior).\n */\nexport async function buildInjectedContext(\n _config: MycoConfig,\n context: InjectionContext,\n): Promise<InjectedContext> {\n // Verify database is available — return empty if not\n try {\n getDatabase();\n } catch {\n return emptyContext();\n }\n\n // Fetch sessions and spores in parallel\n const [sessions, spores] = await Promise.all([\n listSessions({ limit: CONTEXT_SESSION_LIMIT }),\n listSpores({ limit: CONTEXT_SPORE_FETCH_LIMIT, status: 'active' }),\n ]);\n\n // Layer 1: Recent sessions\n const sessionsText = formatLayer(\n 'Recent Sessions',\n sessions.slice(0, CONTEXT_SESSION_DISPLAY_LIMIT).map((s) => {\n const title = s.title ?? s.id;\n const summary = (s.summary ?? '').slice(0, CONTEXT_SESSION_PREVIEW_CHARS);\n const branchLabel = s.branch === context.branch ? ' (same branch)' : '';\n return `- **${title}**: ${summary}${branchLabel}`;\n }),\n DEFAULT_SESSIONS_BUDGET,\n );\n\n // Layer 2: Relevant spores (exclude superseded/archived)\n const filteredSpores = spores.filter((s) =>\n !EXCLUDED_SPORE_STATUSES.has(s.status),\n );\n const sporesText = formatLayer(\n 'Relevant Spores',\n filteredSpores.slice(0, CONTEXT_SPORE_DISPLAY_LIMIT).map((s) =>\n `- **${s.id}** (${s.observation_type}): ${s.content.slice(0, CONTEXT_SPORE_PREVIEW_CHARS)}`,\n ),\n DEFAULT_SPORES_BUDGET,\n );\n\n // Layer 3: Team activity (placeholder — populated in Phase 2)\n const teamText = formatLayer('Team Activity', [], DEFAULT_TEAM_BUDGET);\n\n // Enforce total max_tokens budget\n const allLayers = [sessionsText, sporesText, teamText].filter(Boolean);\n const parts: string[] = [];\n let totalTokens = 0;\n\n for (const layer of allLayers) {\n const layerTokens = estimateTokens(layer);\n if (totalTokens + layerTokens > DEFAULT_CONTEXT_MAX_TOKENS) break;\n parts.push(layer);\n totalTokens += layerTokens;\n }\n\n const fullText = parts.join('\\n\\n');\n\n return {\n text: fullText,\n tokenEstimate: totalTokens,\n layers: {\n sessions: sessionsText,\n spores: sporesText,\n team: teamText,\n },\n };\n}\n\n/**\n * Build per-prompt context using semantic search on spores.\n *\n * Semantic search via the daemon's in-process vector store is deferred to\n * Phase 2. For now, returns empty context. The hook (`user-prompt-submit`)\n * routes through the daemon API at `/context/prompt`, which will implement\n * vector search when ready.\n */\nexport async function buildPromptContext(\n prompt: string,\n _config: MycoConfig,\n): Promise<InjectedContext> {\n if (prompt.length < PROMPT_CONTEXT_MIN_LENGTH) {\n return emptyContext();\n }\n\n // Per-prompt semantic search deferred to Phase 2 (requires daemon vector store)\n return emptyContext();\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction emptyContext(): InjectedContext {\n return {\n text: '',\n tokenEstimate: 0,\n layers: { sessions: '', spores: '', team: '' },\n };\n}\n\nfunction formatLayer(heading: string, items: string[], budget: number): string {\n if (items.length === 0) return '';\n\n let text = `### ${heading}\\n`;\n let currentTokens = estimateTokens(text);\n\n for (const item of items) {\n const itemTokens = estimateTokens(item);\n if (currentTokens + itemTokens > budget) break;\n text += item + '\\n';\n currentTokens += itemTokens;\n }\n\n return text.trim();\n}\n","import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { evaluateSessionCaptureRules } from './capture-rules.js';\nimport { readTranscriptMeta } from './transcript-meta.js';\nimport { loadManifests } from '../symbionts/detect.js';\nimport { loadConfig } from '../config/loader.js';\nimport { buildInjectedContext } from '../context/injector.js';\nimport { initDatabase, vaultDbPath } from '../db/client.js';\nimport { createSchema } from '../db/schema.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport { execFileSync } from 'node:child_process';\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 { sessionId, agent, transcriptPath } = normalizeHookInput(rawInput);\n\n // Apply session_start capture rules BEFORE registering the session.\n // For Codex ephemeral sub-invocations (title generation, etc.) this\n // structural drop prevents the phantom row from ever being created,\n // rather than creating it and cascade-deleting at user_prompt time.\n // Read the transcript's session_meta for rules that inspect it\n // (e.g., detecting sub-agent thread spawns via source.subagent).\n const transcriptMeta = transcriptPath ? readTranscriptMeta(transcriptPath) : undefined;\n const decision = evaluateSessionCaptureRules(loadManifests(), agent, {\n transcriptPath,\n transcriptMeta: transcriptMeta ?? undefined,\n });\n if (decision.action === 'drop') {\n process.stderr.write(`[myco] session-start: dropped (${decision.reason ?? 'rule'})\\n`);\n return;\n }\n\n const config = loadConfig(VAULT_DIR);\n const client = new DaemonClient(VAULT_DIR);\n const healthy = await client.ensureRunning();\n\n let branch: string | undefined;\n try {\n branch = execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { encoding: 'utf-8' }).trim();\n } catch { /* not a git repo */ }\n\n if (healthy) {\n await client.post('/sessions/register', {\n session_id: sessionId,\n agent,\n branch,\n started_at: new Date().toISOString(),\n });\n\n const contextResult = await client.post('/context', { session_id: sessionId, branch });\n\n if (contextResult.ok && contextResult.data?.text) {\n if (contextResult.data.source === 'digest') {\n process.stderr.write(`[myco] Injecting digest extract (tier ${contextResult.data.tier})\\n`);\n }\n process.stdout.write(contextResult.data.text);\n return;\n }\n }\n\n // Degraded: local SQLite context only\n const db = initDatabase(vaultDbPath(VAULT_DIR));\n createSchema(db);\n const injected = await buildInjectedContext(config, { branch });\n if (injected.text) process.stdout.write(injected.text);\n } catch (error) {\n process.stderr.write(`[myco] session-start error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,22 +1,23 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  withEmbedding
4
- } from "./chunk-GFR542SM.js";
5
- import "./chunk-NCBLB2C6.js";
4
+ } from "./chunk-US4LNCAT.js";
5
+ import "./chunk-YSNIAJ5D.js";
6
6
  import {
7
7
  parseStringFlag
8
8
  } from "./chunk-SAKJMNSR.js";
9
- import "./chunk-TMNFCUAD.js";
10
- import "./chunk-PMT2LSTQ.js";
9
+ import "./chunk-4LCIKVDM.js";
10
+ import "./chunk-FMRZ26U5.js";
11
11
  import {
12
12
  loadConfig,
13
13
  updateConfig
14
- } from "./chunk-NKQZ73LL.js";
14
+ } from "./chunk-SRXTSI25.js";
15
15
  import "./chunk-MYX5NCRH.js";
16
- import "./chunk-QH5HS54N.js";
17
- import "./chunk-ST2D3SGM.js";
16
+ import "./chunk-ZXZPJJN3.js";
17
+ import "./chunk-UOQQENDW.js";
18
+ import "./chunk-ACQ2AIEM.js";
18
19
  import "./chunk-LPUQPDC2.js";
19
- import "./chunk-I54KLC6H.js";
20
+ import "./chunk-FLLBJLHM.js";
20
21
  import "./chunk-UUHLLQXO.js";
21
22
  import "./chunk-6LQIMRTC.js";
22
23
  import "./chunk-ODXLRR4U.js";
@@ -79,4 +80,4 @@ async function run(args, vaultDir) {
79
80
  export {
80
81
  run
81
82
  };
82
- //# sourceMappingURL=setup-llm-QUWOSB7A.js.map
83
+ //# sourceMappingURL=setup-llm-HFWSBUAF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/setup-llm.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadConfig, updateConfig } from '../config/loader.js';\nimport { withEmbedding } from '../config/updates.js';\nimport { parseStringFlag } from './shared.js';\nimport type { EmbeddingProviderConfig } from '../config/schema.js';\n\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\nconst USAGE = `Usage: myco setup-llm [options]\n\nConfigure embedding provider settings.\n\nIn v3, LLM configuration is managed by the Myco agent (Claude Agent SDK).\nOnly embedding settings are user-configurable.\n\nOptions:\n --embedding-provider <name> Embedding provider (ollama, openai-compatible)\n --embedding-model <name> Embedding model name\n --embedding-url <url> Embedding provider base URL\n --show Show current settings and exit\n`;\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n // Show current settings\n if (args.includes('--show')) {\n const config = loadConfig(vaultDir);\n console.log(JSON.stringify(config.embedding, null, 2));\n return;\n }\n\n // No flags = show usage\n if (args.length === 0) {\n console.log(USAGE);\n return;\n }\n\n // Warn about removed LLM flags\n const llmProvider = parseStringFlag(args, '--llm-provider');\n const llmModel = parseStringFlag(args, '--llm-model');\n const llmUrl = parseStringFlag(args, '--llm-url');\n const llmContextWindow = parseStringFlag(args, '--llm-context-window');\n const llmMaxTokens = parseStringFlag(args, '--llm-max-tokens');\n if (llmProvider || llmModel || llmUrl || llmContextWindow || llmMaxTokens) {\n console.log('Note: LLM configuration is managed by the Myco agent. LLM flags are ignored.');\n }\n\n // Build partial embedding update from flags\n const updates: Partial<EmbeddingProviderConfig> = {};\n\n const embeddingProvider = parseStringFlag(args, '--embedding-provider');\n if (embeddingProvider !== undefined) updates.provider = embeddingProvider as EmbeddingProviderConfig['provider'];\n\n const embeddingModel = parseStringFlag(args, '--embedding-model');\n if (embeddingModel !== undefined) updates.model = embeddingModel;\n\n const embeddingUrl = parseStringFlag(args, '--embedding-url');\n if (embeddingUrl !== undefined) updates.base_url = embeddingUrl;\n\n // Apply the update through the single write gate\n const updated = updateConfig(vaultDir, (config) => withEmbedding(config, updates));\n\n console.log('Embedding configuration updated.');\n console.log(JSON.stringify(updated.embedding, null, 2));\n\n if (embeddingModel !== undefined) {\n console.log('\\nWarning: changing the embedding model requires a full vector index rebuild.');\n console.log('Run: myco rebuild');\n }\n\n if (fs.existsSync(path.join(vaultDir, DAEMON_STATE_FILENAME))) {\n console.log('\\nNote: restart the daemon for changes to take effect (myco restart)');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAMjB,IAAM,wBAAwB;AAE9B,IAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcd,eAAsB,IAAI,MAAgB,UAAiC;AAEzE,MAAI,KAAK,SAAS,QAAQ,GAAG;AAC3B,UAAM,SAAS,WAAW,QAAQ;AAClC,YAAQ,IAAI,KAAK,UAAU,OAAO,WAAW,MAAM,CAAC,CAAC;AACrD;AAAA,EACF;AAGA,MAAI,KAAK,WAAW,GAAG;AACrB,YAAQ,IAAI,KAAK;AACjB;AAAA,EACF;AAGA,QAAM,cAAc,gBAAgB,MAAM,gBAAgB;AAC1D,QAAM,WAAW,gBAAgB,MAAM,aAAa;AACpD,QAAM,SAAS,gBAAgB,MAAM,WAAW;AAChD,QAAM,mBAAmB,gBAAgB,MAAM,sBAAsB;AACrE,QAAM,eAAe,gBAAgB,MAAM,kBAAkB;AAC7D,MAAI,eAAe,YAAY,UAAU,oBAAoB,cAAc;AACzE,YAAQ,IAAI,8EAA8E;AAAA,EAC5F;AAGA,QAAM,UAA4C,CAAC;AAEnD,QAAM,oBAAoB,gBAAgB,MAAM,sBAAsB;AACtE,MAAI,sBAAsB,OAAW,SAAQ,WAAW;AAExD,QAAM,iBAAiB,gBAAgB,MAAM,mBAAmB;AAChE,MAAI,mBAAmB,OAAW,SAAQ,QAAQ;AAElD,QAAM,eAAe,gBAAgB,MAAM,iBAAiB;AAC5D,MAAI,iBAAiB,OAAW,SAAQ,WAAW;AAGnD,QAAM,UAAU,aAAa,UAAU,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC;AAEjF,UAAQ,IAAI,kCAAkC;AAC9C,UAAQ,IAAI,KAAK,UAAU,QAAQ,WAAW,MAAM,CAAC,CAAC;AAEtD,MAAI,mBAAmB,QAAW;AAChC,YAAQ,IAAI,+EAA+E;AAC3F,YAAQ,IAAI,mBAAmB;AAAA,EACjC;AAEA,MAAI,GAAG,WAAW,KAAK,KAAK,UAAU,qBAAqB,CAAC,GAAG;AAC7D,YAAQ,IAAI,sEAAsE;AAAA,EACpF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/cli/setup-llm.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { loadConfig, updateConfig } from '../config/loader.js';\nimport { withEmbedding } from '../config/updates.js';\nimport { parseStringFlag } from './shared.js';\nimport type { EmbeddingProviderConfig } from '../config/schema.js';\n\nconst DAEMON_STATE_FILENAME = 'daemon.json';\n\nconst USAGE = `Usage: myco setup-llm [options]\n\nConfigure embedding provider settings.\n\nIn v3, LLM configuration is managed by the Myco agent (Claude Agent SDK).\nOnly embedding settings are user-configurable.\n\nOptions:\n --embedding-provider <name> Embedding provider (ollama, openai-compatible)\n --embedding-model <name> Embedding model name\n --embedding-url <url> Embedding provider base URL\n --show Show current settings and exit\n`;\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n // Show current settings\n if (args.includes('--show')) {\n const config = loadConfig(vaultDir);\n console.log(JSON.stringify(config.embedding, null, 2));\n return;\n }\n\n // No flags = show usage\n if (args.length === 0) {\n console.log(USAGE);\n return;\n }\n\n // Warn about removed LLM flags\n const llmProvider = parseStringFlag(args, '--llm-provider');\n const llmModel = parseStringFlag(args, '--llm-model');\n const llmUrl = parseStringFlag(args, '--llm-url');\n const llmContextWindow = parseStringFlag(args, '--llm-context-window');\n const llmMaxTokens = parseStringFlag(args, '--llm-max-tokens');\n if (llmProvider || llmModel || llmUrl || llmContextWindow || llmMaxTokens) {\n console.log('Note: LLM configuration is managed by the Myco agent. LLM flags are ignored.');\n }\n\n // Build partial embedding update from flags\n const updates: Partial<EmbeddingProviderConfig> = {};\n\n const embeddingProvider = parseStringFlag(args, '--embedding-provider');\n if (embeddingProvider !== undefined) updates.provider = embeddingProvider as EmbeddingProviderConfig['provider'];\n\n const embeddingModel = parseStringFlag(args, '--embedding-model');\n if (embeddingModel !== undefined) updates.model = embeddingModel;\n\n const embeddingUrl = parseStringFlag(args, '--embedding-url');\n if (embeddingUrl !== undefined) updates.base_url = embeddingUrl;\n\n // Apply the update through the single write gate\n const updated = updateConfig(vaultDir, (config) => withEmbedding(config, updates));\n\n console.log('Embedding configuration updated.');\n console.log(JSON.stringify(updated.embedding, null, 2));\n\n if (embeddingModel !== undefined) {\n console.log('\\nWarning: changing the embedding model requires a full vector index rebuild.');\n console.log('Run: myco rebuild');\n }\n\n if (fs.existsSync(path.join(vaultDir, DAEMON_STATE_FILENAME))) {\n console.log('\\nNote: restart the daemon for changes to take effect (myco restart)');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAMjB,IAAM,wBAAwB;AAE9B,IAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcd,eAAsB,IAAI,MAAgB,UAAiC;AAEzE,MAAI,KAAK,SAAS,QAAQ,GAAG;AAC3B,UAAM,SAAS,WAAW,QAAQ;AAClC,YAAQ,IAAI,KAAK,UAAU,OAAO,WAAW,MAAM,CAAC,CAAC;AACrD;AAAA,EACF;AAGA,MAAI,KAAK,WAAW,GAAG;AACrB,YAAQ,IAAI,KAAK;AACjB;AAAA,EACF;AAGA,QAAM,cAAc,gBAAgB,MAAM,gBAAgB;AAC1D,QAAM,WAAW,gBAAgB,MAAM,aAAa;AACpD,QAAM,SAAS,gBAAgB,MAAM,WAAW;AAChD,QAAM,mBAAmB,gBAAgB,MAAM,sBAAsB;AACrE,QAAM,eAAe,gBAAgB,MAAM,kBAAkB;AAC7D,MAAI,eAAe,YAAY,UAAU,oBAAoB,cAAc;AACzE,YAAQ,IAAI,8EAA8E;AAAA,EAC5F;AAGA,QAAM,UAA4C,CAAC;AAEnD,QAAM,oBAAoB,gBAAgB,MAAM,sBAAsB;AACtE,MAAI,sBAAsB,OAAW,SAAQ,WAAW;AAExD,QAAM,iBAAiB,gBAAgB,MAAM,mBAAmB;AAChE,MAAI,mBAAmB,OAAW,SAAQ,QAAQ;AAElD,QAAM,eAAe,gBAAgB,MAAM,iBAAiB;AAC5D,MAAI,iBAAiB,OAAW,SAAQ,WAAW;AAGnD,QAAM,UAAU,aAAa,UAAU,CAAC,WAAW,cAAc,QAAQ,OAAO,CAAC;AAEjF,UAAQ,IAAI,kCAAkC;AAC9C,UAAQ,IAAI,KAAK,UAAU,QAAQ,WAAW,MAAM,CAAC,CAAC;AAEtD,MAAI,mBAAmB,QAAW;AAChC,YAAQ,IAAI,+EAA+E;AAC3F,YAAQ,IAAI,mBAAmB;AAAA,EACjC;AAEA,MAAI,GAAG,WAAW,KAAK,KAAK,UAAU,qBAAqB,CAAC,GAAG;AAC7D,YAAQ,IAAI,sEAAsE;AAAA,EACpF;AACF;","names":[]}
package/dist/src/cli.js CHANGED
@@ -2,5 +2,5 @@
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
3
 
4
4
  // src/entries/cli.ts
5
- await import("../cli-LCTXK7N6.js");
5
+ await import("../cli-AHTINAHY.js");
6
6
  //# sourceMappingURL=cli.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/daemon.ts
4
- var { main } = await import("../../main-RPJSS7PT.js");
4
+ var { main } = await import("../../main-5S4MDCIO.js");
5
5
  await main();
6
6
  //# sourceMappingURL=main.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/post-tool-use.ts
4
- var { main } = await import("../../post-tool-use-FGQE26GJ.js");
4
+ var { main } = await import("../../post-tool-use-LXL6NXDS.js");
5
5
  await main();
6
6
  //# sourceMappingURL=post-tool-use.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-end.ts
4
- var { main } = await import("../../session-end-4V4VHAOQ.js");
4
+ var { main } = await import("../../session-end-4WRTIBVQ.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-end.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/session-start.ts
4
- var { main } = await import("../../session-start-K6ESRZU7.js");
4
+ var { main } = await import("../../session-start-HRWTZXQR.js");
5
5
  await main();
6
6
  //# sourceMappingURL=session-start.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/stop.ts
4
- var { main } = await import("../../stop-2COOWEYG.js");
4
+ var { main } = await import("../../stop-R2GDHMRA.js");
5
5
  await main();
6
6
  //# sourceMappingURL=stop.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/user-prompt-submit.ts
4
- var { main } = await import("../../user-prompt-submit-KATLHAKA.js");
4
+ var { main } = await import("../../user-prompt-submit-YELSR6XI.js");
5
5
  await main();
6
6
  //# sourceMappingURL=user-prompt-submit.js.map
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
 
3
3
  // src/entries/mcp-server.ts
4
- var { main } = await import("../../server-PZCWYWZL.js");
4
+ var { main } = await import("../../server-2N23P6F2.js");
5
5
  await main();
6
6
  //# sourceMappingURL=server.js.map
@@ -79,6 +79,33 @@ capture:
79
79
  action: drop
80
80
  reason: subagent-thread-spawn
81
81
 
82
+ # Layer 5 — non-interactive exec filter (structural).
83
+ #
84
+ # `codex exec` writes a real rollout transcript, but it is a
85
+ # programmatic validation/automation surface rather than the user's
86
+ # interactive Codex conversation. Those transcripts have:
87
+ # "source": "exec"
88
+ # in session_meta. Treat them as junk capture for the interactive
89
+ # session archive and drop them before materializing a session row.
90
+ - event: session_start
91
+ scope: this_agent
92
+ when:
93
+ transcript_meta_field_equals:
94
+ path: source
95
+ value: exec
96
+ action: drop
97
+ reason: noninteractive-exec
98
+
99
+ # Layer 6 — safety net for exec prompts that slip past SessionStart.
100
+ - event: user_prompt
101
+ scope: this_agent
102
+ when:
103
+ transcript_meta_field_equals:
104
+ path: source
105
+ value: exec
106
+ action: drop
107
+ reason: noninteractive-exec
108
+
82
109
  # Codex Desktop wraps user prompts with a file-mention preamble when
83
110
  # screenshots or files are attached:
84
111
  # "# Files mentioned by the user:\n## <filename>: <path>\n## My request for Codex:\n<actual prompt>"
@@ -100,6 +127,7 @@ registration:
100
127
  hooksTarget: .codex/hooks.json
101
128
  mcpTarget: .codex/config.toml
102
129
  mcpFormat: toml
130
+ mcpCwd: "."
103
131
  skillsTarget: .agents/skills
104
132
  settingsTarget: .codex/config.toml
105
133
  settingsFormat: toml
@@ -1,19 +1,19 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  gatherStats
4
- } from "./chunk-VLGBWOBY.js";
4
+ } from "./chunk-P3DN5EWW.js";
5
5
  import {
6
6
  initVaultDb
7
- } from "./chunk-NCBLB2C6.js";
7
+ } from "./chunk-YSNIAJ5D.js";
8
8
  import "./chunk-SAKJMNSR.js";
9
- import "./chunk-TMNFCUAD.js";
10
- import "./chunk-PMT2LSTQ.js";
11
- import "./chunk-NKQZ73LL.js";
9
+ import "./chunk-4LCIKVDM.js";
10
+ import "./chunk-FMRZ26U5.js";
11
+ import "./chunk-SRXTSI25.js";
12
12
  import "./chunk-MYX5NCRH.js";
13
- import "./chunk-QH5HS54N.js";
14
- import "./chunk-ST2D3SGM.js";
13
+ import "./chunk-UOQQENDW.js";
14
+ import "./chunk-ACQ2AIEM.js";
15
15
  import "./chunk-LPUQPDC2.js";
16
- import "./chunk-I54KLC6H.js";
16
+ import "./chunk-FLLBJLHM.js";
17
17
  import "./chunk-UUHLLQXO.js";
18
18
  import "./chunk-6LQIMRTC.js";
19
19
  import "./chunk-ODXLRR4U.js";
@@ -92,4 +92,4 @@ function formatUptime(seconds) {
92
92
  export {
93
93
  run
94
94
  };
95
- //# sourceMappingURL=stats-TYOZAOP2.js.map
95
+ //# sourceMappingURL=stats-7A4CJ4MS.js.map
@@ -2,17 +2,18 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  normalizeHookInput,
4
4
  readStdin
5
- } from "./chunk-WKNAKQKA.js";
5
+ } from "./chunk-DCSGJ7W4.js";
6
+ import "./chunk-ZXZPJJN3.js";
6
7
  import {
7
8
  resolveVaultDir
8
- } from "./chunk-5ZT2Q6P5.js";
9
+ } from "./chunk-CUDIZJY7.js";
9
10
  import {
10
11
  DaemonClient
11
- } from "./chunk-QH5HS54N.js";
12
- import "./chunk-ST2D3SGM.js";
13
- import "./chunk-UVKQ62II.js";
12
+ } from "./chunk-UOQQENDW.js";
13
+ import "./chunk-ACQ2AIEM.js";
14
+ import "./chunk-NGROSFOH.js";
14
15
  import "./chunk-LPUQPDC2.js";
15
- import "./chunk-I54KLC6H.js";
16
+ import "./chunk-FLLBJLHM.js";
16
17
  import "./chunk-UUHLLQXO.js";
17
18
  import "./chunk-6LQIMRTC.js";
18
19
  import "./chunk-ODXLRR4U.js";
@@ -45,4 +46,4 @@ async function main() {
45
46
  export {
46
47
  main
47
48
  };
48
- //# sourceMappingURL=stop-2COOWEYG.js.map
49
+ //# sourceMappingURL=stop-R2GDHMRA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/stop.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const input = normalizeHookInput(rawInput);\n if (!input.sessionId) return;\n\n const client = new DaemonClient(VAULT_DIR);\n\n await client.ensureRunning({ checkStale: false });\n\n // Pass transcript_path and last_assistant_message from the active agent.\n // These are provided by the hook system and eliminate the need to\n // scan directories or mine the transcript for the AI response.\n await client.post('/events/stop', {\n session_id: input.sessionId,\n agent: input.agent,\n transcript_path: input.transcriptPath,\n last_assistant_message: input.lastResponse,\n });\n } catch (error) {\n process.stderr.write(`[myco] stop error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,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,QAAI,CAAC,MAAM,UAAW;AAEtB,UAAM,SAAS,IAAI,aAAa,SAAS;AAEzC,UAAM,OAAO,cAAc,EAAE,YAAY,MAAM,CAAC;AAKhD,UAAM,OAAO,KAAK,gBAAgB;AAAA,MAChC,YAAY,MAAM;AAAA,MAClB,OAAO,MAAM;AAAA,MACb,iBAAiB,MAAM;AAAA,MACvB,wBAAwB,MAAM;AAAA,IAChC,CAAC;AAAA,EACH,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,sBAAuB,MAAgB,OAAO;AAAA,CAAI;AAAA,EACzE;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/stop.ts"],"sourcesContent":["import { DaemonClient } from './client.js';\nimport { readStdin } from './read-stdin.js';\nimport { normalizeHookInput } from './normalize.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function main() {\n const VAULT_DIR = resolveVaultDir();\n if (!fs.existsSync(path.join(VAULT_DIR, 'myco.yaml'))) return;\n\n try {\n const rawInput = JSON.parse(await readStdin());\n const input = normalizeHookInput(rawInput);\n if (!input.sessionId) return;\n\n const client = new DaemonClient(VAULT_DIR);\n\n await client.ensureRunning({ checkStale: false });\n\n // Pass transcript_path and last_assistant_message from the active agent.\n // These are provided by the hook system and eliminate the need to\n // scan directories or mine the transcript for the AI response.\n await client.post('/events/stop', {\n session_id: input.sessionId,\n agent: input.agent,\n transcript_path: input.transcriptPath,\n last_assistant_message: input.lastResponse,\n });\n } catch (error) {\n process.stderr.write(`[myco] stop error: ${(error as Error).message}\\n`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,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,QAAI,CAAC,MAAM,UAAW;AAEtB,UAAM,SAAS,IAAI,aAAa,SAAS;AAEzC,UAAM,OAAO,cAAc,EAAE,YAAY,MAAM,CAAC;AAKhD,UAAM,OAAO,KAAK,gBAAgB;AAAA,MAChC,YAAY,MAAM;AAAA,MAClB,OAAO,MAAM;AAAA,MACb,iBAAiB,MAAM;AAAA,MACvB,wBAAwB,MAAM;AAAA,IAChC,CAAC;AAAA,EACH,SAAS,OAAO;AACd,YAAQ,OAAO,MAAM,sBAAuB,MAAgB,OAAO;AAAA,CAAI;AAAA,EACzE;AACF;","names":[]}
@@ -1,15 +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-W3JUH5S3.js";
4
+ } from "./chunk-POR75WM6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-WKNAKQKA.js";
7
- import "./chunk-5ZT2Q6P5.js";
8
- import "./chunk-QH5HS54N.js";
9
- import "./chunk-ST2D3SGM.js";
10
- import "./chunk-UVKQ62II.js";
6
+ import "./chunk-DCSGJ7W4.js";
7
+ import "./chunk-ZXZPJJN3.js";
8
+ import "./chunk-CUDIZJY7.js";
9
+ import "./chunk-UOQQENDW.js";
10
+ import "./chunk-ACQ2AIEM.js";
11
+ import "./chunk-NGROSFOH.js";
11
12
  import "./chunk-LPUQPDC2.js";
12
- import "./chunk-I54KLC6H.js";
13
+ import "./chunk-FLLBJLHM.js";
13
14
  import "./chunk-UUHLLQXO.js";
14
15
  import "./chunk-6LQIMRTC.js";
15
16
  import "./chunk-ODXLRR4U.js";
@@ -27,4 +28,4 @@ async function main() {
27
28
  export {
28
29
  main
29
30
  };
30
- //# sourceMappingURL=stop-failure-UQ33GZLE.js.map
31
+ //# sourceMappingURL=stop-failure-773KR4VZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/stop-failure.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('stop-failure', (input) => ({\n type: 'stop_failure',\n error: input.raw.error,\n error_details: input.raw.error_details,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,gBAAgB,CAAC,WAAW;AAAA,IAC1C,MAAM;AAAA,IACN,OAAO,MAAM,IAAI;AAAA,IACjB,eAAe,MAAM,IAAI;AAAA,EAC3B,EAAE;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/stop-failure.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('stop-failure', (input) => ({\n type: 'stop_failure',\n error: input.raw.error,\n error_details: input.raw.error_details,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,gBAAgB,CAAC,WAAW;AAAA,IAC1C,MAAM;AAAA,IACN,OAAO,MAAM,IAAI;AAAA,IACjB,eAAe,MAAM,IAAI;AAAA,EAC3B,EAAE;AACJ;","names":[]}
@@ -1,15 +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-W3JUH5S3.js";
4
+ } from "./chunk-POR75WM6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-WKNAKQKA.js";
7
- import "./chunk-5ZT2Q6P5.js";
8
- import "./chunk-QH5HS54N.js";
9
- import "./chunk-ST2D3SGM.js";
10
- import "./chunk-UVKQ62II.js";
6
+ import "./chunk-DCSGJ7W4.js";
7
+ import "./chunk-ZXZPJJN3.js";
8
+ import "./chunk-CUDIZJY7.js";
9
+ import "./chunk-UOQQENDW.js";
10
+ import "./chunk-ACQ2AIEM.js";
11
+ import "./chunk-NGROSFOH.js";
11
12
  import "./chunk-LPUQPDC2.js";
12
- import "./chunk-I54KLC6H.js";
13
+ import "./chunk-FLLBJLHM.js";
13
14
  import "./chunk-UUHLLQXO.js";
14
15
  import "./chunk-6LQIMRTC.js";
15
16
  import "./chunk-ODXLRR4U.js";
@@ -27,4 +28,4 @@ async function main() {
27
28
  export {
28
29
  main
29
30
  };
30
- //# sourceMappingURL=subagent-start-YENEY6VF.js.map
31
+ //# sourceMappingURL=subagent-start-IDECNBHW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/subagent-start.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('subagent-start', (input) => ({\n type: 'subagent_start',\n agent_id: input.raw.agent_id,\n agent_type: input.raw.agent_type,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,kBAAkB,CAAC,WAAW;AAAA,IAC5C,MAAM;AAAA,IACN,UAAU,MAAM,IAAI;AAAA,IACpB,YAAY,MAAM,IAAI;AAAA,EACxB,EAAE;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/subagent-start.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('subagent-start', (input) => ({\n type: 'subagent_start',\n agent_id: input.raw.agent_id,\n agent_type: input.raw.agent_type,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,kBAAkB,CAAC,WAAW;AAAA,IAC5C,MAAM;AAAA,IACN,UAAU,MAAM,IAAI;AAAA,IACpB,YAAY,MAAM,IAAI;AAAA,EACxB,EAAE;AACJ;","names":[]}
@@ -1,15 +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-W3JUH5S3.js";
4
+ } from "./chunk-POR75WM6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-WKNAKQKA.js";
7
- import "./chunk-5ZT2Q6P5.js";
8
- import "./chunk-QH5HS54N.js";
9
- import "./chunk-ST2D3SGM.js";
10
- import "./chunk-UVKQ62II.js";
6
+ import "./chunk-DCSGJ7W4.js";
7
+ import "./chunk-ZXZPJJN3.js";
8
+ import "./chunk-CUDIZJY7.js";
9
+ import "./chunk-UOQQENDW.js";
10
+ import "./chunk-ACQ2AIEM.js";
11
+ import "./chunk-NGROSFOH.js";
11
12
  import "./chunk-LPUQPDC2.js";
12
- import "./chunk-I54KLC6H.js";
13
+ import "./chunk-FLLBJLHM.js";
13
14
  import "./chunk-UUHLLQXO.js";
14
15
  import "./chunk-6LQIMRTC.js";
15
16
  import "./chunk-ODXLRR4U.js";
@@ -29,4 +30,4 @@ async function main() {
29
30
  export {
30
31
  main
31
32
  };
32
- //# sourceMappingURL=subagent-stop-W2757YDB.js.map
33
+ //# sourceMappingURL=subagent-stop-3JH7DR2S.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/subagent-stop.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('subagent-stop', (input) => ({\n type: 'subagent_stop',\n agent_id: input.raw.agent_id,\n agent_type: input.raw.agent_type,\n last_assistant_message: input.lastResponse,\n agent_transcript_path: input.raw.agent_transcript_path,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,iBAAiB,CAAC,WAAW;AAAA,IAC3C,MAAM;AAAA,IACN,UAAU,MAAM,IAAI;AAAA,IACpB,YAAY,MAAM,IAAI;AAAA,IACtB,wBAAwB,MAAM;AAAA,IAC9B,uBAAuB,MAAM,IAAI;AAAA,EACnC,EAAE;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/subagent-stop.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('subagent-stop', (input) => ({\n type: 'subagent_stop',\n agent_id: input.raw.agent_id,\n agent_type: input.raw.agent_type,\n last_assistant_message: input.lastResponse,\n agent_transcript_path: input.raw.agent_transcript_path,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,iBAAiB,CAAC,WAAW;AAAA,IAC3C,MAAM;AAAA,IACN,UAAU,MAAM,IAAI;AAAA,IACpB,YAAY,MAAM,IAAI;AAAA,IACtB,wBAAwB,MAAM;AAAA,IAC9B,uBAAuB,MAAM,IAAI;AAAA,EACnC,EAAE;AACJ;","names":[]}
@@ -1,15 +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-W3JUH5S3.js";
4
+ } from "./chunk-POR75WM6.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
- import "./chunk-WKNAKQKA.js";
7
- import "./chunk-5ZT2Q6P5.js";
8
- import "./chunk-QH5HS54N.js";
9
- import "./chunk-ST2D3SGM.js";
10
- import "./chunk-UVKQ62II.js";
6
+ import "./chunk-DCSGJ7W4.js";
7
+ import "./chunk-ZXZPJJN3.js";
8
+ import "./chunk-CUDIZJY7.js";
9
+ import "./chunk-UOQQENDW.js";
10
+ import "./chunk-ACQ2AIEM.js";
11
+ import "./chunk-NGROSFOH.js";
11
12
  import "./chunk-LPUQPDC2.js";
12
- import "./chunk-I54KLC6H.js";
13
+ import "./chunk-FLLBJLHM.js";
13
14
  import "./chunk-UUHLLQXO.js";
14
15
  import "./chunk-6LQIMRTC.js";
15
16
  import "./chunk-ODXLRR4U.js";
@@ -28,4 +29,4 @@ async function main() {
28
29
  export {
29
30
  main
30
31
  };
31
- //# sourceMappingURL=task-completed-KU6GWMWV.js.map
32
+ //# sourceMappingURL=task-completed-AYVHPHDR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/task-completed.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('task-completed', (input) => ({\n type: 'task_completed',\n task_id: input.raw.task_id,\n task_subject: input.raw.task_subject,\n task_description: input.raw.task_description,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,kBAAkB,CAAC,WAAW;AAAA,IAC5C,MAAM;AAAA,IACN,SAAS,MAAM,IAAI;AAAA,IACnB,cAAc,MAAM,IAAI;AAAA,IACxB,kBAAkB,MAAM,IAAI;AAAA,EAC9B,EAAE;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/hooks/task-completed.ts"],"sourcesContent":["import { sendEvent } from './send-event.js';\n\nexport async function main() {\n await sendEvent('task-completed', (input) => ({\n type: 'task_completed',\n task_id: input.raw.task_id,\n task_subject: input.raw.task_subject,\n task_description: input.raw.task_description,\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAEA,eAAsB,OAAO;AAC3B,QAAM,UAAU,kBAAkB,CAAC,WAAW;AAAA,IAC5C,MAAM;AAAA,IACN,SAAS,MAAM,IAAI;AAAA,IACnB,cAAc,MAAM,IAAI;AAAA,IACxB,kBAAkB,MAAM,IAAI;AAAA,EAC9B,EAAE;AACJ;","names":[]}
@@ -4,10 +4,10 @@ import {
4
4
  teamInit,
5
5
  teamUpgrade,
6
6
  upgradeWorker
7
- } from "./chunk-FKBPXCH3.js";
8
- import "./chunk-6DDRJQ4X.js";
9
- import "./chunk-NKQZ73LL.js";
10
- import "./chunk-I54KLC6H.js";
7
+ } from "./chunk-QS5TWZBL.js";
8
+ import "./chunk-MYOZLMB2.js";
9
+ import "./chunk-SRXTSI25.js";
10
+ import "./chunk-FLLBJLHM.js";
11
11
  import "./chunk-UUHLLQXO.js";
12
12
  import "./chunk-6LQIMRTC.js";
13
13
  import "./chunk-ODXLRR4U.js";
@@ -19,4 +19,4 @@ export {
19
19
  teamUpgrade,
20
20
  upgradeWorker
21
21
  };
22
- //# sourceMappingURL=team-SNLC6FZM.js.map
22
+ //# sourceMappingURL=team-3JKF7VAD.js.map