@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.
@@ -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 = [];
@@ -4,7 +4,7 @@ import {
4
4
  loadAgentProfile,
5
5
  loadAllAgentProfiles,
6
6
  saveAgentProfile
7
- } from "./chunk-MA7G4CTI.js";
7
+ } from "./chunk-RJE5G7WO.js";
8
8
  import {
9
9
  init_journal_loader,
10
10
  journal_loader_exports
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-3UCH56D5.js";
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-V7BZBBI6.js";
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-MA7G4CTI.js";
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-X7TDYLFL.js");
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-LLREC5BZ.js");
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-KDOH4GER.js");
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-X7TDYLFL.js");
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-LLREC5BZ.js");
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-X7TDYLFL.js");
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-X7TDYLFL.js");
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
- id: p.id,
17705
- role: p.role,
17706
- nickname: p.nickname,
17707
- personality: p.personality,
17708
- topExpertise: (p.expertise || []).sort((a, b) => b.confidence - a.confidence).slice(0, 5).map((e) => ({
17709
- symbol: e.symbol,
17710
- confidence: parseFloat(e.confidence.toFixed(2)),
17711
- sessions: e.sessions
17712
- })),
17713
- projectContexts: Object.keys(p.contexts || {}),
17714
- transferableCount: (p.transferable || []).length,
17715
- ...p.attention?.threshold != null ? { threshold: p.attention.threshold } : {}
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-KDOH4GER.js");
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-U2HEB6GW.js");
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-V7BZBBI6.js";
21
- import "./chunk-MA7G4CTI.js";
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-3UCH56D5.js";
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
+ };
@@ -7,7 +7,7 @@ import {
7
7
  getContributingAgents,
8
8
  init_session_work_log,
9
9
  readSessionWorkLog
10
- } from "./chunk-SDDCVUCV.js";
10
+ } from "./chunk-CL7JSK52.js";
11
11
  import "./chunk-7N7GSU6K.js";
12
12
  init_session_work_log();
13
13
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-company/paradigm",
3
- "version": "5.9.1",
3
+ "version": "5.10.0",
4
4
  "description": "Unified CLI for Paradigm developer tools",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",