@0xmaxma/claude-gateway 1.6.9 → 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/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/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/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/skills/module.ts +28 -0
- package/package.json +1 -1
- package/resource/claude_gateway.svg +1038 -112
package/dist/history/db.d.ts
CHANGED
|
@@ -7,6 +7,35 @@ import { ChatSummary, HistoryMessage, MessagePage, PaginationOpts, SearchOpts, A
|
|
|
7
7
|
* by the HTTP boundary clamp (api/router.ts) so the two ceilings can never drift.
|
|
8
8
|
*/
|
|
9
9
|
export declare const MAX_HISTORY_LIMIT = 1000;
|
|
10
|
+
export interface TurnMetricRow {
|
|
11
|
+
sessionId: string;
|
|
12
|
+
turnIdx: number;
|
|
13
|
+
ts: number;
|
|
14
|
+
toolCalls: number;
|
|
15
|
+
durationMs: number;
|
|
16
|
+
tokensIn: number;
|
|
17
|
+
tokensOut: number;
|
|
18
|
+
recoveryFired: number;
|
|
19
|
+
skillsLoaded: string | null;
|
|
20
|
+
intentHash: string | null;
|
|
21
|
+
enabled: number;
|
|
22
|
+
}
|
|
23
|
+
export interface SkillStatRow {
|
|
24
|
+
name: string;
|
|
25
|
+
origin: string;
|
|
26
|
+
createdAt: number | null;
|
|
27
|
+
createdFromSession: string | null;
|
|
28
|
+
timesLoaded: number;
|
|
29
|
+
lastUsedAt: number | null;
|
|
30
|
+
pinned: number;
|
|
31
|
+
}
|
|
32
|
+
export interface ReviewRunRow {
|
|
33
|
+
sessionId: string | null;
|
|
34
|
+
ts: number;
|
|
35
|
+
triggerReason: string | null;
|
|
36
|
+
outcome: string | null;
|
|
37
|
+
tokensSpent: number;
|
|
38
|
+
}
|
|
10
39
|
export declare class HistoryDB {
|
|
11
40
|
private readonly db;
|
|
12
41
|
private readonly insertStmt;
|
|
@@ -18,6 +47,42 @@ export declare class HistoryDB {
|
|
|
18
47
|
static evictDir(agentDir: string, agentId: string): void;
|
|
19
48
|
private _initSchema;
|
|
20
49
|
insertMessage(msg: HistoryMessage): void;
|
|
50
|
+
/** Insert one durable per-turn metric row. */
|
|
51
|
+
insertTurnMetric(row: TurnMetricRow): void;
|
|
52
|
+
/** All turn_metrics rows for a session, ascending by turn. */
|
|
53
|
+
getTurnMetricsForSession(sessionId: string): TurnMetricRow[];
|
|
54
|
+
/**
|
|
55
|
+
* Most-recent messages for a session as {role, content}, oldest-first, capped.
|
|
56
|
+
* Used to build the reviewer's transcript input (planning-62).
|
|
57
|
+
*/
|
|
58
|
+
getSessionTranscript(sessionId: string, limit?: number): Array<{
|
|
59
|
+
role: string;
|
|
60
|
+
content: string;
|
|
61
|
+
ts: number;
|
|
62
|
+
}>;
|
|
63
|
+
/** All turn_metrics rows since a timestamp (default: all), ascending by ts. */
|
|
64
|
+
listTurnMetrics(sinceTs?: number): TurnMetricRow[];
|
|
65
|
+
/** Record (or re-stamp provenance of) a created skill. Counters are preserved on conflict. */
|
|
66
|
+
recordSkillCreated(row: Omit<SkillStatRow, 'timesLoaded' | 'lastUsedAt'> & {
|
|
67
|
+
timesLoaded?: number;
|
|
68
|
+
}): void;
|
|
69
|
+
/**
|
|
70
|
+
* Increment a skill's load counter. Upserts so loads are counted even if the
|
|
71
|
+
* create was never recorded; a brand-new row defaults to origin 'user' (never
|
|
72
|
+
* mis-tags an auto skill — its create row already set origin='auto').
|
|
73
|
+
*/
|
|
74
|
+
bumpSkillLoaded(name: string, ts: number): void;
|
|
75
|
+
setSkillPinned(name: string, pinned: boolean): void;
|
|
76
|
+
deleteSkillStat(name: string): void;
|
|
77
|
+
getSkillStat(name: string): SkillStatRow | null;
|
|
78
|
+
listSkillStats(): SkillStatRow[];
|
|
79
|
+
/** Append a reviewer-run row to the cost ledger. */
|
|
80
|
+
insertReviewRun(row: ReviewRunRow): void;
|
|
81
|
+
/** Count reviewer spawns at or after a timestamp (for the daily budget). */
|
|
82
|
+
countReviewRunsSince(ts: number): number;
|
|
83
|
+
listReviewRuns(sinceTs?: number): ReviewRunRow[];
|
|
84
|
+
/** Retention prune for telemetry tables (runs even when learning is disabled). Returns rows removed. */
|
|
85
|
+
pruneTelemetry(cutoffTs: number): number;
|
|
21
86
|
listChats(): ChatSummary[];
|
|
22
87
|
getMessages(chatId: string, opts?: PaginationOpts): MessagePage;
|
|
23
88
|
searchMessages(chatId: string, query: string, opts?: SearchOpts): SearchPage;
|
package/dist/history/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/history/db.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,cAAc,EAEd,WAAW,EAEX,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EAEV,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/history/db.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,cAAc,EAEd,WAAW,EAEX,cAAc,EACd,UAAU,EACV,cAAc,EACd,UAAU,EAEV,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAWtC,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO;IAcP,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAWlE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAS3D,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1D,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIxD,OAAO,CAAC,WAAW;IA6FnB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAwBxC,8CAA8C;IAC9C,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IA0B1C,8DAA8D;IAC9D,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAY5D;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAqB1G,+EAA+E;IAC/E,eAAe,CAAC,OAAO,SAAI,GAAG,aAAa,EAAE;IAY7C,8FAA8F;IAC9F,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,YAAY,CAAC,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAkB1G;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAgB/C,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAQnD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQnC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAY/C,cAAc,IAAI,YAAY,EAAE;IAUhC,oDAAoD;IACpD,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAaxC,4EAA4E;IAC5E,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAYxC,cAAc,CAAC,OAAO,SAAI,GAAG,YAAY,EAAE;IAkB3C,wGAAwG;IACxG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAYxC,SAAS,IAAI,WAAW,EAAE;IAqC1B,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,WAAW;IA2EnE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,UAAU;IAgDhF;;;;;;;;;;OAUG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE;IA2B7D,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IA6C/C;;;;;;OAMG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,GAChB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAoBzF,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAYzD;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAoB1C,OAAO,CAAC,aAAa;CAgCtB"}
|
package/dist/history/db.js
CHANGED
|
@@ -124,6 +124,48 @@ class HistoryDB {
|
|
|
124
124
|
VALUES ('delete', old.id, old.content, old.sender_name);
|
|
125
125
|
END;
|
|
126
126
|
|
|
127
|
+
-- Skill-learning telemetry (planning-62). Durable per-turn record — the
|
|
128
|
+
-- prerequisite for BOTH gating and effectiveness measurement.
|
|
129
|
+
CREATE TABLE IF NOT EXISTS turn_metrics (
|
|
130
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
131
|
+
session_id TEXT NOT NULL,
|
|
132
|
+
turn_idx INTEGER NOT NULL,
|
|
133
|
+
ts INTEGER NOT NULL,
|
|
134
|
+
tool_calls INTEGER NOT NULL DEFAULT 0,
|
|
135
|
+
duration_ms INTEGER NOT NULL DEFAULT 0,
|
|
136
|
+
tokens_in INTEGER NOT NULL DEFAULT 0,
|
|
137
|
+
tokens_out INTEGER NOT NULL DEFAULT 0,
|
|
138
|
+
recovery_fired INTEGER NOT NULL DEFAULT 0,
|
|
139
|
+
skills_loaded TEXT, -- JSON array of skill names
|
|
140
|
+
intent_hash TEXT, -- lightweight task-cluster key
|
|
141
|
+
enabled INTEGER NOT NULL DEFAULT 0 -- cohort tag at capture
|
|
142
|
+
);
|
|
143
|
+
CREATE INDEX IF NOT EXISTS idx_turn_metrics_ts ON turn_metrics(ts);
|
|
144
|
+
CREATE INDEX IF NOT EXISTS idx_turn_metrics_intent ON turn_metrics(intent_hash);
|
|
145
|
+
CREATE INDEX IF NOT EXISTS idx_turn_metrics_session ON turn_metrics(session_id, turn_idx);
|
|
146
|
+
|
|
147
|
+
-- Per-skill provenance + usage. Only origin='auto' rows are ever pruned/edited.
|
|
148
|
+
CREATE TABLE IF NOT EXISTS skill_stats (
|
|
149
|
+
name TEXT PRIMARY KEY,
|
|
150
|
+
origin TEXT NOT NULL, -- 'auto' | 'user'
|
|
151
|
+
created_at INTEGER,
|
|
152
|
+
created_from_session TEXT,
|
|
153
|
+
times_loaded INTEGER NOT NULL DEFAULT 0,
|
|
154
|
+
last_used_at INTEGER,
|
|
155
|
+
pinned INTEGER NOT NULL DEFAULT 0
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
-- Reviewer cost ledger: one row per reviewer spawn (daily budget + net-token measure).
|
|
159
|
+
CREATE TABLE IF NOT EXISTS skill_review_runs (
|
|
160
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
161
|
+
session_id TEXT,
|
|
162
|
+
ts INTEGER NOT NULL,
|
|
163
|
+
trigger_reason TEXT,
|
|
164
|
+
outcome TEXT, -- none | create | edit | error
|
|
165
|
+
tokens_spent INTEGER NOT NULL DEFAULT 0
|
|
166
|
+
);
|
|
167
|
+
CREATE INDEX IF NOT EXISTS idx_skill_review_runs_ts ON skill_review_runs(ts);
|
|
168
|
+
|
|
127
169
|
`);
|
|
128
170
|
// image_refs (#74) postdates existing DBs: CREATE TABLE IF NOT EXISTS won't
|
|
129
171
|
// touch them, so migrate with an explicit existence check. Only ALTER when the
|
|
@@ -143,6 +185,198 @@ class HistoryDB {
|
|
|
143
185
|
console.error(`[HistoryDB:${this.agentId}] insertMessage failed:`, err);
|
|
144
186
|
}
|
|
145
187
|
}
|
|
188
|
+
// ---- Skill-learning telemetry (planning-62) --------------------------------
|
|
189
|
+
// All best-effort: telemetry must never break a turn. Errors are logged, not thrown.
|
|
190
|
+
/** Insert one durable per-turn metric row. */
|
|
191
|
+
insertTurnMetric(row) {
|
|
192
|
+
try {
|
|
193
|
+
this.db
|
|
194
|
+
.prepare(`INSERT INTO turn_metrics
|
|
195
|
+
(session_id, turn_idx, ts, tool_calls, duration_ms, tokens_in, tokens_out, recovery_fired, skills_loaded, intent_hash, enabled)
|
|
196
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
197
|
+
.run(row.sessionId, row.turnIdx, row.ts, row.toolCalls, row.durationMs, row.tokensIn, row.tokensOut, row.recoveryFired, row.skillsLoaded, row.intentHash, row.enabled);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
console.error(`[HistoryDB:${this.agentId}] insertTurnMetric failed:`, err);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/** All turn_metrics rows for a session, ascending by turn. */
|
|
204
|
+
getTurnMetricsForSession(sessionId) {
|
|
205
|
+
try {
|
|
206
|
+
const rows = this.db
|
|
207
|
+
.prepare(`SELECT * FROM turn_metrics WHERE session_id = ? ORDER BY turn_idx ASC`)
|
|
208
|
+
.all(sessionId);
|
|
209
|
+
return rows.map(mapTurnMetricRow);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
console.error(`[HistoryDB:${this.agentId}] getTurnMetricsForSession failed:`, err);
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Most-recent messages for a session as {role, content}, oldest-first, capped.
|
|
218
|
+
* Used to build the reviewer's transcript input (planning-62).
|
|
219
|
+
*/
|
|
220
|
+
getSessionTranscript(sessionId, limit = 200) {
|
|
221
|
+
try {
|
|
222
|
+
const rows = this.db
|
|
223
|
+
.prepare(`SELECT role, content, ts FROM messages
|
|
224
|
+
WHERE session_id = ? ORDER BY ts DESC LIMIT ?`)
|
|
225
|
+
.all(sessionId, limit);
|
|
226
|
+
return rows
|
|
227
|
+
.map((r) => ({
|
|
228
|
+
role: String(r['role'] ?? ''),
|
|
229
|
+
content: String(r['content'] ?? ''),
|
|
230
|
+
ts: Number(r['ts'] ?? 0),
|
|
231
|
+
}))
|
|
232
|
+
.reverse();
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
console.error(`[HistoryDB:${this.agentId}] getSessionTranscript failed:`, err);
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** All turn_metrics rows since a timestamp (default: all), ascending by ts. */
|
|
240
|
+
listTurnMetrics(sinceTs = 0) {
|
|
241
|
+
try {
|
|
242
|
+
const rows = this.db
|
|
243
|
+
.prepare(`SELECT * FROM turn_metrics WHERE ts >= ? ORDER BY ts ASC`)
|
|
244
|
+
.all(sinceTs);
|
|
245
|
+
return rows.map(mapTurnMetricRow);
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
console.error(`[HistoryDB:${this.agentId}] listTurnMetrics failed:`, err);
|
|
249
|
+
return [];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/** Record (or re-stamp provenance of) a created skill. Counters are preserved on conflict. */
|
|
253
|
+
recordSkillCreated(row) {
|
|
254
|
+
try {
|
|
255
|
+
this.db
|
|
256
|
+
.prepare(`INSERT INTO skill_stats (name, origin, created_at, created_from_session, times_loaded, last_used_at, pinned)
|
|
257
|
+
VALUES (?, ?, ?, ?, ?, NULL, ?)
|
|
258
|
+
ON CONFLICT(name) DO UPDATE SET
|
|
259
|
+
origin = excluded.origin,
|
|
260
|
+
created_at = excluded.created_at,
|
|
261
|
+
created_from_session = excluded.created_from_session,
|
|
262
|
+
pinned = excluded.pinned`)
|
|
263
|
+
.run(row.name, row.origin, row.createdAt, row.createdFromSession, row.timesLoaded ?? 0, row.pinned);
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
console.error(`[HistoryDB:${this.agentId}] recordSkillCreated failed:`, err);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Increment a skill's load counter. Upserts so loads are counted even if the
|
|
271
|
+
* create was never recorded; a brand-new row defaults to origin 'user' (never
|
|
272
|
+
* mis-tags an auto skill — its create row already set origin='auto').
|
|
273
|
+
*/
|
|
274
|
+
bumpSkillLoaded(name, ts) {
|
|
275
|
+
try {
|
|
276
|
+
this.db
|
|
277
|
+
.prepare(`INSERT INTO skill_stats (name, origin, times_loaded, last_used_at, pinned)
|
|
278
|
+
VALUES (?, 'user', 1, ?, 0)
|
|
279
|
+
ON CONFLICT(name) DO UPDATE SET
|
|
280
|
+
times_loaded = times_loaded + 1,
|
|
281
|
+
last_used_at = excluded.last_used_at`)
|
|
282
|
+
.run(name, ts);
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
console.error(`[HistoryDB:${this.agentId}] bumpSkillLoaded failed:`, err);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
setSkillPinned(name, pinned) {
|
|
289
|
+
try {
|
|
290
|
+
this.db.prepare(`UPDATE skill_stats SET pinned = ? WHERE name = ?`).run(pinned ? 1 : 0, name);
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
console.error(`[HistoryDB:${this.agentId}] setSkillPinned failed:`, err);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
deleteSkillStat(name) {
|
|
297
|
+
try {
|
|
298
|
+
this.db.prepare(`DELETE FROM skill_stats WHERE name = ?`).run(name);
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
console.error(`[HistoryDB:${this.agentId}] deleteSkillStat failed:`, err);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
getSkillStat(name) {
|
|
305
|
+
try {
|
|
306
|
+
const row = this.db.prepare(`SELECT * FROM skill_stats WHERE name = ?`).get(name);
|
|
307
|
+
return row ? mapSkillStatRow(row) : null;
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
console.error(`[HistoryDB:${this.agentId}] getSkillStat failed:`, err);
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
listSkillStats() {
|
|
315
|
+
try {
|
|
316
|
+
const rows = this.db.prepare(`SELECT * FROM skill_stats`).all();
|
|
317
|
+
return rows.map(mapSkillStatRow);
|
|
318
|
+
}
|
|
319
|
+
catch (err) {
|
|
320
|
+
console.error(`[HistoryDB:${this.agentId}] listSkillStats failed:`, err);
|
|
321
|
+
return [];
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/** Append a reviewer-run row to the cost ledger. */
|
|
325
|
+
insertReviewRun(row) {
|
|
326
|
+
try {
|
|
327
|
+
this.db
|
|
328
|
+
.prepare(`INSERT INTO skill_review_runs (session_id, ts, trigger_reason, outcome, tokens_spent)
|
|
329
|
+
VALUES (?, ?, ?, ?, ?)`)
|
|
330
|
+
.run(row.sessionId, row.ts, row.triggerReason, row.outcome, row.tokensSpent);
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
console.error(`[HistoryDB:${this.agentId}] insertReviewRun failed:`, err);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/** Count reviewer spawns at or after a timestamp (for the daily budget). */
|
|
337
|
+
countReviewRunsSince(ts) {
|
|
338
|
+
try {
|
|
339
|
+
const row = this.db
|
|
340
|
+
.prepare(`SELECT COUNT(*) AS n FROM skill_review_runs WHERE ts >= ?`)
|
|
341
|
+
.get(ts);
|
|
342
|
+
return row?.n ?? 0;
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
console.error(`[HistoryDB:${this.agentId}] countReviewRunsSince failed:`, err);
|
|
346
|
+
return 0;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
listReviewRuns(sinceTs = 0) {
|
|
350
|
+
try {
|
|
351
|
+
const rows = this.db
|
|
352
|
+
.prepare(`SELECT * FROM skill_review_runs WHERE ts >= ? ORDER BY ts ASC`)
|
|
353
|
+
.all(sinceTs);
|
|
354
|
+
return rows.map((r) => ({
|
|
355
|
+
sessionId: r['session_id'] ?? null,
|
|
356
|
+
ts: Number(r['ts'] ?? 0),
|
|
357
|
+
triggerReason: r['trigger_reason'] ?? null,
|
|
358
|
+
outcome: r['outcome'] ?? null,
|
|
359
|
+
tokensSpent: Number(r['tokens_spent'] ?? 0),
|
|
360
|
+
}));
|
|
361
|
+
}
|
|
362
|
+
catch (err) {
|
|
363
|
+
console.error(`[HistoryDB:${this.agentId}] listReviewRuns failed:`, err);
|
|
364
|
+
return [];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
/** Retention prune for telemetry tables (runs even when learning is disabled). Returns rows removed. */
|
|
368
|
+
pruneTelemetry(cutoffTs) {
|
|
369
|
+
let removed = 0;
|
|
370
|
+
try {
|
|
371
|
+
removed += this.db.prepare(`DELETE FROM turn_metrics WHERE ts < ?`).run(cutoffTs).changes ?? 0;
|
|
372
|
+
removed +=
|
|
373
|
+
this.db.prepare(`DELETE FROM skill_review_runs WHERE ts < ?`).run(cutoffTs).changes ?? 0;
|
|
374
|
+
}
|
|
375
|
+
catch (err) {
|
|
376
|
+
console.error(`[HistoryDB:${this.agentId}] pruneTelemetry failed:`, err);
|
|
377
|
+
}
|
|
378
|
+
return removed;
|
|
379
|
+
}
|
|
146
380
|
listChats() {
|
|
147
381
|
const rows = this.db.prepare(`
|
|
148
382
|
SELECT
|
|
@@ -448,4 +682,31 @@ class HistoryDB {
|
|
|
448
682
|
}
|
|
449
683
|
}
|
|
450
684
|
exports.HistoryDB = HistoryDB;
|
|
685
|
+
// ---- Skill-learning row mappers (module scope) --------------------------------
|
|
686
|
+
function mapTurnMetricRow(r) {
|
|
687
|
+
return {
|
|
688
|
+
sessionId: r['session_id'],
|
|
689
|
+
turnIdx: Number(r['turn_idx'] ?? 0),
|
|
690
|
+
ts: Number(r['ts'] ?? 0),
|
|
691
|
+
toolCalls: Number(r['tool_calls'] ?? 0),
|
|
692
|
+
durationMs: Number(r['duration_ms'] ?? 0),
|
|
693
|
+
tokensIn: Number(r['tokens_in'] ?? 0),
|
|
694
|
+
tokensOut: Number(r['tokens_out'] ?? 0),
|
|
695
|
+
recoveryFired: Number(r['recovery_fired'] ?? 0),
|
|
696
|
+
skillsLoaded: r['skills_loaded'] ?? null,
|
|
697
|
+
intentHash: r['intent_hash'] ?? null,
|
|
698
|
+
enabled: Number(r['enabled'] ?? 0),
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
function mapSkillStatRow(r) {
|
|
702
|
+
return {
|
|
703
|
+
name: r['name'],
|
|
704
|
+
origin: r['origin'] ?? 'user',
|
|
705
|
+
createdAt: r['created_at'] != null ? Number(r['created_at']) : null,
|
|
706
|
+
createdFromSession: r['created_from_session'] ?? null,
|
|
707
|
+
timesLoaded: Number(r['times_loaded'] ?? 0),
|
|
708
|
+
lastUsedAt: r['last_used_at'] != null ? Number(r['last_used_at']) : null,
|
|
709
|
+
pinned: Number(r['pinned'] ?? 0),
|
|
710
|
+
};
|
|
711
|
+
}
|
|
451
712
|
//# sourceMappingURL=db.js.map
|
package/dist/history/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/history/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/history/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -61,10 +61,16 @@ const os = __importStar(require("os"));
|
|
|
61
61
|
const loader_1 = require("./config/loader");
|
|
62
62
|
const migrator_1 = require("./config/migrator");
|
|
63
63
|
const workspace_loader_1 = require("./agent/workspace-loader");
|
|
64
|
+
const knowledge_1 = require("./agent/knowledge");
|
|
64
65
|
const skills_1 = require("./skills");
|
|
65
66
|
const sync_1 = require("./skills/sync");
|
|
66
67
|
const factory_1 = require("./watch/factory");
|
|
67
68
|
const runner_1 = require("./agent/runner");
|
|
69
|
+
const skill_learning_1 = require("./agent/skill-learning");
|
|
70
|
+
const dreaming_1 = require("./agent/dreaming");
|
|
71
|
+
const migrate_1 = require("./agent/dreaming/migrate");
|
|
72
|
+
const config_1 = require("./agent/dreaming/config");
|
|
73
|
+
const reviewer_1 = require("./agent/skill-learning/reviewer");
|
|
68
74
|
const scheduler_1 = require("./cron/scheduler");
|
|
69
75
|
const manager_1 = require("./cron/manager");
|
|
70
76
|
const gateway_router_1 = require("./api/gateway-router");
|
|
@@ -176,6 +182,14 @@ async function startAgent(agentConfig, gatewayConfig, ctx) {
|
|
|
176
182
|
const { agentRunners, agentConfigs, schedulers, startupResults, mcpToolsDir, sharedSkillsDir, logDir } = ctx;
|
|
177
183
|
const logger = (0, logger_1.createLogger)(agentConfig.id, logDir);
|
|
178
184
|
logger.info('Initialising agent', { id: agentConfig.id });
|
|
185
|
+
// Soft memory budgets for MEMORY.md/USER.md compose banners (issue #323).
|
|
186
|
+
// Per-agent config wins field-by-field over the global gateway default
|
|
187
|
+
// (mirrors the skillLearning override). loadWorkspace defaults any unset
|
|
188
|
+
// field, so a fully-absent config is safe.
|
|
189
|
+
const memoryBudget = { ...gatewayConfig.gateway.memory, ...agentConfig.memory };
|
|
190
|
+
// K2 core-shrink is enabled only when the searchable archive is on — otherwise
|
|
191
|
+
// the injected index would point at a memory_search tool with nothing behind it.
|
|
192
|
+
const coreShrink = (0, knowledge_1.resolveArchiveConfig)(agentConfig.knowledge?.archive, gatewayConfig.gateway.knowledge?.archive).enabled;
|
|
179
193
|
// Ensure workspace directory exists (may be absent for newly created agents)
|
|
180
194
|
try {
|
|
181
195
|
fs.mkdirSync(agentConfig.workspace, { recursive: true });
|
|
@@ -226,9 +240,11 @@ async function startAgent(agentConfig, gatewayConfig, ctx) {
|
|
|
226
240
|
let workspace;
|
|
227
241
|
try {
|
|
228
242
|
workspace = await (0, workspace_loader_1.loadWorkspace)(agentConfig.workspace, {
|
|
243
|
+
coreShrink,
|
|
229
244
|
mcpToolsDir,
|
|
230
245
|
sharedSkillsDir,
|
|
231
246
|
logger,
|
|
247
|
+
memoryBudget,
|
|
232
248
|
});
|
|
233
249
|
}
|
|
234
250
|
catch (err) {
|
|
@@ -272,6 +288,65 @@ async function startAgent(agentConfig, gatewayConfig, ctx) {
|
|
|
272
288
|
}
|
|
273
289
|
agentRunners.set(agentConfig.id, runner);
|
|
274
290
|
agentConfigs.set(agentConfig.id, agentConfig);
|
|
291
|
+
// Skill self-improvement (planning-62): wire the manager (telemetry capture +
|
|
292
|
+
// idle-review trigger + reviewer + writer) and start the daily curator. Shares
|
|
293
|
+
// the runner's history DB so telemetry and the reviewer read the same tables.
|
|
294
|
+
// Telemetry capture is always-on; the reviewer/writer/curator honor `enabled`.
|
|
295
|
+
try {
|
|
296
|
+
const skillLearning = new skill_learning_1.SkillLearningManager({
|
|
297
|
+
db: runner.getHistoryDb(),
|
|
298
|
+
agentId: agentConfig.id,
|
|
299
|
+
workspaceDir: agentConfig.workspace,
|
|
300
|
+
mcpToolsDir,
|
|
301
|
+
sharedSkillsDir,
|
|
302
|
+
globalCfg: gatewayConfig.gateway.skillLearning,
|
|
303
|
+
agentCfg: agentConfig.skillLearning,
|
|
304
|
+
logger,
|
|
305
|
+
channels: {
|
|
306
|
+
telegramBotToken: agentConfig.telegram?.botToken,
|
|
307
|
+
discordBotToken: agentConfig.discord?.botToken,
|
|
308
|
+
lineAccessToken: agentConfig.line?.channelAccessToken,
|
|
309
|
+
},
|
|
310
|
+
});
|
|
311
|
+
runner.setSkillLearning(skillLearning);
|
|
312
|
+
skillLearning.startCurator(); // unref'd self-rescheduling timer
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
logger.warn('Failed to wire skill-learning (continuing without it)', { error: err.message });
|
|
316
|
+
}
|
|
317
|
+
// ── Nightly memory dreaming (issue #325) — propose (dry-run) slice ──
|
|
318
|
+
try {
|
|
319
|
+
const dreaming = new dreaming_1.DreamingManager({
|
|
320
|
+
db: runner.getHistoryDb(),
|
|
321
|
+
agentId: agentConfig.id,
|
|
322
|
+
workspaceDir: agentConfig.workspace,
|
|
323
|
+
globalCfg: gatewayConfig.gateway.dreaming,
|
|
324
|
+
agentCfg: agentConfig.dreaming,
|
|
325
|
+
logger,
|
|
326
|
+
// K4 auto-applier net-negative gate uses the same soft budgets as compose.
|
|
327
|
+
memoryBudgetChars: memoryBudget.memoryBudgetChars,
|
|
328
|
+
userBudgetChars: memoryBudget.userBudgetChars,
|
|
329
|
+
// planning-65: route episodic task-log to memory/<topic>.md when enabled.
|
|
330
|
+
// Opt-in (=== true) to match compose; the template ships true so the migrator
|
|
331
|
+
// turns it on for existing configs, and it stays off for anything pre-1.0.25
|
|
332
|
+
// that hasn't merged the key yet (exact prior behavior).
|
|
333
|
+
writeRouting: memoryBudget.writeRouting === true,
|
|
334
|
+
episodicArchiveDir: memoryBudget.episodicArchiveDir,
|
|
335
|
+
// planning-67: back the embedded auto-migrate route-out with a print-only
|
|
336
|
+
// reviewer spawn (same model as the dreaming reviewer). Only when routing is
|
|
337
|
+
// on; the manager gates it further on auto mode + over-budget + autoRouteOut.
|
|
338
|
+
routeOutFn: memoryBudget.writeRouting === true
|
|
339
|
+
? (0, migrate_1.makeRouteOut)((0, reviewer_1.makeClaudeSpawn)((0, config_1.resolveDreamingConfig)(agentConfig.dreaming, gatewayConfig.gateway.dreaming)
|
|
340
|
+
.reviewModel))
|
|
341
|
+
: undefined,
|
|
342
|
+
// K3↔K4 promotion: only when the shared KB is enabled AND set to auto.
|
|
343
|
+
sharedPromote: (0, knowledge_1.makeSharedPromoter)(agentConfig.id, agentConfig.knowledge?.shared, gatewayConfig.gateway.knowledge?.shared),
|
|
344
|
+
});
|
|
345
|
+
dreaming.startDreaming(); // unref'd nightly self-rescheduling timer
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
logger.warn('Failed to wire dreaming (continuing without it)', { error: err.message });
|
|
349
|
+
}
|
|
275
350
|
// Log startup status
|
|
276
351
|
console.log(JSON.stringify({ id: agentConfig.id, status: 'started' }));
|
|
277
352
|
logger.info('Agent started');
|
|
@@ -289,24 +364,44 @@ async function startAgent(agentConfig, gatewayConfig, ctx) {
|
|
|
289
364
|
mcpToolsDir,
|
|
290
365
|
sharedSkillsDir,
|
|
291
366
|
logger,
|
|
367
|
+
memoryBudget,
|
|
368
|
+
coreShrink,
|
|
292
369
|
});
|
|
293
370
|
// Always rewrite CLAUDE.md so the next spawn picks up the new content.
|
|
294
371
|
await fs.promises.writeFile(path.join(agentConfig.workspace, 'CLAUDE.md'), updated.systemPrompt, 'utf8');
|
|
295
372
|
if (updated.skillRegistry) {
|
|
296
373
|
runner.setSkillRegistry(updated.skillRegistry);
|
|
297
374
|
}
|
|
298
|
-
//
|
|
299
|
-
//
|
|
300
|
-
//
|
|
301
|
-
//
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
375
|
+
// CLAUDE.md is always recomposed on disk (above) and is frozen-at-spawn —
|
|
376
|
+
// a live process never re-reads it; every future spawn picks up the new
|
|
377
|
+
// content regardless. So the restart decision is purely about how urgently
|
|
378
|
+
// the change must reach *already-running* sessions, tiered by change class.
|
|
379
|
+
const restartAction = (0, workspace_loader_1.classifyWorkspaceRestart)(changedFiles);
|
|
380
|
+
if (restartAction === 'none') {
|
|
381
|
+
// Self-authored memory (MEMORY.md/USER.md): the running session already
|
|
382
|
+
// holds what it just wrote, and every future spawn reads the recomposed
|
|
383
|
+
// CLAUDE.md. Restarting anything is pure downside (dropped in-context
|
|
384
|
+
// state + SQLite replay). Restart NOTHING — this is the whole bug fix:
|
|
385
|
+
// a memory write can never drop a live session again.
|
|
386
|
+
logger.info('Updated CLAUDE.md (memory-only change), no session restart', {
|
|
387
|
+
files: changedFiles,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
else if (restartAction === 'defer-idle') {
|
|
391
|
+
// Operator identity (SOUL.md/AGENTS.md): reach sessions soon-ish, but
|
|
392
|
+
// never SIGKILL an idle bystander. Skip busy (self-restart footgun) and
|
|
393
|
+
// defer idle (lossless respawn on next message).
|
|
394
|
+
logger.info('Updated CLAUDE.md (identity change), deferring restarts', {
|
|
395
|
+
files: changedFiles,
|
|
396
|
+
});
|
|
397
|
+
await runner.restartOrDefer({ skipBusy: true, deferIdle: true });
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
// Non-writable change (HEARTBEAT.md, operator config, anything else):
|
|
401
|
+
// keep the normal restart-or-defer behavior.
|
|
402
|
+
logger.info('Updated CLAUDE.md, restarting sessions', { files: changedFiles });
|
|
403
|
+
await runner.restartOrDefer({ skipBusy: false });
|
|
404
|
+
}
|
|
310
405
|
scheduler.load(updated.files.heartbeatMd);
|
|
311
406
|
}
|
|
312
407
|
catch (err) {
|
|
@@ -324,20 +419,25 @@ async function startAgent(agentConfig, gatewayConfig, ctx) {
|
|
|
324
419
|
mcpToolsDir,
|
|
325
420
|
sharedSkillsDir,
|
|
326
421
|
logger,
|
|
422
|
+
memoryBudget,
|
|
423
|
+
coreShrink,
|
|
327
424
|
});
|
|
328
425
|
if (updated.skillRegistry) {
|
|
329
426
|
runner.setSkillRegistry(updated.skillRegistry);
|
|
330
427
|
}
|
|
331
428
|
// Rewrite CLAUDE.md with updated skills section
|
|
332
429
|
await fs.promises.writeFile(path.join(agentConfig.workspace, 'CLAUDE.md'), updated.systemPrompt, 'utf8');
|
|
333
|
-
//
|
|
334
|
-
//
|
|
335
|
-
//
|
|
336
|
-
//
|
|
337
|
-
//
|
|
338
|
-
//
|
|
339
|
-
//
|
|
340
|
-
|
|
430
|
+
// Refresh the skills registry for future spawns without dropping any
|
|
431
|
+
// live session. Busy sessions are left running (skipBusy) — a session
|
|
432
|
+
// that triggers a SKILL.md change mid-turn would otherwise stop itself
|
|
433
|
+
// the instant its turn completes (the self-restart footgun). Idle
|
|
434
|
+
// sessions are DEFERRED (deferIdle) rather than SIGKILLed: the skills
|
|
435
|
+
// section of CLAUDE.md is frozen-at-spawn and the registry applies on
|
|
436
|
+
// next spawn, so killing an idle bystander now buys nothing and only
|
|
437
|
+
// drops its in-context state. Auto skill-learning writes skills mid-work,
|
|
438
|
+
// so this keeps unrelated idle sessions alive. Both pick up the change
|
|
439
|
+
// on their next spawn (busy: next natural spawn; idle: next message).
|
|
440
|
+
await runner.restartOrDefer({ skipBusy: true, deferIdle: true });
|
|
341
441
|
logger.info('Skills registry updated', {
|
|
342
442
|
count: updated.skillRegistry?.skills.size ?? 0,
|
|
343
443
|
});
|
|
@@ -527,6 +627,8 @@ async function main() {
|
|
|
527
627
|
mcpToolsDir: ctx.mcpToolsDir,
|
|
528
628
|
sharedSkillsDir: ctx.sharedSkillsDir,
|
|
529
629
|
logger,
|
|
630
|
+
memoryBudget: { ...config.gateway.memory, ...agentConfig.memory },
|
|
631
|
+
coreShrink: (0, knowledge_1.resolveArchiveConfig)(agentConfig.knowledge?.archive, config.gateway.knowledge?.archive).enabled,
|
|
530
632
|
});
|
|
531
633
|
const claudeMdPath = path.join(agentConfig.workspace, 'CLAUDE.md');
|
|
532
634
|
await fs.promises.writeFile(claudeMdPath, updated.systemPrompt, 'utf8');
|