@goondocks/myco 0.20.0 → 0.20.2

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 (117) hide show
  1. package/dist/{agent-run-4HUXVRHW.js → agent-run-X25Q2A6T.js} +6 -6
  2. package/dist/{agent-tasks-JF45ELB6.js → agent-tasks-7B6OFERB.js} +6 -6
  3. package/dist/{chunk-POR75WM6.js → chunk-2PDWCDKY.js} +2 -2
  4. package/dist/{chunk-57O67XVF.js → chunk-6X2ERTQV.js} +2 -2
  5. package/dist/{chunk-4M7EWPIA.js → chunk-CCRGY3QW.js} +4 -3
  6. package/dist/{chunk-4M7EWPIA.js.map → chunk-CCRGY3QW.js.map} +1 -1
  7. package/dist/{chunk-P3DN5EWW.js → chunk-JZGN33AY.js} +5 -5
  8. package/dist/chunk-JZGN33AY.js.map +1 -0
  9. package/dist/{chunk-YSNIAJ5D.js → chunk-KESLPBKV.js} +3 -3
  10. package/dist/{chunk-SRXTSI25.js → chunk-OD4AA7PV.js} +2 -2
  11. package/dist/chunk-OD4AA7PV.js.map +1 -0
  12. package/dist/{chunk-4LCIKVDM.js → chunk-Q36VMZST.js} +4 -4
  13. package/dist/chunk-Q36VMZST.js.map +1 -0
  14. package/dist/{chunk-L6XFAJIF.js → chunk-UYMFCYBF.js} +57 -7
  15. package/dist/chunk-UYMFCYBF.js.map +1 -0
  16. package/dist/{chunk-UOQQENDW.js → chunk-VVNL26WX.js} +2 -2
  17. package/dist/{chunk-QS5TWZBL.js → chunk-XATDZX7U.js} +2 -2
  18. package/dist/{chunk-ACQ2AIEM.js → chunk-XG5RRUYF.js} +2 -2
  19. package/dist/{cli-AHTINAHY.js → cli-GGPWH4UO.js} +38 -38
  20. package/dist/{client-LHENCAV3.js → client-YXQUTXVZ.js} +3 -3
  21. package/dist/{config-XPV5GDE4.js → config-OMCYHG2S.js} +2 -2
  22. package/dist/{doctor-XPCF5HV5.js → doctor-5JXJ36KA.js} +9 -9
  23. package/dist/doctor-5JXJ36KA.js.map +1 -0
  24. package/dist/{executor-ACDHGTRH.js → executor-HWW2QNZQ.js} +10 -10
  25. package/dist/{init-V3KCC36O.js → init-LMYOVZAV.js} +12 -16
  26. package/dist/init-LMYOVZAV.js.map +1 -0
  27. package/dist/{installer-ZNK4JSQA.js → installer-FS257JRZ.js} +3 -3
  28. package/dist/{loader-H7OFASVC.js → loader-CQYTFHEW.js} +2 -2
  29. package/dist/{loader-TSB5M7FD.js → loader-NOMBJUPW.js} +2 -2
  30. package/dist/{main-5S4MDCIO.js → main-YTBVRTBI.js} +234 -115
  31. package/dist/main-YTBVRTBI.js.map +1 -0
  32. package/dist/{open-AB5ULZIB.js → open-HG2DX6RN.js} +6 -6
  33. package/dist/{post-compact-P2B7C7FE.js → post-compact-JSECI44W.js} +4 -4
  34. package/dist/{post-tool-use-LXL6NXDS.js → post-tool-use-POGPTJBA.js} +3 -3
  35. package/dist/{post-tool-use-failure-WAYVVKGR.js → post-tool-use-failure-OT7BFWQW.js} +4 -4
  36. package/dist/{pre-compact-BCXUCF4V.js → pre-compact-OXVODKH4.js} +4 -4
  37. package/dist/{registry-MGJSJBAS.js → registry-U4CHXK6R.js} +3 -3
  38. package/dist/{remove-KAPX5NT2.js → remove-N7ZPELFU.js} +6 -6
  39. package/dist/{restart-HQO36FTG.js → restart-ADG5GBTB.js} +7 -7
  40. package/dist/{search-YOMOKAAI.js → search-AHZEUNRR.js} +6 -6
  41. package/dist/{server-2N23P6F2.js → server-AGVYZVP5.js} +3 -3
  42. package/dist/{session-WW2JLHPX.js → session-6IU4AXYP.js} +6 -6
  43. package/dist/{session-end-4WRTIBVQ.js → session-end-FT27DWYZ.js} +3 -3
  44. package/dist/{session-start-HRWTZXQR.js → session-start-LAFICHII.js} +6 -6
  45. package/dist/{session-start-HRWTZXQR.js.map → session-start-LAFICHII.js.map} +1 -1
  46. package/dist/{setup-llm-HFWSBUAF.js → setup-llm-77MP4I2G.js} +6 -6
  47. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +1 -1
  48. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +1 -0
  49. package/dist/src/agent/definitions/tasks/skill-generate.yaml +1 -0
  50. package/dist/src/agent/definitions/tasks/skill-survey.yaml +23 -7
  51. package/dist/src/cli.js +1 -1
  52. package/dist/src/daemon/main.js +1 -1
  53. package/dist/src/hooks/post-tool-use.js +1 -1
  54. package/dist/src/hooks/session-end.js +1 -1
  55. package/dist/src/hooks/session-start.js +1 -1
  56. package/dist/src/hooks/stop.js +1 -1
  57. package/dist/src/hooks/user-prompt-submit.js +1 -1
  58. package/dist/src/mcp/server.js +1 -1
  59. package/dist/{stats-7A4CJ4MS.js → stats-NVPWOYTE.js} +7 -7
  60. package/dist/{stop-R2GDHMRA.js → stop-ZPIKVLH4.js} +3 -3
  61. package/dist/{stop-failure-773KR4VZ.js → stop-failure-2PX67YJC.js} +4 -4
  62. package/dist/{subagent-start-IDECNBHW.js → subagent-start-UUE6EHQD.js} +4 -4
  63. package/dist/{subagent-stop-3JH7DR2S.js → subagent-stop-KQWWWPE6.js} +4 -4
  64. package/dist/{task-completed-AYVHPHDR.js → task-completed-WMHOFQ7B.js} +4 -4
  65. package/dist/{team-3JKF7VAD.js → team-LRZ6GTQK.js} +3 -3
  66. package/dist/{update-YWYW55JM.js → update-O6V4RC4W.js} +6 -6
  67. package/dist/{user-prompt-submit-YELSR6XI.js → user-prompt-submit-N36KUPHI.js} +3 -3
  68. package/dist/{verify-JS44DVKJ.js → verify-LXPV7NYG.js} +4 -4
  69. package/dist/verify-LXPV7NYG.js.map +1 -0
  70. package/dist/{version-K5NETYIL.js → version-XMPPJQHR.js} +2 -2
  71. package/package.json +1 -1
  72. package/dist/chunk-4LCIKVDM.js.map +0 -1
  73. package/dist/chunk-L6XFAJIF.js.map +0 -1
  74. package/dist/chunk-P3DN5EWW.js.map +0 -1
  75. package/dist/chunk-SRXTSI25.js.map +0 -1
  76. package/dist/doctor-XPCF5HV5.js.map +0 -1
  77. package/dist/init-V3KCC36O.js.map +0 -1
  78. package/dist/main-5S4MDCIO.js.map +0 -1
  79. package/dist/verify-JS44DVKJ.js.map +0 -1
  80. /package/dist/{agent-run-4HUXVRHW.js.map → agent-run-X25Q2A6T.js.map} +0 -0
  81. /package/dist/{agent-tasks-JF45ELB6.js.map → agent-tasks-7B6OFERB.js.map} +0 -0
  82. /package/dist/{chunk-POR75WM6.js.map → chunk-2PDWCDKY.js.map} +0 -0
  83. /package/dist/{chunk-57O67XVF.js.map → chunk-6X2ERTQV.js.map} +0 -0
  84. /package/dist/{chunk-YSNIAJ5D.js.map → chunk-KESLPBKV.js.map} +0 -0
  85. /package/dist/{chunk-UOQQENDW.js.map → chunk-VVNL26WX.js.map} +0 -0
  86. /package/dist/{chunk-QS5TWZBL.js.map → chunk-XATDZX7U.js.map} +0 -0
  87. /package/dist/{chunk-ACQ2AIEM.js.map → chunk-XG5RRUYF.js.map} +0 -0
  88. /package/dist/{cli-AHTINAHY.js.map → cli-GGPWH4UO.js.map} +0 -0
  89. /package/dist/{client-LHENCAV3.js.map → client-YXQUTXVZ.js.map} +0 -0
  90. /package/dist/{config-XPV5GDE4.js.map → config-OMCYHG2S.js.map} +0 -0
  91. /package/dist/{executor-ACDHGTRH.js.map → executor-HWW2QNZQ.js.map} +0 -0
  92. /package/dist/{installer-ZNK4JSQA.js.map → installer-FS257JRZ.js.map} +0 -0
  93. /package/dist/{loader-H7OFASVC.js.map → loader-CQYTFHEW.js.map} +0 -0
  94. /package/dist/{loader-TSB5M7FD.js.map → loader-NOMBJUPW.js.map} +0 -0
  95. /package/dist/{open-AB5ULZIB.js.map → open-HG2DX6RN.js.map} +0 -0
  96. /package/dist/{post-compact-P2B7C7FE.js.map → post-compact-JSECI44W.js.map} +0 -0
  97. /package/dist/{post-tool-use-LXL6NXDS.js.map → post-tool-use-POGPTJBA.js.map} +0 -0
  98. /package/dist/{post-tool-use-failure-WAYVVKGR.js.map → post-tool-use-failure-OT7BFWQW.js.map} +0 -0
  99. /package/dist/{pre-compact-BCXUCF4V.js.map → pre-compact-OXVODKH4.js.map} +0 -0
  100. /package/dist/{registry-MGJSJBAS.js.map → registry-U4CHXK6R.js.map} +0 -0
  101. /package/dist/{remove-KAPX5NT2.js.map → remove-N7ZPELFU.js.map} +0 -0
  102. /package/dist/{restart-HQO36FTG.js.map → restart-ADG5GBTB.js.map} +0 -0
  103. /package/dist/{search-YOMOKAAI.js.map → search-AHZEUNRR.js.map} +0 -0
  104. /package/dist/{server-2N23P6F2.js.map → server-AGVYZVP5.js.map} +0 -0
  105. /package/dist/{session-WW2JLHPX.js.map → session-6IU4AXYP.js.map} +0 -0
  106. /package/dist/{session-end-4WRTIBVQ.js.map → session-end-FT27DWYZ.js.map} +0 -0
  107. /package/dist/{setup-llm-HFWSBUAF.js.map → setup-llm-77MP4I2G.js.map} +0 -0
  108. /package/dist/{stats-7A4CJ4MS.js.map → stats-NVPWOYTE.js.map} +0 -0
  109. /package/dist/{stop-R2GDHMRA.js.map → stop-ZPIKVLH4.js.map} +0 -0
  110. /package/dist/{stop-failure-773KR4VZ.js.map → stop-failure-2PX67YJC.js.map} +0 -0
  111. /package/dist/{subagent-start-IDECNBHW.js.map → subagent-start-UUE6EHQD.js.map} +0 -0
  112. /package/dist/{subagent-stop-3JH7DR2S.js.map → subagent-stop-KQWWWPE6.js.map} +0 -0
  113. /package/dist/{task-completed-AYVHPHDR.js.map → task-completed-WMHOFQ7B.js.map} +0 -0
  114. /package/dist/{team-3JKF7VAD.js.map → team-LRZ6GTQK.js.map} +0 -0
  115. /package/dist/{update-YWYW55JM.js.map → update-O6V4RC4W.js.map} +0 -0
  116. /package/dist/{user-prompt-submit-YELSR6XI.js.map → user-prompt-submit-N36KUPHI.js.map} +0 -0
  117. /package/dist/{version-K5NETYIL.js.map → version-XMPPJQHR.js.map} +0 -0
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-5NFJTZ64.js";
5
5
  import {
6
6
  connectToDaemon
7
- } from "./chunk-YSNIAJ5D.js";
7
+ } from "./chunk-KESLPBKV.js";
8
8
  import "./chunk-SAKJMNSR.js";
