pi-continuous-learning 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +78 -0
  2. package/dist/agents-md.d.ts +23 -2
  3. package/dist/agents-md.d.ts.map +1 -1
  4. package/dist/agents-md.js +58 -3
  5. package/dist/agents-md.js.map +1 -1
  6. package/dist/analysis-event-log.d.ts +50 -0
  7. package/dist/analysis-event-log.d.ts.map +1 -0
  8. package/dist/analysis-event-log.js +120 -0
  9. package/dist/analysis-event-log.js.map +1 -0
  10. package/dist/analysis-notification.d.ts +20 -0
  11. package/dist/analysis-notification.d.ts.map +1 -0
  12. package/dist/analysis-notification.js +63 -0
  13. package/dist/analysis-notification.js.map +1 -0
  14. package/dist/cli/analyze-single-shot.d.ts +20 -2
  15. package/dist/cli/analyze-single-shot.d.ts.map +1 -1
  16. package/dist/cli/analyze-single-shot.js +109 -5
  17. package/dist/cli/analyze-single-shot.js.map +1 -1
  18. package/dist/cli/analyze.js +132 -16
  19. package/dist/cli/analyze.js.map +1 -1
  20. package/dist/command-scaffold.d.ts +25 -0
  21. package/dist/command-scaffold.d.ts.map +1 -0
  22. package/dist/command-scaffold.js +77 -0
  23. package/dist/command-scaffold.js.map +1 -0
  24. package/dist/confidence.d.ts +12 -1
  25. package/dist/confidence.d.ts.map +1 -1
  26. package/dist/confidence.js +37 -9
  27. package/dist/confidence.js.map +1 -1
  28. package/dist/config.d.ts +16 -0
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js +31 -0
  31. package/dist/config.js.map +1 -1
  32. package/dist/graduation.d.ts +63 -0
  33. package/dist/graduation.d.ts.map +1 -0
  34. package/dist/graduation.js +155 -0
  35. package/dist/graduation.js.map +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +7 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/instinct-cleanup.d.ts +57 -0
  40. package/dist/instinct-cleanup.d.ts.map +1 -0
  41. package/dist/instinct-cleanup.js +150 -0
  42. package/dist/instinct-cleanup.js.map +1 -0
  43. package/dist/instinct-graduate.d.ts +43 -0
  44. package/dist/instinct-graduate.d.ts.map +1 -0
  45. package/dist/instinct-graduate.js +253 -0
  46. package/dist/instinct-graduate.js.map +1 -0
  47. package/dist/instinct-parser.d.ts.map +1 -1
  48. package/dist/instinct-parser.js +18 -0
  49. package/dist/instinct-parser.js.map +1 -1
  50. package/dist/instinct-tools.d.ts.map +1 -1
  51. package/dist/instinct-tools.js +19 -0
  52. package/dist/instinct-tools.js.map +1 -1
  53. package/dist/instinct-validator.d.ts +61 -0
  54. package/dist/instinct-validator.d.ts.map +1 -0
  55. package/dist/instinct-validator.js +235 -0
  56. package/dist/instinct-validator.js.map +1 -0
  57. package/dist/observation-signal.d.ts +34 -0
  58. package/dist/observation-signal.d.ts.map +1 -0
  59. package/dist/observation-signal.js +66 -0
  60. package/dist/observation-signal.js.map +1 -0
  61. package/dist/prompts/analyzer-system-single-shot.d.ts.map +1 -1
  62. package/dist/prompts/analyzer-system-single-shot.js +82 -3
  63. package/dist/prompts/analyzer-system-single-shot.js.map +1 -1
  64. package/dist/prompts/analyzer-user-single-shot.d.ts.map +1 -1
  65. package/dist/prompts/analyzer-user-single-shot.js +5 -3
  66. package/dist/prompts/analyzer-user-single-shot.js.map +1 -1
  67. package/dist/skill-scaffold.d.ts +23 -0
  68. package/dist/skill-scaffold.d.ts.map +1 -0
  69. package/dist/skill-scaffold.js +62 -0
  70. package/dist/skill-scaffold.js.map +1 -0
  71. package/dist/types.d.ts +9 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/package.json +1 -1
  74. package/src/agents-md.ts +73 -3
  75. package/src/analysis-event-log.ts +171 -0
  76. package/src/analysis-notification.ts +79 -0
  77. package/src/cli/analyze-single-shot.ts +131 -5
  78. package/src/cli/analyze.ts +157 -15
  79. package/src/command-scaffold.ts +105 -0
  80. package/src/confidence.ts +35 -8
  81. package/src/config.ts +40 -0
  82. package/src/graduation.ts +243 -0
  83. package/src/index.ts +16 -0
  84. package/src/instinct-cleanup.ts +204 -0
  85. package/src/instinct-graduate.ts +377 -0
  86. package/src/instinct-parser.ts +18 -0
  87. package/src/instinct-tools.ts +26 -0
  88. package/src/instinct-validator.ts +287 -0
  89. package/src/observation-signal.ts +80 -0
  90. package/src/prompts/analyzer-system-single-shot.ts +82 -3
  91. package/src/prompts/analyzer-user-single-shot.ts +11 -2
  92. package/src/skill-scaffold.ts +90 -0
  93. package/src/types.ts +11 -0
