@goondocks/myco 0.5.0 → 0.6.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 (141) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +4 -0
  4. package/dist/{chunk-JJL6AMDA.js → chunk-24DOZEUJ.js} +255 -6
  5. package/dist/chunk-24DOZEUJ.js.map +1 -0
  6. package/dist/{chunk-ZWUFTOG3.js → chunk-2GSX3BK2.js} +4 -4
  7. package/dist/{chunk-FIRMTYFH.js → chunk-2YBUL3IL.js} +4 -37
  8. package/dist/chunk-2YBUL3IL.js.map +1 -0
  9. package/dist/{chunk-HL2S5QZG.js → chunk-2ZBB3MQT.js} +319 -40
  10. package/dist/chunk-2ZBB3MQT.js.map +1 -0
  11. package/dist/{chunk-HJG7Z6SJ.js → chunk-3EM23DMD.js} +2 -2
  12. package/dist/{chunk-XQXXF6MU.js → chunk-4RMSHZE4.js} +12 -1
  13. package/dist/{chunk-XQXXF6MU.js.map → chunk-4RMSHZE4.js.map} +1 -1
  14. package/dist/{chunk-T7OC6GH5.js → chunk-5FNZ7AMX.js} +2 -2
  15. package/dist/{chunk-X6TKHO22.js → chunk-5QWZT4AB.js} +2 -2
  16. package/dist/{chunk-B6WVNDA5.js → chunk-6BSDCZ5Q.js} +8 -2
  17. package/dist/{chunk-B6WVNDA5.js.map → chunk-6BSDCZ5Q.js.map} +1 -1
  18. package/dist/{chunk-R6LQT3U7.js → chunk-B5UZSHQV.js} +8 -12
  19. package/dist/{chunk-R6LQT3U7.js.map → chunk-B5UZSHQV.js.map} +1 -1
  20. package/dist/{chunk-7KQB22DP.js → chunk-E7OBRBCQ.js} +2 -2
  21. package/dist/{chunk-RCV2I4AI.js → chunk-GDYYJTTT.js} +5 -3
  22. package/dist/{chunk-RCV2I4AI.js.map → chunk-GDYYJTTT.js.map} +1 -1
  23. package/dist/{chunk-MIU3DKLN.js → chunk-GNR3QAER.js} +2 -2
  24. package/dist/{chunk-BMJX2IDQ.js → chunk-H7PRCVGQ.js} +2 -2
  25. package/dist/{chunk-6LTNFMXO.js → chunk-KC7ENQTN.js} +2 -2
  26. package/dist/chunk-KUMVJIJW.js +117 -0
  27. package/dist/chunk-KUMVJIJW.js.map +1 -0
  28. package/dist/{chunk-ND4VK6C7.js → chunk-L25U7PIG.js} +2 -2
  29. package/dist/{chunk-6UJWI4IW.js → chunk-MQSYSQ6T.js} +7 -5
  30. package/dist/{chunk-6UJWI4IW.js.map → chunk-MQSYSQ6T.js.map} +1 -1
  31. package/dist/{chunk-TBRZAJ7W.js → chunk-P3WO3N3I.js} +11 -3
  32. package/dist/chunk-P3WO3N3I.js.map +1 -0
  33. package/dist/{chunk-JI6M2L2W.js → chunk-QGJ2ZIUZ.js} +7 -4
  34. package/dist/chunk-QGJ2ZIUZ.js.map +1 -0
  35. package/dist/{chunk-5EZ7QF6J.js → chunk-QLUE3BUL.js} +66 -1
  36. package/dist/chunk-QLUE3BUL.js.map +1 -0
  37. package/dist/{chunk-AK6GNLPV.js → chunk-TWSTAVLO.js} +17 -1
  38. package/dist/{chunk-AK6GNLPV.js.map → chunk-TWSTAVLO.js.map} +1 -1
  39. package/dist/{chunk-FIA5NTRH.js → chunk-UVGAVYWZ.js} +11 -13
  40. package/dist/chunk-UVGAVYWZ.js.map +1 -0
  41. package/dist/{chunk-UKWO26VI.js → chunk-YTANWAGE.js} +2 -2
  42. package/dist/chunk-ZMYNRTTD.js +64 -0
  43. package/dist/chunk-ZMYNRTTD.js.map +1 -0
  44. package/dist/{cli-BLYNNKGJ.js → cli-K7SUTP7A.js} +22 -22
  45. package/dist/{client-5GB4WVXE.js → client-YJMNTITQ.js} +5 -5
  46. package/dist/{config-5FGLQGCW.js → config-G5GGT5A6.js} +3 -3
  47. package/dist/curate-6T5NKVXK.js +80 -0
  48. package/dist/curate-6T5NKVXK.js.map +1 -0
  49. package/dist/{detect-providers-BIHYFK5M.js → detect-providers-S3M5TAMW.js} +3 -3
  50. package/dist/{digest-7NKYXM6G.js → digest-O35VHYFP.js} +31 -40
  51. package/dist/digest-O35VHYFP.js.map +1 -0
  52. package/dist/{init-HPQ77WWF.js → init-TFLSATB3.js} +9 -11
  53. package/dist/init-TFLSATB3.js.map +1 -0
  54. package/dist/{logs-BSTBZHDR.js → logs-IENORIYR.js} +3 -3
  55. package/dist/{main-NFQ4II75.js → main-JEUQS3BY.js} +1218 -294
  56. package/dist/main-JEUQS3BY.js.map +1 -0
  57. package/dist/rebuild-7SH5GSNX.js +66 -0
  58. package/dist/rebuild-7SH5GSNX.js.map +1 -0
  59. package/dist/{reprocess-ZL4HKTSC.js → reprocess-Q4YH2ZBK.js} +20 -22
  60. package/dist/{reprocess-ZL4HKTSC.js.map → reprocess-Q4YH2ZBK.js.map} +1 -1
  61. package/dist/{restart-FYW662DR.js → restart-NLJLB52D.js} +7 -6
  62. package/dist/{restart-FYW662DR.js.map → restart-NLJLB52D.js.map} +1 -1
  63. package/dist/{search-E5JQMTXV.js → search-2BVRF54H.js} +10 -10
  64. package/dist/{server-TV3D35HZ.js → server-4AMZNP4F.js} +51 -97
  65. package/dist/{server-TV3D35HZ.js.map → server-4AMZNP4F.js.map} +1 -1
  66. package/dist/{session-QF6MILAC.js → session-F326AWCH.js} +2 -2
  67. package/dist/{session-start-5MFEOVQ5.js → session-start-AZAF3DTE.js} +10 -10
  68. package/dist/setup-digest-YLZZGSSR.js +15 -0
  69. package/dist/setup-llm-JOXBSLXC.js +15 -0
  70. package/dist/src/cli.js +4 -4
  71. package/dist/src/daemon/main.js +4 -4
  72. package/dist/src/hooks/post-tool-use.js +5 -5
  73. package/dist/src/hooks/session-end.js +5 -5
  74. package/dist/src/hooks/session-start.js +4 -4
  75. package/dist/src/hooks/stop.js +7 -7
  76. package/dist/src/hooks/user-prompt-submit.js +5 -5
  77. package/dist/src/mcp/server.js +4 -4
  78. package/dist/src/prompts/consolidation.md +46 -0
  79. package/dist/src/templates/portal.md +5 -0
  80. package/dist/stats-MKDIZFIQ.js +58 -0
  81. package/dist/stats-MKDIZFIQ.js.map +1 -0
  82. package/dist/templates-XPRBOWCE.js +38 -0
  83. package/dist/templates-XPRBOWCE.js.map +1 -0
  84. package/dist/ui/assets/index-D37IoDXS.css +1 -0
  85. package/dist/ui/assets/index-DA61Ial2.js +289 -0
  86. package/dist/ui/favicon.svg +11 -0
  87. package/dist/ui/fonts/GeistMono-LICENSE.txt +92 -0
  88. package/dist/ui/fonts/GeistMono-Variable.woff2 +0 -0
  89. package/dist/ui/index.html +14 -0
  90. package/dist/{verify-RACBFT2P.js → verify-7DW7LAND.js} +6 -6
  91. package/dist/{version-HJTVNPOO.js → version-RQLD7VBP.js} +4 -4
  92. package/package.json +3 -2
  93. package/skills/myco/SKILL.md +20 -1
  94. package/skills/myco/references/cli-usage.md +48 -0
  95. package/skills/myco/references/wisdom.md +11 -1
  96. package/dist/chunk-2AMAOSRF.js +0 -105
  97. package/dist/chunk-2AMAOSRF.js.map +0 -1
  98. package/dist/chunk-5EZ7QF6J.js.map +0 -1
  99. package/dist/chunk-FIA5NTRH.js.map +0 -1
  100. package/dist/chunk-FIRMTYFH.js.map +0 -1
  101. package/dist/chunk-HL2S5QZG.js.map +0 -1
  102. package/dist/chunk-IURC35BF.js +0 -49
  103. package/dist/chunk-IURC35BF.js.map +0 -1
  104. package/dist/chunk-JI6M2L2W.js.map +0 -1
  105. package/dist/chunk-JJL6AMDA.js.map +0 -1
  106. package/dist/chunk-KYL67SKZ.js +0 -150
  107. package/dist/chunk-KYL67SKZ.js.map +0 -1
  108. package/dist/chunk-TBRZAJ7W.js.map +0 -1
  109. package/dist/curate-S4HOYWXA.js +0 -231
  110. package/dist/curate-S4HOYWXA.js.map +0 -1
  111. package/dist/digest-7NKYXM6G.js.map +0 -1
  112. package/dist/init-HPQ77WWF.js.map +0 -1
  113. package/dist/main-NFQ4II75.js.map +0 -1
  114. package/dist/rebuild-KQ6G2GZM.js +0 -86
  115. package/dist/rebuild-KQ6G2GZM.js.map +0 -1
  116. package/dist/setup-digest-DZAFIBEF.js +0 -15
  117. package/dist/setup-llm-4BZM33YT.js +0 -15
  118. package/dist/stats-ZIIJ2GB3.js +0 -77
  119. package/dist/stats-ZIIJ2GB3.js.map +0 -1
  120. /package/dist/{chunk-ZWUFTOG3.js.map → chunk-2GSX3BK2.js.map} +0 -0
  121. /package/dist/{chunk-HJG7Z6SJ.js.map → chunk-3EM23DMD.js.map} +0 -0
  122. /package/dist/{chunk-T7OC6GH5.js.map → chunk-5FNZ7AMX.js.map} +0 -0
  123. /package/dist/{chunk-X6TKHO22.js.map → chunk-5QWZT4AB.js.map} +0 -0
  124. /package/dist/{chunk-7KQB22DP.js.map → chunk-E7OBRBCQ.js.map} +0 -0
  125. /package/dist/{chunk-MIU3DKLN.js.map → chunk-GNR3QAER.js.map} +0 -0
  126. /package/dist/{chunk-BMJX2IDQ.js.map → chunk-H7PRCVGQ.js.map} +0 -0
  127. /package/dist/{chunk-6LTNFMXO.js.map → chunk-KC7ENQTN.js.map} +0 -0
  128. /package/dist/{chunk-ND4VK6C7.js.map → chunk-L25U7PIG.js.map} +0 -0
  129. /package/dist/{chunk-UKWO26VI.js.map → chunk-YTANWAGE.js.map} +0 -0
  130. /package/dist/{cli-BLYNNKGJ.js.map → cli-K7SUTP7A.js.map} +0 -0
  131. /package/dist/{client-5GB4WVXE.js.map → client-YJMNTITQ.js.map} +0 -0
  132. /package/dist/{config-5FGLQGCW.js.map → config-G5GGT5A6.js.map} +0 -0
  133. /package/dist/{detect-providers-BIHYFK5M.js.map → detect-providers-S3M5TAMW.js.map} +0 -0
  134. /package/dist/{logs-BSTBZHDR.js.map → logs-IENORIYR.js.map} +0 -0
  135. /package/dist/{search-E5JQMTXV.js.map → search-2BVRF54H.js.map} +0 -0
  136. /package/dist/{session-QF6MILAC.js.map → session-F326AWCH.js.map} +0 -0
  137. /package/dist/{session-start-5MFEOVQ5.js.map → session-start-AZAF3DTE.js.map} +0 -0
  138. /package/dist/{setup-digest-DZAFIBEF.js.map → setup-digest-YLZZGSSR.js.map} +0 -0
  139. /package/dist/{setup-llm-4BZM33YT.js.map → setup-llm-JOXBSLXC.js.map} +0 -0
  140. /package/dist/{verify-RACBFT2P.js.map → verify-7DW7LAND.js.map} +0 -0
  141. /package/dist/{version-HJTVNPOO.js.map → version-RQLD7VBP.js.map} +0 -0