9
- import "./chunk-4LCIKVDM.js";
9
+ import "./chunk-Q36VMZST.js";
10
10
  import "./chunk-FMRZ26U5.js";
11
- import "./chunk-SRXTSI25.js";
11
+ import "./chunk-OD4AA7PV.js";
12
12
  import "./chunk-MYX5NCRH.js";
13
- import "./chunk-UOQQENDW.js";
14
- import "./chunk-ACQ2AIEM.js";
13
+ import "./chunk-VVNL26WX.js";
14
+ import "./chunk-XG5RRUYF.js";
15
15
  import "./chunk-LPUQPDC2.js";
16
16
  import "./chunk-FLLBJLHM.js";
17
17
  import "./chunk-UUHLLQXO.js";
@@ -41,4 +41,4 @@ async function run(_args, vaultDir) {
41
41
  export {
42
42
  run
43
43
  };
44
- //# sourceMappingURL=open-AB5ULZIB.js.map
44
+ //# sourceMappingURL=open-HG2DX6RN.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-POR75WM6.js";
4
+ } from "./chunk-2PDWCDKY.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
6
  import "./chunk-DCSGJ7W4.js";
7
7
  import "./chunk-ZXZPJJN3.js";
8
8
  import "./chunk-CUDIZJY7.js";
