@0xmaxma/claude-gateway 1.7.9 → 1.8.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 (258) hide show
  1. package/README.md +178 -44
  2. package/dist/agent/builtin-commands.js +2 -2
  3. package/dist/agent/builtin-commands.js.map +1 -1
  4. package/dist/agent/dreaming/accept.d.ts.map +1 -1
  5. package/dist/agent/dreaming/accept.js +4 -1
  6. package/dist/agent/dreaming/accept.js.map +1 -1
  7. package/dist/agent/dreaming/config.d.ts.map +1 -1
  8. package/dist/agent/dreaming/config.js +2 -0
  9. package/dist/agent/dreaming/config.js.map +1 -1
  10. package/dist/agent/dreaming/reviewer.d.ts.map +1 -1
  11. package/dist/agent/dreaming/reviewer.js +9 -2
  12. package/dist/agent/dreaming/reviewer.js.map +1 -1
  13. package/dist/agent/dreaming/staleness.d.ts +7 -1
  14. package/dist/agent/dreaming/staleness.d.ts.map +1 -1
  15. package/dist/agent/dreaming/staleness.js +17 -2
  16. package/dist/agent/dreaming/staleness.js.map +1 -1
  17. package/dist/agent/dreaming/types.d.ts +17 -1
  18. package/dist/agent/dreaming/types.d.ts.map +1 -1
  19. package/dist/agent/knowledge/archive-db.d.ts +43 -0
  20. package/dist/agent/knowledge/archive-db.d.ts.map +1 -1
  21. package/dist/agent/knowledge/archive-db.js +130 -0
  22. package/dist/agent/knowledge/archive-db.js.map +1 -1
  23. package/dist/agent/knowledge/config.d.ts +3 -1
  24. package/dist/agent/knowledge/config.d.ts.map +1 -1
  25. package/dist/agent/knowledge/config.js +32 -10
  26. package/dist/agent/knowledge/config.js.map +1 -1
  27. package/dist/agent/knowledge/index.d.ts +11 -4
  28. package/dist/agent/knowledge/index.d.ts.map +1 -1
  29. package/dist/agent/knowledge/index.js +22 -1
  30. package/dist/agent/knowledge/index.js.map +1 -1
  31. package/dist/agent/knowledge/indexer.d.ts +0 -7
  32. package/dist/agent/knowledge/indexer.d.ts.map +1 -1
  33. package/dist/agent/knowledge/indexer.js +34 -7
  34. package/dist/agent/knowledge/indexer.js.map +1 -1
  35. package/dist/agent/knowledge/lifecycle.d.ts +20 -4
  36. package/dist/agent/knowledge/lifecycle.d.ts.map +1 -1
  37. package/dist/agent/knowledge/lifecycle.js +33 -4
  38. package/dist/agent/knowledge/lifecycle.js.map +1 -1
  39. package/dist/agent/knowledge/reflection.d.ts +114 -0
  40. package/dist/agent/knowledge/reflection.d.ts.map +1 -0
  41. package/dist/agent/knowledge/reflection.js +447 -0
  42. package/dist/agent/knowledge/reflection.js.map +1 -0
  43. package/dist/agent/knowledge/shared-dedup.d.ts +85 -0
  44. package/dist/agent/knowledge/shared-dedup.d.ts.map +1 -0
  45. package/dist/agent/knowledge/shared-dedup.js +187 -0
  46. package/dist/agent/knowledge/shared-dedup.js.map +1 -0
  47. package/dist/agent/knowledge/shared-promote.d.ts +82 -7
  48. package/dist/agent/knowledge/shared-promote.d.ts.map +1 -1
  49. package/dist/agent/knowledge/shared-promote.js +244 -11
  50. package/dist/agent/knowledge/shared-promote.js.map +1 -1
  51. package/dist/agent/knowledge/shared-staleness.d.ts +51 -0
  52. package/dist/agent/knowledge/shared-staleness.d.ts.map +1 -0
  53. package/dist/agent/knowledge/shared-staleness.js +149 -0
  54. package/dist/agent/knowledge/shared-staleness.js.map +1 -0
  55. package/dist/agent/knowledge/shared-writer.d.ts +19 -0
  56. package/dist/agent/knowledge/shared-writer.d.ts.map +1 -1
  57. package/dist/agent/knowledge/shared-writer.js +42 -0
  58. package/dist/agent/knowledge/shared-writer.js.map +1 -1
  59. package/dist/agent/knowledge/types.d.ts +24 -0
  60. package/dist/agent/knowledge/types.d.ts.map +1 -1
  61. package/dist/agent/model-catalog.d.ts +62 -0
  62. package/dist/agent/model-catalog.d.ts.map +1 -0
  63. package/dist/agent/model-catalog.js +264 -0
  64. package/dist/agent/model-catalog.js.map +1 -0
  65. package/dist/agent/runner.d.ts +83 -0
  66. package/dist/agent/runner.d.ts.map +1 -1
  67. package/dist/agent/runner.js +281 -51
  68. package/dist/agent/runner.js.map +1 -1
  69. package/dist/agent/workspace-loader.d.ts +17 -2
  70. package/dist/agent/workspace-loader.d.ts.map +1 -1
  71. package/dist/agent/workspace-loader.js +17 -1
  72. package/dist/agent/workspace-loader.js.map +1 -1
  73. package/dist/api/cron-router.d.ts +12 -8
  74. package/dist/api/cron-router.d.ts.map +1 -1
  75. package/dist/api/cron-router.js +82 -16
  76. package/dist/api/cron-router.js.map +1 -1
  77. package/dist/api/gateway-router.d.ts +4 -0
  78. package/dist/api/gateway-router.d.ts.map +1 -1
  79. package/dist/api/gateway-router.js +16 -1
  80. package/dist/api/gateway-router.js.map +1 -1
  81. package/dist/api/manifest-sources.d.ts +15 -0
  82. package/dist/api/manifest-sources.d.ts.map +1 -0
  83. package/dist/api/manifest-sources.js +27 -0
  84. package/dist/api/manifest-sources.js.map +1 -0
  85. package/dist/api/meta-router.d.ts +13 -0
  86. package/dist/api/meta-router.d.ts.map +1 -0
  87. package/dist/api/meta-router.js +26 -0
  88. package/dist/api/meta-router.js.map +1 -0
  89. package/dist/api/packages.d.ts.map +1 -1
  90. package/dist/api/packages.js +18 -198
  91. package/dist/api/packages.js.map +1 -1
  92. package/dist/api/route-registry.d.ts +81 -0
  93. package/dist/api/route-registry.d.ts.map +1 -0
  94. package/dist/api/route-registry.js +44 -0
  95. package/dist/api/route-registry.js.map +1 -0
  96. package/dist/api/router.d.ts.map +1 -1
  97. package/dist/api/router.js +21 -3
  98. package/dist/api/router.js.map +1 -1
  99. package/dist/apps/compose-generator.js +7 -4
  100. package/dist/apps/compose-generator.js.map +1 -1
  101. package/dist/apps/installer.d.ts +154 -0
  102. package/dist/apps/installer.d.ts.map +1 -1
  103. package/dist/apps/installer.js +657 -54
  104. package/dist/apps/installer.js.map +1 -1
  105. package/dist/cli/args.d.ts +25 -0
  106. package/dist/cli/args.d.ts.map +1 -0
  107. package/dist/cli/args.js +55 -0
  108. package/dist/cli/args.js.map +1 -0
  109. package/dist/cli/colors.d.ts +37 -0
  110. package/dist/cli/colors.d.ts.map +1 -0
  111. package/dist/cli/colors.js +63 -0
  112. package/dist/cli/colors.js.map +1 -0
  113. package/dist/cli/command-names.d.ts +98 -0
  114. package/dist/cli/command-names.d.ts.map +1 -0
  115. package/dist/cli/command-names.js +109 -0
  116. package/dist/cli/command-names.js.map +1 -0
  117. package/dist/cli/commands/agents.d.ts +28 -0
  118. package/dist/cli/commands/agents.d.ts.map +1 -0
  119. package/dist/cli/commands/agents.js +321 -0
  120. package/dist/cli/commands/agents.js.map +1 -0
  121. package/dist/cli/commands/channels.d.ts +17 -0
  122. package/dist/cli/commands/channels.d.ts.map +1 -0
  123. package/dist/cli/commands/channels.js +101 -0
  124. package/dist/cli/commands/channels.js.map +1 -0
  125. package/dist/cli/commands/debug-bundle.d.ts +6 -0
  126. package/dist/cli/commands/debug-bundle.d.ts.map +1 -0
  127. package/dist/cli/commands/debug-bundle.js +220 -0
  128. package/dist/cli/commands/debug-bundle.js.map +1 -0
  129. package/dist/cli/commands/doctor.d.ts +3 -0
  130. package/dist/cli/commands/doctor.d.ts.map +1 -0
  131. package/dist/cli/commands/doctor.js +104 -0
  132. package/dist/cli/commands/doctor.js.map +1 -0
  133. package/dist/cli/commands/gateway.d.ts +12 -0
  134. package/dist/cli/commands/gateway.d.ts.map +1 -0
  135. package/dist/cli/commands/gateway.js +145 -0
  136. package/dist/cli/commands/gateway.js.map +1 -0
  137. package/dist/cli/commands/service.d.ts +33 -0
  138. package/dist/cli/commands/service.d.ts.map +1 -0
  139. package/dist/cli/commands/service.js +513 -0
  140. package/dist/cli/commands/service.js.map +1 -0
  141. package/dist/cli/commands/update.d.ts +16 -0
  142. package/dist/cli/commands/update.d.ts.map +1 -0
  143. package/dist/cli/commands/update.js +149 -0
  144. package/dist/cli/commands/update.js.map +1 -0
  145. package/dist/cli/commands.generated.d.ts +4 -0
  146. package/dist/cli/commands.generated.d.ts.map +1 -0
  147. package/dist/cli/commands.generated.js +220 -0
  148. package/dist/cli/commands.generated.js.map +1 -0
  149. package/dist/cli/health.d.ts +31 -0
  150. package/dist/cli/health.d.ts.map +1 -0
  151. package/dist/cli/health.js +49 -0
  152. package/dist/cli/health.js.map +1 -0
  153. package/dist/cli/http-client.d.ts +140 -0
  154. package/dist/cli/http-client.d.ts.map +1 -0
  155. package/dist/cli/http-client.js +332 -0
  156. package/dist/cli/http-client.js.map +1 -0
  157. package/dist/cli/index.d.ts +27 -0
  158. package/dist/cli/index.d.ts.map +1 -0
  159. package/dist/cli/index.js +372 -0
  160. package/dist/cli/index.js.map +1 -0
  161. package/dist/cli/manager.d.ts +64 -0
  162. package/dist/cli/manager.d.ts.map +1 -0
  163. package/dist/cli/manager.js +181 -0
  164. package/dist/cli/manager.js.map +1 -0
  165. package/dist/cli/output.d.ts +49 -0
  166. package/dist/cli/output.d.ts.map +1 -0
  167. package/dist/cli/output.js +101 -0
  168. package/dist/cli/output.js.map +1 -0
  169. package/dist/cli/prompt.d.ts +29 -0
  170. package/dist/cli/prompt.d.ts.map +1 -0
  171. package/dist/cli/prompt.js +154 -0
  172. package/dist/cli/prompt.js.map +1 -0
  173. package/dist/cli/redact.d.ts +3 -0
  174. package/dist/cli/redact.d.ts.map +1 -0
  175. package/dist/cli/redact.js +33 -0
  176. package/dist/cli/redact.js.map +1 -0
  177. package/dist/cli/types.d.ts +22 -0
  178. package/dist/cli/types.d.ts.map +1 -0
  179. package/dist/cli/types.js +4 -0
  180. package/dist/cli/types.js.map +1 -0
  181. package/dist/config/bootstrap.d.ts +33 -0
  182. package/dist/config/bootstrap.d.ts.map +1 -0
  183. package/dist/config/bootstrap.js +117 -0
  184. package/dist/config/bootstrap.js.map +1 -0
  185. package/dist/config/loader.d.ts.map +1 -1
  186. package/dist/config/loader.js +5 -1
  187. package/dist/config/loader.js.map +1 -1
  188. package/dist/config/watcher.d.ts.map +1 -1
  189. package/dist/config/watcher.js +2 -35
  190. package/dist/config/watcher.js.map +1 -1
  191. package/dist/discord/receiver.d.ts +6 -1
  192. package/dist/discord/receiver.d.ts.map +1 -1
  193. package/dist/discord/receiver.js +9 -1
  194. package/dist/discord/receiver.js.map +1 -1
  195. package/dist/entry.d.ts +3 -0
  196. package/dist/entry.d.ts.map +1 -0
  197. package/dist/entry.js +83 -0
  198. package/dist/entry.js.map +1 -0
  199. package/dist/index.js +197 -47
  200. package/dist/index.js.map +1 -1
  201. package/dist/load-dotenv.d.ts +2 -0
  202. package/dist/load-dotenv.d.ts.map +1 -0
  203. package/dist/load-dotenv.js +68 -0
  204. package/dist/load-dotenv.js.map +1 -0
  205. package/dist/packages/registry.d.ts +50 -0
  206. package/dist/packages/registry.d.ts.map +1 -0
  207. package/dist/packages/registry.js +209 -0
  208. package/dist/packages/registry.js.map +1 -0
  209. package/dist/session/process.d.ts +20 -3
  210. package/dist/session/process.d.ts.map +1 -1
  211. package/dist/session/process.js +120 -5
  212. package/dist/session/process.js.map +1 -1
  213. package/dist/shell/claude-pty-shell.js +146 -27
  214. package/dist/shell/claude-pty-shell.js.map +1 -1
  215. package/dist/shell/draft-phantom.d.ts +49 -0
  216. package/dist/shell/draft-phantom.d.ts.map +1 -0
  217. package/dist/shell/draft-phantom.js +59 -0
  218. package/dist/shell/draft-phantom.js.map +1 -0
  219. package/dist/shell/submit-diag.d.ts +67 -0
  220. package/dist/shell/submit-diag.d.ts.map +1 -0
  221. package/dist/shell/submit-diag.js +69 -0
  222. package/dist/shell/submit-diag.js.map +1 -0
  223. package/dist/shutdown-signals.d.ts +47 -0
  224. package/dist/shutdown-signals.d.ts.map +1 -0
  225. package/dist/shutdown-signals.js +62 -0
  226. package/dist/shutdown-signals.js.map +1 -0
  227. package/dist/telegram/receiver.d.ts +6 -1
  228. package/dist/telegram/receiver.d.ts.map +1 -1
  229. package/dist/telegram/receiver.js +9 -1
  230. package/dist/telegram/receiver.js.map +1 -1
  231. package/dist/types.d.ts +25 -0
  232. package/dist/types.d.ts.map +1 -1
  233. package/dist/utils/orphan-receivers.d.ts +90 -0
  234. package/dist/utils/orphan-receivers.d.ts.map +1 -0
  235. package/dist/utils/orphan-receivers.js +218 -0
  236. package/dist/utils/orphan-receivers.js.map +1 -0
  237. package/dist/utils/paths.d.ts +16 -0
  238. package/dist/utils/paths.d.ts.map +1 -0
  239. package/dist/utils/paths.js +60 -0
  240. package/dist/utils/paths.js.map +1 -0
  241. package/dist/utils/stop-child.d.ts +21 -0
  242. package/dist/utils/stop-child.d.ts.map +1 -0
  243. package/dist/utils/stop-child.js +64 -0
  244. package/dist/utils/stop-child.js.map +1 -0
  245. package/lib/pairing.ts +1 -1
  246. package/mcp/tools/agent/handlers.ts +1 -1
  247. package/mcp/tools/discord/module.ts +23 -15
  248. package/mcp/tools/discord/receiver-server.ts +4 -0
  249. package/mcp/tools/memory/archive-reader.test.ts +25 -1
  250. package/mcp/tools/memory/archive-reader.ts +70 -12
  251. package/mcp/tools/memory/archive-writer.test.ts +168 -0
  252. package/mcp/tools/memory/archive-writer.ts +137 -0
  253. package/mcp/tools/memory/module.test.ts +187 -0
  254. package/mcp/tools/memory/module.ts +192 -6
  255. package/mcp/tools/telegram/module.ts +10 -2
  256. package/mcp/tools/telegram/receiver-server.ts +15 -6
  257. package/mcp/tools/telegram/typing.ts +178 -34
  258. package/package.json +6 -4