@@ -0,0 +1,80 @@
1
+ import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
+ import {
3
+ runCuration
4
+ } from "./chunk-2ZBB3MQT.js";
5
+ import "./chunk-3JCXYLHD.js";
6
+ import {
7
+ VectorIndex
8
+ } from "./chunk-4RMSHZE4.js";
9
+ import "./chunk-UVGAVYWZ.js";
10
+ import "./chunk-24DOZEUJ.js";
11
+ import "./chunk-RGVBGTD6.js";
12
+ import {
13
+ createEmbeddingProvider,
14
+ createLlmProvider
15
+ } from "./chunk-GDYYJTTT.js";
16
+ import "./chunk-GNR3QAER.js";
17
+ import "./chunk-6FQISQNA.js";
18
+ import {
19
+ MycoIndex
20
+ } from "./chunk-TWSTAVLO.js";
21
+ import "./chunk-QGJ2ZIUZ.js";
22
+ import {
23
+ loadConfig
24
+ } from "./chunk-P3WO3N3I.js";
25
+ import "./chunk-MQSYSQ6T.js";
26
+ import "./chunk-6BSDCZ5Q.js";
27
+ import "./chunk-PZUWP5VK.js";
28
+
29
+ // src/cli/curate.ts
30
+ import path from "path";
31
+ async function run(args, vaultDir) {
32
+ const isDryRun = args.includes("--dry-run");
33
+ const config = loadConfig(vaultDir);
34
+ const index = new MycoIndex(path.join(vaultDir, "index.db"));
35
+ const llmProvider = createLlmProvider(config.intelligence.llm);
36
+ const embeddingProvider = createEmbeddingProvider(config.intelligence.embedding);
37
+ let vectorIndex = null;
38
+ try {
39
+ const testEmbed = await embeddingProvider.embed("test");
40
+ vectorIndex = new VectorIndex(path.join(vaultDir, "vectors.db"), testEmbed.dimensions);
41
+ } catch (e) {
42
+ console.error(`Vector index unavailable: ${e.message}`);
43
+ console.error("Curate requires a working embedding provider.");
44
+ index.close();
45
+ process.exit(1);
46
+ }
47
+ try {
48
+ if (isDryRun) {
49
+ console.log("Dry run \u2014 no changes will be written.\n");
50
+ }
51
+ const result = await runCuration(
52
+ {
53
+ vaultDir,
54
+ config,
55
+ index,
56
+ vectorIndex,
57
+ llmProvider,
58
+ embeddingProvider,
59
+ log: (_level, message) => console.log(` ${message}`)
60
+ },
61
+ isDryRun
62
+ );
63
+ console.log(`
64
+ Curation complete:`);
65
+ console.log(` Scanned: ${result.scanned} active spores`);
66
+ console.log(` Clusters evaluated: ${result.clustersEvaluated}`);
67
+ if (isDryRun) {
68
+ console.log(` Would supersede: ${result.superseded}`);
69
+ } else {
70
+ console.log(` Superseded: ${result.superseded}`);
71
+ }
72
+ } finally {
73
+ index.close();
74
+ vectorIndex?.close();
75
+ }
76
+ }
77
+ export {
78
+ run
79
+ };
80
+ //# sourceMappingURL=curate-6T5NKVXK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/curate.ts"],"sourcesContent":["/**\n * myco curate — scan the vault for stale spores and supersede them.\n *\n * Usage:\n * myco curate Scan and supersede stale spores\n * myco curate --dry-run Show what would be superseded without writing\n *\n * Algorithm:\n * 1. Load all active spores from the index\n * 2. Group by observation_type\n * 3. Within each group, embed spores and cluster by cosine similarity\n * 4. For each cluster with 2+ members, ask the LLM which are outdated\n * 5. Mark superseded: update frontmatter, append notice, re-index, remove vector\n */\nimport path from 'node:path';\nimport { loadConfig } from '../config/loader.js';\nimport { MycoIndex } from '../index/sqlite.js';\nimport { VectorIndex } from '../index/vectors.js';\nimport { createLlmProvider, createEmbeddingProvider } from '../intelligence/llm.js';\nimport { runCuration } from '../services/vault-ops.js';\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const isDryRun = args.includes('--dry-run');\n\n const config = loadConfig(vaultDir);\n const index = new MycoIndex(path.join(vaultDir, 'index.db'));\n\n const llmProvider = createLlmProvider(config.intelligence.llm);\n const embeddingProvider = createEmbeddingProvider(config.intelligence.embedding);\n\n let vectorIndex: VectorIndex | null = null;\n try {\n const testEmbed = await embeddingProvider.embed('test');\n vectorIndex = new VectorIndex(path.join(vaultDir, 'vectors.db'), testEmbed.dimensions);\n } catch (e) {\n console.error(`Vector index unavailable: ${(e as Error).message}`);\n console.error('Curate requires a working embedding provider.');\n index.close();\n process.exit(1);\n }\n\n try {\n if (isDryRun) {\n console.log('Dry run — no changes will be written.\\n');\n }\n\n const result = await runCuration(\n {\n vaultDir,\n config,\n index,\n vectorIndex,\n llmProvider,\n embeddingProvider,\n log: (_level, message) => console.log(` ${message}`),\n },\n isDryRun,\n );\n\n console.log(`\\nCuration complete:`);\n console.log(` Scanned: ${result.scanned} active spores`);\n console.log(` Clusters evaluated: ${result.clustersEvaluated}`);\n if (isDryRun) {\n console.log(` Would supersede: ${result.superseded}`);\n } else {\n console.log(` Superseded: ${result.superseded}`);\n }\n } finally {\n index.close();\n vectorIndex?.close();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,OAAO,UAAU;AAOjB,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,WAAW,KAAK,SAAS,WAAW;AAE1C,QAAM,SAAS,WAAW,QAAQ;AAClC,QAAM,QAAQ,IAAI,UAAU,KAAK,KAAK,UAAU,UAAU,CAAC;AAE3D,QAAM,cAAc,kBAAkB,OAAO,aAAa,GAAG;AAC7D,QAAM,oBAAoB,wBAAwB,OAAO,aAAa,SAAS;AAE/E,MAAI,cAAkC;AACtC,MAAI;AACF,UAAM,YAAY,MAAM,kBAAkB,MAAM,MAAM;AACtD,kBAAc,IAAI,YAAY,KAAK,KAAK,UAAU,YAAY,GAAG,UAAU,UAAU;AAAA,EACvF,SAAS,GAAG;AACV,YAAQ,MAAM,6BAA8B,EAAY,OAAO,EAAE;AACjE,YAAQ,MAAM,+CAA+C;AAC7D,UAAM,MAAM;AACZ,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI;AACF,QAAI,UAAU;AACZ,cAAQ,IAAI,8CAAyC;AAAA,IACvD;AAEA,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK,CAAC,QAAQ,YAAY,QAAQ,IAAI,KAAK,OAAO,EAAE;AAAA,MACtD;AAAA,MACA;AAAA,IACF;AAEA,YAAQ,IAAI;AAAA,mBAAsB;AAClC,YAAQ,IAAI,cAAc,OAAO,OAAO,gBAAgB;AACxD,YAAQ,IAAI,yBAAyB,OAAO,iBAAiB,EAAE;AAC/D,QAAI,UAAU;AACZ,cAAQ,IAAI,sBAAsB,OAAO,UAAU,EAAE;AAAA,IACvD,OAAO;AACL,cAAQ,IAAI,iBAAiB,OAAO,UAAU,EAAE;AAAA,IAClD;AAAA,EACF,UAAE;AACA,UAAM,MAAM;AACZ,iBAAa,MAAM;AAAA,EACrB;AACF;","names":[]}
@@ -2,10 +2,10 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  LmStudioBackend,
4
4
  OllamaBackend