9
- import "./chunk-UOQQENDW.js";
10
- import "./chunk-ACQ2AIEM.js";
9
+ import "./chunk-VVNL26WX.js";
10
+ import "./chunk-XG5RRUYF.js";
11
11
  import "./chunk-NGROSFOH.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
13
  import "./chunk-FLLBJLHM.js";
@@ -28,4 +28,4 @@ async function main() {
28
28
  export {
29
29
  main
30
30
  };
31
- //# sourceMappingURL=post-compact-P2B7C7FE.js.map
31
+ //# sourceMappingURL=post-compact-JSECI44W.js.map
@@ -12,8 +12,8 @@ import {
12
12
  } from "./chunk-CUDIZJY7.js";
13
13
  import {
14
14
  DaemonClient
15
- } from "./chunk-UOQQENDW.js";
16
- import "./chunk-ACQ2AIEM.js";
15
+ } from "./chunk-VVNL26WX.js";
16
+ import "./chunk-XG5RRUYF.js";
17
17
  import "./chunk-NGROSFOH.js";
18
18
  import "./chunk-LPUQPDC2.js";
19
19
  import {
@@ -61,4 +61,4 @@ async function main() {
61
61
  export {
62
62
  main
63
63
  };
64
- //# sourceMappingURL=post-tool-use-LXL6NXDS.js.map
64
+ //# sourceMappingURL=post-tool-use-POGPTJBA.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-POR75WM6.js";
4
+ } from "./chunk-2PDWCDKY.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
6
  import "./chunk-DCSGJ7W4.js";
7
7
  import "./chunk-ZXZPJJN3.js";
8
8
  import "./chunk-CUDIZJY7.js";
9
- import "./chunk-UOQQENDW.js";
10
- import "./chunk-ACQ2AIEM.js";
9
+ import "./chunk-VVNL26WX.js";
10
+ import "./chunk-XG5RRUYF.js";
11
11
  import "./chunk-NGROSFOH.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
13
  import "./chunk-FLLBJLHM.js";
@@ -30,4 +30,4 @@ async function main() {
30
30
  export {
31
31
  main
32
32
  };
33
- //# sourceMappingURL=post-tool-use-failure-WAYVVKGR.js.map
33
+ //# sourceMappingURL=post-tool-use-failure-OT7BFWQW.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  sendEvent
4
- } from "./chunk-POR75WM6.js";
4
+ } from "./chunk-2PDWCDKY.js";
5
5
  import "./chunk-V7XG6V6C.js";
