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.
- package/README.md +78 -0
- package/dist/agents-md.d.ts +23 -2
- package/dist/agents-md.d.ts.map +1 -1
- package/dist/agents-md.js +58 -3
- package/dist/agents-md.js.map +1 -1
- package/dist/analysis-event-log.d.ts +50 -0
- package/dist/analysis-event-log.d.ts.map +1 -0
- package/dist/analysis-event-log.js +120 -0
- package/dist/analysis-event-log.js.map +1 -0
- package/dist/analysis-notification.d.ts +20 -0
- package/dist/analysis-notification.d.ts.map +1 -0
- package/dist/analysis-notification.js +63 -0
- package/dist/analysis-notification.js.map +1 -0
- package/dist/cli/analyze-single-shot.d.ts +20 -2
- package/dist/cli/analyze-single-shot.d.ts.map +1 -1
- package/dist/cli/analyze-single-shot.js +109 -5
- package/dist/cli/analyze-single-shot.js.map +1 -1
- package/dist/cli/analyze.js +132 -16
- package/dist/cli/analyze.js.map +1 -1
- package/dist/command-scaffold.d.ts +25 -0
- package/dist/command-scaffold.d.ts.map +1 -0
- package/dist/command-scaffold.js +77 -0
- package/dist/command-scaffold.js.map +1 -0
- package/dist/confidence.d.ts +12 -1
- package/dist/confidence.d.ts.map +1 -1
- package/dist/confidence.js +37 -9
- package/dist/confidence.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/graduation.d.ts +63 -0
- package/dist/graduation.d.ts.map +1 -0
- package/dist/graduation.js +155 -0
- package/dist/graduation.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/instinct-cleanup.d.ts +57 -0
- package/dist/instinct-cleanup.d.ts.map +1 -0
- package/dist/instinct-cleanup.js +150 -0
- package/dist/instinct-cleanup.js.map +1 -0
- package/dist/instinct-graduate.d.ts +43 -0
- package/dist/instinct-graduate.d.ts.map +1 -0
- package/dist/instinct-graduate.js +253 -0
- package/dist/instinct-graduate.js.map +1 -0
- package/dist/instinct-parser.d.ts.map +1 -1
- package/dist/instinct-parser.js +18 -0
- package/dist/instinct-parser.js.map +1 -1
- package/dist/instinct-tools.d.ts.map +1 -1
- package/dist/instinct-tools.js +19 -0
- package/dist/instinct-tools.js.map +1 -1
- package/dist/instinct-validator.d.ts +61 -0
- package/dist/instinct-validator.d.ts.map +1 -0
- package/dist/instinct-validator.js +235 -0
- package/dist/instinct-validator.js.map +1 -0
- package/dist/observation-signal.d.ts +34 -0
- package/dist/observation-signal.d.ts.map +1 -0
- package/dist/observation-signal.js +66 -0
- package/dist/observation-signal.js.map +1 -0
- package/dist/prompts/analyzer-system-single-shot.d.ts.map +1 -1
- package/dist/prompts/analyzer-system-single-shot.js +82 -3
- package/dist/prompts/analyzer-system-single-shot.js.map +1 -1
- package/dist/prompts/analyzer-user-single-shot.d.ts.map +1 -1
- package/dist/prompts/analyzer-user-single-shot.js +5 -3
- package/dist/prompts/analyzer-user-single-shot.js.map +1 -1
- package/dist/skill-scaffold.d.ts +23 -0
- package/dist/skill-scaffold.d.ts.map +1 -0
- package/dist/skill-scaffold.js +62 -0
- package/dist/skill-scaffold.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agents-md.ts +73 -3
- package/src/analysis-event-log.ts +171 -0
- package/src/analysis-notification.ts +79 -0
- package/src/cli/analyze-single-shot.ts +131 -5
- package/src/cli/analyze.ts +157 -15
- package/src/command-scaffold.ts +105 -0
- package/src/confidence.ts +35 -8
- package/src/config.ts +40 -0
- package/src/graduation.ts +243 -0
- package/src/index.ts +16 -0
- package/src/instinct-cleanup.ts +204 -0
- package/src/instinct-graduate.ts +377 -0
- package/src/instinct-parser.ts +18 -0
- package/src/instinct-tools.ts +26 -0
- package/src/instinct-validator.ts +287 -0
- package/src/observation-signal.ts +80 -0
- package/src/prompts/analyzer-system-single-shot.ts +82 -3
- package/src/prompts/analyzer-user-single-shot.ts +11 -2
- package/src/skill-scaffold.ts +90 -0
- 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
|
|
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:
|
|
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:
|
|
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":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
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,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
|
-
|
|
132
|
-
const
|
|
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
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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:
|
|
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
|
-
//
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
-
|
|
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
|
// ---------------------------------------------------------------------------
|
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,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"}
|
package/dist/confidence.d.ts
CHANGED
|
@@ -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.
|
package/dist/confidence.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
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"}
|