5
- } from "./chunk-JI6M2L2W.js";
5
+ } from "./chunk-QGJ2ZIUZ.js";
6
6
  import {
7
7
  PROVIDER_DETECT_TIMEOUT_MS
8
- } from "./chunk-B6WVNDA5.js";
8
+ } from "./chunk-6BSDCZ5Q.js";
9
9
  import "./chunk-PZUWP5VK.js";
10
10
 
11
11
  // src/cli/detect-providers.ts
@@ -32,4 +32,4 @@ async function run(_args) {
32
32
  export {
33
33
  run
34
34
  };
35
- //# sourceMappingURL=detect-providers-BIHYFK5M.js.map
35
+ //# sourceMappingURL=detect-providers-S3M5TAMW.js.map
@@ -1,27 +1,30 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
- DigestEngine
4
- } from "./chunk-HL2S5QZG.js";
5
- import "./chunk-KYL67SKZ.js";
6
- import "./chunk-2AMAOSRF.js";
3
+ runDigest
4
+ } from "./chunk-2ZBB3MQT.js";
5
+ import "./chunk-3JCXYLHD.js";
6
+ import "./chunk-UVGAVYWZ.js";
7
+ import "./chunk-24DOZEUJ.js";
8
+ import "./chunk-RGVBGTD6.js";
7
9
  import {
8
10
  createLlmProvider
9
- } from "./chunk-RCV2I4AI.js";
10
- import "./chunk-MIU3DKLN.js";
11
+ } from "./chunk-GDYYJTTT.js";
12
+ import "./chunk-GNR3QAER.js";
13
+ import "./chunk-6FQISQNA.js";
11
14
  import {
12
15
  MycoIndex
13
- } from "./chunk-AK6GNLPV.js";
14
- import "./chunk-FIRMTYFH.js";
16
+ } from "./chunk-TWSTAVLO.js";
17
+ import "./chunk-2YBUL3IL.js";
15
18
  import {
16
19
  parseIntFlag
17
20
  } from "./chunk-SAKJMNSR.js";
