@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.
Files changed (214) hide show
  1. package/README.md +149 -20
  2. package/config.template.json +59 -1
  3. package/dist/agent/dreaming/accept.d.ts +43 -0
  4. package/dist/agent/dreaming/accept.d.ts.map +1 -0
  5. package/dist/agent/dreaming/accept.js +230 -0
  6. package/dist/agent/dreaming/accept.js.map +1 -0
  7. package/dist/agent/dreaming/applier.d.ts +77 -0
  8. package/dist/agent/dreaming/applier.d.ts.map +1 -0
  9. package/dist/agent/dreaming/applier.js +406 -0
  10. package/dist/agent/dreaming/applier.js.map +1 -0
  11. package/dist/agent/dreaming/audit.d.ts +27 -0
  12. package/dist/agent/dreaming/audit.d.ts.map +1 -0
  13. package/dist/agent/dreaming/audit.js +100 -0
  14. package/dist/agent/dreaming/audit.js.map +1 -0
  15. package/dist/agent/dreaming/compactor.d.ts +66 -0
  16. package/dist/agent/dreaming/compactor.d.ts.map +1 -0
  17. package/dist/agent/dreaming/compactor.js +306 -0
  18. package/dist/agent/dreaming/compactor.js.map +1 -0
  19. package/dist/agent/dreaming/config.d.ts +19 -0
  20. package/dist/agent/dreaming/config.d.ts.map +1 -0
  21. package/dist/agent/dreaming/config.js +107 -0
  22. package/dist/agent/dreaming/config.js.map +1 -0
  23. package/dist/agent/dreaming/episodic.d.ts +42 -0
  24. package/dist/agent/dreaming/episodic.d.ts.map +1 -0
  25. package/dist/agent/dreaming/episodic.js +116 -0
  26. package/dist/agent/dreaming/episodic.js.map +1 -0
  27. package/dist/agent/dreaming/gather.d.ts +31 -0
  28. package/dist/agent/dreaming/gather.d.ts.map +1 -0
  29. package/dist/agent/dreaming/gather.js +55 -0
  30. package/dist/agent/dreaming/gather.js.map +1 -0
  31. package/dist/agent/dreaming/index.d.ts +87 -0
  32. package/dist/agent/dreaming/index.d.ts.map +1 -0
  33. package/dist/agent/dreaming/index.js +377 -0
  34. package/dist/agent/dreaming/index.js.map +1 -0
  35. package/dist/agent/dreaming/migrate-cli.d.ts +17 -0
  36. package/dist/agent/dreaming/migrate-cli.d.ts.map +1 -0
  37. package/dist/agent/dreaming/migrate-cli.js +42 -0
  38. package/dist/agent/dreaming/migrate-cli.js.map +1 -0
  39. package/dist/agent/dreaming/migrate.d.ts +72 -0
  40. package/dist/agent/dreaming/migrate.d.ts.map +1 -0
  41. package/dist/agent/dreaming/migrate.js +374 -0
  42. package/dist/agent/dreaming/migrate.js.map +1 -0
  43. package/dist/agent/dreaming/report.d.ts +39 -0
  44. package/dist/agent/dreaming/report.d.ts.map +1 -0
  45. package/dist/agent/dreaming/report.js +121 -0
  46. package/dist/agent/dreaming/report.js.map +1 -0
  47. package/dist/agent/dreaming/reviewer.d.ts +43 -0
  48. package/dist/agent/dreaming/reviewer.d.ts.map +1 -0
  49. package/dist/agent/dreaming/reviewer.js +249 -0
  50. package/dist/agent/dreaming/reviewer.js.map +1 -0
  51. package/dist/agent/dreaming/staleness.d.ts +68 -0
  52. package/dist/agent/dreaming/staleness.d.ts.map +1 -0
  53. package/dist/agent/dreaming/staleness.js +281 -0
  54. package/dist/agent/dreaming/staleness.js.map +1 -0
  55. package/dist/agent/dreaming/types.d.ts +130 -0
  56. package/dist/agent/dreaming/types.d.ts.map +1 -0
  57. package/dist/agent/dreaming/types.js +10 -0
  58. package/dist/agent/dreaming/types.js.map +1 -0
  59. package/dist/agent/knowledge/archive-db.d.ts +114 -0
  60. package/dist/agent/knowledge/archive-db.d.ts.map +1 -0
  61. package/dist/agent/knowledge/archive-db.js +474 -0
  62. package/dist/agent/knowledge/archive-db.js.map +1 -0
  63. package/dist/agent/knowledge/chunk.d.ts +21 -0
  64. package/dist/agent/knowledge/chunk.d.ts.map +1 -0
  65. package/dist/agent/knowledge/chunk.js +67 -0
  66. package/dist/agent/knowledge/chunk.js.map +1 -0
  67. package/dist/agent/knowledge/config.d.ts +20 -0
  68. package/dist/agent/knowledge/config.d.ts.map +1 -0
  69. package/dist/agent/knowledge/config.js +143 -0
  70. package/dist/agent/knowledge/config.js.map +1 -0
  71. package/dist/agent/knowledge/graph-demo.d.ts +25 -0
  72. package/dist/agent/knowledge/graph-demo.d.ts.map +1 -0
  73. package/dist/agent/knowledge/graph-demo.js +132 -0
  74. package/dist/agent/knowledge/graph-demo.js.map +1 -0
  75. package/dist/agent/knowledge/index.d.ts +24 -0
  76. package/dist/agent/knowledge/index.d.ts.map +1 -0
  77. package/dist/agent/knowledge/index.js +50 -0
  78. package/dist/agent/knowledge/index.js.map +1 -0
  79. package/dist/agent/knowledge/indexer.d.ts +34 -0
  80. package/dist/agent/knowledge/indexer.d.ts.map +1 -0
  81. package/dist/agent/knowledge/indexer.js +271 -0
  82. package/dist/agent/knowledge/indexer.js.map +1 -0
  83. package/dist/agent/knowledge/lifecycle.d.ts +91 -0
  84. package/dist/agent/knowledge/lifecycle.d.ts.map +1 -0
  85. package/dist/agent/knowledge/lifecycle.js +205 -0
  86. package/dist/agent/knowledge/lifecycle.js.map +1 -0
  87. package/dist/agent/knowledge/provenance.d.ts +15 -0
  88. package/dist/agent/knowledge/provenance.d.ts.map +1 -0
  89. package/dist/agent/knowledge/provenance.js +37 -0
  90. package/dist/agent/knowledge/provenance.js.map +1 -0
  91. package/dist/agent/knowledge/reindex-cli.d.ts +13 -0
  92. package/dist/agent/knowledge/reindex-cli.d.ts.map +1 -0
  93. package/dist/agent/knowledge/reindex-cli.js +53 -0
  94. package/dist/agent/knowledge/reindex-cli.js.map +1 -0
  95. package/dist/agent/knowledge/reindex-spawn.d.ts +30 -0
  96. package/dist/agent/knowledge/reindex-spawn.d.ts.map +1 -0
  97. package/dist/agent/knowledge/reindex-spawn.js +97 -0
  98. package/dist/agent/knowledge/reindex-spawn.js.map +1 -0
  99. package/dist/agent/knowledge/shared-promote.d.ts +18 -0
  100. package/dist/agent/knowledge/shared-promote.d.ts.map +1 -0
  101. package/dist/agent/knowledge/shared-promote.js +29 -0
  102. package/dist/agent/knowledge/shared-promote.js.map +1 -0
  103. package/dist/agent/knowledge/shared-writer.d.ts +24 -0
  104. package/dist/agent/knowledge/shared-writer.d.ts.map +1 -0
  105. package/dist/agent/knowledge/shared-writer.js +97 -0
  106. package/dist/agent/knowledge/shared-writer.js.map +1 -0
  107. package/dist/agent/knowledge/types.d.ts +83 -0
  108. package/dist/agent/knowledge/types.d.ts.map +1 -0
  109. package/dist/agent/knowledge/types.js +12 -0
  110. package/dist/agent/knowledge/types.js.map +1 -0
  111. package/dist/agent/knowledge/wiki.d.ts +107 -0
  112. package/dist/agent/knowledge/wiki.d.ts.map +1 -0
  113. package/dist/agent/knowledge/wiki.js +415 -0
  114. package/dist/agent/knowledge/wiki.js.map +1 -0
  115. package/dist/agent/memory-metrics.d.ts +48 -0
  116. package/dist/agent/memory-metrics.d.ts.map +1 -0
  117. package/dist/agent/memory-metrics.js +156 -0
  118. package/dist/agent/memory-metrics.js.map +1 -0
  119. package/dist/agent/runner.d.ts +24 -1
  120. package/dist/agent/runner.d.ts.map +1 -1
  121. package/dist/agent/runner.js +82 -6
  122. package/dist/agent/runner.js.map +1 -1
  123. package/dist/agent/skill-learning/config.d.ts +18 -0
  124. package/dist/agent/skill-learning/config.d.ts.map +1 -0
  125. package/dist/agent/skill-learning/config.js +71 -0
  126. package/dist/agent/skill-learning/config.js.map +1 -0
  127. package/dist/agent/skill-learning/curator.d.ts +45 -0
  128. package/dist/agent/skill-learning/curator.d.ts.map +1 -0
  129. package/dist/agent/skill-learning/curator.js +171 -0
  130. package/dist/agent/skill-learning/curator.js.map +1 -0
  131. package/dist/agent/skill-learning/index.d.ts +79 -0
  132. package/dist/agent/skill-learning/index.d.ts.map +1 -0
  133. package/dist/agent/skill-learning/index.js +308 -0
  134. package/dist/agent/skill-learning/index.js.map +1 -0
  135. package/dist/agent/skill-learning/metrics.d.ts +13 -0
  136. package/dist/agent/skill-learning/metrics.d.ts.map +1 -0
  137. package/dist/agent/skill-learning/metrics.js +109 -0
  138. package/dist/agent/skill-learning/metrics.js.map +1 -0
  139. package/dist/agent/skill-learning/notifier.d.ts +111 -0
  140. package/dist/agent/skill-learning/notifier.d.ts.map +1 -0
  141. package/dist/agent/skill-learning/notifier.js +398 -0
  142. package/dist/agent/skill-learning/notifier.js.map +1 -0
  143. package/dist/agent/skill-learning/reviewer.d.ts +61 -0
  144. package/dist/agent/skill-learning/reviewer.d.ts.map +1 -0
  145. package/dist/agent/skill-learning/reviewer.js +271 -0
  146. package/dist/agent/skill-learning/reviewer.js.map +1 -0
  147. package/dist/agent/skill-learning/telemetry.d.ts +22 -0
  148. package/dist/agent/skill-learning/telemetry.d.ts.map +1 -0
  149. package/dist/agent/skill-learning/telemetry.js +90 -0
  150. package/dist/agent/skill-learning/telemetry.js.map +1 -0
  151. package/dist/agent/skill-learning/trigger.d.ts +23 -0
  152. package/dist/agent/skill-learning/trigger.d.ts.map +1 -0
  153. package/dist/agent/skill-learning/trigger.js +44 -0
  154. package/dist/agent/skill-learning/trigger.js.map +1 -0
  155. package/dist/agent/skill-learning/types.d.ts +165 -0
  156. package/dist/agent/skill-learning/types.d.ts.map +1 -0
  157. package/dist/agent/skill-learning/types.js +11 -0
  158. package/dist/agent/skill-learning/types.js.map +1 -0
  159. package/dist/agent/skill-learning/writer.d.ts +37 -0
  160. package/dist/agent/skill-learning/writer.d.ts.map +1 -0
  161. package/dist/agent/skill-learning/writer.js +223 -0
  162. package/dist/agent/skill-learning/writer.js.map +1 -0
  163. package/dist/agent/workspace-loader.d.ts +83 -6
  164. package/dist/agent/workspace-loader.d.ts.map +1 -1
  165. package/dist/agent/workspace-loader.js +207 -14
  166. package/dist/agent/workspace-loader.js.map +1 -1
  167. package/dist/api/gateway-router.d.ts +2 -0
  168. package/dist/api/gateway-router.d.ts.map +1 -1
  169. package/dist/api/gateway-router.js +293 -6
  170. package/dist/api/gateway-router.js.map +1 -1
  171. package/dist/api/skills-router.d.ts +2 -2
  172. package/dist/api/skills-router.d.ts.map +1 -1
  173. package/dist/api/skills-router.js +61 -1
  174. package/dist/api/skills-router.js.map +1 -1
  175. package/dist/apps/agent-manager.d.ts +7 -0
  176. package/dist/apps/agent-manager.d.ts.map +1 -1
  177. package/dist/apps/agent-manager.js +13 -1
  178. package/dist/apps/agent-manager.js.map +1 -1
  179. package/dist/config/migrator.d.ts +2 -0
  180. package/dist/config/migrator.d.ts.map +1 -1
  181. package/dist/config/migrator.js +72 -1
  182. package/dist/config/migrator.js.map +1 -1
  183. package/dist/history/cleanup.d.ts +7 -0
  184. package/dist/history/cleanup.d.ts.map +1 -1
  185. package/dist/history/cleanup.js +27 -0
  186. package/dist/history/cleanup.js.map +1 -1
  187. package/dist/history/db.d.ts +65 -0
  188. package/dist/history/db.d.ts.map +1 -1
  189. package/dist/history/db.js +261 -0
  190. package/dist/history/db.js.map +1 -1
  191. package/dist/index.js +122 -20
  192. package/dist/index.js.map +1 -1
  193. package/dist/session/process.d.ts +10 -0
  194. package/dist/session/process.d.ts.map +1 -1
  195. package/dist/session/process.js +86 -1
  196. package/dist/session/process.js.map +1 -1
  197. package/dist/skills/loader.d.ts +8 -0
  198. package/dist/skills/loader.d.ts.map +1 -1
  199. package/dist/skills/loader.js +29 -1
  200. package/dist/skills/loader.js.map +1 -1
  201. package/dist/types.d.ts +116 -0
  202. package/dist/types.d.ts.map +1 -1
  203. package/dist/ui/web-ui.d.ts.map +1 -1
  204. package/dist/ui/web-ui.js +1126 -3
  205. package/dist/ui/web-ui.js.map +1 -1
  206. package/mcp/package.json +2 -1
  207. package/mcp/server.ts +2 -0
  208. package/mcp/tools/memory/archive-reader.test.ts +212 -0
  209. package/mcp/tools/memory/archive-reader.ts +253 -0
  210. package/mcp/tools/memory/module.ts +152 -0
  211. package/mcp/tools/memory/retrieval-recorder.ts +66 -0
  212. package/mcp/tools/skills/module.ts +28 -0
  213. package/package.json +1 -1
  214. package/resource/claude_gateway.svg +1038 -112
