pi-continuous-learning 0.7.0 → 0.9.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 (91) hide show
  1. package/dist/analysis-event-log.d.ts +50 -0
  2. package/dist/analysis-event-log.d.ts.map +1 -0
  3. package/dist/analysis-event-log.js +120 -0
  4. package/dist/analysis-event-log.js.map +1 -0
  5. package/dist/analysis-notification.d.ts +20 -0
  6. package/dist/analysis-notification.d.ts.map +1 -0
  7. package/dist/analysis-notification.js +63 -0
  8. package/dist/analysis-notification.js.map +1 -0
  9. package/dist/cli/analyze-single-shot.d.ts +12 -0
  10. package/dist/cli/analyze-single-shot.d.ts.map +1 -1
  11. package/dist/cli/analyze-single-shot.js +84 -2
  12. package/dist/cli/analyze-single-shot.js.map +1 -1
  13. package/dist/cli/analyze.js +349 -21
  14. package/dist/cli/analyze.js.map +1 -1
  15. package/dist/confidence.d.ts +12 -1
  16. package/dist/confidence.d.ts.map +1 -1
  17. package/dist/confidence.js +35 -8
  18. package/dist/confidence.js.map +1 -1
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +7 -0
  21. package/dist/config.js.map +1 -1
  22. package/dist/consolidation.d.ts +43 -0
  23. package/dist/consolidation.d.ts.map +1 -0
  24. package/dist/consolidation.js +104 -0
  25. package/dist/consolidation.js.map +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +7 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/instinct-cleanup.d.ts +14 -0
  30. package/dist/instinct-cleanup.d.ts.map +1 -1
  31. package/dist/instinct-cleanup.js +59 -3
  32. package/dist/instinct-cleanup.js.map +1 -1
  33. package/dist/instinct-contradiction.d.ts +42 -0
  34. package/dist/instinct-contradiction.d.ts.map +1 -0
  35. package/dist/instinct-contradiction.js +164 -0
  36. package/dist/instinct-contradiction.js.map +1 -0
  37. package/dist/instinct-dream.d.ts +12 -0
  38. package/dist/instinct-dream.d.ts.map +1 -0
  39. package/dist/instinct-dream.js +33 -0
  40. package/dist/instinct-dream.js.map +1 -0
  41. package/dist/instinct-parser.d.ts.map +1 -1
  42. package/dist/instinct-parser.js +6 -0
  43. package/dist/instinct-parser.js.map +1 -1
  44. package/dist/observation-signal.d.ts +34 -0
  45. package/dist/observation-signal.d.ts.map +1 -0
  46. package/dist/observation-signal.js +66 -0
  47. package/dist/observation-signal.js.map +1 -0
  48. package/dist/prompts/analyzer-system-single-shot.d.ts.map +1 -1
  49. package/dist/prompts/analyzer-system-single-shot.js +57 -2
  50. package/dist/prompts/analyzer-system-single-shot.js.map +1 -1
  51. package/dist/prompts/analyzer-user-single-shot.d.ts.map +1 -1
  52. package/dist/prompts/analyzer-user-single-shot.js +5 -3
  53. package/dist/prompts/analyzer-user-single-shot.js.map +1 -1
  54. package/dist/prompts/consolidate-system.d.ts +6 -0
  55. package/dist/prompts/consolidate-system.d.ts.map +1 -0
  56. package/dist/prompts/consolidate-system.js +102 -0
  57. package/dist/prompts/consolidate-system.js.map +1 -0
  58. package/dist/prompts/consolidate-user.d.ts +19 -0
  59. package/dist/prompts/consolidate-user.d.ts.map +1 -0
  60. package/dist/prompts/consolidate-user.js +45 -0
  61. package/dist/prompts/consolidate-user.js.map +1 -0
  62. package/dist/prompts/dream-prompt.d.ts +7 -0
  63. package/dist/prompts/dream-prompt.d.ts.map +1 -0
  64. package/dist/prompts/dream-prompt.js +64 -0
  65. package/dist/prompts/dream-prompt.js.map +1 -0
  66. package/dist/prompts/evolve-prompt.d.ts.map +1 -1
  67. package/dist/prompts/evolve-prompt.js +6 -5
  68. package/dist/prompts/evolve-prompt.js.map +1 -1
  69. package/dist/types.d.ts +4 -0
  70. package/dist/types.d.ts.map +1 -1
  71. package/package.json +1 -1
  72. package/src/analysis-event-log.ts +171 -0
  73. package/src/analysis-notification.ts +79 -0
  74. package/src/cli/analyze-single-shot.ts +98 -2
  75. package/src/cli/analyze.ts +406 -20
  76. package/src/confidence.ts +33 -7
  77. package/src/config.ts +10 -0
  78. package/src/consolidation.ts +162 -0
  79. package/src/index.ts +17 -0
  80. package/src/instinct-cleanup.ts +62 -3
  81. package/src/instinct-contradiction.ts +202 -0
  82. package/src/instinct-dream.ts +62 -0
  83. package/src/instinct-parser.ts +6 -0
  84. package/src/observation-signal.ts +80 -0
  85. package/src/prompts/analyzer-system-single-shot.ts +57 -2
  86. package/src/prompts/analyzer-user-single-shot.ts +7 -2
  87. package/src/prompts/consolidate-system.ts +101 -0
  88. package/src/prompts/consolidate-user.ts +88 -0
  89. package/src/prompts/dream-prompt.ts +88 -0
  90. package/src/prompts/evolve-prompt.ts +6 -5
  91. package/src/types.ts +5 -0
