@a-company/paradigm 5.9.0 → 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.
Files changed (29) hide show
  1. package/dist/{accept-orchestration-GX2YRWM4.js → accept-orchestration-UQLM7PTQ.js} +4 -4
  2. package/dist/{agent-loader-X7TDYLFL.js → agent-loader-TFIANSF4.js} +1 -1
  3. package/dist/agent-state-S5DAWPTF.js +24 -0
  4. package/dist/{chunk-3UCH56D5.js → chunk-4BLYIB7J.js} +270 -928
  5. package/dist/chunk-4L3UTYQX.js +677 -0
  6. package/dist/chunk-54LTTQBH.js +138 -0
  7. package/dist/chunk-5OUOLN6M.js +659 -0
  8. package/dist/{chunk-SDDCVUCV.js → chunk-CL7JSK52.js} +23 -0
  9. package/dist/{chunk-MA7G4CTI.js → chunk-RJE5G7WO.js} +27 -1
  10. package/dist/{chunk-EI32ZBE6.js → chunk-RTHA3XRE.js} +19 -672
  11. package/dist/{chunk-V7BZBBI6.js → chunk-VPPK3SY4.js} +1 -1
  12. package/dist/{chunk-WQITYKHM.js → chunk-YRZ5RPEB.js} +7 -7
  13. package/dist/{diff-RQLLNAFI.js → diff-D4X53HAC.js} +4 -4
  14. package/dist/{docs-AIY6VNF7.js → docs-QIYKO3BR.js} +1 -1
  15. package/dist/index.js +19 -19
  16. package/dist/mcp.js +140 -66
  17. package/dist/model-discovery-D2H3VBGC.js +8 -0
  18. package/dist/{nomination-engine-LLREC5BZ.js → nomination-engine-RV5CNO5B.js} +2 -2
  19. package/dist/{orchestrate-XZA33TJC.js → orchestrate-JLILBBJE.js} +4 -4
  20. package/dist/{reindex-U2HEB6GW.js → reindex-5LTD53ZC.js} +3 -2
  21. package/dist/{serve-QWWJP2EW.js → serve-CAH3PHE7.js} +1 -1
  22. package/dist/session-tracker-C4BMD5WG.js +13 -0
  23. package/dist/{session-work-log-KDOH4GER.js → session-work-log-MZ47OAPB.js} +1 -1
  24. package/dist/{shift-VJUGMADR.js → shift-D2JOHHBF.js} +33 -5
  25. package/dist/{spawn-AW6GDECS.js → spawn-RCHNXDHE.js} +4 -4
  26. package/dist/{team-7HG7XK5C.js → team-O5MIIFMA.js} +6 -5
  27. package/package.json +1 -1
  28. package/dist/{chunk-LSRABQIY.js → chunk-45MUDW6E.js} +3 -3
  29. /package/dist/{platform-server-U5L2G3EU.js → platform-server-H5YO3DQD.js} +0 -0
@@ -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
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- AgentSpawner,
4
- extractSymbols
5
- } from "./chunk-LSRABQIY.js";
6
- import {
7
- AuditLogger
8
- } from "./chunk-PBHIFAL4.js";
9
2
  import {
10
3
  suggestAgentsForTask
11
4
  } from "./chunk-6QC3YGB6.js";
5
+ import {
6
+ AgentSpawner,
7
+ extractSymbols
8
+ } from "./chunk-45MUDW6E.js";
12
9
  import {
13
10
  loadAgentsManifest
14
11
  } from "./chunk-PMXRGPRQ.js";
12
+ import {
13
+ AuditLogger
14
+ } from "./chunk-PBHIFAL4.js";
15
15
  import {
16
16
  calculateCost
17
17
  } from "./chunk-5JGJACDU.js";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BackgroundOrchestrator
4
- } from "./chunk-WQITYKHM.js";
5
- import "./chunk-LSRABQIY.js";
6
- import "./chunk-PBHIFAL4.js";
7
- import "./chunk-TXESEO7Y.js";
4
+ } from "./chunk-YRZ5RPEB.js";
8
5
  import "./chunk-6QC3YGB6.js";
6
+ import "./chunk-45MUDW6E.js";
9
7
  import "./chunk-PMXRGPRQ.js";
8
+ import "./chunk-PBHIFAL4.js";
9
+ import "./chunk-TXESEO7Y.js";
10
10
  import "./chunk-5JGJACDU.js";