@@ -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;
@@ -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;AAOtC,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;IAmDnB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAqBxC,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"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/history/db.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/history/db.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,uCAAyB;AACzB,6CAA0D;AAe1D;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,wDAAwD;AACxD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE3C,MAAa,SAAS;IAKpB,YAAoB,MAAc,EAAE,OAAe;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,EAAE,GAAG,IAAI,0BAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC/B;gDAC0C,CAC3C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,aAAqB,EAAE,OAAe;QACpD,MAAM,GAAG,GAAG,GAAG,aAAa,KAAK,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC/D,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACzB,CAAC;IAED,oFAAoF;IACpF,oGAAoG;IACpG,MAAM,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAe;QAC7C,MAAM,GAAG,GAAG,QAAQ,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACjD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAqB,EAAE,OAAe;QACjD,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAgB,EAAE,OAAe;QAC/C,KAAK,CAAC,MAAM,CAAC,QAAQ,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCZ,CAAC,CAAC;QAEH,4EAA4E;QAC5E,+EAA+E;QAC/E,2EAA2E;QAC3E,qEAAqE;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,GAAG,EAA6B,CAAC;QACpG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,aAAa,CAAC,GAAmB;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,UAAU,IAAI,IAAI,EACtB,GAAG,CAAC,QAAQ,IAAI,IAAI,EACpB,GAAG,CAAC,iBAAiB,IAAI,IAAI,EAC7B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EACtD,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5D,GAAG,CAAC,EAAE,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qCAAqC;YACrC,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,OAAO,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;yCAQQ,cAAc;;;;;;;;;KASlD,CAAC,CAAC,GAAG,EAOJ,CAAC;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,kBAAkB,EAAE,GAAG,CAAC,YAAY;SACrC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,OAAuB,EAAE;QACnD,0FAA0F;QAC1F,sEAAsE;QACtE,wFAAwF;QACxF,gGAAgG;QAChG,4FAA4F;QAC5F,8FAA8F;QAC9F,0FAA0F;QAC1F,qFAAqF;QACrF,oFAAoF;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QACjF,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,yBAAiB,CAAC,CAAC;QACpD,MAAM,UAAU,GAAa,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAwB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QACD,uFAAuF;QACvF,qFAAqF;QACrF,sFAAsF;QACtF,oFAAoF;QACpF,mFAAmF;QACnF,4BAA4B;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/B,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,yCAAyC;QAC9F,6EAA6E;QAC7E,6EAA6E;QAC7E,iFAAiF;QACjF,kFAAkF;QAClF,6EAA6E;QAC7E,MAAM,GAAG,GAAG;;;;cAIF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;oBAClB,KAAK,QAAQ,KAAK;;KAEjC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmC,CAAC;QACnF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/E,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAE,QAAQ,CAAC,IAAI,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAE,QAAQ,CAAC,IAAI,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;IACzD,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,KAAa,EAAE,OAAmB,EAAE;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKjC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAoB,CAAC;YAC1E,MAAM,KAAK,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;YAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;OAW5B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAmC,CAAC;YAC/F,MAAM,OAAO,GAAmB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;gBACxB,OAAO,EAAG,CAAC,CAAC,SAAS,CAAmB,IAAI,EAAE;aAC/C,CAAC,CAAC,CAAC;YAEJ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACtE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,aAAa,CAAC,MAAc,EAAE,IAAoB;QAChD,+DAA+D;QAC/D,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAa,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClE,MAAM,MAAM,GAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAED,0FAA0F;QAC1F,8FAA8F;QAC9F,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAC9C,MAAM,GAAG,GAAG;;;cAGF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;;KAEjC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,CAA2B,CAAC;QACrF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,MAAe;QAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;QAezB,KAAK;;;KAGR,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CASd,CAAC;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;YAC3B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,MAAM,EAAE,GAAG,CAAC,MAAuB;YACnC,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;YACrC,eAAe,EAAG,GAAG,CAAC,iBAAiC,IAAI,IAAI;YAC/D,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CACd,SAAiB;QAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B;;+BAEyB,CAC1B,CAAC,GAAG,CAAC,SAAS,CAAiG,CAAC;QAEjH,MAAM,GAAG,GAA2F,EAAE,CAAC;QACvG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAa,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,SAAS,CAAC,0BAA0B;gBACpE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/F,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,YAAY,CAAC,MAAc,EAAE,SAAiB;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,mGAAmG,CACpG,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAmC,CAAC;QAC3D,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBAAC,UAAU,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAc,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpG,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,QAAgB;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,2EAA2E,CAC5E,CAAC,GAAG,CAAC,QAAQ,CAAmC,CAAC;QAElD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAa,CAAC;gBACtD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnE,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,aAAa,CAAC,CAA0B;QAC9C,IAAI,UAAgC,CAAC;QACrC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAW,CAAa,CAAC;YAClE,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,SAA+B,CAAC;QACpC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,IAAI,CAAC;gBACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAW,CAAa,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,GAAG,SAAS,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,IAAI,CAAW;YACrB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAW;YAC9B,SAAS,EAAE,CAAC,CAAC,YAAY,CAAW;YACpC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAkB;YACpC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAgB;YAC9B,OAAO,EAAE,CAAC,CAAC,SAAS,CAAW;YAC/B,UAAU,EAAG,CAAC,CAAC,aAAa,CAAmB,IAAI,SAAS;YAC5D,QAAQ,EAAG,CAAC,CAAC,WAAW,CAAmB,IAAI,SAAS;YACxD,iBAAiB,EAAG,CAAC,CAAC,qBAAqB,CAAmB,IAAI,SAAS;YAC3E,UAAU;YACV,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,EAAE,EAAE,CAAC,CAAC,IAAI,CAAW;SACtB,CAAC;IACJ,CAAC;CACF;AAhdD,8BAgdC"}
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
- // Recompose always (above). For the restart, distinguish self-written
299
- // files: when ONLY agent-writable files changed (MEMORY/USER/SOUL/AGENTS),
300
- // the change most likely came from the running session mid-turn, so skip
301
- // restarting busy sessions to avoid the self-restart footgun. Idle
302
- // sessions are still restarted; any non-agent-writable file (e.g.
303
- // HEARTBEAT.md) restores the normal restart-or-defer behavior.
304
- const agentWritableOnly = changedFiles.length > 0 &&
305
- changedFiles.every((f) => workspace_loader_1.AGENT_WRITABLE_FILES.has(f));
306
- logger.info(agentWritableOnly
307
- ? 'Updated CLAUDE.md (agent-writable change), restarting idle sessions only'
308
- : 'Updated CLAUDE.md, restarting sessions', { files: changedFiles });
309
- await runner.restartOrDefer({ skipBusy: agentWritableOnly });
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
- // Stop idle subprocesses now so they pick up the new registry on
334
- // next spawn. Busy sessions are left running (skipBusy) rather than
335
- // marked for a deferred restart: a session that triggers a SKILL.md
336
- // change mid-turn would otherwise stop itself the instant its turn
337
- // completes (the self-restart footgun — same guard the workspace
338
- // watcher applies above). The recomposed CLAUDE.md is already on disk,
339
- // so a skipped busy session picks up the change on its next spawn.
340
- await runner.restartOrDefer({ skipBusy: true });
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');