@@ -1,17 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import { existsSync, readFileSync, statSync, writeFileSync, unlinkSync, } from "node:fs";
3
+ import { createHash } from "node:crypto";
3
4
  import { join } from "node:path";
4
5
  import { AuthStorage } from "@mariozechner/pi-coding-agent";
5
6
  import { getModel } from "@mariozechner/pi-ai";
6
7
  import { loadConfig, DEFAULT_CONFIG } from "../config.js";
7
8
  import { getBaseDir, getProjectsRegistryPath, getObservationsPath, getProjectDir, getProjectInstinctsDir, getGlobalInstinctsDir, } from "../storage.js";
9
+ import { checkConsolidationGate, countDistinctSessions, loadConsolidationMeta, saveConsolidationMeta, } from "../consolidation.js";
10
+ import { buildConsolidateSystemPrompt } from "../prompts/consolidate-system.js";
11
+ import { buildConsolidateUserPrompt } from "../prompts/consolidate-user.js";
8
12
  import { countObservations } from "../observations.js";
9
13
  import { runDecayPass } from "../instinct-decay.js";
10
14
  import { runCleanupPass } from "../instinct-cleanup.js";
11
15
  import { tailObservationsSince } from "../prompts/analyzer-user.js";
12
16
  import { buildSingleShotSystemPrompt } from "../prompts/analyzer-system-single-shot.js";
13
17
  import { buildSingleShotUserPrompt } from "../prompts/analyzer-user-single-shot.js";
14
- import { runSingleShot, buildInstinctFromChange, } from "./analyze-single-shot.js";
18
+ import { runSingleShot, buildInstinctFromChange, estimateTokens, } from "./analyze-single-shot.js";
19
+ import { isLowSignalBatch } from "../observation-signal.js";
20
+ import { appendAnalysisEvent, } from "../analysis-event-log.js";
15
21
  import { loadProjectInstincts, loadGlobalInstincts, saveInstinct, } from "../instinct-store.js";
16
22
  import { readAgentsMd } from "../agents-md.js";
17
23
  import { homedir } from "node:os";
@@ -69,6 +75,24 @@ function startGlobalTimeout(timeoutMs, logger) {
69
75
  process.exit(2);
70
76
  }, timeoutMs).unref();
71
77
  }