18
- import "./chunk-JI6M2L2W.js";
21
+ import "./chunk-QGJ2ZIUZ.js";
19
22
  import {
20
23
  loadConfig
21
- } from "./chunk-TBRZAJ7W.js";
22
- import "./chunk-6UJWI4IW.js";
23
- import "./chunk-X6TKHO22.js";
24
- import "./chunk-B6WVNDA5.js";
24
+ } from "./chunk-P3WO3N3I.js";
25
+ import "./chunk-MQSYSQ6T.js";
26
+ import "./chunk-5QWZT4AB.js";
27
+ import "./chunk-6BSDCZ5Q.js";
25
28
  import "./chunk-PZUWP5VK.js";
26
29
 
27
30
  // src/cli/digest.ts
@@ -43,31 +46,6 @@ async function run(args, vaultDir) {
43
46
  };
44
47
  const llmProvider = createLlmProvider(digestLlmConfig);
45
48
  const index = new MycoIndex(path.join(vaultDir, "index.db"));
46
- const engine = new DigestEngine({
47
- vaultDir,
48
- index,
49
- llmProvider,
50
- config,
51
- log: (level, message, data) => {
52
- const prefix = level === "warn" ? "\u26A0" : level === "info" ? "\u2192" : " ";
53
- const suffix = data ? ` ${JSON.stringify(data)}` : "";
54
- console.log(`${prefix} ${message}${suffix}`);
55
- }
56
- });
57
- const opts = {};
58
- if (isReprocess) {
59
- opts.fullReprocess = true;
60
- opts.cleanSlate = true;
61
- }
62
- if (tierArg !== void 0) {
63
- const eligible = engine.getEligibleTiers();
64
- if (!eligible.includes(tierArg)) {
65
- console.error(`Tier ${tierArg} is not eligible. Eligible tiers: [${eligible.join(", ")}]`);
66
- index.close();
67
- process.exit(1);
68
- }
69
- opts.tiers = [tierArg];
70
- }
71
49
  if (isReprocess) {
72
50
  const tierLabel = tierArg ? `tier ${tierArg}` : "all tiers";
73
51
  console.log(`Full reprocess of ${tierLabel} \u2014 clean slate, all substrate`);
@@ -75,7 +53,20 @@ async function run(args, vaultDir) {
75
53
  console.log("Running incremental digest cycle");
76
54
  }
77
55
  try {
78
- const result = await engine.runCycle(opts);
56
+ const result = await runDigest(
57
+ {
58
+ vaultDir,
59
+ config,
60
+ index,
61
+ log: (level, message, data) => {
62
+ const prefix = level === "warn" ? "!" : level === "info" ? ">" : " ";
63
+ const suffix = data ? ` ${JSON.stringify(data)}` : "";
64
+ console.log(`${prefix} ${message}${suffix}`);
65
+ }
66
+ },
67
+ llmProvider,
68
+ { tier: tierArg, full: isFull }
69
+ );
79
70
  if (!result) {
80
71
  console.log("No substrate found \u2014 nothing to digest.");
81
72
  return;
@@ -93,4 +84,4 @@ Digest cycle complete:`);
93
84
  export {
94
85
  run
95
86
  };
96
- //# sourceMappingURL=digest-7NKYXM6G.js.map
87
+ //# sourceMappingURL=digest-O35VHYFP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/digest.ts"],"sourcesContent":["/**\n * myco digest — run a digest cycle from the CLI.\n *\n * Usage:\n * myco digest Incremental cycle (only new substrate)\n * myco digest --full Full reprocess of all tiers from clean slate\n * myco digest --tier 3000 Reprocess a specific tier from clean slate\n *\n * When --tier or --full is used, the cycle processes ALL vault notes (not just\n * new ones) and ignores previous extracts, producing a clean synthesis.\n */\nimport { loadConfig } from '../config/loader.js';\nimport { MycoIndex } from '../index/sqlite.js';\nimport { createLlmProvider } from '../intelligence/llm.js';\nimport { runDigest } from '../services/vault-ops.js';\nimport { parseIntFlag } from './shared.js';\nimport path from 'node:path';\n\nexport async function run(args: string[], vaultDir: string): Promise<void> {\n const config = loadConfig(vaultDir);\n\n if (!config.digest.enabled) {\n console.error('Digest is not enabled. Set digest.enabled: true in myco.yaml.');\n process.exit(1);\n }\n\n const tierArg = parseIntFlag(args, '--tier');\n const isFull = args.includes('--full');\n const isReprocess = isFull || tierArg !== undefined;\n\n // Resolve the digest LLM provider\n const digestLlmConfig = {\n provider: config.digest.intelligence.provider ?? config.intelligence.llm.provider,\n model: config.digest.intelligence.model ?? config.intelligence.llm.model,\n base_url: config.digest.intelligence.base_url ?? config.intelligence.llm.base_url,\n context_window: config.digest.intelligence.context_window,\n };\n const llmProvider = createLlmProvider(digestLlmConfig);\n\n const index = new MycoIndex(path.join(vaultDir, 'index.db'));\n\n if (isReprocess) {\n const tierLabel = tierArg ? `tier ${tierArg}` : 'all tiers';\n console.log(`Full reprocess of ${tierLabel} — clean slate, all substrate`);\n } else {\n console.log('Running incremental digest cycle');\n }\n\n try {\n const result = await runDigest(\n {\n vaultDir,\n config,\n index,\n log: (level, message, data) => {\n const prefix = level === 'warn' ? '!' : level === 'info' ? '>' : ' ';\n const suffix = data ? ` ${JSON.stringify(data)}` : '';\n console.log(`${prefix} ${message}${suffix}`);\n },\n },\n llmProvider,\n { tier: tierArg, full: isFull },\n );\n\n if (!result) {\n console.log('No substrate found — nothing to digest.');\n return;\n }\n\n console.log(`\\nDigest cycle complete:`);\n console.log(` Tiers generated: [${result.tiersGenerated.join(', ')}]`);\n console.log(` Substrate: ${Object.values(result.substrate).flat().length} notes`);\n console.log(` Duration: ${(result.durationMs / 1000).toFixed(1)}s`);\n console.log(` Model: ${result.model}`);\n } finally {\n index.close();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,OAAO,UAAU;AAEjB,eAAsB,IAAI,MAAgB,UAAiC;AACzE,QAAM,SAAS,WAAW,QAAQ;AAElC,MAAI,CAAC,OAAO,OAAO,SAAS;AAC1B,YAAQ,MAAM,+DAA+D;AAC7E,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,aAAa,MAAM,QAAQ;AAC3C,QAAM,SAAS,KAAK,SAAS,QAAQ;AACrC,QAAM,cAAc,UAAU,YAAY;AAG1C,QAAM,kBAAkB;AAAA,IACtB,UAAU,OAAO,OAAO,aAAa,YAAY,OAAO,aAAa,IAAI;AAAA,IACzE,OAAO,OAAO,OAAO,aAAa,SAAS,OAAO,aAAa,IAAI;AAAA,IACnE,UAAU,OAAO,OAAO,aAAa,YAAY,OAAO,aAAa,IAAI;AAAA,IACzE,gBAAgB,OAAO,OAAO,aAAa;AAAA,EAC7C;AACA,QAAM,cAAc,kBAAkB,eAAe;AAErD,QAAM,QAAQ,IAAI,UAAU,KAAK,KAAK,UAAU,UAAU,CAAC;AAE3D,MAAI,aAAa;AACf,UAAM,YAAY,UAAU,QAAQ,OAAO,KAAK;AAChD,YAAQ,IAAI,qBAAqB,SAAS,oCAA+B;AAAA,EAC3E,OAAO;AACL,YAAQ,IAAI,kCAAkC;AAAA,EAChD;AAEA,MAAI;AACF,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK,CAAC,OAAO,SAAS,SAAS;AAC7B,gBAAM,SAAS,UAAU,SAAS,MAAM,UAAU,SAAS,MAAM;AACjE,gBAAM,SAAS,OAAO,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK;AACnD,kBAAQ,IAAI,GAAG,MAAM,IAAI,OAAO,GAAG,MAAM,EAAE;AAAA,QAC7C;AAAA,MACF;AAAA,MACA;AAAA,MACA,EAAE,MAAM,SAAS,MAAM,OAAO;AAAA,IAChC;AAEA,QAAI,CAAC,QAAQ;AACX,cAAQ,IAAI,8CAAyC;AACrD;AAAA,IACF;AAEA,YAAQ,IAAI;AAAA,uBAA0B;AACtC,YAAQ,IAAI,uBAAuB,OAAO,eAAe,KAAK,IAAI,CAAC,GAAG;AACtE,YAAQ,IAAI,gBAAgB,OAAO,OAAO,OAAO,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ;AACjF,YAAQ,IAAI,gBAAgB,OAAO,aAAa,KAAM,QAAQ,CAAC,CAAC,GAAG;AACnE,YAAQ,IAAI,YAAY,OAAO,KAAK,EAAE;AAAA,EACxC,UAAE;AACA,UAAM,MAAM;AAAA,EACd;AACF;","names":[]}
@@ -4,31 +4,30 @@ import {
4
4
  } from "./chunk-6FQISQNA.js";
5
5
  import {
6
6
  MycoIndex
7
- } from "./chunk-AK6GNLPV.js";
7
+ } from "./chunk-TWSTAVLO.js";
8
8
  import {
9
9
  run
10
- } from "./chunk-T7OC6GH5.js";
10
+ } from "./chunk-5FNZ7AMX.js";
11
11
  import {
12
12
  run as run2
13
- } from "./chunk-UKWO26VI.js";
13
+ } from "./chunk-YTANWAGE.js";
14
14
  import {
15
- DASHBOARD_CONTENT,
16
15
  VAULT_GITIGNORE,
17
16
  configureVaultEnv
18
- } from "./chunk-FIRMTYFH.js";
17
+ } from "./chunk-2YBUL3IL.js";
19
18
  import {
20
19
  parseStringFlag
21
20
  } from "./chunk-SAKJMNSR.js";
22
- import "./chunk-JI6M2L2W.js";
21
+ import "./chunk-QGJ2ZIUZ.js";
23
22
  import {
24
23
  MycoConfigSchema,
25
24
  require_dist
26
- } from "./chunk-6UJWI4IW.js";
25
+ } from "./chunk-MQSYSQ6T.js";
27
26
  import {
28
27
  resolveVaultDir
29
28
  } from "./chunk-N33KUCFP.js";
30
- import "./chunk-X6TKHO22.js";
31
- import "./chunk-B6WVNDA5.js";
29
+ import "./chunk-5QWZT4AB.js";
30
+ import "./chunk-6BSDCZ5Q.js";
32
31
  import {
33
32
  __toESM
34
33
  } from "./chunk-PZUWP5VK.js";
@@ -62,7 +61,6 @@ async function run3(args) {
62
61
  "utf-8"
63
62
  );
64
63
  fs.writeFileSync(path.join(vaultDir, ".gitignore"), VAULT_GITIGNORE, "utf-8");
65
- fs.writeFileSync(path.join(vaultDir, "_dashboard.md"), DASHBOARD_CONTENT, "utf-8");
66
64
  const index = new MycoIndex(path.join(vaultDir, "index.db"));
67
65
  initFts(index);
68
66
  index.close();
@@ -108,4 +106,4 @@ async function run3(args) {
108
106
  export {
109
107
  run3 as run
110
108
  };
111
- //# sourceMappingURL=init-HPQ77WWF.js.map
109
+ //# sourceMappingURL=init-TFLSATB3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/init.ts"],"sourcesContent":["import { MycoIndex } from '../index/sqlite.js';\nimport { initFts } from '../index/fts.js';\nimport { resolveVaultDir } from '../vault/resolve.js';\nimport {\n parseStringFlag,\n VAULT_GITIGNORE,\n configureVaultEnv,\n} from './shared.js';\nimport { MycoConfigSchema } from '../config/schema.js';\nimport { run as setupLlm } from './setup-llm.js';\nimport { run as setupDigest } from './setup-digest.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport os from 'node:os';\nimport YAML from 'yaml';\n\nexport async function run(args: string[]): Promise<void> {\n const vaultPath = parseStringFlag(args, '--vault');\n const user = parseStringFlag(args, '--user') ?? '';\n const teamEnabled = args.includes('--team');\n\n // Resolve vault directory\n const vaultDir = vaultPath\n ? (vaultPath.startsWith('~/') ? path.join(os.homedir(), vaultPath.slice(2)) : path.resolve(vaultPath))\n : path.join(resolveVaultDir());\n\n // Check if already initialized\n if (fs.existsSync(path.join(vaultDir, 'myco.yaml'))) {\n console.log(`Vault already initialized at ${vaultDir}`);\n return;\n }\n\n console.log(`Initializing Myco vault at ${vaultDir}`);\n\n // Create directory structure\n const dirs = ['sessions', 'plans', 'spores', 'artifacts', 'team', 'buffer', 'logs'];\n for (const dir of dirs) {\n fs.mkdirSync(path.join(vaultDir, dir), { recursive: true });\n }\n\n // Write myco.yaml — only version is truly required, everything else has Zod defaults\n const config = MycoConfigSchema.parse({\n version: 2,\n team: { user, enabled: teamEnabled },\n });\n\n fs.writeFileSync(\n path.join(vaultDir, 'myco.yaml'),\n YAML.stringify(config),\n 'utf-8',\n );\n\n // Write .gitignore\n fs.writeFileSync(path.join(vaultDir, '.gitignore'), VAULT_GITIGNORE, 'utf-8');\n\n // Initialize FTS index\n const index = new MycoIndex(path.join(vaultDir, 'index.db'));\n initFts(index);\n index.close();\n\n // Apply LLM provider settings from flags (if any were passed)\n const llmFlags: string[] = [];\n const llmProvider = parseStringFlag(args, '--llm-provider');\n const llmModel = parseStringFlag(args, '--llm-model');\n const llmUrl = parseStringFlag(args, '--llm-url');\n if (llmProvider) llmFlags.push('--llm-provider', llmProvider);\n if (llmModel) llmFlags.push('--llm-model', llmModel);\n if (llmUrl) llmFlags.push('--llm-url', llmUrl);\n const embeddingProvider = parseStringFlag(args, '--embedding-provider');\n const embeddingModel = parseStringFlag(args, '--embedding-model');\n const embeddingUrl = parseStringFlag(args, '--embedding-url');\n if (embeddingProvider) llmFlags.push('--embedding-provider', embeddingProvider);\n if (embeddingModel) llmFlags.push('--embedding-model', embeddingModel);\n if (embeddingUrl) llmFlags.push('--embedding-url', embeddingUrl);\n\n if (llmFlags.length > 0) {\n await setupLlm(llmFlags, vaultDir);\n }\n\n // Apply digest settings from flags (if any were passed)\n const digestFlags: string[] = [];\n const tiers = parseStringFlag(args, '--tiers');\n const injectTier = parseStringFlag(args, '--inject-tier');\n const contextWindow = parseStringFlag(args, '--context-window');\n if (tiers) digestFlags.push('--tiers', tiers);\n if (injectTier) digestFlags.push('--inject-tier', injectTier);\n if (contextWindow) digestFlags.push('--context-window', contextWindow);\n\n if (digestFlags.length > 0) {\n await setupDigest(digestFlags, vaultDir);\n }\n\n // Summary\n console.log('');\n console.log('=== Myco Vault Initialized ===');\n console.log(`Path: ${vaultDir}`);\n console.log(`Team mode: ${teamEnabled ? 'enabled' : 'disabled'}`);\n if (user) console.log(`User: ${user}`);\n console.log('');\n\n // If vault is outside the project, configure MYCO_VAULT_DIR for the current agent\n const projectRoot = path.resolve('.');\n const isProjectLocal = vaultDir.startsWith(projectRoot);\n if (!isProjectLocal) {\n configureVaultEnv(projectRoot, vaultDir);\n }\n\n console.log('Next: start a coding session — Myco will begin capturing automatically.');\n}\n"],"mappings":"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","names":["run","YAML"]}
@@ -3,10 +3,10 @@ import {
3
3
  DEFAULT_LOG_TAIL,
4
4
  matchesFilter,
5
5
  queryLogs
6
- } from "./chunk-BMJX2IDQ.js";
6
+ } from "./chunk-H7PRCVGQ.js";
7
7
  import {
8
8
  LEVEL_ORDER
9
- } from "./chunk-5EZ7QF6J.js";
9
+ } from "./chunk-QLUE3BUL.js";
10
10
  import {
11
11
  formatLogLine,
12
12
  parseIntFlag,
@@ -81,4 +81,4 @@ function run(args, vaultDir) {
81
81
  export {
82
82
  run
83
83
  };
84
- //# sourceMappingURL=logs-BSTBZHDR.js.map
84
+ //# sourceMappingURL=logs-IENORIYR.js.map