@@ -1,5 +1,9 @@
1
1
  import { complete } from "@mariozechner/pi-ai";
2
2
  import { serializeInstinct } from "../instinct-parser.js";
3
+ /** Chars-per-token heuristic for prompt size estimation. */
4
+ const CHARS_PER_TOKEN = 4;
5
+ import { validateInstinct, findSimilarInstinct } from "../instinct-validator.js";
6
+ import { confirmationDelta } from "../confidence.js";
3
7
  /**
4
8
  * Parses the model's raw text response into an array of InstinctChange.
5
9
  * Strips markdown code fences if present. Throws on invalid JSON or schema.
@@ -25,20 +29,77 @@ export function parseChanges(raw) {
25
29
  }
26
30
  /**
27
31
  * Builds a full Instinct from a create/update change.
28
- * Returns null for delete changes or changes with missing instinct data.
32
+ * Returns null for delete changes, changes with missing instinct data,
33
+ * invalid fields, or semantically duplicate actions.
34
+ *
35
+ * @param change - The change to apply
36
+ * @param existing - The existing instinct with this ID, if any
37
+ * @param projectId - Project ID for scoping
38
+ * @param allInstincts - All current instincts, used for dedup check on creates
29
39
  */
30
- export function buildInstinctFromChange(change, existing, projectId) {
40
+ export function buildInstinctFromChange(change, existing, projectId, allInstincts = []) {
31
41
  if (change.action === "delete" || !change.instinct) {
32
42
  return null;
33
43
  }
34
- const now = new Date().toISOString();
35
44
  const payload = change.instinct;
45
+ const validation = validateInstinct({
46
+ action: payload.action,
47
+ trigger: payload.trigger,
48
+ domain: payload.domain,
49
+ });
50
+ if (!validation.valid) {
51
+ return null;
52
+ }
53
+ // On create, reject if semantically similar to an existing instinct (skip self on update)
54
+ if (change.action === "create") {
55
+ const similar = findSimilarInstinct({ trigger: payload.trigger, action: payload.action }, allInstincts, payload.id);
56
+ if (similar) {
57
+ return null;
58
+ }
59
+ }
60
+ const now = new Date().toISOString();
61
+ // For updates, recompute confidence client-side to enforce:
62
+ // 1. Per-session deduplication: only one confirmation per unique session_id
63
+ // 2. Diminishing returns: each additional confirmation yields a smaller delta
64
+ let resolvedConfidence;
65
+ let resolvedConfirmedCount = payload.confirmed_count ?? existing?.confirmed_count ?? 0;
66
+ let resolvedLastConfirmedSession = payload.last_confirmed_session ?? existing?.last_confirmed_session;
67
+ if (change.action === "update" && existing !== null) {
68
+ const prevConfirmedCount = existing.confirmed_count;
69
+ const newConfirmedCount = payload.confirmed_count ?? prevConfirmedCount;
70
+ const contradictionsAdded = Math.max(0, (payload.contradicted_count ?? 0) - existing.contradicted_count);
71
+ // Detect whether the LLM intends to add a confirmation
72
+ const wantsToConfirm = newConfirmedCount > prevConfirmedCount;
73
+ // Session dedup: reject the confirmation if the confirming session is the
74
+ // same as the one that last confirmed this instinct.
75
+ const sessionDuplicate = wantsToConfirm &&
76
+ resolvedLastConfirmedSession !== undefined &&
77
+ payload.last_confirmed_session !== undefined &&
78
+ payload.last_confirmed_session === existing.last_confirmed_session;
79
+ if (sessionDuplicate) {
80
+ // Revert to existing count - this session already confirmed the instinct
81
+ resolvedConfirmedCount = prevConfirmedCount;
82
+ }
83
+ // Recompute confidence from existing + explicit deltas (don't trust LLM arithmetic)
84
+ resolvedConfidence = existing.confidence;
85
+ if (wantsToConfirm && !sessionDuplicate) {
86
+ resolvedConfidence += confirmationDelta(prevConfirmedCount);
87
+ }
88
+ if (contradictionsAdded > 0) {
89
+ resolvedConfidence -= 0.15 * contradictionsAdded;
90
+ }
91
+ resolvedConfidence = Math.max(0.1, Math.min(0.9, resolvedConfidence));
92
+ }
93
+ else {
94
+ // For creates, trust the LLM's initial confidence (no prior state to base delta on)
95
+ resolvedConfidence = Math.max(0.1, Math.min(0.9, payload.confidence));
96
+ }
36
97
  return {
37
98
  id: payload.id,
38
99
  title: payload.title,
39
100
  trigger: payload.trigger,
40
101
  action: payload.action,
41
- confidence: Math.max(0.1, Math.min(0.9, payload.confidence)),
102
+ confidence: resolvedConfidence,
42
103
  domain: payload.domain,
43
104
  scope: payload.scope,
44
105
  source: "personal",
@@ -46,14 +107,57 @@ export function buildInstinctFromChange(change, existing, projectId) {
46
107
  created_at: existing?.created_at ?? now,
47
108
  updated_at: now,
48
109
  observation_count: payload.observation_count ?? 1,
49
- confirmed_count: payload.confirmed_count ?? 0,
110
+ confirmed_count: resolvedConfirmedCount,
50
111
  contradicted_count: payload.contradicted_count ?? 0,
51
112
  inactive_count: payload.inactive_count ?? 0,
52
113
  ...(payload.evidence !== undefined ? { evidence: payload.evidence } : {}),
114
+ ...(resolvedLastConfirmedSession !== undefined
115
+ ? { last_confirmed_session: resolvedLastConfirmedSession }
116
+ : {}),
53
117
  };
54
118
  }
119
+ /**
120
+ * Returns days elapsed since the given ISO 8601 date string.
121
+ */
122
+ function daysSince(dateStr) {
123
+ const ms = Date.now() - new Date(dateStr).getTime();
124
+ return Math.max(0, Math.floor(ms / (1000 * 60 * 60 * 24)));
125
+ }
126
+ /**
127
+ * Formats existing instincts as a compact JSON array for inline context.
128
+ * Reduces token usage by ~70% compared to full YAML+markdown serialization.
129
+ * Includes only the fields the analyzer needs to make decisions.
130
+ */
131
+ export function formatInstinctsCompact(instincts) {
132
+ if (instincts.length === 0) {
133
+ return "[]";
134
+ }
135
+ const summaries = instincts.map((i) => ({
136
+ id: i.id,
137
+ trigger: i.trigger,
138
+ action: i.action,
139
+ confidence: i.confidence,
140
+ domain: i.domain,
141
+ scope: i.scope,
142
+ confirmed: i.confirmed_count,
143
+ contradicted: i.contradicted_count,
144
+ inactive: i.inactive_count,
145
+ age_days: daysSince(i.created_at),
146
+ ...(i.last_confirmed_session !== undefined
147
+ ? { last_confirmed_session: i.last_confirmed_session }
148
+ : {}),
149
+ }));
150
+ return JSON.stringify(summaries);
151
+ }
152
+ /**
153
+ * Estimates the token count of a text string using a chars/token heuristic.
154
+ */
155
+ export function estimateTokens(text) {
156
+ return Math.ceil(text.length / CHARS_PER_TOKEN);
157
+ }
55
158
  /**
56
159
  * Formats existing instincts as serialized markdown blocks for inline context.
160
+ * @deprecated Use formatInstinctsCompact for lower token usage.
57
161
  */
58
162
  export function formatInstinctsForPrompt(instincts) {
59
163
  if (instincts.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-single-shot.js","sourceRoot":"","sources":["../../src/cli/analyze-single-shot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze-single-shot.js","sourceRoot":"","sources":["../../src/cli/analyze-single-shot.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
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";
@@ -7,10 +8,13 @@ import { loadConfig, DEFAULT_CONFIG } from "../config.js";
7
8
  import { getBaseDir, getProjectsRegistryPath, getObservationsPath, getProjectDir, getProjectInstinctsDir, getGlobalInstinctsDir, } from "../storage.js";
8
9
  import { countObservations } from "../observations.js";
9
10
  import { runDecayPass } from "../instinct-decay.js";
11
+ import { runCleanupPass } from "../instinct-cleanup.js";
10
12
  import { tailObservationsSince } from "../prompts/analyzer-user.js";
11
13
  import { buildSingleShotSystemPrompt } from "../prompts/analyzer-system-single-shot.js";
12
14
  import { buildSingleShotUserPrompt } from "../prompts/analyzer-user-single-shot.js";
13
- import { runSingleShot, buildInstinctFromChange, } from "./analyze-single-shot.js";
15
+ import { runSingleShot, buildInstinctFromChange, estimateTokens, } from "./analyze-single-shot.js";
16
+ import { isLowSignalBatch } from "../observation-signal.js";
17
+ import { appendAnalysisEvent, } from "../analysis-event-log.js";
14
18
  import { loadProjectInstincts, loadGlobalInstincts, saveInstinct, } from "../instinct-store.js";
15
19
  import { readAgentsMd } from "../agents-md.js";
16
20
  import { homedir } from "node:os";
@@ -68,6 +72,24 @@ function startGlobalTimeout(timeoutMs, logger) {
68
72
  process.exit(2);
69
73
  }, timeoutMs).unref();
70
74
  }
75
+ // ---------------------------------------------------------------------------
76
+ // Per-project analysis
77
+ // ---------------------------------------------------------------------------
78
+ /** Max estimated tokens before fallback strategies are applied. */
79
+ const PROMPT_TOKEN_BUDGET = 40_000;
80
+ function hashContent(content) {
81
+ return createHash("sha256").update(content).digest("hex");
82
+ }
83
+ /**
84
+ * Truncates AGENTS.md content to section headers only (lines starting with #).
85
+ * Used as a fallback when the prompt is over the token budget.
86
+ */
87
+ function truncateAgentsMdToHeaders(content) {
88
+ return content
89
+ .split("\n")
90
+ .filter((line) => line.startsWith("#"))
91
+ .join("\n");
92
+ }
71
93
  function loadProjectsRegistry(baseDir) {
72
94
  const path = getProjectsRegistryPath(baseDir);
73
95
  if (!existsSync(path))
@@ -117,19 +139,32 @@ async function analyzeProject(project, config, baseDir, logger) {
117
139
  if (newObsLines.length === 0) {
118
140
  return { ran: false, skippedReason: "no new observation lines after preprocessing" };
119
141
  }
142
+ if (isLowSignalBatch(newObsLines)) {
143
+ return { ran: false, skippedReason: "low-signal batch (no errors, corrections, or user redirections)" };
144
+ }
120
145
  const obsCount = countObservations(project.id, baseDir);
121
146
  if (obsCount < config.min_observations_to_analyze) {
122
147
  return { ran: false, skippedReason: `below threshold (${obsCount}/${config.min_observations_to_analyze})` };
123
148
  }
124
149
  const startTime = Date.now();
125
150
  logger.projectStart(project.id, project.name, rawLineCount, obsCount);
151
+ runCleanupPass(project.id, config, baseDir);
126
152
  runDecayPass(project.id, baseDir);
127
153
  // Load current instincts inline - no tool calls needed
128
154
  const projectInstincts = loadProjectInstincts(project.id, baseDir);
129
155
  const globalInstincts = loadGlobalInstincts(baseDir);
130
156
  const allInstincts = [...projectInstincts, ...globalInstincts];
131
- const agentsMdProject = readAgentsMd(join(project.root, "AGENTS.md"));
132
- const agentsMdGlobal = readAgentsMd(join(homedir(), ".pi", "agent", "AGENTS.md"));
157
+ // Load AGENTS.md, skipping if content hash is unchanged since last run.
158
+ const rawAgentsMdProject = readAgentsMd(join(project.root, "AGENTS.md"));
159
+ const rawAgentsMdGlobal = readAgentsMd(join(homedir(), ".pi", "agent", "AGENTS.md"));
160
+ const projectMdHash = rawAgentsMdProject ? hashContent(rawAgentsMdProject) : null;
161
+ const globalMdHash = rawAgentsMdGlobal ? hashContent(rawAgentsMdGlobal) : null;
162
+ const agentsMdProject = rawAgentsMdProject && projectMdHash !== meta.agents_md_project_hash
163
+ ? rawAgentsMdProject
164
+ : null;
165
+ const agentsMdGlobal = rawAgentsMdGlobal && globalMdHash !== meta.agents_md_global_hash
166
+ ? rawAgentsMdGlobal
167
+ : null;
133
168
  let installedSkills = [];
134
169
  try {
135
170
  const { loadSkills } = await import("@mariozechner/pi-coding-agent");
@@ -142,9 +177,39 @@ async function analyzeProject(project, config, baseDir, logger) {
142
177
  catch {
143
178
  // Skills loading is best-effort - continue without them
144
179
  }
145
- const userPrompt = buildSingleShotUserPrompt(project, allInstincts, newObsLines, {
146
- agentsMdProject,
147
- agentsMdGlobal,
180
+ let promptObsLines = newObsLines;
181
+ let promptAgentsMdProject = agentsMdProject;
182
+ let promptAgentsMdGlobal = agentsMdGlobal;
183
+ const userPrompt = buildSingleShotUserPrompt(project, allInstincts, promptObsLines, {
184
+ agentsMdProject: promptAgentsMdProject,
185
+ agentsMdGlobal: promptAgentsMdGlobal,
186
+ installedSkills,
187
+ });
188
+ // Estimate token budget and apply fallbacks if over limit.
189
+ const systemPromptTokens = estimateTokens(buildSingleShotSystemPrompt());
190
+ let estimatedTotal = systemPromptTokens + estimateTokens(userPrompt);
191
+ if (estimatedTotal > PROMPT_TOKEN_BUDGET) {
192
+ logger.warn(`Prompt over budget (${estimatedTotal} est. tokens > ${PROMPT_TOKEN_BUDGET}). Applying fallbacks.`);
193
+ // Fallback 1: truncate AGENTS.md to headers only.
194
+ if (promptAgentsMdProject) {
195
+ promptAgentsMdProject = truncateAgentsMdToHeaders(promptAgentsMdProject);
196
+ }
197
+ if (promptAgentsMdGlobal) {
198
+ promptAgentsMdGlobal = truncateAgentsMdToHeaders(promptAgentsMdGlobal);
199
+ }
200
+ // Fallback 2: reduce observation lines to fit budget.
201
+ // Use binary-search-like reduction: keep halving until under budget.
202
+ while (promptObsLines.length > 1) {
203
+ const trimmedPrompt = buildSingleShotUserPrompt(project, allInstincts, promptObsLines, { agentsMdProject: promptAgentsMdProject, agentsMdGlobal: promptAgentsMdGlobal, installedSkills });
204
+ estimatedTotal = systemPromptTokens + estimateTokens(trimmedPrompt);
205
+ if (estimatedTotal <= PROMPT_TOKEN_BUDGET)
206
+ break;
207
+ promptObsLines = promptObsLines.slice(Math.floor(promptObsLines.length / 2));
208
+ }
209
+ }
210
+ const finalUserPrompt = buildSingleShotUserPrompt(project, allInstincts, promptObsLines, {
211
+ agentsMdProject: promptAgentsMdProject,
212
+ agentsMdGlobal: promptAgentsMdGlobal,
148
213
  installedSkills,
149
214
  });
150
215
  const authStorage = AuthStorage.create();
@@ -157,19 +222,25 @@ async function analyzeProject(project, config, baseDir, logger) {
157
222
  const context = {
158
223
  systemPrompt: buildSingleShotSystemPrompt(),
159
224
  messages: [
160
- { role: "user", content: userPrompt, timestamp: Date.now() },
225
+ { role: "user", content: finalUserPrompt, timestamp: Date.now() },
161
226
  ],
162
227
  };
163
228
  const timeoutMs = (config.timeout_seconds ?? DEFAULT_CONFIG.timeout_seconds) * 1000;
164
229
  const abortController = new AbortController();
165
230
  const timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);
166
231
  const instinctCounts = { created: 0, updated: 0, deleted: 0 };
232
+ const createdSummaries = [];
233
+ const updatedSummaries = [];
234
+ const deletedSummaries = [];
167
235
  const projectInstinctsDir = getProjectInstinctsDir(project.id, "personal", baseDir);
168
236
  const globalInstinctsDir = getGlobalInstinctsDir("personal", baseDir);
169
237
  let singleShotMessage;
170
238
  try {
171
239
  const result = await runSingleShot(context, model, apiKey, abortController.signal);
172
240
  singleShotMessage = result.message;
241
+ // Enforce creation rate limit: only the first N create actions per run are applied.
242
+ const maxNewInstincts = config.max_new_instincts_per_run ?? DEFAULT_CONFIG.max_new_instincts_per_run;
243
+ let createsRemaining = maxNewInstincts;
173
244
  for (const change of result.changes) {
174
245
  if (change.action === "delete") {
175
246
  const id = change.id;
@@ -180,22 +251,50 @@ async function analyzeProject(project, config, baseDir, logger) {
180
251
  if (existsSync(filePath)) {
181
252
  unlinkSync(filePath);
182
253
  instinctCounts.deleted++;
254
+ deletedSummaries.push({
255
+ id,
256
+ title: id,
257
+ scope: change.scope ?? "project",
258
+ });
183
259
  }
184
260
  }
261
+ else if (change.action === "create") {
262
+ if (createsRemaining <= 0)
263
+ continue; // rate limit reached
264
+ const existing = allInstincts.find((i) => i.id === change.instinct?.id) ?? null;
265
+ const instinct = buildInstinctFromChange(change, existing, project.id, allInstincts);
266
+ if (!instinct)
267
+ continue;
268
+ const dir = instinct.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
269
+ saveInstinct(instinct, dir);
270
+ instinctCounts.created++;
271
+ createsRemaining--;
272
+ createdSummaries.push({
273
+ id: instinct.id,
274
+ title: instinct.title,
275
+ scope: instinct.scope,
276
+ trigger: instinct.trigger,
277
+ action: instinct.action,
278
+ });
279
+ }
185
280
  else {
186
- // create or update
281
+ // update
187
282
  const existing = allInstincts.find((i) => i.id === change.instinct?.id) ?? null;
188
- const instinct = buildInstinctFromChange(change, existing, project.id);
283
+ const instinct = buildInstinctFromChange(change, existing, project.id, allInstincts);
189
284
  if (!instinct)
190
285
  continue;
191
286
  const dir = instinct.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
192
287
  saveInstinct(instinct, dir);
193
- if (change.action === "create") {
194
- instinctCounts.created++;
195
- }
196
- else {
197
- instinctCounts.updated++;
198
- }
288
+ instinctCounts.updated++;
289
+ const delta = existing
290
+ ? instinct.confidence - existing.confidence
291
+ : undefined;
292
+ updatedSummaries.push({
293
+ id: instinct.id,
294
+ title: instinct.title,
295
+ scope: instinct.scope,
296
+ ...(delta !== undefined ? { confidence_delta: delta } : {}),
297
+ });
199
298
  }
200
299
  }
201
300
  }
@@ -222,7 +321,24 @@ async function analyzeProject(project, config, baseDir, logger) {
222
321
  model: modelId,
223
322
  };
224
323
  logger.projectComplete(stats);
225
- saveProjectMeta(project.id, { ...meta, last_analyzed_at: new Date().toISOString(), last_observation_line_count: totalLineCount }, baseDir);
324
+ // Write analysis event for extension notification
325
+ const analysisEvent = {
326
+ timestamp: new Date().toISOString(),
327
+ project_id: project.id,
328
+ project_name: project.name,
329
+ created: createdSummaries,
330
+ updated: updatedSummaries,
331
+ deleted: deletedSummaries,
332
+ };
333
+ appendAnalysisEvent(analysisEvent, baseDir);
334
+ saveProjectMeta(project.id, {
335
+ ...meta,
336
+ last_analyzed_at: new Date().toISOString(),
337
+ last_observation_line_count: totalLineCount,
338
+ // Update AGENTS.md hashes only when the content was actually sent.
339
+ ...(agentsMdProject && projectMdHash ? { agents_md_project_hash: projectMdHash } : {}),
340
+ ...(agentsMdGlobal && globalMdHash ? { agents_md_global_hash: globalMdHash } : {}),
341
+ }, baseDir);
226
342
  return { ran: true, stats };
227
343
  }
228
344
  // ---------------------------------------------------------------------------
@@ -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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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Command scaffolding from instinct clusters.
3
+ *
4
+ * When 3+ related instincts in the same domain form an actionable workflow,
5
+ * generates a Pi slash command scaffold that codifies the pattern.
6
+ */
7
+ import type { DomainCluster } from "./graduation.js";
8
+ export interface CommandScaffold {
9
+ name: string;
10
+ description: string;
11
+ domain: string;
12
+ content: string;
13
+ sourceInstinctIds: string[];
14
+ }
15
+ /**
16
+ * Generates a command scaffold from a domain cluster of instincts.
17
+ * The scaffold describes a slash command that encodes the workflow
18
+ * distilled from the instinct cluster.
19
+ */
20
+ export declare function generateCommandScaffold(cluster: DomainCluster): CommandScaffold;
21
+ /**
22
+ * Generates command scaffolds for all qualifying clusters.
23
+ */
24
+ export declare function generateAllCommandScaffolds(clusters: DomainCluster[]): CommandScaffold[];
25
+ //# sourceMappingURL=command-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-scaffold.d.ts","sourceRoot":"","sources":["../src/command-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMrD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAuBD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,eAAe,CA+C/E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EAAE,GACxB,eAAe,EAAE,CAEnB"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Command scaffolding from instinct clusters.
3
+ *
4
+ * When 3+ related instincts in the same domain form an actionable workflow,
5
+ * generates a Pi slash command scaffold that codifies the pattern.
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Helpers
9
+ // ---------------------------------------------------------------------------
10
+ function toCommandName(domain) {
11
+ return domain.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
12
+ }
13
+ function formatInstinctAsStep(instinct, index) {
14
+ return [
15
+ `${index + 1}. **${instinct.title}**`,
16
+ ` - Trigger: ${instinct.trigger}`,
17
+ ` - Action: ${instinct.action}`,
18
+ "",
19
+ ].join("\n");
20
+ }
21
+ // ---------------------------------------------------------------------------
22
+ // Public API
23
+ // ---------------------------------------------------------------------------
24
+ /**
25
+ * Generates a command scaffold from a domain cluster of instincts.
26
+ * The scaffold describes a slash command that encodes the workflow
27
+ * distilled from the instinct cluster.
28
+ */
29
+ export function generateCommandScaffold(cluster) {
30
+ const name = toCommandName(cluster.domain);
31
+ const sortedInstincts = [...cluster.instincts].sort((a, b) => b.confidence - a.confidence);
32
+ const description = `Learned ${cluster.domain} workflow from coding sessions. ` +
33
+ `Encodes ${sortedInstincts.length} steps distilled from instinct observations.`;
34
+ const steps = sortedInstincts.map((inst, i) => formatInstinctAsStep(inst, i));
35
+ const content = [
36
+ `# /${name} Command`,
37
+ "",
38
+ `> Auto-generated from ${sortedInstincts.length} graduated instincts in the "${cluster.domain}" domain.`,
39
+ "",
40
+ `## Description`,
41
+ "",
42
+ description,
43
+ "",
44
+ `## Command: \`/${name}\``,
45
+ "",
46
+ `When invoked, this command should guide the agent through these steps:`,
47
+ "",
48
+ ...steps,
49
+ `## Implementation Notes`,
50
+ "",
51
+ `Register this command in your Pi extension's \`index.ts\`:`,
52
+ "",
53
+ "```typescript",
54
+ `pi.registerCommand("${name}", {`,
55
+ ` description: "${description.replace(/"/g, '\\"')}",`,
56
+ ` handler: async (args, ctx) => {`,
57
+ ` // TODO: Implement ${name} workflow`,
58
+ ` },`,
59
+ `});`,
60
+ "```",
61
+ "",
62
+ ].join("\n");
63
+ return {
64
+ name,
65
+ description,
66
+ domain: cluster.domain,
67
+ content,
68
+ sourceInstinctIds: sortedInstincts.map((i) => i.id),
69
+ };
70
+ }
71
+ /**
72
+ * Generates command scaffolds for all qualifying clusters.
73
+ */
74
+ export function generateAllCommandScaffolds(clusters) {
75
+ return clusters.map(generateCommandScaffold);
76
+ }
77
+ //# sourceMappingURL=command-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-scaffold.js","sourceRoot":"","sources":["../src/command-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAkB,EAAE,KAAa;IAC7D,OAAO;QACL,GAAG,KAAK,GAAG,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;QACrC,iBAAiB,QAAQ,CAAC,OAAO,EAAE;QACnC,gBAAgB,QAAQ,CAAC,MAAM,EAAE;QACjC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAsB;IAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACtC,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,OAAO,CAAC,MAAM,kCAAkC;QAC7E,WAAW,eAAe,CAAC,MAAM,8CAA8C,CAAC;IAElF,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,OAAO,GAAG;QACd,MAAM,IAAI,UAAU;QACpB,EAAE;QACF,yBAAyB,eAAe,CAAC,MAAM,gCAAgC,OAAO,CAAC,MAAM,WAAW;QACxG,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,WAAW;QACX,EAAE;QACF,kBAAkB,IAAI,IAAI;QAC1B,EAAE;QACF,wEAAwE;QACxE,EAAE;QACF,GAAG,KAAK;QACR,yBAAyB;QACzB,EAAE;QACF,4DAA4D;QAC5D,EAAE;QACF,eAAe;QACf,uBAAuB,IAAI,MAAM;QACjC,mBAAmB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;QACvD,mCAAmC;QACnC,0BAA0B,IAAI,WAAW;QACzC,MAAM;QACN,KAAK;QACL,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO;QACL,IAAI;QACJ,WAAW;QACX,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,iBAAiB,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAyB;IAEzB,OAAO,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAC/C,CAAC"}
@@ -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;AAgCH,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"}