78
+ // ---------------------------------------------------------------------------
79
+ // Per-project analysis
80
+ // ---------------------------------------------------------------------------
81
+ /** Max estimated tokens before fallback strategies are applied. */
82
+ const PROMPT_TOKEN_BUDGET = 40_000;
83
+ function hashContent(content) {
84
+ return createHash("sha256").update(content).digest("hex");
85
+ }
86
+ /**
87
+ * Truncates AGENTS.md content to section headers only (lines starting with #).
88
+ * Used as a fallback when the prompt is over the token budget.
89
+ */
90
+ function truncateAgentsMdToHeaders(content) {
91
+ return content
92
+ .split("\n")
93
+ .filter((line) => line.startsWith("#"))
94
+ .join("\n");
95
+ }
72
96
  function loadProjectsRegistry(baseDir) {
73
97
  const path = getProjectsRegistryPath(baseDir);
74
98
  if (!existsSync(path))
@@ -118,6 +142,9 @@ async function analyzeProject(project, config, baseDir, logger) {
118
142
  if (newObsLines.length === 0) {
119
143
  return { ran: false, skippedReason: "no new observation lines after preprocessing" };
120
144
  }
145
+ if (isLowSignalBatch(newObsLines)) {
146
+ return { ran: false, skippedReason: "low-signal batch (no errors, corrections, or user redirections)" };
147
+ }
121
148
  const obsCount = countObservations(project.id, baseDir);
122
149
  if (obsCount < config.min_observations_to_analyze) {
123
150
  return { ran: false, skippedReason: `below threshold (${obsCount}/${config.min_observations_to_analyze})` };
@@ -130,8 +157,17 @@ async function analyzeProject(project, config, baseDir, logger) {
130
157
  const projectInstincts = loadProjectInstincts(project.id, baseDir);
131
158
  const globalInstincts = loadGlobalInstincts(baseDir);
132
159
  const allInstincts = [...projectInstincts, ...globalInstincts];
133
- const agentsMdProject = readAgentsMd(join(project.root, "AGENTS.md"));
134
- const agentsMdGlobal = readAgentsMd(join(homedir(), ".pi", "agent", "AGENTS.md"));
160
+ // Load AGENTS.md, skipping if content hash is unchanged since last run.
161
+ const rawAgentsMdProject = readAgentsMd(join(project.root, "AGENTS.md"));
162
+ const rawAgentsMdGlobal = readAgentsMd(join(homedir(), ".pi", "agent", "AGENTS.md"));
163
+ const projectMdHash = rawAgentsMdProject ? hashContent(rawAgentsMdProject) : null;
164
+ const globalMdHash = rawAgentsMdGlobal ? hashContent(rawAgentsMdGlobal) : null;
165
+ const agentsMdProject = rawAgentsMdProject && projectMdHash !== meta.agents_md_project_hash
166
+ ? rawAgentsMdProject
167
+ : null;
168
+ const agentsMdGlobal = rawAgentsMdGlobal && globalMdHash !== meta.agents_md_global_hash
169
+ ? rawAgentsMdGlobal
170
+ : null;
135
171
  let installedSkills = [];
136
172
  try {
137
173
  const { loadSkills } = await import("@mariozechner/pi-coding-agent");
@@ -144,9 +180,39 @@ async function analyzeProject(project, config, baseDir, logger) {
144
180
  catch {
145
181
  // Skills loading is best-effort - continue without them
146
182
  }
147
- const userPrompt = buildSingleShotUserPrompt(project, allInstincts, newObsLines, {
148
- agentsMdProject,
149
- agentsMdGlobal,
183
+ let promptObsLines = newObsLines;
184
+ let promptAgentsMdProject = agentsMdProject;
185
+ let promptAgentsMdGlobal = agentsMdGlobal;
186
+ const userPrompt = buildSingleShotUserPrompt(project, allInstincts, promptObsLines, {
187
+ agentsMdProject: promptAgentsMdProject,
188
+ agentsMdGlobal: promptAgentsMdGlobal,
189
+ installedSkills,
190
+ });
191
+ // Estimate token budget and apply fallbacks if over limit.
192
+ const systemPromptTokens = estimateTokens(buildSingleShotSystemPrompt());
193
+ let estimatedTotal = systemPromptTokens + estimateTokens(userPrompt);
194
+ if (estimatedTotal > PROMPT_TOKEN_BUDGET) {
195
+ logger.warn(`Prompt over budget (${estimatedTotal} est. tokens > ${PROMPT_TOKEN_BUDGET}). Applying fallbacks.`);
196
+ // Fallback 1: truncate AGENTS.md to headers only.
197
+ if (promptAgentsMdProject) {
198
+ promptAgentsMdProject = truncateAgentsMdToHeaders(promptAgentsMdProject);
199
+ }
200
+ if (promptAgentsMdGlobal) {
201
+ promptAgentsMdGlobal = truncateAgentsMdToHeaders(promptAgentsMdGlobal);
202
+ }
203
+ // Fallback 2: reduce observation lines to fit budget.
204
+ // Use binary-search-like reduction: keep halving until under budget.
205
+ while (promptObsLines.length > 1) {
206
+ const trimmedPrompt = buildSingleShotUserPrompt(project, allInstincts, promptObsLines, { agentsMdProject: promptAgentsMdProject, agentsMdGlobal: promptAgentsMdGlobal, installedSkills });
207
+ estimatedTotal = systemPromptTokens + estimateTokens(trimmedPrompt);
208
+ if (estimatedTotal <= PROMPT_TOKEN_BUDGET)
209
+ break;
210
+ promptObsLines = promptObsLines.slice(Math.floor(promptObsLines.length / 2));
211
+ }
212
+ }
213
+ const finalUserPrompt = buildSingleShotUserPrompt(project, allInstincts, promptObsLines, {
214
+ agentsMdProject: promptAgentsMdProject,
215
+ agentsMdGlobal: promptAgentsMdGlobal,
150
216
  installedSkills,
151
217
  });
152
218
  const authStorage = AuthStorage.create();
@@ -159,13 +225,16 @@ async function analyzeProject(project, config, baseDir, logger) {
159
225
  const context = {
160
226
  systemPrompt: buildSingleShotSystemPrompt(),
161
227
  messages: [
162
- { role: "user", content: userPrompt, timestamp: Date.now() },
228
+ { role: "user", content: finalUserPrompt, timestamp: Date.now() },
163
229
  ],
164
230
  };
165
231
  const timeoutMs = (config.timeout_seconds ?? DEFAULT_CONFIG.timeout_seconds) * 1000;
166
232
  const abortController = new AbortController();
167
233
  const timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);
168
234
  const instinctCounts = { created: 0, updated: 0, deleted: 0 };
235
+ const createdSummaries = [];
236
+ const updatedSummaries = [];
237
+ const deletedSummaries = [];
169
238
  const projectInstinctsDir = getProjectInstinctsDir(project.id, "personal", baseDir);
170
239
  const globalInstinctsDir = getGlobalInstinctsDir("personal", baseDir);
171
240
  let singleShotMessage;
@@ -185,6 +254,11 @@ async function analyzeProject(project, config, baseDir, logger) {
185
254
  if (existsSync(filePath)) {
186
255
  unlinkSync(filePath);
187
256
  instinctCounts.deleted++;
257
+ deletedSummaries.push({
258
+ id,
259
+ title: id,
260
+ scope: change.scope ?? "project",
261
+ });
188
262
  }
189
263
  }
190
264
  else if (change.action === "create") {
@@ -198,6 +272,13 @@ async function analyzeProject(project, config, baseDir, logger) {
198
272
  saveInstinct(instinct, dir);
199
273
  instinctCounts.created++;
200
274
  createsRemaining--;
275
+ createdSummaries.push({
276
+ id: instinct.id,
277
+ title: instinct.title,
278
+ scope: instinct.scope,
279
+ trigger: instinct.trigger,
280
+ action: instinct.action,
281
+ });
201
282
  }
202
283
  else {
203
284
  // update
@@ -208,6 +289,15 @@ async function analyzeProject(project, config, baseDir, logger) {
208
289
  const dir = instinct.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
209
290
  saveInstinct(instinct, dir);
210
291
  instinctCounts.updated++;
292
+ const delta = existing
293
+ ? instinct.confidence - existing.confidence
294
+ : undefined;
295
+ updatedSummaries.push({
296
+ id: instinct.id,
297
+ title: instinct.title,
298
+ scope: instinct.scope,
299
+ ...(delta !== undefined ? { confidence_delta: delta } : {}),
300
+ });
211
301
  }
212
302
  }
213
303
  }
@@ -234,12 +324,207 @@ async function analyzeProject(project, config, baseDir, logger) {
234
324
  model: modelId,
235
325
  };
236
326
  logger.projectComplete(stats);
237
- saveProjectMeta(project.id, { ...meta, last_analyzed_at: new Date().toISOString(), last_observation_line_count: totalLineCount }, baseDir);
327
+ // Write analysis event for extension notification
328
+ const analysisEvent = {
329
+ timestamp: new Date().toISOString(),
330
+ project_id: project.id,
331
+ project_name: project.name,
332
+ created: createdSummaries,
333
+ updated: updatedSummaries,
334
+ deleted: deletedSummaries,
335
+ };
336
+ appendAnalysisEvent(analysisEvent, baseDir);
337
+ saveProjectMeta(project.id, {
338
+ ...meta,
339
+ last_analyzed_at: new Date().toISOString(),
340
+ last_observation_line_count: totalLineCount,
341
+ // Update AGENTS.md hashes only when the content was actually sent.
342
+ ...(agentsMdProject && projectMdHash ? { agents_md_project_hash: projectMdHash } : {}),
343
+ ...(agentsMdGlobal && globalMdHash ? { agents_md_global_hash: globalMdHash } : {}),
344
+ }, baseDir);
345
+ return { ran: true, stats };
346
+ }
347
+ // ---------------------------------------------------------------------------
348
+ // Consolidation mode
349
+ // ---------------------------------------------------------------------------
350
+ async function consolidateProject(project, config, baseDir, logger, force) {
351
+ const obsPath = getObservationsPath(project.id, baseDir);
352
+ const sessionCount = countDistinctSessions(obsPath);
353
+ const meta = loadConsolidationMeta(project.id, baseDir);
354
+ if (!force) {
355
+ const gate = checkConsolidationGate({
356
+ meta,
357
+ currentSessionCount: sessionCount,
358
+ intervalDays: config.consolidation_interval_days ?? DEFAULT_CONFIG.consolidation_interval_days,
359
+ minSessions: config.consolidation_min_sessions ?? DEFAULT_CONFIG.consolidation_min_sessions,
360
+ });
361
+ if (!gate.eligible) {
362
+ return { ran: false, skippedReason: `consolidation gate: ${gate.reason}` };
363
+ }
364
+ }
365
+ const startTime = Date.now();
366
+ logger.info(`Consolidating ${project.name}`, {
367
+ event: "consolidation_start",
368
+ project_id: project.id,
369
+ project_name: project.name,
370
+ session_count: sessionCount,
371
+ });
372
+ // Run cleanup and decay before consolidation
373
+ runCleanupPass(project.id, config, baseDir);
374
+ runDecayPass(project.id, baseDir);
375
+ // Load all instincts
376
+ const projectInstincts = loadProjectInstincts(project.id, baseDir);
377
+ const globalInstincts = loadGlobalInstincts(baseDir);
378
+ const allInstincts = [...projectInstincts, ...globalInstincts];
379
+ if (allInstincts.length === 0) {
380
+ return { ran: false, skippedReason: "no instincts to consolidate" };
381
+ }
382
+ // Load AGENTS.md for deduplication
383
+ const agentsMdProject = readAgentsMd(join(project.root, "AGENTS.md"));
384
+ const agentsMdGlobal = readAgentsMd(join(homedir(), ".pi", "agent", "AGENTS.md"));
385
+ let installedSkills = [];
386
+ try {
387
+ const { loadSkills } = await import("@mariozechner/pi-coding-agent");
388
+ const result = loadSkills({ cwd: project.root });
389
+ installedSkills = result.skills.map((s) => ({
390
+ name: s.name,
391
+ description: s.description,
392
+ }));
393
+ }
394
+ catch {
395
+ // Best effort
396
+ }
397
+ const systemPrompt = buildConsolidateSystemPrompt();
398
+ const userPrompt = buildConsolidateUserPrompt(allInstincts, {
399
+ agentsMdProject,
400
+ agentsMdGlobal,
401
+ installedSkills,
402
+ projectName: project.name,
403
+ projectId: project.id,
404
+ });
405
+ const authStorage = AuthStorage.create();
406
+ const modelId = (config.model || DEFAULT_CONFIG.model);
407
+ const model = getModel("anthropic", modelId);
408
+ const apiKey = await authStorage.getApiKey("anthropic");
409
+ if (!apiKey) {
410
+ throw new Error("No Anthropic API key configured. Set via auth.json or ANTHROPIC_API_KEY.");
411
+ }
412
+ const context = {
413
+ systemPrompt,
414
+ messages: [
415
+ { role: "user", content: userPrompt, timestamp: Date.now() },
416
+ ],
417
+ };
418
+ const timeoutMs = (config.timeout_seconds ?? DEFAULT_CONFIG.timeout_seconds) * 1000;
419
+ const abortController = new AbortController();
420
+ const timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);
421
+ const instinctCounts = { created: 0, updated: 0, deleted: 0 };
422
+ const createdSummaries = [];
423
+ const updatedSummaries = [];
424
+ const deletedSummaries = [];
425
+ const projectInstinctsDir = getProjectInstinctsDir(project.id, "personal", baseDir);
426
+ const globalInstinctsDir = getGlobalInstinctsDir("personal", baseDir);
427
+ let singleShotMessage;
428
+ try {
429
+ const result = await runSingleShot(context, model, apiKey, abortController.signal);
430
+ singleShotMessage = result.message;
431
+ // Consolidation allows more creates than normal analysis (merges produce new instincts)
432
+ const maxNewInstincts = (config.max_new_instincts_per_run ?? DEFAULT_CONFIG.max_new_instincts_per_run) * 2;
433
+ let createsRemaining = maxNewInstincts;
434
+ for (const change of result.changes) {
435
+ if (change.action === "delete") {
436
+ const id = change.id;
437
+ if (!id)
438
+ continue;
439
+ const dir = change.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
440
+ const filePath = join(dir, `${id}.md`);
441
+ if (existsSync(filePath)) {
442
+ unlinkSync(filePath);
443
+ instinctCounts.deleted++;
444
+ deletedSummaries.push({ id, title: id, scope: change.scope ?? "project" });
445
+ }
446
+ }
447
+ else if (change.action === "create") {
448
+ if (createsRemaining <= 0)
449
+ continue;
450
+ const existing = allInstincts.find((i) => i.id === change.instinct?.id) ?? null;
451
+ const instinct = buildInstinctFromChange(change, existing, project.id, allInstincts);
452
+ if (!instinct)
453
+ continue;
454
+ const dir = instinct.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
455
+ saveInstinct(instinct, dir);
456
+ instinctCounts.created++;
457
+ createsRemaining--;
458
+ createdSummaries.push({
459
+ id: instinct.id,
460
+ title: instinct.title,
461
+ scope: instinct.scope,
462
+ trigger: instinct.trigger,
463
+ action: instinct.action,
464
+ });
465
+ }
466
+ else {
467
+ const existing = allInstincts.find((i) => i.id === change.instinct?.id) ?? null;
468
+ const instinct = buildInstinctFromChange(change, existing, project.id, allInstincts);
469
+ if (!instinct)
470
+ continue;
471
+ const dir = instinct.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
472
+ saveInstinct(instinct, dir);
473
+ instinctCounts.updated++;
474
+ const delta = existing ? instinct.confidence - existing.confidence : undefined;
475
+ updatedSummaries.push({
476
+ id: instinct.id,
477
+ title: instinct.title,
478
+ scope: instinct.scope,
479
+ ...(delta !== undefined ? { confidence_delta: delta } : {}),
480
+ });
481
+ }
482
+ }
483
+ }
484
+ finally {
485
+ clearTimeout(timeoutHandle);
486
+ }
487
+ const usage = singleShotMessage.usage;
488
+ const durationMs = Date.now() - startTime;
489
+ const stats = {
490
+ project_id: project.id,
491
+ project_name: project.name,
492
+ duration_ms: durationMs,
493
+ observations_processed: 0,
494
+ observations_total: 0,
495
+ instincts_created: instinctCounts.created,
496
+ instincts_updated: instinctCounts.updated,
497
+ instincts_deleted: instinctCounts.deleted,
498
+ tokens_input: usage.input,
499
+ tokens_output: usage.output,
500
+ tokens_cache_read: usage.cacheRead,
501
+ tokens_cache_write: usage.cacheWrite,
502
+ tokens_total: usage.totalTokens,
503
+ cost_usd: usage.cost.total,
504
+ model: modelId,
505
+ };
506
+ logger.projectComplete(stats);
507
+ // Write analysis event for extension notification
508
+ const analysisEvent = {
509
+ timestamp: new Date().toISOString(),
510
+ project_id: project.id,
511
+ project_name: project.name,
512
+ created: createdSummaries,
513
+ updated: updatedSummaries,
514
+ deleted: deletedSummaries,
515
+ };
516
+ appendAnalysisEvent(analysisEvent, baseDir);
517
+ // Update consolidation meta
518
+ saveConsolidationMeta(project.id, {
519
+ last_consolidation_at: new Date().toISOString(),
520
+ last_consolidation_session_count: sessionCount,
521
+ }, baseDir);
238
522
  return { ran: true, stats };
239
523
  }
240
524
  // ---------------------------------------------------------------------------
241
525
  // Main
242
526
  // ---------------------------------------------------------------------------
527
+ const isConsolidateOnly = process.argv.includes("--consolidate");
243
528
  async function main() {
244
529
  const baseDir = getBaseDir();
245
530
  const config = loadConfig();
@@ -262,23 +547,66 @@ async function main() {
262
547
  let skipped = 0;
263
548
  let errored = 0;
264
549
  const allProjectStats = [];
265
- for (const project of projects) {
266
- try {
267
- const result = await analyzeProject(project, config, baseDir, logger);
268
- if (result.ran && result.stats) {
269
- processed++;
270
- allProjectStats.push(result.stats);
550
+ if (isConsolidateOnly) {
551
+ // --consolidate: manual trigger, consolidation only, skip gates
552
+ for (const project of projects) {
553
+ try {
554
+ const result = await consolidateProject(project, config, baseDir, logger, true);
555
+ if (result.ran && result.stats) {
556
+ processed++;
557
+ allProjectStats.push(result.stats);
558
+ }
559
+ else {
560
+ skipped++;
561
+ if (result.skippedReason) {
562
+ logger.projectSkipped(project.id, project.name, result.skippedReason);
563
+ }
564
+ }
565
+ }
566
+ catch (err) {
567
+ errored++;
568
+ logger.projectError(project.id, project.name, err);
271
569
  }
272
- else {
273
- skipped++;
274
- if (result.skippedReason) {
275
- logger.projectSkipped(project.id, project.name, result.skippedReason);
570
+ }
571
+ }
572
+ else {
573
+ // Normal mode: analyze observations, then opportunistic consolidation
574
+ for (const project of projects) {
575
+ try {
576
+ const result = await analyzeProject(project, config, baseDir, logger);
577
+ if (result.ran && result.stats) {
578
+ processed++;
579
+ allProjectStats.push(result.stats);
580
+ }
581
+ else {
582
+ skipped++;
583
+ if (result.skippedReason) {
584
+ logger.projectSkipped(project.id, project.name, result.skippedReason);
585
+ }
276
586
  }
277
587
  }
588
+ catch (err) {
589
+ errored++;
590
+ logger.projectError(project.id, project.name, err);
591
+ }
278
592
  }
279
- catch (err) {
280
- errored++;
281
- logger.projectError(project.id, project.name, err);
593
+ // Opportunistic consolidation: run if enabled and gates pass
594
+ if (config.dreaming_enabled) {
595
+ for (const project of projects) {
596
+ try {
597
+ const result = await consolidateProject(project, config, baseDir, logger, false);
598
+ if (result.ran && result.stats) {
599
+ processed++;
600
+ allProjectStats.push(result.stats);
601
+ }
602
+ else if (result.skippedReason) {
603
+ logger.projectSkipped(project.id, project.name, result.skippedReason);
604
+ }
605
+ }
606
+ catch (err) {
607
+ logger.projectError(project.id, project.name, err);
608
+ }
609
+ }
282
610
  }
283
611
  }
284
612
  const summary = {
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/cli/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/cli/analyze.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,11 @@
3
3
  * No I/O - all functions take plain values and return plain values.
4
4
  */
5
5
  export type FeedbackOutcome = "confirmed" | "contradicted" | "inactive";
6
+ /**
7
+ * Returns the confirmation confidence delta using diminishing returns.
8
+ * Higher confirmed_count yields smaller increments to prevent runaway scores.
9
+ */
10
+ export declare function confirmationDelta(confirmedCount: number): number;
6
11
  export interface ConfidenceResult {
7
12
  confidence: number;
8
13
  flaggedForRemoval: boolean;
@@ -14,9 +19,15 @@ export interface ConfidenceResult {
14
19
  export declare function initialConfidence(observationCount: number): number;
15
20
  /**
16
21
  * Adjusts confidence based on a feedback outcome from the observer loop.
22
+ * For "confirmed" outcomes, applies diminishing returns based on how many
23
+ * times the instinct has already been confirmed (higher count = smaller delta).
17
24
  * Returns the clamped confidence and a flag indicating if removal is warranted.
25
+ *
26
+ * @param current - Current confidence value
27
+ * @param outcome - Feedback outcome type
28
+ * @param confirmedCount - Current confirmed_count (used for diminishing returns on confirmations)
18
29
  */
19
- export declare function adjustConfidence(current: number, outcome: FeedbackOutcome): ConfidenceResult;
30
+ export declare function adjustConfidence(current: number, outcome: FeedbackOutcome, confirmedCount?: number): ConfidenceResult;
20
31
  /**
21
32
  * Applies passive time-based decay of -0.02 per week since lastUpdated.
22
33
  * Future lastUpdated values produce zero decay.
@@ -1 +1 @@
1
- {"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAmBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,gBAAgB,CAQlB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,gBAAgB,CAQlB"}
1
+ {"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuCH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;AAExE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAmBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAKlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,cAAc,SAAI,GACjB,gBAAgB,CAWlB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,gBAAgB,CAQlB"}
@@ -16,13 +16,29 @@ const OBS_BRACKET_LOW_MAX = 2;
16
16
  const OBS_BRACKET_MED_MAX = 5;
17
17
  const OBS_BRACKET_HIGH_MAX = 10;
18
18
  // adjustConfidence deltas
19
- const DELTA_CONFIRMED = 0.05;
19
+ // Confirmation uses diminishing returns to prevent runaway confidence on trivially easy-to-confirm instincts.
20
+ const DELTA_CONFIRMED_TIER1 = 0.05; // 1st–3rd confirmation
21
+ const DELTA_CONFIRMED_TIER2 = 0.03; // 4th–6th confirmation
22
+ const DELTA_CONFIRMED_TIER3 = 0.01; // 7th+ confirmation
20
23
  const DELTA_CONTRADICTED = -0.15;
21
24
  const DELTA_INACTIVE = 0;
25
+ const CONFIRMED_TIER1_MAX = 3;
26
+ const CONFIRMED_TIER2_MAX = 6;
22
27
  // applyPassiveDecay
23
28
  // Increased from 0.02 to 0.05: at 0.5 confidence, reaches 0.1 in ~8 weeks instead of 20.
24
29
  const DECAY_PER_WEEK = 0.05;
25
30
  const MS_PER_WEEK = 7 * 24 * 60 * 60 * 1000;
31
+ /**
32
+ * Returns the confirmation confidence delta using diminishing returns.
33
+ * Higher confirmed_count yields smaller increments to prevent runaway scores.
34
+ */
35
+ export function confirmationDelta(confirmedCount) {
36
+ if (confirmedCount <= CONFIRMED_TIER1_MAX)
37
+ return DELTA_CONFIRMED_TIER1;
38
+ if (confirmedCount <= CONFIRMED_TIER2_MAX)
39
+ return DELTA_CONFIRMED_TIER2;
40
+ return DELTA_CONFIRMED_TIER3;
41
+ }
26
42
  // ---------------------------------------------------------------------------
27
43
  // Helpers
28
44
  // ---------------------------------------------------------------------------
@@ -51,15 +67,26 @@ export function initialConfidence(observationCount) {
51
67
  }
52
68
  /**
53
69
  * Adjusts confidence based on a feedback outcome from the observer loop.
70
+ * For "confirmed" outcomes, applies diminishing returns based on how many
71
+ * times the instinct has already been confirmed (higher count = smaller delta).
54
72
  * Returns the clamped confidence and a flag indicating if removal is warranted.
73
+ *
74
+ * @param current - Current confidence value
75
+ * @param outcome - Feedback outcome type
76
+ * @param confirmedCount - Current confirmed_count (used for diminishing returns on confirmations)
55
77
  */
56
- export function adjustConfidence(current, outcome) {
57
- const deltas = {
58
- confirmed: DELTA_CONFIRMED,
59
- contradicted: DELTA_CONTRADICTED,
60
- inactive: DELTA_INACTIVE,
61
- };
62
- const raw = current + deltas[outcome];
78
+ export function adjustConfidence(current, outcome, confirmedCount = 0) {
79
+ let delta;
80
+ if (outcome === "confirmed") {
81
+ delta = confirmationDelta(confirmedCount);
82
+ }
83
+ else if (outcome === "contradicted") {
84
+ delta = DELTA_CONTRADICTED;
85
+ }
86
+ else {
87
+ delta = DELTA_INACTIVE;
88
+ }
89
+ const raw = current + delta;
63
90
  return toResult(raw);
64
91
  }
65
92
  /**