6
6
  import "./chunk-DCSGJ7W4.js";
7
7
  import "./chunk-ZXZPJJN3.js";
8
8
  import "./chunk-CUDIZJY7.js";
9
- import "./chunk-UOQQENDW.js";
10
- import "./chunk-ACQ2AIEM.js";
9
+ import "./chunk-VVNL26WX.js";
10
+ import "./chunk-XG5RRUYF.js";
11
11
  import "./chunk-NGROSFOH.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
13
  import "./chunk-FLLBJLHM.js";
@@ -27,4 +27,4 @@ async function main() {
27
27
  export {
28
28
  main
29
29
  };
30
- //# sourceMappingURL=pre-compact-BCXUCF4V.js.map
30
+ //# sourceMappingURL=pre-compact-OXVODKH4.js.map
@@ -5,8 +5,8 @@ import {
5
5
  loadAllTasks,
6
6
  validateTaskName,
7
7
  writeUserTask
8
- } from "./chunk-57O67XVF.js";
9
- import "./chunk-4M7EWPIA.js";
8
+ } from "./chunk-6X2ERTQV.js";
9
+ import "./chunk-CCRGY3QW.js";
10
10
  import "./chunk-POEPHBQK.js";
11
11
  import "./chunk-MYX5NCRH.js";
12
12
  import "./chunk-LPUQPDC2.js";
@@ -22,4 +22,4 @@ export {
22
22
  validateTaskName,
23
23
  writeUserTask
24
24
  };
