pi-continuous-learning 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/analyze-single-shot.d.ts +56 -0
- package/dist/cli/analyze-single-shot.d.ts.map +1 -0
- package/dist/cli/analyze-single-shot.js +83 -0
- package/dist/cli/analyze-single-shot.js.map +1 -0
- package/dist/cli/analyze.js +70 -81
- package/dist/cli/analyze.js.map +1 -1
- package/dist/observation-preprocessor.d.ts +26 -0
- package/dist/observation-preprocessor.d.ts.map +1 -0
- package/dist/observation-preprocessor.js +31 -0
- package/dist/observation-preprocessor.js.map +1 -0
- package/dist/prompts/analyzer-system-single-shot.d.ts +6 -0
- package/dist/prompts/analyzer-system-single-shot.d.ts.map +1 -0
- package/dist/prompts/analyzer-system-single-shot.js +124 -0
- package/dist/prompts/analyzer-system-single-shot.js.map +1 -0
- package/dist/prompts/analyzer-user-single-shot.d.ts +22 -0
- package/dist/prompts/analyzer-user-single-shot.d.ts.map +1 -0
- package/dist/prompts/analyzer-user-single-shot.js +53 -0
- package/dist/prompts/analyzer-user-single-shot.js.map +1 -0
- package/dist/prompts/analyzer-user.d.ts +3 -1
- package/dist/prompts/analyzer-user.d.ts.map +1 -1
- package/dist/prompts/analyzer-user.js +20 -7
- package/dist/prompts/analyzer-user.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/analyze-single-shot.ts +145 -0
- package/src/cli/analyze.ts +82 -124
- package/src/observation-preprocessor.ts +48 -0
- package/src/prompts/analyzer-system-single-shot.ts +123 -0
- package/src/prompts/analyzer-user-single-shot.ts +88 -0
- package/src/prompts/analyzer-user.ts +26 -8
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single-shot (non-agentic) analyzer core.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the multi-turn agentic session with a single complete() call.
|
|
5
|
+
* The model receives all current instincts inline and returns a JSON change-set.
|
|
6
|
+
* Changes are applied client-side, eliminating the ~16x cache-read multiplier.
|
|
7
|
+
*/
|
|
8
|
+
import type { AssistantMessage, Context } from "@mariozechner/pi-ai";
|
|
9
|
+
import { complete } from "@mariozechner/pi-ai";
|
|
10
|
+
import type { Instinct } from "../types.js";
|
|
11
|
+
export interface InstinctChangePayload {
|
|
12
|
+
id: string;
|
|
13
|
+
title: string;
|
|
14
|
+
trigger: string;
|
|
15
|
+
action: string;
|
|
16
|
+
confidence: number;
|
|
17
|
+
domain: string;
|
|
18
|
+
scope: "project" | "global";
|
|
19
|
+
observation_count?: number;
|
|
20
|
+
confirmed_count?: number;
|
|
21
|
+
contradicted_count?: number;
|
|
22
|
+
inactive_count?: number;
|
|
23
|
+
evidence?: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface InstinctChange {
|
|
26
|
+
action: "create" | "update" | "delete";
|
|
27
|
+
instinct?: InstinctChangePayload;
|
|
28
|
+
/** For delete: the instinct ID to remove. */
|
|
29
|
+
id?: string;
|
|
30
|
+
/** For delete: the scope to target. */
|
|
31
|
+
scope?: "project" | "global";
|
|
32
|
+
}
|
|
33
|
+
export interface SingleShotResult {
|
|
34
|
+
changes: InstinctChange[];
|
|
35
|
+
message: AssistantMessage;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Parses the model's raw text response into an array of InstinctChange.
|
|
39
|
+
* Strips markdown code fences if present. Throws on invalid JSON or schema.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseChanges(raw: string): InstinctChange[];
|
|
42
|
+
/**
|
|
43
|
+
* Builds a full Instinct from a create/update change.
|
|
44
|
+
* Returns null for delete changes or changes with missing instinct data.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildInstinctFromChange(change: InstinctChange, existing: Instinct | null, projectId: string): Instinct | null;
|
|
47
|
+
/**
|
|
48
|
+
* Formats existing instincts as serialized markdown blocks for inline context.
|
|
49
|
+
*/
|
|
50
|
+
export declare function formatInstinctsForPrompt(instincts: Instinct[]): string;
|
|
51
|
+
/**
|
|
52
|
+
* Runs a single complete() call with the provided context.
|
|
53
|
+
* Returns parsed changes and the raw AssistantMessage (for usage stats).
|
|
54
|
+
*/
|
|
55
|
+
export declare function runSingleShot(context: Context, model: Parameters<typeof complete>[0], apiKey: string, signal?: AbortSignal): Promise<SingleShotResult>;
|
|
56
|
+
//# sourceMappingURL=analyze-single-shot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-single-shot.d.ts","sourceRoot":"","sources":["../../src/cli/analyze-single-shot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,6CAA6C;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CA0B1D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,SAAS,EAAE,MAAM,GAChB,QAAQ,GAAG,IAAI,CA0BjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAKtE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAgB3B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { complete } from "@mariozechner/pi-ai";
|
|
2
|
+
import { serializeInstinct } from "../instinct-parser.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parses the model's raw text response into an array of InstinctChange.
|
|
5
|
+
* Strips markdown code fences if present. Throws on invalid JSON or schema.
|
|
6
|
+
*/
|
|
7
|
+
export function parseChanges(raw) {
|
|
8
|
+
const stripped = raw
|
|
9
|
+
.replace(/^```(?:json)?\s*/i, "")
|
|
10
|
+
.replace(/\s*```\s*$/, "")
|
|
11
|
+
.trim();
|
|
12
|
+
let parsed;
|
|
13
|
+
try {
|
|
14
|
+
parsed = JSON.parse(stripped);
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
throw new Error(`Analyzer returned invalid JSON: ${String(e)}\nRaw: ${raw.slice(0, 200)}`);
|
|
18
|
+
}
|
|
19
|
+
if (typeof parsed !== "object" ||
|
|
20
|
+
parsed === null ||
|
|
21
|
+
!Array.isArray(parsed.changes)) {
|
|
22
|
+
throw new Error(`Analyzer response missing 'changes' array. Got: ${JSON.stringify(parsed).slice(0, 200)}`);
|
|
23
|
+
}
|
|
24
|
+
return parsed.changes;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Builds a full Instinct from a create/update change.
|
|
28
|
+
* Returns null for delete changes or changes with missing instinct data.
|
|
29
|
+
*/
|
|
30
|
+
export function buildInstinctFromChange(change, existing, projectId) {
|
|
31
|
+
if (change.action === "delete" || !change.instinct) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const now = new Date().toISOString();
|
|
35
|
+
const payload = change.instinct;
|
|
36
|
+
return {
|
|
37
|
+
id: payload.id,
|
|
38
|
+
title: payload.title,
|
|
39
|
+
trigger: payload.trigger,
|
|
40
|
+
action: payload.action,
|
|
41
|
+
confidence: Math.max(0.1, Math.min(0.9, payload.confidence)),
|
|
42
|
+
domain: payload.domain,
|
|
43
|
+
scope: payload.scope,
|
|
44
|
+
source: "personal",
|
|
45
|
+
...(payload.scope === "project" ? { project_id: projectId } : {}),
|
|
46
|
+
created_at: existing?.created_at ?? now,
|
|
47
|
+
updated_at: now,
|
|
48
|
+
observation_count: payload.observation_count ?? 1,
|
|
49
|
+
confirmed_count: payload.confirmed_count ?? 0,
|
|
50
|
+
contradicted_count: payload.contradicted_count ?? 0,
|
|
51
|
+
inactive_count: payload.inactive_count ?? 0,
|
|
52
|
+
...(payload.evidence !== undefined ? { evidence: payload.evidence } : {}),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Formats existing instincts as serialized markdown blocks for inline context.
|
|
57
|
+
*/
|
|
58
|
+
export function formatInstinctsForPrompt(instincts) {
|
|
59
|
+
if (instincts.length === 0) {
|
|
60
|
+
return "(no existing instincts)";
|
|
61
|
+
}
|
|
62
|
+
return instincts.map((i) => serializeInstinct(i)).join("\n---\n");
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Runs a single complete() call with the provided context.
|
|
66
|
+
* Returns parsed changes and the raw AssistantMessage (for usage stats).
|
|
67
|
+
*/
|
|
68
|
+
export async function runSingleShot(context, model, apiKey, signal) {
|
|
69
|
+
const opts = { apiKey };
|
|
70
|
+
if (signal !== undefined)
|
|
71
|
+
opts.signal = signal;
|
|
72
|
+
const message = await complete(model, context, opts);
|
|
73
|
+
const textContent = message.content
|
|
74
|
+
.filter((c) => c.type === "text")
|
|
75
|
+
.map((c) => c.text)
|
|
76
|
+
.join("");
|
|
77
|
+
if (!textContent.trim()) {
|
|
78
|
+
throw new Error("Analyzer returned empty response");
|
|
79
|
+
}
|
|
80
|
+
const changes = parseChanges(textContent);
|
|
81
|
+
return { changes, message };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=analyze-single-shot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze-single-shot.js","sourceRoot":"","sources":["../../src/cli/analyze-single-shot.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/analyze.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { existsSync, readFileSync, statSync, writeFileSync, unlinkSync, } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import {
|
|
4
|
+
import { AuthStorage } from "@mariozechner/pi-coding-agent";
|
|
5
5
|
import { getModel } from "@mariozechner/pi-ai";
|
|
6
6
|
import { loadConfig, DEFAULT_CONFIG } from "../config.js";
|
|
7
|
-
import { getBaseDir, getProjectsRegistryPath, getObservationsPath, getProjectDir, } from "../storage.js";
|
|
7
|
+
import { getBaseDir, getProjectsRegistryPath, getObservationsPath, getProjectDir, getProjectInstinctsDir, getGlobalInstinctsDir, } from "../storage.js";
|
|
8
8
|
import { countObservations } from "../observations.js";
|
|
9
9
|
import { runDecayPass } from "../instinct-decay.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
10
|
+
import { tailObservationsSince } from "../prompts/analyzer-user.js";
|
|
11
|
+
import { buildSingleShotSystemPrompt } from "../prompts/analyzer-system-single-shot.js";
|
|
12
|
+
import { buildSingleShotUserPrompt } from "../prompts/analyzer-user-single-shot.js";
|
|
13
|
+
import { runSingleShot, buildInstinctFromChange, } from "./analyze-single-shot.js";
|
|
14
|
+
import { loadProjectInstincts, loadGlobalInstincts, saveInstinct, } from "../instinct-store.js";
|
|
13
15
|
import { readAgentsMd } from "../agents-md.js";
|
|
14
16
|
import { homedir } from "node:os";
|
|
15
17
|
import { AnalyzeLogger } from "./analyze-logger.js";
|
|
@@ -28,7 +30,6 @@ function acquireLock(baseDir) {
|
|
|
28
30
|
const content = readFileSync(lockPath, "utf-8");
|
|
29
31
|
const lock = JSON.parse(content);
|
|
30
32
|
const age = Date.now() - new Date(lock.started_at).getTime();
|
|
31
|
-
// Check if the owning process is still alive
|
|
32
33
|
try {
|
|
33
34
|
process.kill(lock.pid, 0); // signal 0 = existence check, no actual signal
|
|
34
35
|
if (age < LOCK_STALE_MS) {
|
|
@@ -67,42 +68,6 @@ function startGlobalTimeout(timeoutMs, logger) {
|
|
|
67
68
|
process.exit(2);
|
|
68
69
|
}, timeoutMs).unref();
|
|
69
70
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Wraps instinct tools to count create/update/delete operations.
|
|
72
|
-
* Returns new tool instances that increment the provided counts.
|
|
73
|
-
*/
|
|
74
|
-
function wrapInstinctToolsWithTracking(projectId, projectName, baseDir, counts) {
|
|
75
|
-
const writeTool = createInstinctWriteTool(projectId, projectName, baseDir);
|
|
76
|
-
const deleteTool = createInstinctDeleteTool(projectId, baseDir);
|
|
77
|
-
const trackedWrite = {
|
|
78
|
-
...writeTool,
|
|
79
|
-
async execute(toolCallId, params, signal, onUpdate, ctx) {
|
|
80
|
-
const result = await writeTool.execute(toolCallId, params, signal, onUpdate, ctx);
|
|
81
|
-
const details = result.details;
|
|
82
|
-
if (details?.action === "created") {
|
|
83
|
-
counts.created++;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
counts.updated++;
|
|
87
|
-
}
|
|
88
|
-
return result;
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
const trackedDelete = {
|
|
92
|
-
...deleteTool,
|
|
93
|
-
async execute(toolCallId, params, signal, onUpdate, ctx) {
|
|
94
|
-
const result = await deleteTool.execute(toolCallId, params, signal, onUpdate, ctx);
|
|
95
|
-
counts.deleted++;
|
|
96
|
-
return result;
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
return {
|
|
100
|
-
listTool: createInstinctListTool(projectId, baseDir),
|
|
101
|
-
readTool: createInstinctReadTool(projectId, baseDir),
|
|
102
|
-
writeTool: trackedWrite,
|
|
103
|
-
deleteTool: trackedDelete,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
71
|
function loadProjectsRegistry(baseDir) {
|
|
107
72
|
const path = getProjectsRegistryPath(baseDir);
|
|
108
73
|
if (!existsSync(path))
|
|
@@ -148,18 +113,21 @@ async function analyzeProject(project, config, baseDir, logger) {
|
|
|
148
113
|
}
|
|
149
114
|
const obsPath = getObservationsPath(project.id, baseDir);
|
|
150
115
|
const sinceLineCount = meta.last_observation_line_count ?? 0;
|
|
151
|
-
const { lines: newObsLines, totalLineCount } = tailObservationsSince(obsPath, sinceLineCount);
|
|
116
|
+
const { lines: newObsLines, totalLineCount, rawLineCount } = tailObservationsSince(obsPath, sinceLineCount);
|
|
152
117
|
if (newObsLines.length === 0) {
|
|
153
|
-
return { ran: false, skippedReason: "no new observation lines" };
|
|
118
|
+
return { ran: false, skippedReason: "no new observation lines after preprocessing" };
|
|
154
119
|
}
|
|
155
120
|
const obsCount = countObservations(project.id, baseDir);
|
|
156
121
|
if (obsCount < config.min_observations_to_analyze) {
|
|
157
122
|
return { ran: false, skippedReason: `below threshold (${obsCount}/${config.min_observations_to_analyze})` };
|
|
158
123
|
}
|
|
159
124
|
const startTime = Date.now();
|
|
160
|
-
logger.projectStart(project.id, project.name,
|
|
125
|
+
logger.projectStart(project.id, project.name, rawLineCount, obsCount);
|
|
161
126
|
runDecayPass(project.id, baseDir);
|
|
162
|
-
|
|
127
|
+
// Load current instincts inline - no tool calls needed
|
|
128
|
+
const projectInstincts = loadProjectInstincts(project.id, baseDir);
|
|
129
|
+
const globalInstincts = loadGlobalInstincts(baseDir);
|
|
130
|
+
const allInstincts = [...projectInstincts, ...globalInstincts];
|
|
163
131
|
const agentsMdProject = readAgentsMd(join(project.root, "AGENTS.md"));
|
|
164
132
|
const agentsMdGlobal = readAgentsMd(join(homedir(), ".pi", "agent", "AGENTS.md"));
|
|
165
133
|
let installedSkills = [];
|
|
@@ -174,61 +142,83 @@ async function analyzeProject(project, config, baseDir, logger) {
|
|
|
174
142
|
catch {
|
|
175
143
|
// Skills loading is best-effort - continue without them
|
|
176
144
|
}
|
|
177
|
-
const userPrompt =
|
|
145
|
+
const userPrompt = buildSingleShotUserPrompt(project, allInstincts, newObsLines, {
|
|
178
146
|
agentsMdProject,
|
|
179
147
|
agentsMdGlobal,
|
|
180
148
|
installedSkills,
|
|
181
|
-
observationLines: newObsLines,
|
|
182
149
|
});
|
|
183
150
|
const authStorage = AuthStorage.create();
|
|
184
|
-
const modelRegistry = new ModelRegistry(authStorage);
|
|
185
151
|
const modelId = (config.model || DEFAULT_CONFIG.model);
|
|
186
152
|
const model = getModel("anthropic", modelId);
|
|
187
|
-
|
|
153
|
+
const apiKey = await authStorage.getApiKey("anthropic");
|
|
154
|
+
if (!apiKey) {
|
|
155
|
+
throw new Error("No Anthropic API key configured. Set via auth.json or ANTHROPIC_API_KEY.");
|
|
156
|
+
}
|
|
157
|
+
const context = {
|
|
158
|
+
systemPrompt: buildSingleShotSystemPrompt(),
|
|
159
|
+
messages: [
|
|
160
|
+
{ role: "user", content: userPrompt, timestamp: Date.now() },
|
|
161
|
+
],
|
|
162
|
+
};
|
|
163
|
+
const timeoutMs = (config.timeout_seconds ?? DEFAULT_CONFIG.timeout_seconds) * 1000;
|
|
164
|
+
const abortController = new AbortController();
|
|
165
|
+
const timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);
|
|
188
166
|
const instinctCounts = { created: 0, updated: 0, deleted: 0 };
|
|
189
|
-
const
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
trackedTools.readTool,
|
|
193
|
-
trackedTools.writeTool,
|
|
194
|
-
trackedTools.deleteTool,
|
|
195
|
-
];
|
|
196
|
-
const loader = new DefaultResourceLoader({
|
|
197
|
-
systemPromptOverride: () => buildAnalyzerSystemPrompt(),
|
|
198
|
-
});
|
|
199
|
-
await loader.reload();
|
|
200
|
-
const { session } = await createAgentSession({
|
|
201
|
-
model,
|
|
202
|
-
authStorage,
|
|
203
|
-
modelRegistry,
|
|
204
|
-
sessionManager: SessionManager.inMemory(),
|
|
205
|
-
customTools,
|
|
206
|
-
resourceLoader: loader,
|
|
207
|
-
});
|
|
167
|
+
const projectInstinctsDir = getProjectInstinctsDir(project.id, "personal", baseDir);
|
|
168
|
+
const globalInstinctsDir = getGlobalInstinctsDir("personal", baseDir);
|
|
169
|
+
let singleShotMessage;
|
|
208
170
|
try {
|
|
209
|
-
await
|
|
171
|
+
const result = await runSingleShot(context, model, apiKey, abortController.signal);
|
|
172
|
+
singleShotMessage = result.message;
|
|
173
|
+
for (const change of result.changes) {
|
|
174
|
+
if (change.action === "delete") {
|
|
175
|
+
const id = change.id;
|
|
176
|
+
if (!id)
|
|
177
|
+
continue;
|
|
178
|
+
const dir = change.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
|
|
179
|
+
const filePath = join(dir, `${id}.md`);
|
|
180
|
+
if (existsSync(filePath)) {
|
|
181
|
+
unlinkSync(filePath);
|
|
182
|
+
instinctCounts.deleted++;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// create or update
|
|
187
|
+
const existing = allInstincts.find((i) => i.id === change.instinct?.id) ?? null;
|
|
188
|
+
const instinct = buildInstinctFromChange(change, existing, project.id);
|
|
189
|
+
if (!instinct)
|
|
190
|
+
continue;
|
|
191
|
+
const dir = instinct.scope === "global" ? globalInstinctsDir : projectInstinctsDir;
|
|
192
|
+
saveInstinct(instinct, dir);
|
|
193
|
+
if (change.action === "create") {
|
|
194
|
+
instinctCounts.created++;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
instinctCounts.updated++;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
210
201
|
}
|
|
211
202
|
finally {
|
|
212
|
-
|
|
203
|
+
clearTimeout(timeoutHandle);
|
|
213
204
|
}
|
|
214
|
-
|
|
215
|
-
const sessionStats = session.getSessionStats();
|
|
205
|
+
const usage = singleShotMessage.usage;
|
|
216
206
|
const durationMs = Date.now() - startTime;
|
|
217
207
|
const stats = {
|
|
218
208
|
project_id: project.id,
|
|
219
209
|
project_name: project.name,
|
|
220
210
|
duration_ms: durationMs,
|
|
221
|
-
observations_processed:
|
|
211
|
+
observations_processed: rawLineCount,
|
|
222
212
|
observations_total: obsCount,
|
|
223
213
|
instincts_created: instinctCounts.created,
|
|
224
214
|
instincts_updated: instinctCounts.updated,
|
|
225
215
|
instincts_deleted: instinctCounts.deleted,
|
|
226
|
-
tokens_input:
|
|
227
|
-
tokens_output:
|
|
228
|
-
tokens_cache_read:
|
|
229
|
-
tokens_cache_write:
|
|
230
|
-
tokens_total:
|
|
231
|
-
cost_usd:
|
|
216
|
+
tokens_input: usage.input,
|
|
217
|
+
tokens_output: usage.output,
|
|
218
|
+
tokens_cache_read: usage.cacheRead,
|
|
219
|
+
tokens_cache_write: usage.cacheWrite,
|
|
220
|
+
tokens_total: usage.totalTokens,
|
|
221
|
+
cost_usd: usage.cost.total,
|
|
232
222
|
model: modelId,
|
|
233
223
|
};
|
|
234
224
|
logger.projectComplete(stats);
|
|
@@ -300,7 +290,6 @@ async function main() {
|
|
|
300
290
|
}
|
|
301
291
|
main().catch((err) => {
|
|
302
292
|
releaseLock(getBaseDir());
|
|
303
|
-
// Last-resort logging - config may not have loaded
|
|
304
293
|
const logger = new AnalyzeLogger();
|
|
305
294
|
logger.error("Fatal error", err);
|
|
306
295
|
process.exit(1);
|
package/dist/cli/analyze.js.map
CHANGED
|
@@ -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,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observation preprocessing for cost reduction.
|
|
3
|
+
*
|
|
4
|
+
* Strips high-volume, low-signal data from raw observation events before
|
|
5
|
+
* sending to the LLM analyzer. Reduces context size by ~80% on typical sessions.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - turn_start → DROP (no information not already in turn_end)
|
|
9
|
+
* - tool_start → DROP (tool name + sequence captured by tool_complete)
|
|
10
|
+
* - tool_complete, is_error: false → KEEP, strip output field
|
|
11
|
+
* - tool_complete, is_error: true → KEEP as-is (error message needed)
|
|
12
|
+
* - all others → KEEP as-is
|
|
13
|
+
*/
|
|
14
|
+
import type { Observation } from "./types.js";
|
|
15
|
+
/**
|
|
16
|
+
* Preprocess a single observation.
|
|
17
|
+
* Returns null if the observation should be dropped entirely.
|
|
18
|
+
* Returns a new (immutable) observation with large fields stripped if applicable.
|
|
19
|
+
*/
|
|
20
|
+
export declare function preprocessObservation(obs: Observation): Observation | null;
|
|
21
|
+
/**
|
|
22
|
+
* Preprocess an array of raw observations.
|
|
23
|
+
* Drops nulls and returns only the meaningful events.
|
|
24
|
+
*/
|
|
25
|
+
export declare function preprocessObservations(observations: Observation[]): Observation[];
|
|
26
|
+
//# sourceMappingURL=observation-preprocessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation-preprocessor.d.ts","sourceRoot":"","sources":["../src/observation-preprocessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CAY1E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CASjF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preprocess a single observation.
|
|
3
|
+
* Returns null if the observation should be dropped entirely.
|
|
4
|
+
* Returns a new (immutable) observation with large fields stripped if applicable.
|
|
5
|
+
*/
|
|
6
|
+
export function preprocessObservation(obs) {
|
|
7
|
+
if (obs.event === "turn_start" || obs.event === "tool_start") {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
if (obs.event === "tool_complete" && !obs.is_error) {
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
|
+
const { output: _, ...stripped } = obs;
|
|
13
|
+
return stripped;
|
|
14
|
+
}
|
|
15
|
+
return obs;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Preprocess an array of raw observations.
|
|
19
|
+
* Drops nulls and returns only the meaningful events.
|
|
20
|
+
*/
|
|
21
|
+
export function preprocessObservations(observations) {
|
|
22
|
+
const result = [];
|
|
23
|
+
for (const obs of observations) {
|
|
24
|
+
const processed = preprocessObservation(obs);
|
|
25
|
+
if (processed !== null) {
|
|
26
|
+
result.push(processed);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=observation-preprocessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation-preprocessor.js","sourceRoot":"","sources":["../src/observation-preprocessor.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,KAAK,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnD,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC;QACvC,OAAO,QAAuB,CAAC;IACjC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAA2B;IAChE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt for the single-shot (non-agentic) background analyzer.
|
|
3
|
+
* Instructs the model to return a JSON change-set instead of using tool calls.
|
|
4
|
+
*/
|
|
5
|
+
export declare function buildSingleShotSystemPrompt(): string;
|
|
6
|
+
//# sourceMappingURL=analyzer-system-single-shot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer-system-single-shot.d.ts","sourceRoot":"","sources":["../../src/prompts/analyzer-system-single-shot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAsHpD"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt for the single-shot (non-agentic) background analyzer.
|
|
3
|
+
* Instructs the model to return a JSON change-set instead of using tool calls.
|
|
4
|
+
*/
|
|
5
|
+
export function buildSingleShotSystemPrompt() {
|
|
6
|
+
return `You are a coding behavior analyst. Your job is to read session observations
|
|
7
|
+
and produce a JSON change-set to create or update instinct files that capture reusable coding patterns.
|
|
8
|
+
|
|
9
|
+
## Output Format
|
|
10
|
+
|
|
11
|
+
Return ONLY a valid JSON object (no prose, no markdown fences) with this structure:
|
|
12
|
+
|
|
13
|
+
{
|
|
14
|
+
"changes": [
|
|
15
|
+
{
|
|
16
|
+
"action": "create",
|
|
17
|
+
"instinct": {
|
|
18
|
+
"id": "kebab-case-id",
|
|
19
|
+
"title": "Short title",
|
|
20
|
+
"trigger": "When this should activate",
|
|
21
|
+
"action": "What the agent should do (verb phrase)",
|
|
22
|
+
"confidence": 0.5,
|
|
23
|
+
"domain": "typescript",
|
|
24
|
+
"scope": "project",
|
|
25
|
+
"observation_count": 3,
|
|
26
|
+
"confirmed_count": 0,
|
|
27
|
+
"contradicted_count": 0,
|
|
28
|
+
"inactive_count": 0,
|
|
29
|
+
"evidence": ["brief note 1", "brief note 2"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"action": "update",
|
|
34
|
+
"instinct": { "...same fields as create..." }
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"action": "delete",
|
|
38
|
+
"id": "instinct-id-to-delete",
|
|
39
|
+
"scope": "project"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
Return { "changes": [] } if no changes are needed.
|
|
45
|
+
|
|
46
|
+
## Pattern Detection Heuristics
|
|
47
|
+
|
|
48
|
+
Analyze observations for these categories:
|
|
49
|
+
|
|
50
|
+
### User Corrections
|
|
51
|
+
- User rephrases a request after an agent response
|
|
52
|
+
- User explicitly rejects an approach
|
|
53
|
+
- Trigger: the corrected behavior; Action: the preferred approach
|
|
54
|
+
|
|
55
|
+
### Error Resolutions
|
|
56
|
+
- Tool call returns is_error: true followed by a successful retry
|
|
57
|
+
- Trigger: the error condition; Action: the proven resolution
|
|
58
|
+
|
|
59
|
+
### Repeated Workflows
|
|
60
|
+
- Same sequence of tool calls appears 3+ times
|
|
61
|
+
- Trigger: the workflow start condition; Action: the efficient path
|
|
62
|
+
|
|
63
|
+
### Tool Preferences
|
|
64
|
+
- Agent consistently uses one tool over alternatives
|
|
65
|
+
- Trigger: the task type; Action: the preferred tool and parameters
|
|
66
|
+
|
|
67
|
+
### Anti-Patterns
|
|
68
|
+
- Actions that consistently lead to errors or user corrections
|
|
69
|
+
- Trigger: the bad pattern situation; Action: what to do instead
|
|
70
|
+
|
|
71
|
+
### Turn Structure
|
|
72
|
+
- turn_end events summarize turns: tool_count and error_count
|
|
73
|
+
- High error_count turns suggest inefficient approaches
|
|
74
|
+
|
|
75
|
+
### Context Pressure
|
|
76
|
+
- session_compact events signal context window pressure
|
|
77
|
+
|
|
78
|
+
### User Shell Commands
|
|
79
|
+
- user_bash events capture manual shell commands the user runs
|
|
80
|
+
- Repeated commands after agent actions reveal verification patterns
|
|
81
|
+
|
|
82
|
+
### Model Preferences
|
|
83
|
+
- model_select events track when users switch models
|
|
84
|
+
|
|
85
|
+
## Feedback Analysis
|
|
86
|
+
|
|
87
|
+
Each observation may include an active_instincts field listing instinct IDs
|
|
88
|
+
that were injected into the agent's system prompt before that turn.
|
|
89
|
+
|
|
90
|
+
Use this to update existing instinct confidence scores:
|
|
91
|
+
- Confirmed (+0.05): instinct was active and agent followed guidance without correction
|
|
92
|
+
- Contradicted (-0.15): instinct was active but user corrected the agent
|
|
93
|
+
- Inactive (no change): instinct was injected but trigger never arose
|
|
94
|
+
|
|
95
|
+
When updating, increment the corresponding count field and recalculate confidence.
|
|
96
|
+
|
|
97
|
+
## Confidence Scoring Rules
|
|
98
|
+
|
|
99
|
+
### Initial Confidence (new instincts)
|
|
100
|
+
- 1-2 observations -> 0.3
|
|
101
|
+
- 3-5 observations -> 0.5
|
|
102
|
+
- 6-10 observations -> 0.7
|
|
103
|
+
- 11+ observations -> 0.85
|
|
104
|
+
|
|
105
|
+
### Clamping
|
|
106
|
+
- Always clamp to [0.1, 0.9]
|
|
107
|
+
|
|
108
|
+
## Scope Decision Guide
|
|
109
|
+
|
|
110
|
+
Use project scope when the pattern is specific to this project's tech stack or conventions.
|
|
111
|
+
Use global scope when the pattern applies universally to any coding session.
|
|
112
|
+
When in doubt, prefer project scope.
|
|
113
|
+
|
|
114
|
+
## Conservativeness Rules
|
|
115
|
+
|
|
116
|
+
1. Only create a new instinct with 3+ clear independent observations supporting the pattern.
|
|
117
|
+
2. No code snippets in the action field - plain language only.
|
|
118
|
+
3. Each instinct must have one well-defined trigger.
|
|
119
|
+
4. New instincts from observation data alone are capped at 0.85 confidence.
|
|
120
|
+
5. Check existing instincts (provided in the user message) for duplicates before creating. Update instead.
|
|
121
|
+
6. Write actions as clear instructions starting with a verb.
|
|
122
|
+
7. Be skeptical of outliers - patterns seen only in unusual circumstances should not become instincts.`;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=analyzer-system-single-shot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzer-system-single-shot.js","sourceRoot":"","sources":["../../src/prompts/analyzer-system-single-shot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uGAoH8F,CAAC;AACxG,CAAC"}
|