11
11
  import "./chunk-ZGUAAVMA.js";
12
12
  import "./chunk-EDOAWN7J.js";
@@ -17,7 +17,7 @@ async function docsServeCommand(options) {
17
17
  const shouldOpen = options.open !== false;
18
18
  console.log(chalk.cyan("\n Starting Paradigm Docs...\n"));
19
19
  try {
20
- const { startPlatformServer } = await import("./platform-server-U5L2G3EU.js");
20
+ const { startPlatformServer } = await import("./platform-server-H5YO3DQD.js");
21
21
  await startPlatformServer({
22
22
  projectDir,
23
23
  port,
package/dist/index.js CHANGED
@@ -111,7 +111,7 @@ ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u253
111
111
  program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
112
112
  program.command("init").description("Initialize Paradigm in the current project").option("-f, --force", "Overwrite existing files").option("--name <name>", "Project name").option("--ide <ide>", "Target IDE: cursor, copilot, windsurf, claude").option("--stack <stack>", "Stack preset (e.g., nextjs, fastapi, swift-ios). Auto-detected if omitted.").option("--migrate", "Output migration prompt for existing IDE files").option("--quick", "Non-interactive mode with smart defaults").option("--dry-run", "Show what would be created without creating").action(initCommand);
113
113
  program.command("shift").description("Full project setup in one command (init + team init + scan + sync all IDEs + doctor)").option("-f, --force", "Reinitialize even if already setup").option("-q, --quick", "Skip slow operations (scan)").option("--verify", "Run health checks after setup").option("--ide <ide>", "Target specific IDE instead of all").option("--configure-models", "Force model configuration prompts for team agents").option("--stack <stack>", "Stack preset (e.g., nextjs, fastapi, swift-ios). Auto-detected if omitted.").option("--workspace <name>", "Create or join a multi-project workspace with this name (creates ../.paradigm-workspace)").option("--workspace-path <path>", "Custom workspace file location (default: ../.paradigm-workspace)").action(async (options) => {
114
- const { shiftCommand } = await import("./shift-VJUGMADR.js");
114
+ const { shiftCommand } = await import("./shift-D2JOHHBF.js");
115
115
  await shiftCommand(options);
116
116
  });
117
117
  program.command("presets").description("List available stack presets for paradigm init/shift").option("-d, --discipline <discipline>", "Filter by discipline (e.g., fullstack, api, mobile)").action(async (options) => {
@@ -254,7 +254,7 @@ flowCmd.action(() => {
254
254
  });
255
255
  var teamCmd = program.command("team").description("Multi-agent orchestration commands");
256
256
  teamCmd.command("init [path]").description("Initialize team configuration with default agents").option("-f, --force", "Overwrite existing configuration").option("--configure-models", "Force model configuration prompts").option("--no-configure-models", "Skip model configuration").option("--json", "Output as JSON").action(async (path2, options) => {
257
- const { teamInitCommand } = await import("./team-7HG7XK5C.js");
257
+ const { teamInitCommand } = await import("./team-O5MIIFMA.js");
258
258
  await teamInitCommand(path2, {
259
259
  ...options,
260
260
  configureModels: options.configureModels,
@@ -262,47 +262,47 @@ teamCmd.command("init [path]").description("Initialize team configuration with d
262
262
  });
263
263
  });
264
264
  teamCmd.command("status [path]").description("Show current team status").option("--running", "Show only running orchestrations").option("--id <id>", "Show specific orchestration").option("--json", "Output as JSON").action(async (path2, options) => {
265
- const { teamStatusCommand } = await import("./team-7HG7XK5C.js");
265
+ const { teamStatusCommand } = await import("./team-O5MIIFMA.js");
266
266
  await teamStatusCommand(path2, options);
267
267
  });
268
268
  teamCmd.command("handoff [path]").description("Hand off current task to another agent").requiredOption("-t, --to <agent>", "Target agent name").option("-s, --summary <text>", "Summary of what was done").option("--json", "Output as JSON").action(async (path2, options) => {
269
- const { teamHandoffCommand } = await import("./team-7HG7XK5C.js");
269
+ const { teamHandoffCommand } = await import("./team-O5MIIFMA.js");
270
270
  await teamHandoffCommand(path2, options);
271
271
  });
272
272
  teamCmd.command("accept [handoff-id] [path]").description("Accept a pending handoff").option("-n, --note <text>", "Acceptance note").option("--json", "Output as JSON").action(async (handoffId, path2, options) => {
273
- const { teamAcceptCommand } = await import("./team-7HG7XK5C.js");
273
+ const { teamAcceptCommand } = await import("./team-O5MIIFMA.js");
274
274
  await teamAcceptCommand(handoffId, path2, options);
275
275
  });
276
276
  teamCmd.command("check [path]").description("Check for conflicts and team health issues").option("--json", "Output as JSON").action(async (path2, options) => {
277
- const { teamCheckCommand } = await import("./team-7HG7XK5C.js");
277
+ const { teamCheckCommand } = await import("./team-O5MIIFMA.js");
278
278
  await teamCheckCommand(path2, options);
279
279
  });
280
280
  teamCmd.command("history [path]").description("Show full activity log").option("-l, --limit <number>", "Number of entries to show", "50").option("--json", "Output as JSON").action(async (path2, options) => {
281
- const { teamHistoryCommand } = await import("./team-7HG7XK5C.js");
281
+ const { teamHistoryCommand } = await import("./team-O5MIIFMA.js");
282
282
  await teamHistoryCommand(path2, { ...options, limit: parseInt(options.limit) });
283
283
  });
284
284
  teamCmd.command("reset [path]").description("Reset team state for fresh start").option("-f, --force", "Force reset even with pending work").option("--json", "Output as JSON").action(async (path2, options) => {
285
- const { teamResetCommand } = await import("./team-7HG7XK5C.js");
285
+ const { teamResetCommand } = await import("./team-O5MIIFMA.js");
286
286
  await teamResetCommand(path2, options);
287
287
  });
288
288
  teamCmd.command("spawn <agent> [path]").description("Spawn an AI agent to work on a task").requiredOption("-t, --task <task>", "Task for the agent to perform").option("-m, --model <model>", "Model to use: opus, sonnet, haiku").option("-p, --provider <provider>", "Provider: auto, claude, claude-code, claude-cli, manual").option("--budget <budget>", 'Budget limits (e.g., "tokens=100000,cost=2")').option("--timeout <ms>", "Timeout in milliseconds").option("--checkpoint", "Pause for approval before writes/deletes").option("-q, --quiet", "Suppress output").option("--json", "Output as JSON").action(async (agent, path2, options) => {
289
- const { teamSpawnCommand } = await import("./spawn-AW6GDECS.js");
289
+ const { teamSpawnCommand } = await import("./spawn-RCHNXDHE.js");
290
290
  await teamSpawnCommand(agent, path2, options);
291
291
  });
292
292
  teamCmd.command("orchestrate <task> [path]").description("Orchestrate a multi-agent task").option("--solo", "Run in solo mode (single Claude)").option("--faceted", "Run in faceted mode (multi-agent, default)").option("--compare", "Run both modes and compare results").option("--background", "Run in background mode (returns immediately)").option("--notify <methods>", "Notification methods: bell,desktop,file,webhook (default: bell)").option("-m, --model <model>", "Orchestrator model: opus, sonnet, haiku").option("-p, --provider <provider>", "Provider: auto, claude, claude-code, claude-cli, manual").option("--budget <budget>", 'Budget limits (e.g., "tokens=500000,cost=5")').option("--checkpoint", "Pause for approval between agents").option("--live", "Stream agent output live").option("--pm", "Enable PM governance (compliance checks before/after)").option("-q, --quiet", "Suppress output").option("--json", "Output as JSON").action(async (task, path2, options) => {
293
- const { teamOrchestrateCommand } = await import("./orchestrate-XZA33TJC.js");
293
+ const { teamOrchestrateCommand } = await import("./orchestrate-JLILBBJE.js");
294
294
  await teamOrchestrateCommand(task, path2, options);
295
295
  });
296
296
  teamCmd.command("diff <orchestration-id> [path]").description("Show diff of changes from a completed orchestration").option("--full", "Show full file contents").option("--json", "Output as JSON").action(async (orchestrationId, path2, options) => {
297
- const { teamDiffCommand } = await import("./diff-RQLLNAFI.js");
297
+ const { teamDiffCommand } = await import("./diff-D4X53HAC.js");
298
298
  await teamDiffCommand(orchestrationId, path2, options);
299
299
  });
300
300
  teamCmd.command("accept-orch <orchestration-id> [path]").description("Accept orchestration changes").option("-n, --note <text>", "Acceptance note").option("--json", "Output as JSON").action(async (orchestrationId, path2, options) => {
301
- const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-GX2YRWM4.js");
301
+ const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-UQLM7PTQ.js");
302
302
  await teamAcceptOrchestrationCommand(orchestrationId, path2, options);
303
303
  });
304
304
  teamCmd.command("reject-orch <orchestration-id> [path]").description("Reject orchestration changes").option("-r, --reason <text>", "Rejection reason").option("--cleanup", "Delete created files").option("--json", "Output as JSON").action(async (orchestrationId, path2, options) => {
305
- const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-GX2YRWM4.js");
305
+ const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-UQLM7PTQ.js");
306
306
  await teamRejectOrchestrationCommand(orchestrationId, path2, options);
307
307
  });
308
308
  teamCmd.command("cost [path]").description("Show cost summary for orchestrations").option("--from <date>", "From date (ISO format)").option("--to <date>", "To date (ISO format)").option("--days <n>", "Last N days").option("-d, --detailed", "Show detailed breakdown").option("--json", "Output as JSON").action(async (path2, options) => {
@@ -318,7 +318,7 @@ teamCmd.command("providers [path]").description("Show available agent providers
318
318
  await teamProvidersCommand(path2, options);
319
319
  });
320
320
  teamCmd.command("models [path]").description("Configure or view agent model assignments").option("--refresh", "Refresh model cache from environment").option("--json", "Output as JSON").action(async (path2, options) => {
321
- const { teamModelsCommand } = await import("./team-7HG7XK5C.js");
321
+ const { teamModelsCommand } = await import("./team-O5MIIFMA.js");
322
322
  await teamModelsCommand(path2, options);
323
323
  });
324
324
  var agentsCmd = teamCmd.command("agents").description("Agent management commands");
@@ -333,7 +333,7 @@ agentsCmd.action(() => {
333
333
  console.log("\nRun `paradigm team agents suggest --help` for options.\n");
334
334
  });
335
335
  teamCmd.action(async () => {
336
- const { teamStatusCommand } = await import("./team-7HG7XK5C.js");
336
+ const { teamStatusCommand } = await import("./team-O5MIIFMA.js");
337
337
  await teamStatusCommand(void 0, {});
338
338
  });
339
339
  var pluginCmd = program.command("plugin").description("Plugin management commands");
@@ -719,7 +719,7 @@ loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open"
719
719
  await loreServeCommand(void 0, options);
720
720
  });
721
721
  program.command("serve").description("Launch Paradigm Platform \u2014 unified development management UI").option("-p, --port <port>", "Port to run on", "3850").option("--no-open", "Don't open browser automatically").option("--sections <list>", "Comma-separated sections to enable (e.g., lore,graph,git)").action(async (options) => {
722
- const { serveCommand } = await import("./serve-QWWJP2EW.js");
722
+ const { serveCommand } = await import("./serve-CAH3PHE7.js");
723
723
  await serveCommand(options);
724
724
  });
725
725
  var graphCmd = program.command("graph").description("Interactive symbol relationship graph").argument("[path]", "Project directory", void 0).option("-p, --port <port>", "Port to run on", "3841").option("--no-open", "Don't open browser automatically").action(async (path2, options) => {
@@ -857,15 +857,15 @@ universityCmd.option("-p, --port <port>", "Port to run on", "3839").option("--no
857
857
  });
858
858
  var docsCmd = program.command("docs").description("Auto-generated documentation from the symbol graph");
859
859
  docsCmd.command("serve").description("Launch interactive docs viewer in browser").option("-p, --port <port>", "Port number (default: 3850)").option("--no-open", "Do not open browser automatically").action(async (options) => {
860
- const { docsServeCommand } = await import("./docs-AIY6VNF7.js");
860
+ const { docsServeCommand } = await import("./docs-QIYKO3BR.js");
861
861
  await docsServeCommand(options);
862
862
  });
863
863
  docsCmd.command("build").description("Build static documentation site").option("-o, --output <dir>", "Output directory (default: from config or .paradigm/docs-site)").action(async (options) => {
864
- const { docsBuildCommand } = await import("./docs-AIY6VNF7.js");
864
+ const { docsBuildCommand } = await import("./docs-QIYKO3BR.js");
865
865
  await docsBuildCommand(options);
866
866
  });
867
867
  docsCmd.action(async () => {
868
- const { docsServeCommand } = await import("./docs-AIY6VNF7.js");
868
+ const { docsServeCommand } = await import("./docs-QIYKO3BR.js");
869
869
  await docsServeCommand({});
870
870
  });
871
871
  var pipelineCmd = program.command("pipeline").description("Spec pipeline \u2014 structured feature workflow with configurable gates");
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,
@@ -5717,14 +5722,50 @@ import * as path13 from "path";
5717
5722
  import * as yaml8 from "js-yaml";
5718
5723
  init_agent_loader();
5719
5724
  var SYMBOL_PATTERN = /[@#$%^!?&~][a-zA-Z0-9_-]+/g;
5720
- var DEFAULT_MODELS = {
5721
- architect: "opus",
5722
- security: "opus",
5723
- reviewer: "sonnet",
5724
- builder: "haiku",
5725
- tester: "haiku",
5726
- documentor: "haiku"
5725
+ var AGENT_TIERS = {
5726
+ architect: "tier-1",
5727
+ security: "tier-1",
5728
+ advocate: "tier-1",
5729
+ product: "tier-1",
5730
+ operations: "tier-1",
5731
+ sales: "tier-1",
5732
+ reviewer: "tier-2",
5733
+ designer: "tier-2",
5734
+ copywriter: "tier-2",
5735
+ researcher: "tier-2",
5736
+ analyst: "tier-2",
5737
+ dx: "tier-2",
5738
+ qa: "tier-2",
5739
+ debugger: "tier-2",
5740
+ builder: "tier-3",
5741
+ tester: "tier-3",
5742
+ documentor: "tier-3",
5743
+ sysadmin: "tier-3",
5744
+ archivist: "tier-3",
5745
+ release: "tier-3"
5746
+ };
5747
+ var DEFAULT_TIER_MODELS = {
5748
+ "tier-1": "opus",
5749
+ "tier-2": "sonnet",
5750
+ "tier-3": "haiku"
5727
5751
  };
5752
+ function resolveModelForAgent(agentName, rootDir, agentDef) {
5753
+ try {
5754
+ const configPath = path13.join(rootDir, ".paradigm", "config.yaml");
5755
+ if (fs12.existsSync(configPath)) {
5756
+ const config = yaml8.load(fs12.readFileSync(configPath, "utf8"));
5757
+ const resolution = config?.["model-resolution"];
5758
+ if (resolution) {
5759
+ const tier2 = agentDef?.modelTier || AGENT_TIERS[agentName] || "tier-2";
5760
+ if (resolution[tier2]) return resolution[tier2];
5761
+ }
5762
+ }
5763
+ } catch {
5764
+ }
5765
+ if (agentDef?.defaultModel) return agentDef.defaultModel;
5766
+ const tier = AGENT_TIERS[agentName] || "tier-2";
5767
+ return DEFAULT_TIER_MODELS[tier] || "sonnet";
5768
+ }
5728
5769
  var AGENT_TOKEN_ESTIMATES = {
5729
5770
  architect: { min: 5e3, max: 2e4 },
5730
5771
  security: { min: 3e3, max: 15e3 },
@@ -6059,10 +6100,11 @@ async function handleOrchestrateInline(args, ctx) {
6059
6100
  }
6060
6101
  let agentProfiles = /* @__PURE__ */ new Map();
6061
6102
  try {
6062
- const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-X7TDYLFL.js");
6103
+ const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-TFIANSF4.js");
6063
6104
  const { loadDecisions: loadDecisions3 } = await import("./decision-loader-WWCLIQPJ.js");
6064
6105
  const { loadJournalEntries: loadJournalEntries2 } = await import("./journal-loader-5EYSBFFY.js");
6065
- 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");
6066
6108
  const recentDecisions = loadDecisions3(ctx.rootDir, { status: "active", limit: 5 }).map((d) => ({ title: d.title, decision: d.decision.slice(0, 150) }));
6067
6109
  const pendingNominations = loadNominations2(ctx.rootDir, { pending_only: true, limit: 10 }).map((n) => ({ urgency: n.urgency, brief: n.brief }));
6068
6110
  for (const stage of plan.stages) {
@@ -6075,11 +6117,17 @@ async function handleOrchestrateInline(args, ctx) {
6075
6117
  transferable: true,
6076
6118
  limit: 5
6077
6119
  }).map((j) => ({ trigger: j.trigger, insight: j.insight.slice(0, 150) }));
6120
+ const agentProjectState = loadState(agentStep.name, ctx.rootDir);
6078
6121
  let enrichment = buildProfileEnrichment2(profile, symbols, void 0, {
6079
6122
  recentDecisions,
6080
6123
  journalInsights,
6081
6124
  pendingNominations
6082
- });
6125
+ }, agentProjectState ? {
6126
+ lastSession: agentProjectState.lastSession,
6127
+ pendingWork: agentProjectState.pendingWork,
6128
+ recentPatterns: agentProjectState.recentPatterns,
6129
+ sessionsOnProject: agentProjectState.sessionsOnProject
6130
+ } : void 0);
6083
6131
  if (profile.permissions) {
6084
6132
  const constraints = ["\n## Permission Constraints"];
6085
6133
  if (profile.permissions.paths?.deny?.length) {
@@ -6117,7 +6165,7 @@ async function handleOrchestrateInline(args, ctx) {
6117
6165
  name: manifestAgent?.name || agentStep.name,
6118
6166
  role: manifestAgent?.role || ROLE_PROMPTS[agentStep.name] || `${agentStep.name} agent`,
6119
6167
  focus: manifestAgent?.focus || { reads: ["**/*"], writes: ["**/*"] },
6120
- defaultModel: manifestAgent?.defaultModel || DEFAULT_MODELS[agentStep.name] || "sonnet",
6168
+ defaultModel: resolveModelForAgent(agentStep.name, ctx.rootDir, manifestAgent),
6121
6169
  triggers: manifestAgent?.triggers,
6122
6170
  handoff_to: manifestAgent?.handoff_to,
6123
6171
  context: manifestAgent?.context,
@@ -6143,7 +6191,7 @@ async function handleOrchestrateInline(args, ctx) {
6143
6191
  const orchestrationId = `orch-${Date.now().toString(36)}-${Math.random().toString(36).substring(2, 6)}`;
6144
6192
  logOrchestration(ctx.rootDir, orchestrationId, task, plan);
6145
6193
  try {
6146
- const { appendSessionWorkEntry } = await import("./session-work-log-KDOH4GER.js");
6194
+ const { appendSessionWorkEntry } = await import("./session-work-log-MZ47OAPB.js");
6147
6195
  for (const stage of stagePrompts) {
6148
6196
  for (const agent of stage.agents) {
6149
6197
  appendSessionWorkEntry(ctx.rootDir, {
@@ -6158,6 +6206,21 @@ async function handleOrchestrateInline(args, ctx) {
6158
6206
  }
6159
6207
  } catch {
6160
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
+ }
6161
6224
  const orchestrationThread = `thr-orch-${orchestrationId}`;
6162
6225
  try {
6163
6226
  const symphony = await import("./symphony-loader-UZGON56V.js");
@@ -6294,7 +6357,7 @@ async function handleAgentPrompt(args, ctx) {
6294
6357
  name: manifestAgent?.name || agentName,
6295
6358
  role: manifestAgent?.role || ROLE_PROMPTS[agentName] || ROLE_PROMPTS.builder,
6296
6359
  focus: manifestAgent?.focus || { reads: ["**/*"], writes: ["**/*"] },
6297
- defaultModel: manifestAgent?.defaultModel || DEFAULT_MODELS[agentName] || "sonnet",
6360
+ defaultModel: resolveModelForAgent(agentName, ctx.rootDir, manifestAgent),
6298
6361
  triggers: manifestAgent?.triggers,
6299
6362
  handoff_to: manifestAgent?.handoff_to,
6300
6363
  context: manifestAgent?.context,
@@ -6304,10 +6367,10 @@ async function handleAgentPrompt(args, ctx) {
6304
6367
  let profileEnrichment;
6305
6368
  let nickname;
6306
6369
  try {
6307
- const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-X7TDYLFL.js");
6370
+ const { loadAgentProfile: loadAgentProfile2, buildProfileEnrichment: buildProfileEnrichment2 } = await import("./agent-loader-TFIANSF4.js");
6308
6371
  const { loadDecisions: loadDecisions3 } = await import("./decision-loader-WWCLIQPJ.js");
6309
6372
  const { loadJournalEntries: loadJournalEntries2 } = await import("./journal-loader-5EYSBFFY.js");
6310
- const { loadNominations: loadNominations2 } = await import("./nomination-engine-LLREC5BZ.js");
6373
+ const { loadNominations: loadNominations2 } = await import("./nomination-engine-RV5CNO5B.js");
6311
6374
  const profile = loadAgentProfile2(ctx.rootDir, agentName);
6312
6375
  if (profile) {
6313
6376
  nickname = profile.nickname;
@@ -6578,7 +6641,7 @@ handoff_context: |
6578
6641
 
6579
6642
  This structured output helps track progress and pass context between agents.`);
6580
6643
  const prompt = parts.join("\n");
6581
- const model = agent.defaultModel || DEFAULT_MODELS[agent.name] || "sonnet";
6644
+ const model = agent.defaultModel || DEFAULT_TIER_MODELS[AGENT_TIERS[agent.name] || "tier-2"] || "sonnet";
6582
6645
  const attribution = options.nickname ? `[${options.nickname} (${agent.name})]` : `[${agent.name}]`;
6583
6646
  return {
6584
6647
  agent: agent.name,
@@ -6775,7 +6838,7 @@ function generateCostPreviewLocal(plan, classification) {
6775
6838
  for (const stage of plan.stages) {
6776
6839
  for (const agentStep of stage.agents) {
6777
6840
  const base = AGENT_BASE_TOKENS[agentStep.name] || { input: 5e3, output: 3e3 };
6778
- const model = DEFAULT_MODELS[agentStep.name] || "sonnet";
6841
+ const model = DEFAULT_TIER_MODELS[AGENT_TIERS[agentStep.name] || "tier-2"] || "sonnet";
6779
6842
  const pricing = MODEL_PRICING[model];
6780
6843
  const input = Math.round(base.input * complexityMultiplier);
6781
6844
  const output = Math.round(base.output * complexityMultiplier);
@@ -6793,7 +6856,7 @@ function generateCostPreviewLocal(plan, classification) {
6793
6856
  }
6794
6857
  let baselineCost = 0;
6795
6858
  for (const [agent, base] of Object.entries(AGENT_BASE_TOKENS)) {
6796
- const model = DEFAULT_MODELS[agent] || "sonnet";
6859
+ const model = DEFAULT_TIER_MODELS[AGENT_TIERS[agent] || "tier-2"] || "sonnet";
6797
6860
  const pricing = MODEL_PRICING[model];
6798
6861
  baselineCost += base.input / 1e6 * pricing.input + base.output / 1e6 * pricing.output;
6799
6862
  }
@@ -10231,7 +10294,7 @@ async function handleLoreTool(name, args, ctx) {
10231
10294
  try {
10232
10295
  const agentId = process.env.PARADIGM_AGENT_ID;
10233
10296
  if (agentId && symbols_touched && symbols_touched.length > 0) {
10234
- const { updateExpertiseFromLore } = await import("./agent-loader-X7TDYLFL.js");
10297
+ const { updateExpertiseFromLore } = await import("./agent-loader-TFIANSF4.js");
10235
10298
  updateExpertiseFromLore(ctx.rootDir, agentId, {
10236
10299
  symbols_touched,
10237
10300
  confidence: confidence != null && confidence >= 0 && confidence <= 1 ? confidence : void 0
@@ -10402,7 +10465,7 @@ async function handleLoreTool(name, args, ctx) {
10402
10465
  try {
10403
10466
  const agentId = process.env.PARADIGM_AGENT_ID;
10404
10467
  if (agentId && success && entryToAssess.symbols_touched?.length) {
10405
- const { updateExpertiseFromAssessment } = await import("./agent-loader-X7TDYLFL.js");
10468
+ const { updateExpertiseFromAssessment } = await import("./agent-loader-TFIANSF4.js");
10406
10469
  updateExpertiseFromAssessment(ctx.rootDir, agentId, {
10407
10470
  symbols_touched: entryToAssess.symbols_touched,
10408
10471
  verdict
@@ -17658,26 +17721,37 @@ async function handleAgentTool(name, args, ctx) {
17658
17721
  }
17659
17722
  const activeProfiles = roster ? profiles.filter((p) => roster.includes(p.id)) : profiles;
17660
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]));
17661
17726
  return {
17662
17727
  handled: true,
17663
17728
  text: JSON.stringify({
17664
17729
  count: activeProfiles.length,
17665
17730
  totalAvailable: profiles.length,
17666
17731
  ...roster ? { rosterActive: true, inactiveCount } : { rosterActive: false },
17667
- agents: activeProfiles.map((p) => ({
17668
- id: p.id,
17669
- role: p.role,
17670
- nickname: p.nickname,
17671
- personality: p.personality,
17672
- topExpertise: (p.expertise || []).sort((a, b) => b.confidence - a.confidence).slice(0, 5).map((e) => ({
17673
- symbol: e.symbol,
17674
- confidence: parseFloat(e.confidence.toFixed(2)),
17675
- sessions: e.sessions
17676
- })),
17677
- projectContexts: Object.keys(p.contexts || {}),
17678
- transferableCount: (p.transferable || []).length,
17679
- ...p.attention?.threshold != null ? { threshold: p.attention.threshold } : {}
17680
- }))
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
+ })
17681
17755
  }, null, 2)
17682
17756
  };
17683
17757
  }
@@ -19454,7 +19528,7 @@ async function handleAmbientTool(name, args, ctx) {
19454
19528
  const engaged = engageNomination(ctx.rootDir, nominationId, response, reason);
19455
19529
  if (engaged) {
19456
19530
  try {
19457
- const { appendSessionWorkEntry } = await import("./session-work-log-KDOH4GER.js");
19531
+ const { appendSessionWorkEntry } = await import("./session-work-log-MZ47OAPB.js");
19458
19532
  const noms = loadNominations(ctx.rootDir, { limit: 500 });
19459
19533
  const nom = noms.find((n) => n.id === nominationId);
19460
19534
  appendSessionWorkEntry(ctx.rootDir, {
@@ -20692,7 +20766,7 @@ Update command:
20692
20766
  trackToolCall(noWsText.length, name);
20693
20767
  return { content: [{ type: "text", text: noWsText }] };
20694
20768
  }
20695
- const { rebuildStaticFiles: rebuildStaticFiles2 } = await import("./reindex-U2HEB6GW.js");
20769
+ const { rebuildStaticFiles: rebuildStaticFiles2 } = await import("./reindex-5LTD53ZC.js");
20696
20770
  const memberResults = [];
20697
20771
  for (const member of ctx.workspace.config.members) {
20698
20772
  const memberAbsPath = path33.resolve(path33.dirname(ctx.workspace.workspacePath), member.path);
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ ModelDiscovery
4
+ } from "./chunk-5OUOLN6M.js";
5
+ import "./chunk-PDX44BCA.js";
6
+ export {
7
+ ModelDiscovery
8
+ };
@@ -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();
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BackgroundOrchestrator,
4
4
  Orchestrator
5
- } from "./chunk-WQITYKHM.js";
6
- import "./chunk-LSRABQIY.js";
7
- import "./chunk-PBHIFAL4.js";
8
- import "./chunk-TXESEO7Y.js";
5
+ } from "./chunk-YRZ5RPEB.js";
9
6
  import "./chunk-6QC3YGB6.js";
7
+ import "./chunk-45MUDW6E.js";
10
8
  import {
11
9
  loadAgentsManifest
12
10
  } from "./chunk-PMXRGPRQ.js";
11
+ import "./chunk-PBHIFAL4.js";
12
+ import "./chunk-TXESEO7Y.js";
13
13
  import {
14
14
  formatCost,
15
15
  formatTokens
@@ -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,
@@ -10,7 +10,7 @@ async function serveCommand(options) {
10
10
  const sections = options.sections ? options.sections.split(",").map((s) => s.trim()) : void 0;
11
11
  console.log(chalk.cyan("\n Starting Paradigm Platform...\n"));
12
12
  try {
13
- const { startPlatformServer } = await import("./platform-server-U5L2G3EU.js");
13
+ const { startPlatformServer } = await import("./platform-server-H5YO3DQD.js");
14
14
  await startPlatformServer({ port, projectDir, open: shouldOpen, sections });
15
15
  console.log(chalk.green(` Platform running at ${chalk.bold(`http://localhost:${port}`)}`));
16
16
  console.log(chalk.gray(" Press Ctrl+C to stop\n"));