25
- //# sourceMappingURL=registry-MGJSJBAS.js.map
25
+ //# sourceMappingURL=registry-U4CHXK6R.js.map
@@ -1,23 +1,23 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-YSNIAJ5D.js";
4
+ } from "./chunk-KESLPBKV.js";
5
5
  import {
6
6
  parseStringFlag
7
7
  } from "./chunk-SAKJMNSR.js";
8
8
  import {
9
9
  SymbiontInstaller
10
- } from "./chunk-4LCIKVDM.js";
10
+ } from "./chunk-Q36VMZST.js";
11
11
  import "./chunk-FMRZ26U5.js";
12
12
  import {
13
13
  updateConfig
14
- } from "./chunk-SRXTSI25.js";
14
+ } from "./chunk-OD4AA7PV.js";
15
15
  import "./chunk-MYX5NCRH.js";
16
16
  import {
17
17
  resolveVaultDir
18
18
  } from "./chunk-CUDIZJY7.js";
19
- import "./chunk-UOQQENDW.js";
20
- import "./chunk-ACQ2AIEM.js";
19
+ import "./chunk-VVNL26WX.js";
20
+ import "./chunk-XG5RRUYF.js";
21
21
  import {
22
22
  loadManifests,
23
23
  resolvePackageRoot
@@ -123,4 +123,4 @@ async function run(args) {
123
123
  export {
124
124
  run
125
125
  };
126
- //# sourceMappingURL=remove-KAPX5NT2.js.map
126
+ //# sourceMappingURL=remove-N7ZPELFU.js.map
@@ -1,14 +1,14 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  isProcessAlive
4
- } from "./chunk-YSNIAJ5D.js";
4
+ } from "./chunk-KESLPBKV.js";
5
5
  import "./chunk-SAKJMNSR.js";
6
- import "./chunk-4LCIKVDM.js";
6
+ import "./chunk-Q36VMZST.js";
7
7
  import "./chunk-FMRZ26U5.js";
8
- import "./chunk-SRXTSI25.js";
8
+ import "./chunk-OD4AA7PV.js";
9
9
  import "./chunk-MYX5NCRH.js";
10
- import "./chunk-UOQQENDW.js";
11
- import "./chunk-ACQ2AIEM.js";
10
+ import "./chunk-VVNL26WX.js";
11
+ import "./chunk-XG5RRUYF.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
13
  import "./chunk-FLLBJLHM.js";
14
14
  import "./chunk-UUHLLQXO.js";
@@ -38,7 +38,7 @@ async function run(_args, vaultDir) {
38
38
  } catch {
39
39
  }
40
40
  }
41
- const { DaemonClient } = await import("./client-LHENCAV3.js");
41
+ const { DaemonClient } = await import("./client-YXQUTXVZ.js");
42
42
  const client = new DaemonClient(vaultDir);
43
43
  console.log("Waiting for health check...");
44
44
  const healthy = await client.ensureRunning();
@@ -57,4 +57,4 @@ async function run(_args, vaultDir) {
57
57
  export {
58
58
  run
59
59
  };
60
- //# sourceMappingURL=restart-HQO36FTG.js.map
60
+ //# sourceMappingURL=restart-ADG5GBTB.js.map
@@ -5,14 +5,14 @@ import {
5
5
  import {
6
6
  connectToDaemon,
7
7
  initVaultDb
8
- } from "./chunk-YSNIAJ5D.js";
8
+ } from "./chunk-KESLPBKV.js";
9
9
  import "./chunk-SAKJMNSR.js";
10
- import "./chunk-4LCIKVDM.js";
10
+ import "./chunk-Q36VMZST.js";
11
11
  import "./chunk-FMRZ26U5.js";
12
- import "./chunk-SRXTSI25.js";
12
+ import "./chunk-OD4AA7PV.js";
13
13
  import "./chunk-MYX5NCRH.js";
14
- import "./chunk-UOQQENDW.js";
15
- import "./chunk-ACQ2AIEM.js";
14
+ import "./chunk-VVNL26WX.js";
15
+ import "./chunk-XG5RRUYF.js";
16
16
  import "./chunk-LPUQPDC2.js";
17
17
  import {
18
18
  CONTENT_SNIPPET_CHARS
@@ -93,4 +93,4 @@ export {
93
93
  run,
94
94
  runVectors
95
95
  };
96
- //# sourceMappingURL=search-YOMOKAAI.js.map
96
+ //# sourceMappingURL=search-AHZEUNRR.js.map
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-CUDIZJY7.js";
6
6
  import {
7
7
  DaemonClient
8
- } from "./chunk-UOQQENDW.js";
8
+ } from "./chunk-VVNL26WX.js";
9
9
  import {
10
10
  getPluginVersion
11
- } from "./chunk-ACQ2AIEM.js";
11
+ } from "./chunk-XG5RRUYF.js";
12
12
  import "./chunk-LPUQPDC2.js";
