@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.
- package/README.md +178 -44
- package/dist/agent/builtin-commands.js +2 -2
- package/dist/agent/builtin-commands.js.map +1 -1
- package/dist/agent/dreaming/accept.d.ts.map +1 -1
- package/dist/agent/dreaming/accept.js +4 -1
- package/dist/agent/dreaming/accept.js.map +1 -1
- package/dist/agent/dreaming/config.d.ts.map +1 -1
- package/dist/agent/dreaming/config.js +2 -0
- package/dist/agent/dreaming/config.js.map +1 -1
- package/dist/agent/dreaming/reviewer.d.ts.map +1 -1
- package/dist/agent/dreaming/reviewer.js +9 -2
- package/dist/agent/dreaming/reviewer.js.map +1 -1
- package/dist/agent/dreaming/staleness.d.ts +7 -1
- package/dist/agent/dreaming/staleness.d.ts.map +1 -1
- package/dist/agent/dreaming/staleness.js +17 -2
- package/dist/agent/dreaming/staleness.js.map +1 -1
- package/dist/agent/dreaming/types.d.ts +17 -1
- package/dist/agent/dreaming/types.d.ts.map +1 -1
- package/dist/agent/knowledge/archive-db.d.ts +43 -0
- package/dist/agent/knowledge/archive-db.d.ts.map +1 -1
- package/dist/agent/knowledge/archive-db.js +130 -0
- package/dist/agent/knowledge/archive-db.js.map +1 -1
- package/dist/agent/knowledge/config.d.ts +3 -1
- package/dist/agent/knowledge/config.d.ts.map +1 -1
- package/dist/agent/knowledge/config.js +32 -10
- package/dist/agent/knowledge/config.js.map +1 -1
- package/dist/agent/knowledge/index.d.ts +11 -4
- package/dist/agent/knowledge/index.d.ts.map +1 -1
- package/dist/agent/knowledge/index.js +22 -1
- package/dist/agent/knowledge/index.js.map +1 -1
- package/dist/agent/knowledge/indexer.d.ts +0 -7
- package/dist/agent/knowledge/indexer.d.ts.map +1 -1
- package/dist/agent/knowledge/indexer.js +34 -7
- package/dist/agent/knowledge/indexer.js.map +1 -1
- package/dist/agent/knowledge/lifecycle.d.ts +20 -4
- package/dist/agent/knowledge/lifecycle.d.ts.map +1 -1
- package/dist/agent/knowledge/lifecycle.js +33 -4
- package/dist/agent/knowledge/lifecycle.js.map +1 -1
- package/dist/agent/knowledge/reflection.d.ts +114 -0
- package/dist/agent/knowledge/reflection.d.ts.map +1 -0
- package/dist/agent/knowledge/reflection.js +447 -0
- package/dist/agent/knowledge/reflection.js.map +1 -0
- package/dist/agent/knowledge/shared-dedup.d.ts +85 -0
- package/dist/agent/knowledge/shared-dedup.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-dedup.js +187 -0
- package/dist/agent/knowledge/shared-dedup.js.map +1 -0
- package/dist/agent/knowledge/shared-promote.d.ts +82 -7
- package/dist/agent/knowledge/shared-promote.d.ts.map +1 -1
- package/dist/agent/knowledge/shared-promote.js +244 -11
- package/dist/agent/knowledge/shared-promote.js.map +1 -1
- package/dist/agent/knowledge/shared-staleness.d.ts +51 -0
- package/dist/agent/knowledge/shared-staleness.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-staleness.js +149 -0
- package/dist/agent/knowledge/shared-staleness.js.map +1 -0
- package/dist/agent/knowledge/shared-writer.d.ts +19 -0
- package/dist/agent/knowledge/shared-writer.d.ts.map +1 -1
- package/dist/agent/knowledge/shared-writer.js +42 -0
- package/dist/agent/knowledge/shared-writer.js.map +1 -1
- package/dist/agent/knowledge/types.d.ts +24 -0
- package/dist/agent/knowledge/types.d.ts.map +1 -1
- package/dist/agent/model-catalog.d.ts +62 -0
- package/dist/agent/model-catalog.d.ts.map +1 -0
- package/dist/agent/model-catalog.js +264 -0
- package/dist/agent/model-catalog.js.map +1 -0
- package/dist/agent/runner.d.ts +83 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +281 -51
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/workspace-loader.d.ts +17 -2
- package/dist/agent/workspace-loader.d.ts.map +1 -1
- package/dist/agent/workspace-loader.js +17 -1
- package/dist/agent/workspace-loader.js.map +1 -1
- package/dist/api/cron-router.d.ts +12 -8
- package/dist/api/cron-router.d.ts.map +1 -1
- package/dist/api/cron-router.js +82 -16
- package/dist/api/cron-router.js.map +1 -1
- package/dist/api/gateway-router.d.ts +4 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +16 -1
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/manifest-sources.d.ts +15 -0
- package/dist/api/manifest-sources.d.ts.map +1 -0
- package/dist/api/manifest-sources.js +27 -0
- package/dist/api/manifest-sources.js.map +1 -0
- package/dist/api/meta-router.d.ts +13 -0
- package/dist/api/meta-router.d.ts.map +1 -0
- package/dist/api/meta-router.js +26 -0
- package/dist/api/meta-router.js.map +1 -0
- package/dist/api/packages.d.ts.map +1 -1
- package/dist/api/packages.js +18 -198
- package/dist/api/packages.js.map +1 -1
- package/dist/api/route-registry.d.ts +81 -0
- package/dist/api/route-registry.d.ts.map +1 -0
- package/dist/api/route-registry.js +44 -0
- package/dist/api/route-registry.js.map +1 -0
- package/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +21 -3
- package/dist/api/router.js.map +1 -1
- package/dist/apps/compose-generator.js +7 -4
- package/dist/apps/compose-generator.js.map +1 -1
- package/dist/apps/installer.d.ts +154 -0
- package/dist/apps/installer.d.ts.map +1 -1
- package/dist/apps/installer.js +657 -54
- package/dist/apps/installer.js.map +1 -1
- package/dist/cli/args.d.ts +25 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +55 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/colors.d.ts +37 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +63 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/command-names.d.ts +98 -0
- package/dist/cli/command-names.d.ts.map +1 -0
- package/dist/cli/command-names.js +109 -0
- package/dist/cli/command-names.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +28 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +321 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/channels.d.ts +17 -0
- package/dist/cli/commands/channels.d.ts.map +1 -0
- package/dist/cli/commands/channels.js +101 -0
- package/dist/cli/commands/channels.js.map +1 -0
- package/dist/cli/commands/debug-bundle.d.ts +6 -0
- package/dist/cli/commands/debug-bundle.d.ts.map +1 -0
- package/dist/cli/commands/debug-bundle.js +220 -0
- package/dist/cli/commands/debug-bundle.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +104 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/gateway.d.ts +12 -0
- package/dist/cli/commands/gateway.d.ts.map +1 -0
- package/dist/cli/commands/gateway.js +145 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/service.d.ts +33 -0
- package/dist/cli/commands/service.d.ts.map +1 -0
- package/dist/cli/commands/service.js +513 -0
- package/dist/cli/commands/service.js.map +1 -0
- package/dist/cli/commands/update.d.ts +16 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +149 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands.generated.d.ts +4 -0
- package/dist/cli/commands.generated.d.ts.map +1 -0
- package/dist/cli/commands.generated.js +220 -0
- package/dist/cli/commands.generated.js.map +1 -0
- package/dist/cli/health.d.ts +31 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +49 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/http-client.d.ts +140 -0
- package/dist/cli/http-client.d.ts.map +1 -0
- package/dist/cli/http-client.js +332 -0
- package/dist/cli/http-client.js.map +1 -0
- package/dist/cli/index.d.ts +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +372 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/manager.d.ts +64 -0
- package/dist/cli/manager.d.ts.map +1 -0
- package/dist/cli/manager.js +181 -0
- package/dist/cli/manager.js.map +1 -0
- package/dist/cli/output.d.ts +49 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +101 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/prompt.d.ts +29 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +154 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/redact.d.ts +3 -0
- package/dist/cli/redact.d.ts.map +1 -0
- package/dist/cli/redact.js +33 -0
- package/dist/cli/redact.js.map +1 -0
- package/dist/cli/types.d.ts +22 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +4 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/bootstrap.d.ts +33 -0
- package/dist/config/bootstrap.d.ts.map +1 -0
- package/dist/config/bootstrap.js +117 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +5 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/watcher.d.ts.map +1 -1
- package/dist/config/watcher.js +2 -35
- package/dist/config/watcher.js.map +1 -1
- package/dist/discord/receiver.d.ts +6 -1
- package/dist/discord/receiver.d.ts.map +1 -1
- package/dist/discord/receiver.js +9 -1
- package/dist/discord/receiver.js.map +1 -1
- package/dist/entry.d.ts +3 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +83 -0
- package/dist/entry.js.map +1 -0
- package/dist/index.js +197 -47
- package/dist/index.js.map +1 -1
- package/dist/load-dotenv.d.ts +2 -0
- package/dist/load-dotenv.d.ts.map +1 -0
- package/dist/load-dotenv.js +68 -0
- package/dist/load-dotenv.js.map +1 -0
- package/dist/packages/registry.d.ts +50 -0
- package/dist/packages/registry.d.ts.map +1 -0
- package/dist/packages/registry.js +209 -0
- package/dist/packages/registry.js.map +1 -0
- package/dist/session/process.d.ts +20 -3
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +120 -5
- package/dist/session/process.js.map +1 -1
- package/dist/shell/claude-pty-shell.js +146 -27
- package/dist/shell/claude-pty-shell.js.map +1 -1
- package/dist/shell/draft-phantom.d.ts +49 -0
- package/dist/shell/draft-phantom.d.ts.map +1 -0
- package/dist/shell/draft-phantom.js +59 -0
- package/dist/shell/draft-phantom.js.map +1 -0
- package/dist/shell/submit-diag.d.ts +67 -0
- package/dist/shell/submit-diag.d.ts.map +1 -0
- package/dist/shell/submit-diag.js +69 -0
- package/dist/shell/submit-diag.js.map +1 -0
- package/dist/shutdown-signals.d.ts +47 -0
- package/dist/shutdown-signals.d.ts.map +1 -0
- package/dist/shutdown-signals.js +62 -0
- package/dist/shutdown-signals.js.map +1 -0
- package/dist/telegram/receiver.d.ts +6 -1
- package/dist/telegram/receiver.d.ts.map +1 -1
- package/dist/telegram/receiver.js +9 -1
- package/dist/telegram/receiver.js.map +1 -1
- package/dist/types.d.ts +25 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/orphan-receivers.d.ts +90 -0
- package/dist/utils/orphan-receivers.d.ts.map +1 -0
- package/dist/utils/orphan-receivers.js +218 -0
- package/dist/utils/orphan-receivers.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +60 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/stop-child.d.ts +21 -0
- package/dist/utils/stop-child.d.ts.map +1 -0
- package/dist/utils/stop-child.js +64 -0
- package/dist/utils/stop-child.js.map +1 -0
- package/lib/pairing.ts +1 -1
- package/mcp/tools/agent/handlers.ts +1 -1
- package/mcp/tools/discord/module.ts +23 -15
- package/mcp/tools/discord/receiver-server.ts +4 -0
- package/mcp/tools/memory/archive-reader.test.ts +25 -1
- package/mcp/tools/memory/archive-reader.ts +70 -12
- package/mcp/tools/memory/archive-writer.test.ts +168 -0
- package/mcp/tools/memory/archive-writer.ts +137 -0
- package/mcp/tools/memory/module.test.ts +187 -0
- package/mcp/tools/memory/module.ts +192 -6
- package/mcp/tools/telegram/module.ts +10 -2
- package/mcp/tools/telegram/receiver-server.ts +15 -6
- package/mcp/tools/telegram/typing.ts +178 -34
- 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,
|
|
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;
|
|
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)
|
|
187
|
-
//
|
|
188
|
-
// so the GC can never consider them).
|
|
189
|
-
//
|
|
190
|
-
//
|
|
191
|
-
|
|
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":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BH,sCAGC;AA4DD,8CAyBC;
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/agent/knowledge/indexer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BH,sCAGC;AA4DD,8CAyBC;AAoID,gDAsCC;AA9RD,2CAA6B;AAC7B,uCAAyB;AACzB,+CAAiC;AACjC,6CAAwD;AACxD,mCAAwC;AACxC,6CAA8C;AAC9C,2CAAwG;AACxG,qCAOkB;AAClB,iCAAqC;AASrC,kFAAkF;AAClF,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAEjD,yEAAyE;AACzE,SAAgB,aAAa,CAAC,YAAoB;IAChD,+EAA+E;IAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED,6EAA6E;AAC7E,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;IACD,4DAA4D;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,8EAA8E;QAC9E,8CAA8C;QAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;aAChD,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AACtE,SAAS,kBAAkB,CAAC,YAAoB;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,OAAe;IAC7B,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAC/E,SAAS,QAAQ,CAAC,YAAoB,EAAE,OAAe;IACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,uFAAuF;AACvF,SAAS,gBAAgB,CAAC,MAAoB,EAAE,IAAY;IAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAC/B,YAAoB,EACpB,QAAiC,EACjC,SAAkC;IAElC,MAAM,GAAG,GAAgC,IAAA,6BAAoB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnF,MAAM,KAAK,GAAgB;QACzB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE/B,MAAM,EAAE,GAAG,sBAAS,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACzE,OAAO,WAAW,CAAC,EAAE,EAAE;QACrB,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,kBAAkB,CAAC,YAAY,CAAC;QACvC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,QAAQ,EAAE,2BAAc;QACxB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;AACL,CAAC;AAYD;;;;;GAKG;AACH,SAAS,WAAW,CAAC,EAAa,EAAE,IAAiB;IACnD,MAAM,MAAM,GAAgB;QAC1B,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,OAAe,CAAC;QACpB,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,sDAAsD;QAClE,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,CAAC,SAAS,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACvC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,uCAAuC;YAC9D,sEAAsE;YACtE,0EAA0E;YAC1E,0EAA0E;YAC1E,0EAA0E;YAC1E,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAClF,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3E,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,8EAA8E;QAC9E,6EAA6E;QAC7E,8EAA8E;QAC9E,+EAA+E;QAC/E,4BAA4B;QAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,KAAK,EAAE;gBACL,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE;gBACxC,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,KAAK;aACjB;YACD,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YACzE,UAAU,EAAE;gBACV,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,SAAS,EAAE,kDAAkD;gBAC1E,UAAU,EAAE,KAAK;gBACjB,aAAa,EAAE,IAAI;aACpB;YACD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;SACxE,CAAC,CAAC,CAAC;QAEJ,EAAE,CAAC,aAAa,CACd,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAChE,IAAI,EACJ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAClE,CAAC;QACF,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,+EAA+E;IAC/E,gFAAgF;IAChF,iFAAiF;IACjF,wEAAwE;IACxE,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAAE,SAAS,CAAC,yCAAyC;QACpG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,GAAW,EAAE,OAAe;IAClE,IAAI,MAAM,KAAK,QAAQ,IAAI,IAAA,6BAAiB,EAAC,GAAG,CAAC;QAAE,OAAO,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAC;IACpF,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAA,+BAAmB,EAAC,OAAO,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,kBAAkB,CAChC,QAAgC,EAChC,SAAiC;IAEjC,MAAM,KAAK,GAAgB;QACzB,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,MAAM,GAAG,GAAG,IAAA,4BAAmB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE/B,MAAM,QAAQ,GAAG,IAAA,uBAAc,EAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,sBAAS,CAAC,OAAO,CAAC,IAAA,qBAAY,EAAC,GAAG,CAAC,EAAE,yBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE;QAC7B,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC;QAC7B,WAAW,EAAE,yBAAgB,CAAC,WAAW;QACzC,YAAY,EAAE,yBAAgB,CAAC,YAAY;QAC3C,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO;QACvB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,GAAG,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,gFAAgF;IAChF,iFAAiF;IACjF,kFAAkF;IAClF,oCAAoC;IACpC,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC;YACH,IAAA,kBAAW,EAAC,IAAA,uBAAc,EAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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
|
|
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;
|
|
31
|
-
*
|
|
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
|
|
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
|
|
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;
|
|
75
|
-
*
|
|
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":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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"}
|