@@ -8,7 +8,7 @@
8
8
  * K2 (core shrink), K4 (dreaming applier), K3 (shared KB).
9
9
  */
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.classifyOrigin = exports.chunkMarkdown = exports.DEMO_MAX_SIZE = exports.demoGraphModelSized = exports.demoGraphModel = exports.buildGraphModel = exports.graphFromPages = exports.readVaultPages = exports.buildDashboards = exports.buildBacklinks = exports.extractLinks = exports.parseWikiPage = exports.compileWiki = exports.makeSharedPromoter = exports.sharedNoteFilename = exports.writeSharedNote = exports.sharedNotesDir = exports.sharedDbPath = exports.sharedVaultDir = exports.SHARED_DEFAULTS = exports.resolveSharedConfig = exports.ARCHIVE_DEFAULTS = exports.resolveArchiveConfig = exports.spawnArchiveReindex = exports.archiveDbPath = exports.indexSharedArchive = exports.indexAgentArchive = exports.ArchiveDB = void 0;
11
+ exports.classifyOrigin = exports.chunkMarkdown = exports.DEMO_MAX_SIZE = exports.demoGraphModelSized = exports.demoGraphModel = exports.buildGraphModel = exports.graphFromPages = exports.readVaultPages = exports.buildDashboards = exports.buildBacklinks = exports.extractLinks = exports.parseWikiPage = exports.compileWiki = exports.wholeNoteEntryBlock = exports.isConsolidationDay = exports.nextReflectionDelay = exports.msUntilNextDailyTime = exports.connectedComponents = exports.SharedReflectionManager = exports.STALE_NOTE_PREFIX = exports.retireSharedNote = exports.runSharedStalenessGc = exports.findSimilarSharedNotes = exports.mergeIntoNote = exports.makeSharedPromoter = exports.MAX_SHARED_NOTE_SIZE = exports.deleteSharedNoteFile = exports.readSharedNote = exports.sharedNoteExists = exports.sharedNoteFilename = exports.writeSharedNote = exports.REFLECTION_DEFAULTS = exports.resolveReflectionConfig = exports.sharedNotesDir = exports.sharedDbPath = exports.sharedVaultDir = exports.SHARED_DEFAULTS = exports.resolveSharedConfig = exports.ARCHIVE_DEFAULTS = exports.resolveArchiveConfig = exports.spawnArchiveReindex = exports.archiveDbPath = exports.indexSharedArchive = exports.indexAgentArchive = exports.ArchiveDB = void 0;
12
12
  var archive_db_1 = require("./archive-db");