13
13
  import {
14
14
  DAEMON_CLIENT_TIMEOUT_MS,
@@ -14732,4 +14732,4 @@ export {
14732
14732
  createMycoServer,
14733
14733
  main
14734
14734
  };
14735
- //# sourceMappingURL=server-2N23P6F2.js.map
14735
+ //# sourceMappingURL=server-AGVYZVP5.js.map
@@ -1,18 +1,18 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  initVaultDb
4
- } from "./chunk-YSNIAJ5D.js";
4
+ } from "./chunk-KESLPBKV.js";
5
5
  import "./chunk-SAKJMNSR.js";
6
- import "./chunk-4LCIKVDM.js";
6
+ import "./chunk-Q36VMZST.js";
7
7
  import "./chunk-FMRZ26U5.js";
8
8
  import {
9
9
  getSession,
10
10
  listSessions
11
11
  } from "./chunk-EVDQKYCG.js";
12
- import "./chunk-SRXTSI25.js";
12
+ import "./chunk-OD4AA7PV.js";
13
13
  import "./chunk-MYX5NCRH.js";
14
- import "./chunk-UOQQENDW.js";
15
- import "./chunk-ACQ2AIEM.js";
14
+ import "./chunk-VVNL26WX.js";
15
+ import "./chunk-XG5RRUYF.js";
16
16
  import "./chunk-LPUQPDC2.js";
17
17
  import "./chunk-FLLBJLHM.js";
18
18
  import "./chunk-UUHLLQXO.js";
@@ -70,4 +70,4 @@ ${target.summary}`);
70
70
  export {
71
71
  run
72
72
  };
73
- //# sourceMappingURL=session-WW2JLHPX.js.map
73
+ //# sourceMappingURL=session-6IU4AXYP.js.map
@@ -9,8 +9,8 @@ import {
9
9
  } from "./chunk-CUDIZJY7.js";
10
10
  import {
11
11
  DaemonClient
12
- } from "./chunk-UOQQENDW.js";
13
- import "./chunk-ACQ2AIEM.js";
12
+ } from "./chunk-VVNL26WX.js";
13
+ import "./chunk-XG5RRUYF.js";
14
14
  import "./chunk-NGROSFOH.js";
15
15
  import "./chunk-LPUQPDC2.js";
16
16
  import "./chunk-FLLBJLHM.js";
@@ -41,4 +41,4 @@ async function main() {
41
41
  export {
42
42
  main
43
43
  };
44
- //# sourceMappingURL=session-end-4WRTIBVQ.js.map
44
+ //# sourceMappingURL=session-end-FT27DWYZ.js.map
@@ -13,8 +13,8 @@ import {
13
13
  createSchema
14
14
  } from "./chunk-MYOZLMB2.js";
15
15
  import {
16
- loadConfig
17
- } from "./chunk-SRXTSI25.js";
16
+ loadMergedConfig
17
+ } from "./chunk-OD4AA7PV.js";
18
18
  import {
19
19
  getDatabase,
20
20
  initDatabase,
@@ -30,8 +30,8 @@ import {
30
30
  } from "./chunk-CUDIZJY7.js";
31
31
  import {
32
32
  DaemonClient
33
- } from "./chunk-UOQQENDW.js";
34
- import "./chunk-ACQ2AIEM.js";
33
+ } from "./chunk-VVNL26WX.js";
34
+ import "./chunk-XG5RRUYF.js";
35
35
  import {
36
36
  loadManifests
37
37
  } from "./chunk-NGROSFOH.js";
@@ -149,7 +149,7 @@ async function main() {
149
149
  `);
150
150
  return;
151
151
  }
152
- const config = loadConfig(VAULT_DIR);
152
+ const config = loadMergedConfig(VAULT_DIR);
153
153
  const client = new DaemonClient(VAULT_DIR);
154
154
  const healthy = await client.ensureRunning();
155
155
  let branch;
