@0xmaxma/claude-gateway 1.6.8 → 1.7.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 +149 -20
- package/config.template.json +59 -1
- package/dist/agent/dreaming/accept.d.ts +43 -0
- package/dist/agent/dreaming/accept.d.ts.map +1 -0
- package/dist/agent/dreaming/accept.js +230 -0
- package/dist/agent/dreaming/accept.js.map +1 -0
- package/dist/agent/dreaming/applier.d.ts +77 -0
- package/dist/agent/dreaming/applier.d.ts.map +1 -0
- package/dist/agent/dreaming/applier.js +406 -0
- package/dist/agent/dreaming/applier.js.map +1 -0
- package/dist/agent/dreaming/audit.d.ts +27 -0
- package/dist/agent/dreaming/audit.d.ts.map +1 -0
- package/dist/agent/dreaming/audit.js +100 -0
- package/dist/agent/dreaming/audit.js.map +1 -0
- package/dist/agent/dreaming/compactor.d.ts +66 -0
- package/dist/agent/dreaming/compactor.d.ts.map +1 -0
- package/dist/agent/dreaming/compactor.js +306 -0
- package/dist/agent/dreaming/compactor.js.map +1 -0
- package/dist/agent/dreaming/config.d.ts +19 -0
- package/dist/agent/dreaming/config.d.ts.map +1 -0
- package/dist/agent/dreaming/config.js +107 -0
- package/dist/agent/dreaming/config.js.map +1 -0
- package/dist/agent/dreaming/episodic.d.ts +42 -0
- package/dist/agent/dreaming/episodic.d.ts.map +1 -0
- package/dist/agent/dreaming/episodic.js +116 -0
- package/dist/agent/dreaming/episodic.js.map +1 -0
- package/dist/agent/dreaming/gather.d.ts +31 -0
- package/dist/agent/dreaming/gather.d.ts.map +1 -0
- package/dist/agent/dreaming/gather.js +55 -0
- package/dist/agent/dreaming/gather.js.map +1 -0
- package/dist/agent/dreaming/index.d.ts +87 -0
- package/dist/agent/dreaming/index.d.ts.map +1 -0
- package/dist/agent/dreaming/index.js +377 -0
- package/dist/agent/dreaming/index.js.map +1 -0
- package/dist/agent/dreaming/migrate-cli.d.ts +17 -0
- package/dist/agent/dreaming/migrate-cli.d.ts.map +1 -0
- package/dist/agent/dreaming/migrate-cli.js +42 -0
- package/dist/agent/dreaming/migrate-cli.js.map +1 -0
- package/dist/agent/dreaming/migrate.d.ts +72 -0
- package/dist/agent/dreaming/migrate.d.ts.map +1 -0
- package/dist/agent/dreaming/migrate.js +374 -0
- package/dist/agent/dreaming/migrate.js.map +1 -0
- package/dist/agent/dreaming/report.d.ts +39 -0
- package/dist/agent/dreaming/report.d.ts.map +1 -0
- package/dist/agent/dreaming/report.js +121 -0
- package/dist/agent/dreaming/report.js.map +1 -0
- package/dist/agent/dreaming/reviewer.d.ts +43 -0
- package/dist/agent/dreaming/reviewer.d.ts.map +1 -0
- package/dist/agent/dreaming/reviewer.js +249 -0
- package/dist/agent/dreaming/reviewer.js.map +1 -0
- package/dist/agent/dreaming/staleness.d.ts +68 -0
- package/dist/agent/dreaming/staleness.d.ts.map +1 -0
- package/dist/agent/dreaming/staleness.js +281 -0
- package/dist/agent/dreaming/staleness.js.map +1 -0
- package/dist/agent/dreaming/types.d.ts +130 -0
- package/dist/agent/dreaming/types.d.ts.map +1 -0
- package/dist/agent/dreaming/types.js +10 -0
- package/dist/agent/dreaming/types.js.map +1 -0
- package/dist/agent/knowledge/archive-db.d.ts +114 -0
- package/dist/agent/knowledge/archive-db.d.ts.map +1 -0
- package/dist/agent/knowledge/archive-db.js +474 -0
- package/dist/agent/knowledge/archive-db.js.map +1 -0
- package/dist/agent/knowledge/chunk.d.ts +21 -0
- package/dist/agent/knowledge/chunk.d.ts.map +1 -0
- package/dist/agent/knowledge/chunk.js +67 -0
- package/dist/agent/knowledge/chunk.js.map +1 -0
- package/dist/agent/knowledge/config.d.ts +20 -0
- package/dist/agent/knowledge/config.d.ts.map +1 -0
- package/dist/agent/knowledge/config.js +143 -0
- package/dist/agent/knowledge/config.js.map +1 -0
- package/dist/agent/knowledge/graph-demo.d.ts +25 -0
- package/dist/agent/knowledge/graph-demo.d.ts.map +1 -0
- package/dist/agent/knowledge/graph-demo.js +132 -0
- package/dist/agent/knowledge/graph-demo.js.map +1 -0
- package/dist/agent/knowledge/index.d.ts +24 -0
- package/dist/agent/knowledge/index.d.ts.map +1 -0
- package/dist/agent/knowledge/index.js +50 -0
- package/dist/agent/knowledge/index.js.map +1 -0
- package/dist/agent/knowledge/indexer.d.ts +34 -0
- package/dist/agent/knowledge/indexer.d.ts.map +1 -0
- package/dist/agent/knowledge/indexer.js +271 -0
- package/dist/agent/knowledge/indexer.js.map +1 -0
- package/dist/agent/knowledge/lifecycle.d.ts +91 -0
- package/dist/agent/knowledge/lifecycle.d.ts.map +1 -0
- package/dist/agent/knowledge/lifecycle.js +205 -0
- package/dist/agent/knowledge/lifecycle.js.map +1 -0
- package/dist/agent/knowledge/provenance.d.ts +15 -0
- package/dist/agent/knowledge/provenance.d.ts.map +1 -0
- package/dist/agent/knowledge/provenance.js +37 -0
- package/dist/agent/knowledge/provenance.js.map +1 -0
- package/dist/agent/knowledge/reindex-cli.d.ts +13 -0
- package/dist/agent/knowledge/reindex-cli.d.ts.map +1 -0
- package/dist/agent/knowledge/reindex-cli.js +53 -0
- package/dist/agent/knowledge/reindex-cli.js.map +1 -0
- package/dist/agent/knowledge/reindex-spawn.d.ts +30 -0
- package/dist/agent/knowledge/reindex-spawn.d.ts.map +1 -0
- package/dist/agent/knowledge/reindex-spawn.js +97 -0
- package/dist/agent/knowledge/reindex-spawn.js.map +1 -0
- package/dist/agent/knowledge/shared-promote.d.ts +18 -0
- package/dist/agent/knowledge/shared-promote.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-promote.js +29 -0
- package/dist/agent/knowledge/shared-promote.js.map +1 -0
- package/dist/agent/knowledge/shared-writer.d.ts +24 -0
- package/dist/agent/knowledge/shared-writer.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-writer.js +97 -0
- package/dist/agent/knowledge/shared-writer.js.map +1 -0
- package/dist/agent/knowledge/types.d.ts +83 -0
- package/dist/agent/knowledge/types.d.ts.map +1 -0
- package/dist/agent/knowledge/types.js +12 -0
- package/dist/agent/knowledge/types.js.map +1 -0
- package/dist/agent/knowledge/wiki.d.ts +107 -0
- package/dist/agent/knowledge/wiki.d.ts.map +1 -0
- package/dist/agent/knowledge/wiki.js +415 -0
- package/dist/agent/knowledge/wiki.js.map +1 -0
- package/dist/agent/memory-metrics.d.ts +48 -0
- package/dist/agent/memory-metrics.d.ts.map +1 -0
- package/dist/agent/memory-metrics.js +156 -0
- package/dist/agent/memory-metrics.js.map +1 -0
- package/dist/agent/runner.d.ts +24 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +82 -6
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/skill-learning/config.d.ts +18 -0
- package/dist/agent/skill-learning/config.d.ts.map +1 -0
- package/dist/agent/skill-learning/config.js +71 -0
- package/dist/agent/skill-learning/config.js.map +1 -0
- package/dist/agent/skill-learning/curator.d.ts +45 -0
- package/dist/agent/skill-learning/curator.d.ts.map +1 -0
- package/dist/agent/skill-learning/curator.js +171 -0
- package/dist/agent/skill-learning/curator.js.map +1 -0
- package/dist/agent/skill-learning/index.d.ts +79 -0
- package/dist/agent/skill-learning/index.d.ts.map +1 -0
- package/dist/agent/skill-learning/index.js +308 -0
- package/dist/agent/skill-learning/index.js.map +1 -0
- package/dist/agent/skill-learning/metrics.d.ts +13 -0
- package/dist/agent/skill-learning/metrics.d.ts.map +1 -0
- package/dist/agent/skill-learning/metrics.js +109 -0
- package/dist/agent/skill-learning/metrics.js.map +1 -0
- package/dist/agent/skill-learning/notifier.d.ts +111 -0
- package/dist/agent/skill-learning/notifier.d.ts.map +1 -0
- package/dist/agent/skill-learning/notifier.js +398 -0
- package/dist/agent/skill-learning/notifier.js.map +1 -0
- package/dist/agent/skill-learning/reviewer.d.ts +61 -0
- package/dist/agent/skill-learning/reviewer.d.ts.map +1 -0
- package/dist/agent/skill-learning/reviewer.js +271 -0
- package/dist/agent/skill-learning/reviewer.js.map +1 -0
- package/dist/agent/skill-learning/telemetry.d.ts +22 -0
- package/dist/agent/skill-learning/telemetry.d.ts.map +1 -0
- package/dist/agent/skill-learning/telemetry.js +90 -0
- package/dist/agent/skill-learning/telemetry.js.map +1 -0
- package/dist/agent/skill-learning/trigger.d.ts +23 -0
- package/dist/agent/skill-learning/trigger.d.ts.map +1 -0
- package/dist/agent/skill-learning/trigger.js +44 -0
- package/dist/agent/skill-learning/trigger.js.map +1 -0
- package/dist/agent/skill-learning/types.d.ts +165 -0
- package/dist/agent/skill-learning/types.d.ts.map +1 -0
- package/dist/agent/skill-learning/types.js +11 -0
- package/dist/agent/skill-learning/types.js.map +1 -0
- package/dist/agent/skill-learning/writer.d.ts +37 -0
- package/dist/agent/skill-learning/writer.d.ts.map +1 -0
- package/dist/agent/skill-learning/writer.js +223 -0
- package/dist/agent/skill-learning/writer.js.map +1 -0
- package/dist/agent/workspace-loader.d.ts +83 -6
- package/dist/agent/workspace-loader.d.ts.map +1 -1
- package/dist/agent/workspace-loader.js +207 -14
- package/dist/agent/workspace-loader.js.map +1 -1
- package/dist/api/gateway-router.d.ts +2 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +293 -6
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/share-router.d.ts.map +1 -1
- package/dist/api/share-router.js +27 -1
- package/dist/api/share-router.js.map +1 -1
- package/dist/api/skills-router.d.ts +2 -2
- package/dist/api/skills-router.d.ts.map +1 -1
- package/dist/api/skills-router.js +61 -1
- package/dist/api/skills-router.js.map +1 -1
- package/dist/apps/agent-manager.d.ts +7 -0
- package/dist/apps/agent-manager.d.ts.map +1 -1
- package/dist/apps/agent-manager.js +13 -1
- package/dist/apps/agent-manager.js.map +1 -1
- package/dist/config/migrator.d.ts +2 -0
- package/dist/config/migrator.d.ts.map +1 -1
- package/dist/config/migrator.js +72 -1
- package/dist/config/migrator.js.map +1 -1
- package/dist/history/cleanup.d.ts +7 -0
- package/dist/history/cleanup.d.ts.map +1 -1
- package/dist/history/cleanup.js +27 -0
- package/dist/history/cleanup.js.map +1 -1
- package/dist/history/db.d.ts +65 -0
- package/dist/history/db.d.ts.map +1 -1
- package/dist/history/db.js +261 -0
- package/dist/history/db.js.map +1 -1
- package/dist/index.js +122 -20
- package/dist/index.js.map +1 -1
- package/dist/session/process.d.ts +10 -0
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +86 -1
- package/dist/session/process.js.map +1 -1
- package/dist/share/share-store.d.ts +11 -0
- package/dist/share/share-store.d.ts.map +1 -1
- package/dist/share/share-store.js +3 -1
- package/dist/share/share-store.js.map +1 -1
- package/dist/skills/loader.d.ts +8 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +29 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/web-ui.d.ts.map +1 -1
- package/dist/ui/web-ui.js +1126 -3
- package/dist/ui/web-ui.js.map +1 -1
- package/mcp/package.json +2 -1
- package/mcp/server.ts +2 -0
- package/mcp/tools/image/module.ts +114 -9
- package/mcp/tools/memory/archive-reader.test.ts +212 -0
- package/mcp/tools/memory/archive-reader.ts +253 -0
- package/mcp/tools/memory/module.ts +152 -0
- package/mcp/tools/memory/retrieval-recorder.ts +66 -0
- package/mcp/tools/shared/share-client.ts +20 -1
- package/mcp/tools/skills/module.ts +28 -0
- package/package.json +1 -1
- package/resource/claude_gateway.svg +1038 -112
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the effective knowledge-archive config for one agent.
|
|
4
|
+
*
|
|
5
|
+
* Precedence mirrors `resolveDreamingConfig`: a per-agent override wins over the
|
|
6
|
+
* global gateway default, which wins over the built-in default. Numeric fields
|
|
7
|
+
* are sanitized (non-finite / out-of-range JSON ⇒ default) so the indexer never
|
|
8
|
+
* chunks with a NaN window.
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.SHARED_DEFAULTS = exports.ARCHIVE_DEFAULTS = void 0;
|
|
45
|
+
exports.resolveArchiveConfig = resolveArchiveConfig;
|
|
46
|
+
exports.resolveSharedConfig = resolveSharedConfig;
|
|
47
|
+
exports.sharedVaultDir = sharedVaultDir;
|
|
48
|
+
exports.sharedDbPath = sharedDbPath;
|
|
49
|
+
exports.sharedNotesDir = sharedNotesDir;
|
|
50
|
+
const os = __importStar(require("os"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
exports.ARCHIVE_DEFAULTS = {
|
|
53
|
+
enabled: true,
|
|
54
|
+
tokenizer: 'unicode61', // "trigram" evaluated for Thai/CJK before locking (planning-64 D5)
|
|
55
|
+
chunkTokens: 400,
|
|
56
|
+
chunkOverlap: 80,
|
|
57
|
+
};
|
|
58
|
+
/** FTS5 tokenizers we accept; anything else falls back to the default. */
|
|
59
|
+
const ALLOWED_TOKENIZERS = new Set(['unicode61', 'trigram', 'ascii', 'porter']);
|
|
60
|
+
function pick(agent, global, fallback) {
|
|
61
|
+
if (agent !== undefined)
|
|
62
|
+
return agent;
|
|
63
|
+
if (global !== undefined)
|
|
64
|
+
return global;
|
|
65
|
+
return fallback;
|
|
66
|
+
}
|
|
67
|
+
function numOr(value, fallback, min, max) {
|
|
68
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
69
|
+
return fallback;
|
|
70
|
+
if (value < min || value > max)
|
|
71
|
+
return fallback;
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
function resolveArchiveConfig(agentCfg, globalCfg) {
|
|
75
|
+
const d = exports.ARCHIVE_DEFAULTS;
|
|
76
|
+
const rawTokenizer = pick(agentCfg?.tokenizer, globalCfg?.tokenizer, d.tokenizer);
|
|
77
|
+
const chunkTokens = numOr(pick(agentCfg?.chunkTokens, globalCfg?.chunkTokens, d.chunkTokens), d.chunkTokens, 16, // a tokenizer window below this is not a meaningful chunk
|
|
78
|
+
100000);
|
|
79
|
+
// Overlap must be strictly less than the chunk window, else the chunker cannot
|
|
80
|
+
// advance and would loop; clamp to [0, chunkTokens-1].
|
|
81
|
+
const rawOverlap = numOr(pick(agentCfg?.chunkOverlap, globalCfg?.chunkOverlap, d.chunkOverlap), d.chunkOverlap, 0, 100000);
|
|
82
|
+
return {
|
|
83
|
+
enabled: pick(agentCfg?.enabled, globalCfg?.enabled, d.enabled),
|
|
84
|
+
tokenizer: ALLOWED_TOKENIZERS.has(rawTokenizer) ? rawTokenizer : d.tokenizer,
|
|
85
|
+
chunkTokens,
|
|
86
|
+
chunkOverlap: Math.min(rawOverlap, chunkTokens - 1),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// ── Shared KB (planning-64 K3) ───────────────────────────────────────────────
|
|
90
|
+
exports.SHARED_DEFAULTS = {
|
|
91
|
+
enabled: true,
|
|
92
|
+
project: 'global',
|
|
93
|
+
root: path.join(os.homedir(), '.claude-gateway', 'shared', 'kb'),
|
|
94
|
+
mode: 'auto', // promote durable memories to the shared vault; gated by the K4 applier (#330). Set 'propose' for dry-run.
|
|
95
|
+
graph: false, // K5 graph/dashboards are opt-in
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* A project key safe to use as a single path segment (no traversal/separators).
|
|
99
|
+
* NOTE: `.` is a literal inside the class, so `'.'` and `'..'` also match the
|
|
100
|
+
* regex — they are rejected explicitly in `resolveSharedConfig` (a bare-dots key
|
|
101
|
+
* would resolve `<root>/..` outside the intended root).
|
|
102
|
+
*/
|
|
103
|
+
const PROJECT_KEY_RE = /^[A-Za-z0-9._-]{1,64}$/;
|
|
104
|
+
/** Reserved path segments that must never be used as a project key. */
|
|
105
|
+
const RESERVED_PROJECT_KEYS = new Set(['.', '..']);
|
|
106
|
+
/** Expand a leading `~` to the home dir (mirrors config path handling elsewhere). */
|
|
107
|
+
function expandHome(p) {
|
|
108
|
+
if (p === '~')
|
|
109
|
+
return os.homedir();
|
|
110
|
+
if (p.startsWith('~/'))
|
|
111
|
+
return path.join(os.homedir(), p.slice(2));
|
|
112
|
+
return p;
|
|
113
|
+
}
|
|
114
|
+
function resolveSharedConfig(agentCfg, globalCfg) {
|
|
115
|
+
const d = exports.SHARED_DEFAULTS;
|
|
116
|
+
const rawProject = pick(agentCfg?.project, globalCfg?.project, d.project);
|
|
117
|
+
const project = typeof rawProject === 'string' && PROJECT_KEY_RE.test(rawProject) && !RESERVED_PROJECT_KEYS.has(rawProject)
|
|
118
|
+
? rawProject
|
|
119
|
+
: d.project;
|
|
120
|
+
const rawRoot = pick(agentCfg?.root, globalCfg?.root, d.root);
|
|
121
|
+
const root = typeof rawRoot === 'string' && rawRoot.trim() ? expandHome(rawRoot.trim()) : d.root;
|
|
122
|
+
const mode = pick(agentCfg?.mode, globalCfg?.mode, d.mode);
|
|
123
|
+
return {
|
|
124
|
+
enabled: pick(agentCfg?.enabled, globalCfg?.enabled, d.enabled),
|
|
125
|
+
project,
|
|
126
|
+
root,
|
|
127
|
+
mode: mode === 'auto' ? 'auto' : 'propose', // anything but 'auto' ⇒ propose
|
|
128
|
+
graph: pick(agentCfg?.graph, globalCfg?.graph, d.graph) === true,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** Directory for a project's shared vault: <root>/<project>. */
|
|
132
|
+
function sharedVaultDir(cfg) {
|
|
133
|
+
return path.join(cfg.root, cfg.project);
|
|
134
|
+
}
|
|
135
|
+
/** The shared vault's SQLite index path. */
|
|
136
|
+
function sharedDbPath(cfg) {
|
|
137
|
+
return path.join(sharedVaultDir(cfg), 'kb.sqlite');
|
|
138
|
+
}
|
|
139
|
+
/** The shared vault's notes dir (agents drop shared `*.md` here; indexed to kb.sqlite). */
|
|
140
|
+
function sharedNotesDir(cfg) {
|
|
141
|
+
return path.join(sharedVaultDir(cfg), 'notes');
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/agent/knowledge/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Demo dataset for the Knowledge Base graph viewer. When the real shared vault
|
|
3
|
+
* is empty, the `/knowledge/graph` endpoint serves this clearly-labelled demo
|
|
4
|
+
* (response `demo: true`) so the viewer renders something meaningful instead of a
|
|
5
|
+
* blank canvas — without silently masking the real empty state.
|
|
6
|
+
*
|
|
7
|
+
* The demo is built by running real note strings through the SAME parse + graph
|
|
8
|
+
* pipeline as live notes (`parseWikiPage` → `graphFromPages`), so the contradiction
|
|
9
|
+
* / stale / low-confidence flags are genuinely derived, not hand-faked.
|
|
10
|
+
*/
|
|
11
|
+
import { type GraphModel } from './wiki';
|
|
12
|
+
/** Build the demo graph model. `now` injected so staleness is deterministic per call. */
|
|
13
|
+
export declare function demoGraphModel(now: number): GraphModel;
|
|
14
|
+
/** Largest synthetic graph the sized demo will build — guards the endpoint from an abusive ?demo=99999. */
|
|
15
|
+
export declare const DEMO_MAX_SIZE = 1000;
|
|
16
|
+
/**
|
|
17
|
+
* Build a synthetic *clustered* graph of `size` notes for stress-testing the
|
|
18
|
+
* viewer at scale (the dashboard's 100 / 300 size selector) without a populated
|
|
19
|
+
* vault. Notes are generated as real markdown with [[wikilinks]] and run through
|
|
20
|
+
* the SAME parse + graph pipeline as live notes, so degree / stale / contradiction
|
|
21
|
+
* flags are genuinely derived — not hand-faked. Deterministic per `size` (seeded
|
|
22
|
+
* PRNG). Sizes <= the hand-written demo fall back to it. Clamped to DEMO_MAX_SIZE.
|
|
23
|
+
*/
|
|
24
|
+
export declare function demoGraphModelSized(now: number, size: number): GraphModel;
|
|
25
|
+
//# sourceMappingURL=graph-demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-demo.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/graph-demo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAsCxE,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAGtD;AAED,2GAA2G;AAC3G,eAAO,MAAM,aAAa,OAAO,CAAC;AAelC;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAuDzE"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Demo dataset for the Knowledge Base graph viewer. When the real shared vault
|
|
4
|
+
* is empty, the `/knowledge/graph` endpoint serves this clearly-labelled demo
|
|
5
|
+
* (response `demo: true`) so the viewer renders something meaningful instead of a
|
|
6
|
+
* blank canvas — without silently masking the real empty state.
|
|
7
|
+
*
|
|
8
|
+
* The demo is built by running real note strings through the SAME parse + graph
|
|
9
|
+
* pipeline as live notes (`parseWikiPage` → `graphFromPages`), so the contradiction
|
|
10
|
+
* / stale / low-confidence flags are genuinely derived, not hand-faked.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DEMO_MAX_SIZE = void 0;
|
|
14
|
+
exports.demoGraphModel = demoGraphModel;
|
|
15
|
+
exports.demoGraphModelSized = demoGraphModelSized;
|
|
16
|
+
const wiki_1 = require("./wiki");
|
|
17
|
+
// [relPath, raw markdown]. `notes/` prefix mirrors the real vault layout.
|
|
18
|
+
const DEMO_NOTES = [
|
|
19
|
+
[
|
|
20
|
+
'notes/api-gateway.md',
|
|
21
|
+
'---\ntitle: API Gateway\ntype: decision\nconfidence: 0.9\n---\nFront door for all services. See [[auth-jwt]] and [[rate-limit]].\n',
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
'notes/auth-jwt.md',
|
|
25
|
+
'---\ntitle: Auth via JWT\ntype: decision\nconfidence: 0.85\nclaims:\n - id: auth-method\n text: JWT bearer tokens\n status: adopted\n---\nStateless auth using signed JWTs. Depends on [[session-store]].\n',
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
'notes/session-store.md',
|
|
29
|
+
'---\ntitle: Session Store\ntype: decision\nconfidence: 0.6\nclaims:\n - id: auth-method\n text: server-side sessions\n status: proposed\n---\nServer-side sessions in [[redis]] (contradicts the JWT decision).\n',
|
|
30
|
+
],
|
|
31
|
+
[
|
|
32
|
+
'notes/rate-limit.md',
|
|
33
|
+
'---\ntitle: Rate Limiting\ntype: policy\nconfidence: 0.8\n---\nToken-bucket per API key, backed by [[redis]].\n',
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
'notes/redis.md',
|
|
37
|
+
'---\ntitle: Redis\ntype: infra\nconfidence: 0.9\n---\nShared cache + rate-limit counters. Snapshots go to [[backup-policy]].\n',
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
'notes/db-postgres.md',
|
|
41
|
+
'---\ntitle: Postgres\ntype: evidence\nconfidence: 0.95\n---\nPrimary datastore. Governed by [[backup-policy]].\n',
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
'notes/backup-policy.md',
|
|
45
|
+
'---\ntitle: Backup Policy\ntype: policy\nconfidence: 0.4\n---\nNightly snapshots, 3-day retention. Still under review (low confidence).\n',
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
'notes/legacy-cache.md',
|
|
49
|
+
'---\ntitle: Legacy Cache\ntype: decision\nconfidence: 0.7\nupdatedAt: "2025-01-01"\n---\nOld in-process cache, superseded by [[redis]]. Kept for reference.\n',
|
|
50
|
+
],
|
|
51
|
+
];
|
|
52
|
+
/** Build the demo graph model. `now` injected so staleness is deterministic per call. */
|
|
53
|
+
function demoGraphModel(now) {
|
|
54
|
+
const pages = DEMO_NOTES.map(([rel, raw]) => (0, wiki_1.parseWikiPage)(rel, raw));
|
|
55
|
+
return (0, wiki_1.graphFromPages)(pages, now);
|
|
56
|
+
}
|
|
57
|
+
/** Largest synthetic graph the sized demo will build — guards the endpoint from an abusive ?demo=99999. */
|
|
58
|
+
exports.DEMO_MAX_SIZE = 1000;
|
|
59
|
+
/** Deterministic PRNG (mulberry32) — a given size always yields the same graph (stable for tests + caching). */
|
|
60
|
+
function mulberry32(seed) {
|
|
61
|
+
let a = seed >>> 0;
|
|
62
|
+
return () => {
|
|
63
|
+
a = (a + 0x6d2b79f5) | 0;
|
|
64
|
+
let t = Math.imul(a ^ (a >>> 15), 1 | a);
|
|
65
|
+
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
|
|
66
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const DEMO_TYPES = ['decision', 'policy', 'infra', 'evidence', 'claim'];
|
|
70
|
+
/**
|
|
71
|
+
* Build a synthetic *clustered* graph of `size` notes for stress-testing the
|
|
72
|
+
* viewer at scale (the dashboard's 100 / 300 size selector) without a populated
|
|
73
|
+
* vault. Notes are generated as real markdown with [[wikilinks]] and run through
|
|
74
|
+
* the SAME parse + graph pipeline as live notes, so degree / stale / contradiction
|
|
75
|
+
* flags are genuinely derived — not hand-faked. Deterministic per `size` (seeded
|
|
76
|
+
* PRNG). Sizes <= the hand-written demo fall back to it. Clamped to DEMO_MAX_SIZE.
|
|
77
|
+
*/
|
|
78
|
+
function demoGraphModelSized(now, size) {
|
|
79
|
+
const n = Math.max(1, Math.min(exports.DEMO_MAX_SIZE, Math.floor(size)));
|
|
80
|
+
if (n <= DEMO_NOTES.length)
|
|
81
|
+
return demoGraphModel(now);
|
|
82
|
+
const rnd = mulberry32(n);
|
|
83
|
+
const clusters = Math.max(3, Math.round(Math.sqrt(n)));
|
|
84
|
+
const id = (i) => 'n' + String(i).padStart(4, '0');
|
|
85
|
+
const notes = [];
|
|
86
|
+
for (let i = 0; i < n; i++) {
|
|
87
|
+
const c = i % clusters; // round-robin keeps clusters balanced
|
|
88
|
+
const hub = c; // first node of each cluster is its hub (nodes 0..clusters-1)
|
|
89
|
+
const isHub = i < clusters;
|
|
90
|
+
const links = [];
|
|
91
|
+
if (!isHub)
|
|
92
|
+
links.push(id(hub)); // spoke -> hub (hub gains high degree = big node)
|
|
93
|
+
// 1-2 intra-cluster neighbours for local structure
|
|
94
|
+
const nbr = clusters + Math.floor(rnd() * Math.max(1, n - clusters));
|
|
95
|
+
if (nbr < n && nbr !== i)
|
|
96
|
+
links.push(id(nbr));
|
|
97
|
+
// ~12% cross-cluster bridge to another hub (keeps the graph one connected mass)
|
|
98
|
+
if (rnd() < 0.12) {
|
|
99
|
+
const other = Math.floor(rnd() * clusters);
|
|
100
|
+
if (other !== hub)
|
|
101
|
+
links.push(id(other));
|
|
102
|
+
}
|
|
103
|
+
const type = DEMO_TYPES[i % DEMO_TYPES.length];
|
|
104
|
+
const confidence = (0.35 + rnd() * 0.6).toFixed(2); // spread of low..high confidence
|
|
105
|
+
const stale = rnd() < 0.15 ? '\nupdatedAt: "2024-06-01"' : ''; // ~15% old -> stale flag
|
|
106
|
+
// ~4% of nodes take part in a shared claim with alternating status -> contradiction flag
|
|
107
|
+
const claim = rnd() < 0.04
|
|
108
|
+
? '\nclaims:\n - id: scale-choice\n text: partition strategy\n status: ' +
|
|
109
|
+
(i % 2 === 0 ? 'adopted' : 'proposed')
|
|
110
|
+
: '';
|
|
111
|
+
const linkLine = links.map((l) => '[[' + l + ']]').join(' ');
|
|
112
|
+
const raw = '---\ntitle: Node ' +
|
|
113
|
+
String(i) +
|
|
114
|
+
'\ntype: ' +
|
|
115
|
+
type +
|
|
116
|
+
'\nconfidence: ' +
|
|
117
|
+
confidence +
|
|
118
|
+
stale +
|
|
119
|
+
claim +
|
|
120
|
+
'\n---\nSynthetic note ' +
|
|
121
|
+
i +
|
|
122
|
+
' in cluster ' +
|
|
123
|
+
c +
|
|
124
|
+
'. ' +
|
|
125
|
+
linkLine +
|
|
126
|
+
'\n';
|
|
127
|
+
notes.push(['notes/' + id(i) + '.md', raw]);
|
|
128
|
+
}
|
|
129
|
+
const pages = notes.map(([rel, raw]) => (0, wiki_1.parseWikiPage)(rel, raw));
|
|
130
|
+
return (0, wiki_1.graphFromPages)(pages, now);
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=graph-demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-demo.js","sourceRoot":"","sources":["../../../src/agent/knowledge/graph-demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Two-lane memory: per-agent knowledge archive (planning-64 K0).
|
|
3
|
+
*
|
|
4
|
+
* Public surface of the archive substrate. K0 ships this as dormant
|
|
5
|
+
* infrastructure — the index is built and queryable, but no gateway runtime path
|
|
6
|
+
* calls it yet. Later phases consume it: K1 (`memory_search`/`memory_get` tools),
|
|
7
|
+
* K2 (core shrink), K4 (dreaming applier), K3 (shared KB).
|
|
8
|
+
*/
|
|
9
|
+
export { ArchiveDB } from './archive-db';
|
|
10
|
+
export type { ChunkWithMeta } from './archive-db';
|
|
11
|
+
export { indexAgentArchive, indexSharedArchive, archiveDbPath } from './indexer';
|
|
12
|
+
export { spawnArchiveReindex } from './reindex-spawn';
|
|
13
|
+
export { resolveArchiveConfig, ARCHIVE_DEFAULTS, resolveSharedConfig, SHARED_DEFAULTS, sharedVaultDir, sharedDbPath, sharedNotesDir, } from './config';
|
|
14
|
+
export type { KnowledgeSharedConfig, ResolvedKnowledgeSharedCfg } from './types';
|
|
15
|
+
export { writeSharedNote, sharedNoteFilename } from './shared-writer';
|
|
16
|
+
export { makeSharedPromoter } from './shared-promote';
|
|
17
|
+
export { compileWiki, parseWikiPage, extractLinks, buildBacklinks, buildDashboards, readVaultPages, graphFromPages, buildGraphModel, } from './wiki';
|
|
18
|
+
export type { WikiPage, WikiClaim, Dashboards, WikiCompileResult, GraphNode, GraphEdge, GraphModel, } from './wiki';
|
|
19
|
+
export { demoGraphModel, demoGraphModelSized, DEMO_MAX_SIZE } from './graph-demo';
|
|
20
|
+
export { chunkMarkdown } from './chunk';
|
|
21
|
+
export type { Chunk } from './chunk';
|
|
22
|
+
export { classifyOrigin } from './provenance';
|
|
23
|
+
export type { KnowledgeArchiveConfig, ResolvedKnowledgeArchiveCfg, OriginClass, SessionKind, ArchiveSourceRow, ArchiveChunkRow, ArchiveRecallRow, ArchiveProvenanceRow, IndexResult, } from './types';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,QAAQ,CAAC;AAChB,YAAY,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,GACZ,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Two-lane memory: per-agent knowledge archive (planning-64 K0).
|
|
4
|
+
*
|
|
5
|
+
* Public surface of the archive substrate. K0 ships this as dormant
|
|
6
|
+
* infrastructure — the index is built and queryable, but no gateway runtime path
|
|
7
|
+
* calls it yet. Later phases consume it: K1 (`memory_search`/`memory_get` tools),
|
|
8
|
+
* K2 (core shrink), K4 (dreaming applier), K3 (shared KB).
|
|
9
|
+
*/
|
|
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;
|
|
12
|
+
var archive_db_1 = require("./archive-db");
|
|
13
|
+
Object.defineProperty(exports, "ArchiveDB", { enumerable: true, get: function () { return archive_db_1.ArchiveDB; } });
|
|
14
|
+
var indexer_1 = require("./indexer");
|
|
15
|
+
Object.defineProperty(exports, "indexAgentArchive", { enumerable: true, get: function () { return indexer_1.indexAgentArchive; } });
|
|
16
|
+
Object.defineProperty(exports, "indexSharedArchive", { enumerable: true, get: function () { return indexer_1.indexSharedArchive; } });
|
|
17
|
+
Object.defineProperty(exports, "archiveDbPath", { enumerable: true, get: function () { return indexer_1.archiveDbPath; } });
|
|
18
|
+
var reindex_spawn_1 = require("./reindex-spawn");
|
|
19
|
+
Object.defineProperty(exports, "spawnArchiveReindex", { enumerable: true, get: function () { return reindex_spawn_1.spawnArchiveReindex; } });
|
|
20
|
+
var config_1 = require("./config");
|
|
21
|
+
Object.defineProperty(exports, "resolveArchiveConfig", { enumerable: true, get: function () { return config_1.resolveArchiveConfig; } });
|
|
22
|
+
Object.defineProperty(exports, "ARCHIVE_DEFAULTS", { enumerable: true, get: function () { return config_1.ARCHIVE_DEFAULTS; } });
|
|
23
|
+
Object.defineProperty(exports, "resolveSharedConfig", { enumerable: true, get: function () { return config_1.resolveSharedConfig; } });
|
|
24
|
+
Object.defineProperty(exports, "SHARED_DEFAULTS", { enumerable: true, get: function () { return config_1.SHARED_DEFAULTS; } });
|
|
25
|
+
Object.defineProperty(exports, "sharedVaultDir", { enumerable: true, get: function () { return config_1.sharedVaultDir; } });
|
|
26
|
+
Object.defineProperty(exports, "sharedDbPath", { enumerable: true, get: function () { return config_1.sharedDbPath; } });
|
|
27
|
+
Object.defineProperty(exports, "sharedNotesDir", { enumerable: true, get: function () { return config_1.sharedNotesDir; } });
|
|
28
|
+
var shared_writer_1 = require("./shared-writer");
|
|
29
|
+
Object.defineProperty(exports, "writeSharedNote", { enumerable: true, get: function () { return shared_writer_1.writeSharedNote; } });
|
|
30
|
+
Object.defineProperty(exports, "sharedNoteFilename", { enumerable: true, get: function () { return shared_writer_1.sharedNoteFilename; } });
|
|
31
|
+
var shared_promote_1 = require("./shared-promote");
|
|
32
|
+
Object.defineProperty(exports, "makeSharedPromoter", { enumerable: true, get: function () { return shared_promote_1.makeSharedPromoter; } });
|
|
33
|
+
var wiki_1 = require("./wiki");
|
|
34
|
+
Object.defineProperty(exports, "compileWiki", { enumerable: true, get: function () { return wiki_1.compileWiki; } });
|
|
35
|
+
Object.defineProperty(exports, "parseWikiPage", { enumerable: true, get: function () { return wiki_1.parseWikiPage; } });
|
|
36
|
+
Object.defineProperty(exports, "extractLinks", { enumerable: true, get: function () { return wiki_1.extractLinks; } });
|
|
37
|
+
Object.defineProperty(exports, "buildBacklinks", { enumerable: true, get: function () { return wiki_1.buildBacklinks; } });
|
|
38
|
+
Object.defineProperty(exports, "buildDashboards", { enumerable: true, get: function () { return wiki_1.buildDashboards; } });
|
|
39
|
+
Object.defineProperty(exports, "readVaultPages", { enumerable: true, get: function () { return wiki_1.readVaultPages; } });
|
|
40
|
+
Object.defineProperty(exports, "graphFromPages", { enumerable: true, get: function () { return wiki_1.graphFromPages; } });
|
|
41
|
+
Object.defineProperty(exports, "buildGraphModel", { enumerable: true, get: function () { return wiki_1.buildGraphModel; } });
|
|
42
|
+
var graph_demo_1 = require("./graph-demo");
|
|
43
|
+
Object.defineProperty(exports, "demoGraphModel", { enumerable: true, get: function () { return graph_demo_1.demoGraphModel; } });
|
|
44
|
+
Object.defineProperty(exports, "demoGraphModelSized", { enumerable: true, get: function () { return graph_demo_1.demoGraphModelSized; } });
|
|
45
|
+
Object.defineProperty(exports, "DEMO_MAX_SIZE", { enumerable: true, get: function () { return graph_demo_1.DEMO_MAX_SIZE; } });
|
|
46
|
+
var chunk_1 = require("./chunk");
|
|
47
|
+
Object.defineProperty(exports, "chunkMarkdown", { enumerable: true, get: function () { return chunk_1.chunkMarkdown; } });
|
|
48
|
+
var provenance_1 = require("./provenance");
|
|
49
|
+
Object.defineProperty(exports, "classifyOrigin", { enumerable: true, get: function () { return provenance_1.classifyOrigin; } });
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Archive indexer (planning-64 K0).
|
|
3
|
+
*
|
|
4
|
+
* Walks an agent's memory files, chunks each, tags provenance, and writes them
|
|
5
|
+
* into the per-agent `kb.sqlite`. Hash-guarded: an unchanged file is skipped;
|
|
6
|
+
* a changed file is re-chunked and its stale chunks replaced; a file that
|
|
7
|
+
* disappeared is pruned. Deterministic (timestamps come from file mtime, not the
|
|
8
|
+
* wall clock) so a reindex of unchanged files is a true no-op.
|
|
9
|
+
*
|
|
10
|
+
* Synchronous by construction (node:sqlite + fs). Callers MUST invoke this OFF
|
|
11
|
+
* the gateway event loop (nightly dreaming spawn / out-of-process). K0 does not
|
|
12
|
+
* wire it into any gateway runtime path — it is dormant until K1.
|
|
13
|
+
*/
|
|
14
|
+
import type { IndexResult, KnowledgeArchiveConfig, KnowledgeSharedConfig } from './types';
|
|
15
|
+
/** Default location of an agent's archive DB (sibling to history.db). */
|
|
16
|
+
export declare function archiveDbPath(workspaceDir: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Index one agent's archive. Returns per-run counts. A no-op (returns zeroed
|
|
19
|
+
* counts) when the archive is disabled.
|
|
20
|
+
*
|
|
21
|
+
* @param workspaceDir the agent's workspace dir (agents/<id>/workspace)
|
|
22
|
+
* @param agentCfg per-agent `gateway.knowledge.archive` override
|
|
23
|
+
* @param globalCfg global `gateway.knowledge.archive`
|
|
24
|
+
*/
|
|
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
|
+
export declare function indexSharedArchive(agentCfg?: KnowledgeSharedConfig, globalCfg?: KnowledgeSharedConfig): IndexResult;
|
|
34
|
+
//# sourceMappingURL=indexer.d.ts.map
|
|
@@ -0,0 +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"}
|