13
13
  Object.defineProperty(exports, "ArchiveDB", { enumerable: true, get: function () { return archive_db_1.ArchiveDB; } });
14
14
  var indexer_1 = require("./indexer");
@@ -25,11 +25,32 @@ Object.defineProperty(exports, "SHARED_DEFAULTS", { enumerable: true, get: funct
25
25
  Object.defineProperty(exports, "sharedVaultDir", { enumerable: true, get: function () { return config_1.sharedVaultDir; } });
26
26
  Object.defineProperty(exports, "sharedDbPath", { enumerable: true, get: function () { return config_1.sharedDbPath; } });
27
27
  Object.defineProperty(exports, "sharedNotesDir", { enumerable: true, get: function () { return config_1.sharedNotesDir; } });
28
+ Object.defineProperty(exports, "resolveReflectionConfig", { enumerable: true, get: function () { return config_1.resolveReflectionConfig; } });
29
+ Object.defineProperty(exports, "REFLECTION_DEFAULTS", { enumerable: true, get: function () { return config_1.REFLECTION_DEFAULTS; } });
28
30
  var shared_writer_1 = require("./shared-writer");
29
31
  Object.defineProperty(exports, "writeSharedNote", { enumerable: true, get: function () { return shared_writer_1.writeSharedNote; } });
30
32
  Object.defineProperty(exports, "sharedNoteFilename", { enumerable: true, get: function () { return shared_writer_1.sharedNoteFilename; } });
33
+ Object.defineProperty(exports, "sharedNoteExists", { enumerable: true, get: function () { return shared_writer_1.sharedNoteExists; } });
34
+ Object.defineProperty(exports, "readSharedNote", { enumerable: true, get: function () { return shared_writer_1.readSharedNote; } });
35
+ Object.defineProperty(exports, "deleteSharedNoteFile", { enumerable: true, get: function () { return shared_writer_1.deleteSharedNoteFile; } });
36
+ Object.defineProperty(exports, "MAX_SHARED_NOTE_SIZE", { enumerable: true, get: function () { return shared_writer_1.MAX_SHARED_NOTE_SIZE; } });
31
37
  var shared_promote_1 = require("./shared-promote");
32
38
  Object.defineProperty(exports, "makeSharedPromoter", { enumerable: true, get: function () { return shared_promote_1.makeSharedPromoter; } });
39
+ Object.defineProperty(exports, "mergeIntoNote", { enumerable: true, get: function () { return shared_promote_1.mergeIntoNote; } });
40
+ var shared_dedup_1 = require("./shared-dedup");
41
+ Object.defineProperty(exports, "findSimilarSharedNotes", { enumerable: true, get: function () { return shared_dedup_1.findSimilarSharedNotes; } });
42
+ var shared_staleness_1 = require("./shared-staleness");
43
+ Object.defineProperty(exports, "runSharedStalenessGc", { enumerable: true, get: function () { return shared_staleness_1.runSharedStalenessGc; } });
44
+ Object.defineProperty(exports, "retireSharedNote", { enumerable: true, get: function () { return shared_staleness_1.retireSharedNote; } });
45
+ Object.defineProperty(exports, "STALE_NOTE_PREFIX", { enumerable: true, get: function () { return shared_staleness_1.STALE_NOTE_PREFIX; } });
46
+ var reflection_1 = require("./reflection");
47
+ Object.defineProperty(exports, "SharedReflectionManager", { enumerable: true, get: function () { return reflection_1.SharedReflectionManager; } });
48
+ Object.defineProperty(exports, "connectedComponents", { enumerable: true, get: function () { return reflection_1.connectedComponents; } });
49
+ Object.defineProperty(exports, "msUntilNextDailyTime", { enumerable: true, get: function () { return reflection_1.msUntilNextDailyTime; } });
50
+ Object.defineProperty(exports, "nextReflectionDelay", { enumerable: true, get: function () { return reflection_1.nextReflectionDelay; } });
51
+ Object.defineProperty(exports, "isConsolidationDay", { enumerable: true, get: function () { return reflection_1.isConsolidationDay; } });
52
+ var lifecycle_1 = require("./lifecycle");
53
+ Object.defineProperty(exports, "wholeNoteEntryBlock", { enumerable: true, get: function () { return lifecycle_1.wholeNoteEntryBlock; } });
33
54
  var wiki_1 = require("./wiki");
34
55
  Object.defineProperty(exports, "compileWiki", { enumerable: true, get: function () { return wiki_1.compileWiki; } });
35
56
  Object.defineProperty(exports, "parseWikiPage", { enumerable: true, get: function () { return wiki_1.parseWikiPage; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/knowledge/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,qCAAiF;AAAxE,4GAAA,iBAAiB,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,wGAAA,aAAa,OAAA;AAC7D,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA;AAC5B,mCAQkB;AAPhB,8GAAA,oBAAoB,OAAA;AACpB,0GAAA,gBAAgB,OAAA;AAChB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AAGhB,iDAAsE;AAA7D,gHAAA,eAAe,OAAA;AAAE,mHAAA,kBAAkB,OAAA;AAC5C,mDAAsD;AAA7C,oHAAA,kBAAkB,OAAA;AAC3B,+BASgB;AARd,mGAAA,WAAW,OAAA;AACX,qGAAA,aAAa,OAAA;AACb,oGAAA,YAAY,OAAA;AACZ,sGAAA,cAAc,OAAA;AACd,uGAAA,eAAe,OAAA;AACf,sGAAA,cAAc,OAAA;AACd,sGAAA,cAAc,OAAA;AACd,uGAAA,eAAe,OAAA;AAWjB,2CAAkF;AAAzE,4GAAA,cAAc,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,2GAAA,aAAa,OAAA;AAC3D,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,2CAA8C;AAArC,4GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/knowledge/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,qCAAiF;AAAxE,4GAAA,iBAAiB,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAAE,wGAAA,aAAa,OAAA;AAC7D,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA;AAC5B,mCAUkB;AAThB,8GAAA,oBAAoB,OAAA;AACpB,0GAAA,gBAAgB,OAAA;AAChB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,iHAAA,uBAAuB,OAAA;AACvB,6GAAA,mBAAmB,OAAA;AAQrB,iDAOyB;AANvB,gHAAA,eAAe,OAAA;AACf,mHAAA,kBAAkB,OAAA;AAClB,iHAAA,gBAAgB,OAAA;AAChB,+GAAA,cAAc,OAAA;AACd,qHAAA,oBAAoB,OAAA;AACpB,qHAAA,oBAAoB,OAAA;AAEtB,mDAAqE;AAA5D,oHAAA,kBAAkB,OAAA;AAAE,+GAAA,aAAa,OAAA;AAC1C,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA;AAE/B,uDAA+F;AAAtF,wHAAA,oBAAoB,OAAA;AAAE,oHAAA,gBAAgB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAElE,2CAMsB;AALpB,qHAAA,uBAAuB,OAAA;AACvB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,iHAAA,mBAAmB,OAAA;AACnB,gHAAA,kBAAkB,OAAA;AAGpB,yCAAkD;AAAzC,gHAAA,mBAAmB,OAAA;AAC5B,+BASgB;AARd,mGAAA,WAAW,OAAA;AACX,qGAAA,aAAa,OAAA;AACb,oGAAA,YAAY,OAAA;AACZ,sGAAA,cAAc,OAAA;AACd,uGAAA,eAAe,OAAA;AACf,sGAAA,cAAc,OAAA;AACd,sGAAA,cAAc,OAAA;AACd,uGAAA,eAAe,OAAA;AAWjB,2CAAkF;AAAzE,4GAAA,cAAc,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,2GAAA,aAAa,OAAA;AAC3D,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,2CAA8C;AAArC,4GAAA,cAAc,OAAA"}
@@ -23,12 +23,5 @@ export declare function archiveDbPath(workspaceDir: string): string;
23
23
  * @param globalCfg global `gateway.knowledge.archive`
24
24
  */
25
25
  export declare function indexAgentArchive(workspaceDir: string, agentCfg?: KnowledgeArchiveConfig, globalCfg?: KnowledgeArchiveConfig): IndexResult;
26
- /**
27
- * Index the SHARED, cross-agent vault (planning-64 K3): every `*.md` under the
28
- * project's `notes/` dir is chunked into the shared `kb.sqlite`. Shared notes are
29
- * authored by the owner's own agents (same trust domain) → provenance `agent`.
30
- * No-op when shared KB is disabled. Runs OFF the gateway event loop, same as the
31
- * per-agent indexer.
32
- */
33
26
  export declare function indexSharedArchive(agentCfg?: KnowledgeSharedConfig, globalCfg?: KnowledgeSharedConfig): IndexResult;
34
27
  //# sourceMappingURL=indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EAEtB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAKjB,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG1D;AAoDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,sBAAsB,EACjC,SAAS,CAAC,EAAE,sBAAsB,GACjC,WAAW,CAqBb;AAmGD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,CAAC,EAAE,qBAAqB,EAChC,SAAS,CAAC,EAAE,qBAAqB,GAChC,WAAW,CAmCb"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EAEtB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AAKjB,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG1D;AAoDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,sBAAsB,EACjC,SAAS,CAAC,EAAE,sBAAsB,GACjC,WAAW,CAqBb;AAoID,wBAAgB,kBAAkB,CAChC,QAAQ,CAAC,EAAE,qBAAqB,EAChC,SAAS,CAAC,EAAE,qBAAqB,GAChC,WAAW,CAmCb"}
@@ -176,19 +176,27 @@ function reindexInto(db, opts) {
176
176
  result.filesSeen++;
177
177
  const hash = sha256(content);
178
178
  const existing = db.getSource(rel);
179
+ const mtime = Math.floor(stat.mtimeMs);
179
180
  if (existing && existing.hash === hash) {
180
181
  result.filesSkipped++; // hash-guarded: unchanged, no re-chunk
182
+ // ...but DO make sure its lifecycle rows exist (issue #398). Skipping
183
+ // straight past the block computation below left every note that predates
184
+ // the lifecycle feature — or was simply never edited since — invisible to
185
+ // the staleness GC forever. Seeded from mtime so real ages are preserved.
186
+ db.backfillLifecycle(rel, mtime, () => entryBlocksFor(opts.source, rel, content));
181
187
  continue;
182
188
  }
183
- const mtime = Math.floor(stat.mtimeMs);
184
189
  const origin = opts.originFn(rel);
185
190
  const chunks = (0, chunk_1.chunkMarkdown)(content, opts.chunkTokens, opts.chunkOverlap);
186
- // Entry-lifecycle identity (planning-66): only archive-tier files get an
187
- // entry_hash (evergreen Lane-1, pinned files and the shared vault are exempt,
188
- // so the GC can never consider them). Each FTS chunk inherits the entry_hash of
189
- // the markdown block it starts in; blocks are the clean, movable unit the GC
190
- // operates on (chunks are overlapping token windows and must never be moved).
191
- const blocks = opts.source === 'memory' && (0, lifecycle_1.isArchiveTierPath)(rel) ? (0, lifecycle_1.parseEntryBlocks)(content) : [];
191
+ // Entry-lifecycle identity (planning-66 / issue #392). Personal archive-tier
192
+ // files get one entry per bullet/header block (evergreen Lane-1 and pinned
193
+ // files are exempt, so the GC can never consider them). Shared-vault notes
194
+ // (issue #392 part D) get ONE whole-file block each a shared note's unit of
195
+ // identity is the whole file, matching every other shared-KB operation. Each
196
+ // FTS chunk inherits the entry_hash of the block it starts in; blocks are the
197
+ // clean, movable unit the GC operates on (chunks are overlapping token windows
198
+ // and must never be moved).
199
+ const blocks = entryBlocksFor(opts.source, rel, content);
192
200
  const rows = chunks.map((c) => ({
193
201
  chunk: {
194
202
  id: `${rel}#${c.startLine}-${c.endLine}`,
@@ -232,6 +240,25 @@ function reindexInto(db, opts) {
232
240
  * No-op when shared KB is disabled. Runs OFF the gateway event loop, same as the
233
241
  * per-agent indexer.
234
242
  */
243
+ /**
244
+ * Entry blocks a source contributes to `kb_entry_lifecycle`. Personal
245
+ * archive-tier files get one entry per bullet/header block (evergreen Lane-1 and
246
+ * pinned files are exempt, so the GC can never consider them); shared-vault
247
+ * notes get ONE whole-file block each, matching every other shared-KB operation.
248
+ * Each FTS chunk inherits the entry_hash of the block it starts in; blocks are
249
+ * the clean, movable unit the GC operates on (chunks are overlapping token
250
+ * windows and must never be moved).
251
+ *
252
+ * Shared by the re-chunk path and the hash-skip backfill path (issue #398) so
253
+ * the two can never disagree about what an entry is.
254
+ */
255
+ function entryBlocksFor(source, rel, content) {
256
+ if (source === 'memory' && (0, lifecycle_1.isArchiveTierPath)(rel))
257
+ return (0, lifecycle_1.parseEntryBlocks)(content);
258
+ if (source === 'shared')
259
+ return (0, lifecycle_1.wholeNoteEntryBlock)(content);
260
+ return [];
261
+ }
235
262
  function indexSharedArchive(agentCfg, globalCfg) {
236
263
  const empty = {
237
264
  filesSeen: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/agent/knowledge/indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/agent/knowledge/indexer.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,15 @@
23
23
  /** Pinned archive files are searchable but structurally exempt from GC. */
24
24
  export declare const PINNED_PREFIX = "memory/pinned/";
25
25
  /**
26
- * True when a workspace-relative path is a GC-eligible archive-tier entry source
27
- * (planning-66). The archive tier is `memory/**.md`, EXCEPT:
26
+ * True when a workspace-relative path is a GC-eligible PERSONAL archive-tier
27
+ * entry source (planning-66). The archive tier is `memory/**.md`, EXCEPT:
28
28
  * - evergreen Lane-1 (`MEMORY.md`/`USER.md` at the root) — never touched,
29
29
  * - pinned files (`memory/pinned/**`) — searchable but never aged out.
30
- * Only these files get an `entry_hash` + lifecycle row; everything else (evergreen,
31
- * pinned, the shared vault) has no lifecycle, so the GC can never consider it.
30
+ * Only these files get an `entry_hash` + lifecycle row; evergreen and pinned
31
+ * files have no lifecycle, so the GC can never consider them. The SHARED vault
32
+ * has its own, separate lifecycle (issue #392 part D, `wholeNoteEntryBlock` +
33
+ * `shared-staleness.ts`) — every shared note is eligible, gated by this
34
+ * function only for the PERSONAL `memory/**` tree.
32
35
  */
33
36
  export declare function isArchiveTierPath(rel: string): boolean;
34
37
  /** A parsed archive entry block with its 1-indexed inclusive line range. */
@@ -76,6 +79,19 @@ export interface Supersession {
76
79
  targetHash: string;
77
80
  bySpec: string;
78
81
  }
82
+ /**
83
+ * Whole-file entry-block for the shared KB (issue #392, part D). Unlike the
84
+ * personal archive (one entry per bullet/header), a shared note's unit of
85
+ * identity is the WHOLE FILE — shared notes are freeform prose, not bulleted
86
+ * lists, and every other shared-KB operation (create/get/update/delete,
87
+ * near-dup search, wikilink graph) already treats one note = one fact/topic.
88
+ * Leading blank lines and a leading HTML comment (e.g. a `<!-- staled ... -->`
89
+ * marker written by the staleness GC when a note is moved) are skipped so the
90
+ * hashed text is stable across a move — mirrors `parseEntryBlocks` treating a
91
+ * leading comment as non-block prose. Returns `[]` for empty/comment-only
92
+ * content (nothing to give an identity to).
93
+ */
94
+ export declare function wholeNoteEntryBlock(content: string): EntryBlock[];
79
95
  /**
80
96
  * Deterministically resolve which entries are superseded, over a set of blocks
81
97
  * (the whole archive tier). For every block B that declares "supersedes #N", any
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,2EAA2E;AAC3E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAQD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAqC9D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAA8D,CAAC;AAExF,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAIvD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAIvD;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAkBxE"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,2EAA2E;AAC3E,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAQD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAqC9D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAA8D,CAAC;AAExF,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAIvD;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAIvD;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAUjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAkBxE"}
@@ -62,17 +62,21 @@ exports.entryHash = entryHash;
62
62
  exports.parseEntryBlocks = parseEntryBlocks;
63
63
  exports.referencedIds = referencedIds;
64
64
  exports.supersededIds = supersededIds;
65
+ exports.wholeNoteEntryBlock = wholeNoteEntryBlock;
65
66
  exports.detectSupersessions = detectSupersessions;
66
67
  const crypto = __importStar(require("crypto"));
67
68
  /** Pinned archive files are searchable but structurally exempt from GC. */
68
69
  exports.PINNED_PREFIX = 'memory/pinned/';
69
70
  /**
70
- * True when a workspace-relative path is a GC-eligible archive-tier entry source
71
- * (planning-66). The archive tier is `memory/**.md`, EXCEPT:
71
+ * True when a workspace-relative path is a GC-eligible PERSONAL archive-tier
72
+ * entry source (planning-66). The archive tier is `memory/**.md`, EXCEPT:
72
73
  * - evergreen Lane-1 (`MEMORY.md`/`USER.md` at the root) — never touched,
73
74
  * - pinned files (`memory/pinned/**`) — searchable but never aged out.
74
- * Only these files get an `entry_hash` + lifecycle row; everything else (evergreen,
75
- * pinned, the shared vault) has no lifecycle, so the GC can never consider it.
75
+ * Only these files get an `entry_hash` + lifecycle row; evergreen and pinned
76
+ * files have no lifecycle, so the GC can never consider them. The SHARED vault
77
+ * has its own, separate lifecycle (issue #392 part D, `wholeNoteEntryBlock` +
78
+ * `shared-staleness.ts`) — every shared note is eligible, gated by this
79
+ * function only for the PERSONAL `memory/**` tree.
76
80
  */
77
81
  function isArchiveTierPath(rel) {
78
82
  const p = rel.replace(/\\/g, '/');
@@ -169,6 +173,31 @@ function supersededIds(text) {
169
173
  ids.add(Number(m[1]));
170
174
  return ids;
171
175
  }
176
+ /**
177
+ * Whole-file entry-block for the shared KB (issue #392, part D). Unlike the
178
+ * personal archive (one entry per bullet/header), a shared note's unit of
179
+ * identity is the WHOLE FILE — shared notes are freeform prose, not bulleted
180
+ * lists, and every other shared-KB operation (create/get/update/delete,
181
+ * near-dup search, wikilink graph) already treats one note = one fact/topic.
182
+ * Leading blank lines and a leading HTML comment (e.g. a `<!-- staled ... -->`
183
+ * marker written by the staleness GC when a note is moved) are skipped so the
184
+ * hashed text is stable across a move — mirrors `parseEntryBlocks` treating a
185
+ * leading comment as non-block prose. Returns `[]` for empty/comment-only
186
+ * content (nothing to give an identity to).
187
+ */
188
+ function wholeNoteEntryBlock(content) {
189
+ const lines = content.split('\n');
190
+ let start = 0;
191
+ while (start < lines.length && (BLANK_RE.test(lines[start]) || /^<!--.*-->\s*$/.test(lines[start]))) {
192
+ start++;
193
+ }
194
+ if (start >= lines.length)
195
+ return [];
196
+ const text = lines.slice(start).join('\n');
197
+ if (!text.trim())
198
+ return [];
199
+ return [{ text, startLine: start + 1, endLine: lines.length, entryHash: entryHash(text) }];
200
+ }
172
201
  /**
173
202
  * Deterministically resolve which entries are superseded, over a set of blocks
174
203
  * (the whole archive tier). For every block B that declares "supersedes #N", any
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/agent/knowledge/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/agent/knowledge/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Weekly shared-KB reflection pass (issue #392 part C).
3
+ *
4
+ * A single job PER SHARED VAULT — not per agent like the nightly dream — because
5
+ * this is a KB-level operation: running it nightly x every agent multiplies cost
6
+ * by agent count for no benefit (the exact concern the design conversation
7
+ * raised). Wiring (`src/index.ts`) starts exactly one `SharedReflectionManager`
8
+ * per distinct resolved shared-vault root, however many agents point at it.
9
+ *
10
+ * `reflectOnce`:
11
+ * 1. `kb_index_state.revision` unchanged since the last run ⇒ skip graph/LLM
12
+ * consolidation entirely (zero LLM calls); the deterministic TTL GC still
13
+ * runs because aging is wall-clock driven, not revision driven.
14
+ * 2. Run the shared staleness GC (issue #392 part D).
15
+ * 3. Build the wiki graph and cluster it via connected components — pure,
16
+ * deterministic, no LLM cost.
17
+ * 4. Keep only clusters touching a note whose `kb_sources.mtime` is newer
18
+ * than the last reflection run — only touched clusters matter this round.
19
+ * 5. Cap to `maxClustersPerRun`; log (never silently drop) anything deferred.
20
+ * 6. For each selected cluster, ONE bounded `claude -p` synthesis call
21
+ * proposing to merge the cluster into one canonical note, or leave it
22
+ * alone. Applied through the SAME primitives round 1 (#387) already uses
23
+ * (`mergeIntoNote`/`writeCapped`) plus `retireSharedNote` for the notes
24
+ * folded away — no new write path.
25
+ */
26
+ import { type GraphNode, type GraphEdge } from './wiki';
27
+ import { type ClaudeSpawnFn } from '../skill-learning/reviewer';
28
+ import type { ResolvedKnowledgeSharedCfg, ResolvedKnowledgeReflectionCfg } from './types';
29
+ /**
30
+ * Delay until the next `hour:minute` in `timezone`, today or tomorrow (issue
31
+ * #398). The reflection timer fires DAILY now: staleness GC is wall-clock work
32
+ * with no model call, and gating it on the weekly consolidation slot left a
33
+ * retired-then-retrieved note missing from the active set for up to seven days.
34
+ */
35
+ export declare function msUntilNextDailyTime(hour: number, minute: number, timezone: string, now?: Date): number;
36
+ /**
37
+ * The delay `startReflecting` actually re-arms on, and the single place the
38
+ * "slot already ran" case is decided (issue #398 review).
39
+ *
40
+ * A timer that fires a hair EARLY leaves the slot a millisecond in the FUTURE,
41
+ * so re-arming on the raw value runs the same slot a second time. Flooring the
42
+ * delay does not fix that — it only postpones the duplicate by the floor — so
43
+ * a raw delay inside `JUST_SERVED_WINDOW_MS` rolls forward a full day instead.
44
+ */
45
+ export declare function nextReflectionDelay(hour: number, minute: number, timezone: string, now?: Date): number;
46
+ /**
47
+ * True when `now` falls on the configured consolidation weekday in `timezone`.
48
+ * The LLM half keeps its weekly cadence — it costs one model call per cluster,
49
+ * and batching a week of edits into one pass is what keeps that spend bounded.
50
+ */
51
+ export declare function isConsolidationDay(dayOfWeek: number, timezone: string, now?: Date): boolean;
52
+ /**
53
+ * Connected components over the wiki graph (pure, deterministic, no LLM) —
54
+ * `wiki.ts` itself has no clustering (only a flat node/edge list); this is the
55
+ * "group related notes" step the design conversation asked for. Returns each
56
+ * component as a sorted array of node ids (relPaths); isolated nodes (no
57
+ * edges) form their own singleton components.
58
+ */
59
+ export declare function connectedComponents(nodes: GraphNode[], edges: GraphEdge[]): string[][];
60
+ export interface ReflectionSynthesis {
61
+ action: 'none' | 'merge';
62
+ primary?: string;
63
+ reason?: string;
64
+ }
65
+ export interface ReflectionResult {
66
+ outcome: 'skipped-disabled' | 'skipped-unchanged' | 'ran';
67
+ invalidated: number;
68
+ promoted: number;
69
+ clustersConsidered: number;
70
+ clustersProcessed: number;
71
+ clustersDeferred: number;
72
+ mergesApplied: number;
73
+ }
74
+ export interface SharedReflectionManagerDeps {
75
+ sharedCfg: ResolvedKnowledgeSharedCfg;
76
+ reflectionCfg: ResolvedKnowledgeReflectionCfg;
77
+ logger?: {
78
+ info: (msg: string, data?: Record<string, unknown>) => void;
79
+ warn?: (msg: string, data?: Record<string, unknown>) => void;
80
+ };
81
+ /** Injectable reviewer spawn for tests (defaults to a real print-only claude -p). */
82
+ spawnFn?: ClaudeSpawnFn;
83
+ }
84
+ export declare class SharedReflectionManager {
85
+ private readonly deps;
86
+ private timer;
87
+ constructor(deps: SharedReflectionManagerDeps);
88
+ private log;
89
+ /**
90
+ * Run one reflection cycle. Never throws.
91
+ *
92
+ * `consolidate: false` runs the staleness GC only and skips the graph/LLM
93
+ * consolidation — the daily mode introduced in issue #398. GC is wall-clock
94
+ * driven and free; consolidation costs a model call per cluster and stays on
95
+ * its weekly slot.
96
+ */
97
+ reflectOnce(now?: number, opts?: {
98
+ consolidate?: boolean;
99
+ }): Promise<ReflectionResult>;
100
+ /** One cluster: one bounded synthesis call, applied via the existing write primitives. */
101
+ private processCluster;
102
+ /**
103
+ * Start the reflection scheduler: a self-rescheduling unref'd timer, mirroring
104
+ * `DreamingManager.startDreaming` and gated on `reflectionCfg.enabled` only
105
+ * (the shared/mode gate is re-checked inside `reflectOnce` every fire, so a
106
+ * config flip takes effect on the next run).
107
+ *
108
+ * The timer is DAILY as of issue #398: every fire runs the staleness GC, and
109
+ * only a fire whose slot lands on `dayOfWeek` also runs LLM consolidation.
110
+ */
111
+ startReflecting(): void;
112
+ stop(): void;
113
+ }
114
+ //# sourceMappingURL=reflection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGzE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AA6B1F;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,IAAiB,GACrB,MAAM,CAKR;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAE,IAAiB,GACrB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAEvG;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,EAAE,CA2BtF;AAyDD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,KAAK,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAWD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,0BAA0B,CAAC;IACtC,aAAa,EAAE,8BAA8B,CAAC;IAC9C,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC9D,CAAC;IACF,qFAAqF;IACrF,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;IACnD,OAAO,CAAC,KAAK,CAA4C;gBAE7C,IAAI,EAAE,2BAA2B;IAI7C,OAAO,CAAC,GAAG;IAIX;;;;;;;OAOG;IACG,WAAW,CACf,GAAG,GAAE,MAAmB,EACxB,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GACnC,OAAO,CAAC,gBAAgB,CAAC;IAsF5B,0FAA0F;YAC5E,cAAc;IA6B5B;;;;;;;;OAQG;IACH,eAAe,IAAI,IAAI;IA+BvB,IAAI,IAAI,IAAI;CAGb"}