@@ -186,4 +186,4 @@ async function main() {
186
186
  export {
187
187
  main
188
188
  };
189
- //# sourceMappingURL=session-start-HRWTZXQR.js.map
189
+ //# sourceMappingURL=session-start-LAFICHII.js.map
@@ -1 +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
+ {"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 { loadMergedConfig } 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 = loadMergedConfig(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":[]}
@@ -2,20 +2,20 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  withEmbedding
4
4
  } from "./chunk-US4LNCAT.js";
5
- import "./chunk-YSNIAJ5D.js";
5
+ import "./chunk-KESLPBKV.js";
6
6
  import {
7
7
  parseStringFlag
8
8
  } from "./chunk-SAKJMNSR.js";
9
- import "./chunk-4LCIKVDM.js";
9
+ import "./chunk-Q36VMZST.js";
10
10
  import "./chunk-FMRZ26U5.js";
11
11
  import {
12
12
  loadConfig,
13
13
  updateConfig
14
- } from "./chunk-SRXTSI25.js";
14
+ } from "./chunk-OD4AA7PV.js";
15
15
  import "./chunk-MYX5NCRH.js";
16
16
  import "./chunk-ZXZPJJN3.js";
17
- import "./chunk-UOQQENDW.js";
18
- import "./chunk-ACQ2AIEM.js";
17
+ import "./chunk-VVNL26WX.js";
18
+ import "./chunk-XG5RRUYF.js";
19
19
  import "./chunk-LPUQPDC2.js";
20
20
  import "./chunk-FLLBJLHM.js";
21
21
  import "./chunk-UUHLLQXO.js";
