@a-company/paradigm 5.9.1 → 5.10.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/{agent-loader-X7TDYLFL.js → agent-loader-TFIANSF4.js} +1 -1
- package/dist/agent-state-S5DAWPTF.js +24 -0
- package/dist/{chunk-3UCH56D5.js → chunk-4BLYIB7J.js} +270 -928
- package/dist/chunk-4L3UTYQX.js +677 -0
- package/dist/chunk-54LTTQBH.js +138 -0
- package/dist/{chunk-SDDCVUCV.js → chunk-CL7JSK52.js} +23 -0
- package/dist/{chunk-MA7G4CTI.js → chunk-RJE5G7WO.js} +27 -1
- package/dist/{chunk-V7BZBBI6.js → chunk-VPPK3SY4.js} +1 -1
- package/dist/mcp.js +92 -54
- package/dist/{nomination-engine-LLREC5BZ.js → nomination-engine-RV5CNO5B.js} +2 -2
- package/dist/{reindex-U2HEB6GW.js → reindex-5LTD53ZC.js} +3 -2
- package/dist/session-tracker-C4BMD5WG.js +13 -0
- package/dist/{session-work-log-KDOH4GER.js → session-work-log-MZ47OAPB.js} +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// ../paradigm-mcp/src/utils/agent-state.ts
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import * as os from "os";
|
|
7
|
+
import * as yaml from "js-yaml";
|
|
8
|
+
var PROJECT_STATE_DIR = ".paradigm/agent-state";
|
|
9
|
+
var GLOBAL_AGENTS_DIR = path.join(os.homedir(), ".paradigm", "agents");
|
|
10
|
+
function loadAgentState(agentId, rootDir) {
|
|
11
|
+
const statePath = path.join(rootDir, PROJECT_STATE_DIR, `${agentId}.yaml`);
|
|
12
|
+
if (!fs.existsSync(statePath)) return null;
|
|
13
|
+
try {
|
|
14
|
+
const content = fs.readFileSync(statePath, "utf8");
|
|
15
|
+
return yaml.load(content);
|
|
16
|
+
} catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function saveAgentState(agentId, rootDir, state) {
|
|
21
|
+
const stateDir = path.join(rootDir, PROJECT_STATE_DIR);
|
|
22
|
+
if (!fs.existsSync(stateDir)) {
|
|
23
|
+
fs.mkdirSync(stateDir, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
const statePath = path.join(stateDir, `${agentId}.yaml`);
|
|
26
|
+
fs.writeFileSync(statePath, yaml.dump(state, { lineWidth: 120, noRefs: true, sortKeys: false }), "utf8");
|
|
27
|
+
}
|
|
28
|
+
function recordAgentSession(agentId, rootDir, session) {
|
|
29
|
+
const existing = loadAgentState(agentId, rootDir);
|
|
30
|
+
const projectName = path.basename(rootDir);
|
|
31
|
+
const state = {
|
|
32
|
+
id: agentId,
|
|
33
|
+
project: projectName,
|
|
34
|
+
lastSession: {
|
|
35
|
+
date: (/* @__PURE__ */ new Date()).toISOString(),
|
|
36
|
+
sessionId: session.sessionId,
|
|
37
|
+
summary: session.summary,
|
|
38
|
+
filesReviewed: session.filesReviewed,
|
|
39
|
+
symbolsTouched: session.symbolsTouched,
|
|
40
|
+
decisions: session.decisions
|
|
41
|
+
},
|
|
42
|
+
pendingWork: session.pendingWork || existing?.pendingWork || [],
|
|
43
|
+
recentPatterns: session.patterns || existing?.recentPatterns || [],
|
|
44
|
+
sessionsOnProject: (existing?.sessionsOnProject || 0) + 1,
|
|
45
|
+
lastPurposeUpdate: existing?.lastPurposeUpdate
|
|
46
|
+
};
|
|
47
|
+
saveAgentState(agentId, rootDir, state);
|
|
48
|
+
updateGlobalAgentState(agentId, projectName);
|
|
49
|
+
return state;
|
|
50
|
+
}
|
|
51
|
+
function addPendingWork(agentId, rootDir, items) {
|
|
52
|
+
const state = loadAgentState(agentId, rootDir);
|
|
53
|
+
if (!state) return;
|
|
54
|
+
state.pendingWork = [.../* @__PURE__ */ new Set([...state.pendingWork, ...items])];
|
|
55
|
+
saveAgentState(agentId, rootDir, state);
|
|
56
|
+
}
|
|
57
|
+
function completePendingWork(agentId, rootDir, completedItems) {
|
|
58
|
+
const state = loadAgentState(agentId, rootDir);
|
|
59
|
+
if (!state) return;
|
|
60
|
+
const completedSet = new Set(completedItems.map((i) => i.toLowerCase()));
|
|
61
|
+
state.pendingWork = state.pendingWork.filter((item) => !completedSet.has(item.toLowerCase()));
|
|
62
|
+
saveAgentState(agentId, rootDir, state);
|
|
63
|
+
}
|
|
64
|
+
function addProjectPattern(agentId, rootDir, pattern) {
|
|
65
|
+
const state = loadAgentState(agentId, rootDir);
|
|
66
|
+
if (!state) return;
|
|
67
|
+
if (!state.recentPatterns.includes(pattern)) {
|
|
68
|
+
state.recentPatterns.push(pattern);
|
|
69
|
+
if (state.recentPatterns.length > 10) {
|
|
70
|
+
state.recentPatterns = state.recentPatterns.slice(-10);
|
|
71
|
+
}
|
|
72
|
+
saveAgentState(agentId, rootDir, state);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function loadGlobalAgentState(agentId) {
|
|
76
|
+
const statePath = path.join(GLOBAL_AGENTS_DIR, agentId, "state.yaml");
|
|
77
|
+
if (!fs.existsSync(statePath)) return null;
|
|
78
|
+
try {
|
|
79
|
+
const content = fs.readFileSync(statePath, "utf8");
|
|
80
|
+
return yaml.load(content);
|
|
81
|
+
} catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function updateGlobalAgentState(agentId, projectName) {
|
|
86
|
+
const stateDir = path.join(GLOBAL_AGENTS_DIR, agentId);
|
|
87
|
+
if (!fs.existsSync(stateDir)) {
|
|
88
|
+
fs.mkdirSync(stateDir, { recursive: true });
|
|
89
|
+
}
|
|
90
|
+
const statePath = path.join(stateDir, "state.yaml");
|
|
91
|
+
const existing = loadGlobalAgentState(agentId);
|
|
92
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
93
|
+
const history = existing?.projectHistory || [];
|
|
94
|
+
const projectEntry = history.find((h) => h.project === projectName);
|
|
95
|
+
if (projectEntry) {
|
|
96
|
+
projectEntry.sessions += 1;
|
|
97
|
+
projectEntry.lastActive = now;
|
|
98
|
+
} else {
|
|
99
|
+
history.push({ project: projectName, sessions: 1, lastActive: now });
|
|
100
|
+
}
|
|
101
|
+
history.sort((a, b) => b.lastActive.localeCompare(a.lastActive));
|
|
102
|
+
const state = {
|
|
103
|
+
id: agentId,
|
|
104
|
+
totalSessions: (existing?.totalSessions || 0) + 1,
|
|
105
|
+
lastActiveProject: projectName,
|
|
106
|
+
lastActiveDate: now,
|
|
107
|
+
projectHistory: history
|
|
108
|
+
};
|
|
109
|
+
fs.writeFileSync(statePath, yaml.dump(state, { lineWidth: 120, noRefs: true, sortKeys: false }), "utf8");
|
|
110
|
+
}
|
|
111
|
+
function loadAllAgentStates(rootDir) {
|
|
112
|
+
const stateDir = path.join(rootDir, PROJECT_STATE_DIR);
|
|
113
|
+
if (!fs.existsSync(stateDir)) return [];
|
|
114
|
+
try {
|
|
115
|
+
return fs.readdirSync(stateDir).filter((f) => f.endsWith(".yaml")).map((f) => {
|
|
116
|
+
try {
|
|
117
|
+
const content = fs.readFileSync(path.join(stateDir, f), "utf8");
|
|
118
|
+
return yaml.load(content);
|
|
119
|
+
} catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}).filter(Boolean);
|
|
123
|
+
} catch {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export {
|
|
129
|
+
loadAgentState,
|
|
130
|
+
saveAgentState,
|
|
131
|
+
recordAgentSession,
|
|
132
|
+
addPendingWork,
|
|
133
|
+
completePendingWork,
|
|
134
|
+
addProjectPattern,
|
|
135
|
+
loadGlobalAgentState,
|
|
136
|
+
updateGlobalAgentState,
|
|
137
|
+
loadAllAgentStates
|
|
138
|
+
};
|
|
@@ -30,6 +30,29 @@ function appendSessionWorkEntry(rootDir, entry) {
|
|
|
30
30
|
}
|
|
31
31
|
const line = JSON.stringify(entry) + "\n";
|
|
32
32
|
fs.appendFileSync(filePath, line, "utf8");
|
|
33
|
+
if (entry.type === "user-verdict" && entry.agent && entry.symbols?.length) {
|
|
34
|
+
import("./agent-loader-TFIANSF4.js").then(({ loadAgentProfile, saveAgentProfile }) => {
|
|
35
|
+
try {
|
|
36
|
+
const profile = loadAgentProfile(rootDir, entry.agent);
|
|
37
|
+
if (profile?.expertise) {
|
|
38
|
+
const delta = entry.verdict === "accepted" ? 0.03 : entry.verdict === "dismissed" ? -0.02 : entry.verdict === "revised" ? -0.01 : 0;
|
|
39
|
+
if (delta !== 0) {
|
|
40
|
+
for (const symbol of entry.symbols) {
|
|
41
|
+
const exp = profile.expertise.find((e) => e.symbol === symbol);
|
|
42
|
+
if (exp) {
|
|
43
|
+
exp.confidence = Math.max(0, Math.min(1, exp.confidence + delta));
|
|
44
|
+
exp.sessions = (exp.sessions || 0) + 1;
|
|
45
|
+
exp.lastTouch = (/* @__PURE__ */ new Date()).toISOString();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
saveAgentProfile(entry.agent, profile, "global");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
} catch {
|
|
52
|
+
}
|
|
53
|
+
}).catch(() => {
|
|
54
|
+
});
|
|
55
|
+
}
|
|
33
56
|
} catch {
|
|
34
57
|
}
|
|
35
58
|
}
|
|
@@ -267,7 +267,7 @@ function mergeAgentProfileWithManifest(agentDef, profile, projectName) {
|
|
|
267
267
|
transferablePatterns: (profile.transferable || []).filter((p) => p.successRate >= 0.7).map((p) => ({ id: p.id, description: p.description, successRate: p.successRate }))
|
|
268
268
|
};
|
|
269
269
|
}
|
|
270
|
-
function buildProfileEnrichment(profile, relevantSymbols, notebookEntries, ambientContext) {
|
|
270
|
+
function buildProfileEnrichment(profile, relevantSymbols, notebookEntries, ambientContext, agentState) {
|
|
271
271
|
const parts = [];
|
|
272
272
|
if (profile.personality) {
|
|
273
273
|
const p = profile.personality;
|
|
@@ -304,6 +304,32 @@ function buildProfileEnrichment(profile, relevantSymbols, notebookEntries, ambie
|
|
|
304
304
|
parts.push("");
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
|
+
if (agentState) {
|
|
308
|
+
parts.push("");
|
|
309
|
+
parts.push("## Your Recent Work on This Project");
|
|
310
|
+
if (agentState.lastSession) {
|
|
311
|
+
const ageMs = Date.now() - new Date(agentState.lastSession.date).getTime();
|
|
312
|
+
const ageHours = Math.floor(ageMs / (60 * 60 * 1e3));
|
|
313
|
+
const ageStr = ageHours < 24 ? `${ageHours}h ago` : `${Math.floor(ageHours / 24)}d ago`;
|
|
314
|
+
parts.push(`Last session (${ageStr}): ${agentState.lastSession.summary}`);
|
|
315
|
+
}
|
|
316
|
+
if (agentState.sessionsOnProject) {
|
|
317
|
+
parts.push(`Sessions on this project: ${agentState.sessionsOnProject}`);
|
|
318
|
+
}
|
|
319
|
+
if (agentState.pendingWork?.length) {
|
|
320
|
+
parts.push("**Pending from last session:**");
|
|
321
|
+
for (const item of agentState.pendingWork.slice(0, 5)) {
|
|
322
|
+
parts.push(`- ${item}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (agentState.recentPatterns?.length) {
|
|
326
|
+
parts.push("**Project patterns you've learned:**");
|
|
327
|
+
for (const pattern of agentState.recentPatterns.slice(0, 5)) {
|
|
328
|
+
parts.push(`- ${pattern}`);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
parts.push("");
|
|
332
|
+
}
|
|
307
333
|
if (profile.attention) {
|
|
308
334
|
const att = profile.attention;
|
|
309
335
|
const attParts = [];
|
package/dist/mcp.js
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getPluginUpdateNotice,
|
|
4
|
+
schedulePluginUpdateCheck
|
|
5
|
+
} from "./chunk-5EWAQHFY.js";
|
|
6
|
+
import {
|
|
7
|
+
PatternMatcher,
|
|
8
|
+
PatternSuggester,
|
|
9
|
+
SentinelStorage,
|
|
10
|
+
StatsCalculator,
|
|
11
|
+
TimelineBuilder,
|
|
12
|
+
loadAllSeedPatterns
|
|
13
|
+
} from "./chunk-ZDHLG5VP.js";
|
|
2
14
|
import {
|
|
3
15
|
getDecisionSummary,
|
|
4
16
|
loadDecisions,
|
|
5
17
|
recordDecision
|
|
6
18
|
} from "./chunk-EZ3GOCYC.js";
|
|
19
|
+
import {
|
|
20
|
+
loadAllAgentStates
|
|
21
|
+
} from "./chunk-54LTTQBH.js";
|
|
7
22
|
import {
|
|
8
23
|
acknowledgeMessages,
|
|
9
24
|
approveFileRequest,
|
|
@@ -58,7 +73,6 @@ import {
|
|
|
58
73
|
getReferencesFrom,
|
|
59
74
|
getReferencesTo,
|
|
60
75
|
getReindexToolsList,
|
|
61
|
-
getSessionTracker,
|
|
62
76
|
getSymbol,
|
|
63
77
|
getSymbolCounts,
|
|
64
78
|
getSymbolsByType,
|
|
@@ -66,9 +80,6 @@ import {
|
|
|
66
80
|
handleReindexTool,
|
|
67
81
|
incrementHeatmap,
|
|
68
82
|
loadDiplomas,
|
|
69
|
-
loadGlobalAntipatterns,
|
|
70
|
-
loadGlobalDecisions,
|
|
71
|
-
loadGlobalPreferences,
|
|
72
83
|
loadNote,
|
|
73
84
|
loadPath,
|
|
74
85
|
loadPersona,
|
|
@@ -83,8 +94,6 @@ import {
|
|
|
83
94
|
parsePurposeFileDetailed,
|
|
84
95
|
rebuildStaticFiles,
|
|
85
96
|
rebuildUniversityIndex,
|
|
86
|
-
recordGlobalAntipattern,
|
|
87
|
-
recordGlobalDecision,
|
|
88
97
|
recordProtocol,
|
|
89
98
|
removeStep,
|
|
90
99
|
saveDiploma,
|
|
@@ -105,26 +114,13 @@ import {
|
|
|
105
114
|
validateProtocol,
|
|
106
115
|
validatePurposeFile,
|
|
107
116
|
validateUniversityContent
|
|
108
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-4BLYIB7J.js";
|
|
109
118
|
import "./chunk-L27I3CPZ.js";
|
|
110
119
|
import {
|
|
111
120
|
getWorkLogSummary,
|
|
112
121
|
loadWorkLogEntries,
|
|
113
122
|
recordWorkLog
|
|
114
123
|
} from "./chunk-TAIJOFOE.js";
|
|
115
|
-
import {
|
|
116
|
-
getPluginUpdateNotice,
|
|
117
|
-
schedulePluginUpdateCheck
|
|
118
|
-
} from "./chunk-5EWAQHFY.js";
|
|
119
|
-
import "./chunk-SDDCVUCV.js";
|
|
120
|
-
import {
|
|
121
|
-
completeTask,
|
|
122
|
-
createTask,
|
|
123
|
-
loadTask,
|
|
124
|
-
loadTasks,
|
|
125
|
-
shelveTask,
|
|
126
|
-
updateTask
|
|
127
|
-
} from "./chunk-CSD7IHSN.js";
|
|
128
124
|
import {
|
|
129
125
|
addLoreAssessment,
|
|
130
126
|
deleteLoreEntry,
|
|
@@ -135,6 +131,23 @@ import {
|
|
|
135
131
|
recordLoreEntry,
|
|
136
132
|
updateLoreEntry
|
|
137
133
|
} from "./chunk-5VKJBNJL.js";
|
|
134
|
+
import {
|
|
135
|
+
getSessionTracker,
|
|
136
|
+
loadGlobalAntipatterns,
|
|
137
|
+
loadGlobalDecisions,
|
|
138
|
+
loadGlobalPreferences,
|
|
139
|
+
recordGlobalAntipattern,
|
|
140
|
+
recordGlobalDecision
|
|
141
|
+
} from "./chunk-4L3UTYQX.js";
|
|
142
|
+
import "./chunk-CL7JSK52.js";
|
|
143
|
+
import {
|
|
144
|
+
completeTask,
|
|
145
|
+
createTask,
|
|
146
|
+
loadTask,
|
|
147
|
+
loadTasks,
|
|
148
|
+
shelveTask,
|
|
149
|
+
updateTask
|
|
150
|
+
} from "./chunk-CSD7IHSN.js";
|
|
138
151
|
import {
|
|
139
152
|
addNotebookEntry,
|
|
140
153
|
adjustAttentionFromFeedback,
|
|
@@ -159,7 +172,7 @@ import {
|
|
|
159
172
|
queryEvents,
|
|
160
173
|
resolveDebate,
|
|
161
174
|
searchNotebooks
|
|
162
|
-
} from "./chunk-
|
|
175
|
+
} from "./chunk-VPPK3SY4.js";
|
|
163
176
|
import {
|
|
164
177
|
buildProfileEnrichment,
|
|
165
178
|
init_agent_loader,
|
|
@@ -170,7 +183,7 @@ import {
|
|
|
170
183
|
queryExpertise,
|
|
171
184
|
saveProjectRoster,
|
|
172
185
|
verifyIntegrity
|
|
173
|
-
} from "./chunk-
|
|
186
|
+
} from "./chunk-RJE5G7WO.js";
|
|
174
187
|
import {
|
|
175
188
|
getJournalStats,
|
|
176
189
|
init_journal_loader,
|
|
@@ -178,14 +191,6 @@ import {
|
|
|
178
191
|
loadJournalEntries,
|
|
179
192
|
recordJournalEntry
|
|
180
193
|
} from "./chunk-MCMOGQMU.js";
|
|
181
|
-
import {
|
|
182
|
-
PatternMatcher,
|
|
183
|
-
PatternSuggester,
|
|
184
|
-
SentinelStorage,
|
|
185
|
-
StatsCalculator,
|
|
186
|
-
TimelineBuilder,
|
|
187
|
-
loadAllSeedPatterns
|
|
188
|
-
} from "./chunk-ZDHLG5VP.js";
|
|
189
194
|
import {
|
|
190
195
|
__esm,
|
|
191
196
|
__export,
|
|
@@ -6095,10 +6100,11 @@ async function handleOrchestrateInline(args, ctx) {
|
|
|
6095
6100
|
}
|
|
6096
6101
|
let agentProfiles = /* @__PURE__ */ new Map();
|
|
6097
6102
|
try {
|
|
6098
|
-
const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-
|
|
6103
|
+
const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-TFIANSF4.js");
|
|
6099
6104
|
const { loadDecisions: loadDecisions3 } = await import("./decision-loader-WWCLIQPJ.js");
|
|
6100
6105
|
const { loadJournalEntries: loadJournalEntries2 } = await import("./journal-loader-5EYSBFFY.js");
|
|
6101
|
-
const { loadNominations: loadNominations2 } = await import("./nomination-engine-
|
|
6106
|
+
const { loadNominations: loadNominations2 } = await import("./nomination-engine-RV5CNO5B.js");
|
|
6107
|
+
const { loadAgentState: loadState } = await import("./agent-state-S5DAWPTF.js");
|
|
6102
6108
|
const recentDecisions = loadDecisions3(ctx.rootDir, { status: "active", limit: 5 }).map((d) => ({ title: d.title, decision: d.decision.slice(0, 150) }));
|
|
6103
6109
|
const pendingNominations = loadNominations2(ctx.rootDir, { pending_only: true, limit: 10 }).map((n) => ({ urgency: n.urgency, brief: n.brief }));
|
|
6104
6110
|
for (const stage of plan.stages) {
|
|
@@ -6111,11 +6117,17 @@ async function handleOrchestrateInline(args, ctx) {
|
|
|
6111
6117
|
transferable: true,
|
|
6112
6118
|
limit: 5
|
|
6113
6119
|
}).map((j) => ({ trigger: j.trigger, insight: j.insight.slice(0, 150) }));
|
|
6120
|
+
const agentProjectState = loadState(agentStep.name, ctx.rootDir);
|
|
6114
6121
|
let enrichment = buildProfileEnrichment2(profile, symbols, void 0, {
|
|
6115
6122
|
recentDecisions,
|
|
6116
6123
|
journalInsights,
|
|
6117
6124
|
pendingNominations
|
|
6118
|
-
}
|
|
6125
|
+
}, agentProjectState ? {
|
|
6126
|
+
lastSession: agentProjectState.lastSession,
|
|
6127
|
+
pendingWork: agentProjectState.pendingWork,
|
|
6128
|
+
recentPatterns: agentProjectState.recentPatterns,
|
|
6129
|
+
sessionsOnProject: agentProjectState.sessionsOnProject
|
|
6130
|
+
} : void 0);
|
|
6119
6131
|
if (profile.permissions) {
|
|
6120
6132
|
const constraints = ["\n## Permission Constraints"];
|
|
6121
6133
|
if (profile.permissions.paths?.deny?.length) {
|
|
@@ -6179,7 +6191,7 @@ async function handleOrchestrateInline(args, ctx) {
|
|
|
6179
6191
|
const orchestrationId = `orch-${Date.now().toString(36)}-${Math.random().toString(36).substring(2, 6)}`;
|
|
6180
6192
|
logOrchestration(ctx.rootDir, orchestrationId, task, plan);
|
|
6181
6193
|
try {
|
|
6182
|
-
const { appendSessionWorkEntry } = await import("./session-work-log-
|
|
6194
|
+
const { appendSessionWorkEntry } = await import("./session-work-log-MZ47OAPB.js");
|
|
6183
6195
|
for (const stage of stagePrompts) {
|
|
6184
6196
|
for (const agent of stage.agents) {
|
|
6185
6197
|
appendSessionWorkEntry(ctx.rootDir, {
|
|
@@ -6194,6 +6206,21 @@ async function handleOrchestrateInline(args, ctx) {
|
|
|
6194
6206
|
}
|
|
6195
6207
|
} catch {
|
|
6196
6208
|
}
|
|
6209
|
+
try {
|
|
6210
|
+
const { recordAgentSession } = await import("./agent-state-S5DAWPTF.js");
|
|
6211
|
+
const sessionTracker = await import("./session-tracker-C4BMD5WG.js");
|
|
6212
|
+
const sessionId = sessionTracker.default?.session?.sessionId || orchestrationId;
|
|
6213
|
+
for (const stage of stagePrompts) {
|
|
6214
|
+
for (const agent of stage.agents) {
|
|
6215
|
+
recordAgentSession(agent.agent, ctx.rootDir, {
|
|
6216
|
+
sessionId,
|
|
6217
|
+
summary: `${agent.attribution || agent.agent}: ${(agent.taskDescription || task).slice(0, 200)}`,
|
|
6218
|
+
symbolsTouched: symbols
|
|
6219
|
+
});
|
|
6220
|
+
}
|
|
6221
|
+
}
|
|
6222
|
+
} catch {
|
|
6223
|
+
}
|
|
6197
6224
|
const orchestrationThread = `thr-orch-${orchestrationId}`;
|
|
6198
6225
|
try {
|
|
6199
6226
|
const symphony = await import("./symphony-loader-UZGON56V.js");
|
|
@@ -6340,10 +6367,10 @@ async function handleAgentPrompt(args, ctx) {
|
|
|
6340
6367
|
let profileEnrichment;
|
|
6341
6368
|
let nickname;
|
|
6342
6369
|
try {
|
|
6343
|
-
const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-
|
|
6370
|
+
const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-TFIANSF4.js");
|
|
6344
6371
|
const { loadDecisions: loadDecisions3 } = await import("./decision-loader-WWCLIQPJ.js");
|
|
6345
6372
|
const { loadJournalEntries: loadJournalEntries2 } = await import("./journal-loader-5EYSBFFY.js");
|
|
6346
|
-
const { loadNominations: loadNominations2 } = await import("./nomination-engine-
|
|
6373
|
+
const { loadNominations: loadNominations2 } = await import("./nomination-engine-RV5CNO5B.js");
|
|
6347
6374
|
const profile = loadAgentProfile2(ctx.rootDir, agentName);
|
|
6348
6375
|
if (profile) {
|
|
6349
6376
|
nickname = profile.nickname;
|
|
@@ -10267,7 +10294,7 @@ async function handleLoreTool(name, args, ctx) {
|
|
|
10267
10294
|
try {
|
|
10268
10295
|
const agentId = process.env.PARADIGM_AGENT_ID;
|
|
10269
10296
|
if (agentId && symbols_touched && symbols_touched.length > 0) {
|
|
10270
|
-
const { updateExpertiseFromLore } = await import("./agent-loader-
|
|
10297
|
+
const { updateExpertiseFromLore } = await import("./agent-loader-TFIANSF4.js");
|
|
10271
10298
|
updateExpertiseFromLore(ctx.rootDir, agentId, {
|
|
10272
10299
|
symbols_touched,
|
|
10273
10300
|
confidence: confidence != null && confidence >= 0 && confidence <= 1 ? confidence : void 0
|
|
@@ -10438,7 +10465,7 @@ async function handleLoreTool(name, args, ctx) {
|
|
|
10438
10465
|
try {
|
|
10439
10466
|
const agentId = process.env.PARADIGM_AGENT_ID;
|
|
10440
10467
|
if (agentId && success && entryToAssess.symbols_touched?.length) {
|
|
10441
|
-
const { updateExpertiseFromAssessment } = await import("./agent-loader-
|
|
10468
|
+
const { updateExpertiseFromAssessment } = await import("./agent-loader-TFIANSF4.js");
|
|
10442
10469
|
updateExpertiseFromAssessment(ctx.rootDir, agentId, {
|
|
10443
10470
|
symbols_touched: entryToAssess.symbols_touched,
|
|
10444
10471
|
verdict
|
|
@@ -17694,26 +17721,37 @@ async function handleAgentTool(name, args, ctx) {
|
|
|
17694
17721
|
}
|
|
17695
17722
|
const activeProfiles = roster ? profiles.filter((p) => roster.includes(p.id)) : profiles;
|
|
17696
17723
|
const inactiveCount = roster ? profiles.length - activeProfiles.length : 0;
|
|
17724
|
+
const allStates = loadAllAgentStates(ctx.rootDir);
|
|
17725
|
+
const stateMap = new Map(allStates.map((s) => [s.id, s]));
|
|
17697
17726
|
return {
|
|
17698
17727
|
handled: true,
|
|
17699
17728
|
text: JSON.stringify({
|
|
17700
17729
|
count: activeProfiles.length,
|
|
17701
17730
|
totalAvailable: profiles.length,
|
|
17702
17731
|
...roster ? { rosterActive: true, inactiveCount } : { rosterActive: false },
|
|
17703
|
-
agents: activeProfiles.map((p) =>
|
|
17704
|
-
|
|
17705
|
-
|
|
17706
|
-
|
|
17707
|
-
|
|
17708
|
-
|
|
17709
|
-
|
|
17710
|
-
|
|
17711
|
-
|
|
17712
|
-
|
|
17713
|
-
|
|
17714
|
-
|
|
17715
|
-
|
|
17716
|
-
|
|
17732
|
+
agents: activeProfiles.map((p) => {
|
|
17733
|
+
const state = stateMap.get(p.id);
|
|
17734
|
+
return {
|
|
17735
|
+
id: p.id,
|
|
17736
|
+
role: p.role,
|
|
17737
|
+
nickname: p.nickname,
|
|
17738
|
+
personality: p.personality,
|
|
17739
|
+
...state ? {
|
|
17740
|
+
lastSession: state.lastSession?.summary?.slice(0, 100),
|
|
17741
|
+
lastSessionAge: state.lastSession?.date,
|
|
17742
|
+
pendingWork: state.pendingWork?.length || 0,
|
|
17743
|
+
sessionsOnProject: state.sessionsOnProject || 0
|
|
17744
|
+
} : {},
|
|
17745
|
+
topExpertise: (p.expertise || []).sort((a, b) => b.confidence - a.confidence).slice(0, 5).map((e) => ({
|
|
17746
|
+
symbol: e.symbol,
|
|
17747
|
+
confidence: parseFloat(e.confidence.toFixed(2)),
|
|
17748
|
+
sessions: e.sessions
|
|
17749
|
+
})),
|
|
17750
|
+
projectContexts: Object.keys(p.contexts || {}),
|
|
17751
|
+
transferableCount: (p.transferable || []).length,
|
|
17752
|
+
...p.attention?.threshold != null ? { threshold: p.attention.threshold } : {}
|
|
17753
|
+
};
|
|
17754
|
+
})
|
|
17717
17755
|
}, null, 2)
|
|
17718
17756
|
};
|
|
17719
17757
|
}
|
|
@@ -19490,7 +19528,7 @@ async function handleAmbientTool(name, args, ctx) {
|
|
|
19490
19528
|
const engaged = engageNomination(ctx.rootDir, nominationId, response, reason);
|
|
19491
19529
|
if (engaged) {
|
|
19492
19530
|
try {
|
|
19493
|
-
const { appendSessionWorkEntry } = await import("./session-work-log-
|
|
19531
|
+
const { appendSessionWorkEntry } = await import("./session-work-log-MZ47OAPB.js");
|
|
19494
19532
|
const noms = loadNominations(ctx.rootDir, { limit: 500 });
|
|
19495
19533
|
const nom = noms.find((n) => n.id === nominationId);
|
|
19496
19534
|
appendSessionWorkEntry(ctx.rootDir, {
|
|
@@ -20728,7 +20766,7 @@ Update command:
|
|
|
20728
20766
|
trackToolCall(noWsText.length, name);
|
|
20729
20767
|
return { content: [{ type: "text", text: noWsText }] };
|
|
20730
20768
|
}
|
|
20731
|
-
const { rebuildStaticFiles: rebuildStaticFiles2 } = await import("./reindex-
|
|
20769
|
+
const { rebuildStaticFiles: rebuildStaticFiles2 } = await import("./reindex-5LTD53ZC.js");
|
|
20732
20770
|
const memberResults = [];
|
|
20733
20771
|
for (const member of ctx.workspace.config.members) {
|
|
20734
20772
|
const memberAbsPath = path33.resolve(path33.dirname(ctx.workspace.workspacePath), member.path);
|
|
@@ -17,8 +17,8 @@ import {
|
|
|
17
17
|
processEvent,
|
|
18
18
|
processPendingEvents,
|
|
19
19
|
resolveDebate
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-VPPK3SY4.js";
|
|
21
|
+
import "./chunk-RJE5G7WO.js";
|
|
22
22
|
import "./chunk-MCMOGQMU.js";
|
|
23
23
|
import "./chunk-7N7GSU6K.js";
|
|
24
24
|
init_nomination_engine();
|
|
@@ -3,10 +3,11 @@ import {
|
|
|
3
3
|
getReindexToolsList,
|
|
4
4
|
handleReindexTool,
|
|
5
5
|
rebuildStaticFiles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4BLYIB7J.js";
|
|
7
7
|
import "./chunk-L27I3CPZ.js";
|
|
8
|
-
import "./chunk-SDDCVUCV.js";
|
|
9
8
|
import "./chunk-5VKJBNJL.js";
|
|
9
|
+
import "./chunk-4L3UTYQX.js";
|
|
10
|
+
import "./chunk-CL7JSK52.js";
|
|
10
11
|
import "./chunk-7N7GSU6K.js";
|
|
11
12
|
export {
|
|
12
13
|
getReindexToolsList,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
MODEL_PRICING,
|
|
4
|
+
getSessionTracker,
|
|
5
|
+
resetSessionTracker
|
|
6
|
+
} from "./chunk-4L3UTYQX.js";
|
|
7
|
+
import "./chunk-CL7JSK52.js";
|
|
8
|
+
import "./chunk-7N7GSU6K.js";
|
|
9
|
+
export {
|
|
10
|
+
MODEL_PRICING,
|
|
11
|
+
getSessionTracker,
|
|
12
|
+
resetSessionTracker
|
|
13
|
+
};
|