@@ -80,4 +80,4 @@ async function run(args, vaultDir) {
80
80
  export {
81
81
  run
82
82
  };
83
- //# sourceMappingURL=setup-llm-HFWSBUAF.js.map
83
+ //# sourceMappingURL=setup-llm-77MP4I2G.js.map
@@ -25,8 +25,8 @@ schedule:
25
25
  enabled: true
26
26
  intervalSeconds: 300
27
27
  runIn:
28
- - active
29
28
  - idle
29
+ - sleep
30
30
  preCondition: has-unprocessed-batches
31
31
 
32
32
  orchestrator:
@@ -18,6 +18,7 @@ schedule:
18
18
  intervalSeconds: 900
19
19
  runIn:
20
20
  - idle
21
+ - sleep
21
22
  preCondition: has-active-skills
22
23
  params:
23
24
  assess_interval_hours: 24
@@ -18,6 +18,7 @@ schedule:
18
18
  intervalSeconds: 600
19
19
  runIn:
20
20
  - idle
21
+ - sleep
21
22
  preCondition: has-approved-candidates
22
23
  phases:
23
24
  - name: draft
@@ -14,9 +14,11 @@ maxTurns: 35
14
14
  timeoutSeconds: 1800
15
15
  schedule:
16
16
  enabled: true
17
- intervalSeconds: 600
17
+ intervalSeconds: 21600
18
18
  runIn:
19
19
  - idle
20
+ - sleep
21
+ preCondition: has-skill-survey-evidence
20
22
  phases:
21
23
  - name: explore
22
24
  prompt: |
@@ -57,6 +59,9 @@ phases:
57
59
  ## Process
58
60
 
59
61
  1. Read the pre-assembled context for orientation.
62
+ It already excludes active-session data and only exists when
63
+ the vault has enough settled knowledge to support a serious
64
+ candidate review.
60
65
 
61
66
  2. Use vault tools for TARGETED follow-up on promising
62
67
  clusters. The baseline gives you direction — follow threads
@@ -77,6 +82,10 @@ phases:
77
82
  note: the core theme, which procedures it covers, and
78
83
  which source items provide evidence.
79
84
 
85
+ 4. Reject generic engineering domains even if they are common.
86
+ A valid candidate must be specific to this project's named
87
+ components, files, commands, or conventions.
88
+
80
89
  Store your domain clusters in working notes for the next phase.
81
90
  tools:
82
91
  - vault_spores
@@ -103,27 +112,34 @@ phases:
103
112
 
104
113
  ## Evaluation criteria
105
114
 
106
- Each candidate must pass ALL of these at the DOMAIN level:
115
+ Each candidate must pass ALL of these at the DOMAIN level.
116
+ If any required criterion fails, reject the domain and do not
117
+ create or update a candidate.
107
118
 
108
119
  1. PROCEDURE TEST: Does this domain describe "how to do a
109
120
  family of related tasks in this project"? A domain about
110
121
  "what X is" or "X exists" is knowledge, not a skill.
111
122
 
112
- 2. REPEATABILITY TEST: Will developers need these procedures
123
+ 2. PROJECT-SPECIFICITY TEST: Is this domain meaningfully tied
124
+ to THIS repository? It must be anchored to named project
125
+ components, files, commands, or conventions. Generic
126
+ engineering topics FAIL.
127
+
128
+ 3. REPEATABILITY TEST: Will developers need these procedures
113
129
  again as the project grows? Domains covering extension
114
130
  points (adding new X, extending Y) are strong candidates.
115
131
  One-time fixes and bug patches are NOT skills.
116
132
 
117
- 3. BREADTH TEST: Does this domain cover 2+ distinct procedures
133
+ 4. BREADTH TEST: Does this domain cover 2+ distinct procedures
118
134
  that share prerequisite knowledge? A single procedure is
119
135
  too narrow — it should be a section within a broader domain.
120
136
  If you can't imagine 3+ major section headings, it's not
121
137
  broad enough.
122
138
 
123
- 4. CROSS-SESSION EVIDENCE: Knowledge from 2+ sessions and 3+
139
+ 5. CROSS-SESSION EVIDENCE: Knowledge from 2+ sessions and 3+
124
140
  source items (spores, sessions, plans).
125
141
 
126
- 5. DEDUPLICATION: Check BOTH lists from step 0.
142
+ 6. DEDUPLICATION: Check BOTH lists from step 0.
127
143
  - If an active skill already covers this domain, skip.
128
144
  - If the domain SUBSUMES existing narrow skills (the domain
129
145
  is broader and the narrow skills are sections within it),
@@ -136,7 +152,7 @@ phases:
136
152
  warning. If the dismissed topic is a narrow subset of
137
153
  your broader domain, proceed.
138
154
 
139
- 6. CONFIDENCE SCORE (0.0-1.0):
155
+ 7. CONFIDENCE SCORE (0.0-1.0):
140
156
  - Domain breadth (more procedures covered = higher)
141
157
  - Cross-session evidence (wider = higher)
142
158
  - Wisdom spore presence (higher quality signal)
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-AHTINAHY.js");
5
+ await import("../cli-GGPWH4UO.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-5S4MDCIO.js");
4
+ var { main } = await import("../../main-YTBVRTBI.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-LXL6NXDS.js");
4
+ var { main } = await import("../../post-tool-use-POGPTJBA.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-4WRTIBVQ.js");
4
+ var { main } = await import("../../session-end-FT27DWYZ.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-HRWTZXQR.js");
4
+ var { main } = await import("../../session-start-LAFICHII.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-R2GDHMRA.js");
4
+ var { main } = await import("../../stop-ZPIKVLH4.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-YELSR6XI.js");
4
+ var { main } = await import("../../user-prompt-submit-N36KUPHI.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-2N23P6F2.js");
4
+ var { main } = await import("../../server-AGVYZVP5.js");
5
5
  await main();
6
6
  //# sourceMappingURL=server.js.map
@@ -1,17 +1,17 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  gatherStats
4
- } from "./chunk-P3DN5EWW.js";
4
+ } from "./chunk-JZGN33AY.js";
5
5
  import {
6
6
  initVaultDb
7
- } from "./chunk-YSNIAJ5D.js";
7
+ } from "./chunk-KESLPBKV.js";
8
8
  import "./chunk-SAKJMNSR.js";
9
- import "./chunk-4LCIKVDM.js";
9
+ import "./chunk-Q36VMZST.js";
10
10
  import "./chunk-FMRZ26U5.js";
11
- import "./chunk-SRXTSI25.js";
11
+ import "./chunk-OD4AA7PV.js";
12
12
  import "./chunk-MYX5NCRH.js";
13
- import "./chunk-UOQQENDW.js";
14
- import "./chunk-ACQ2AIEM.js";
13
+ import "./chunk-VVNL26WX.js";
14
+ import "./chunk-XG5RRUYF.js";
15
15
  import "./chunk-LPUQPDC2.js";
16
16
  import "./chunk-FLLBJLHM.js";
17
17
  import "./chunk-UUHLLQXO.js";
@@ -92,4 +92,4 @@ function formatUptime(seconds) {
92
92
  export {
93
93
  run
94
94
  };
95
- //# sourceMappingURL=stats-7A4CJ4MS.js.map
95
+ //# sourceMappingURL=stats-NVPWOYTE.js.map