@a-company/paradigm 3.24.1 → 3.27.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 (36) hide show
  1. package/dist/{accept-orchestration-AAYFKS74.js → accept-orchestration-6EM5EHXA.js} +4 -4
  2. package/dist/{auto-B22FVSQI.js → auto-24ICVUH4.js} +1 -1
  3. package/dist/{chunk-EZ6XW6FB.js → chunk-7IJ5JVKT.js} +1 -1
  4. package/dist/{chunk-6EQRU7WC.js → chunk-J26YQVAK.js} +1 -1
  5. package/dist/{chunk-VHSTF72C.js → chunk-N6RNYCZD.js} +1 -1
  6. package/dist/{chunk-XKI55IFI.js → chunk-SCC77UUP.js} +82 -62
  7. package/dist/chunk-UPLDI7CN.js +1334 -0
  8. package/dist/{chunk-GC6X3YM7.js → chunk-ZOH24ZPF.js} +5 -5
  9. package/dist/conductor-CAIY5LJA.js +74 -0
  10. package/dist/{diff-QC7PWIPF.js → diff-AH7L4PRQ.js} +4 -4
  11. package/dist/discipline-5F5OVTXB.js +24 -0
  12. package/dist/{doctor-RVODPMHJ.js → doctor-INBOLZC7.js} +1 -1
  13. package/dist/index.js +57 -25
  14. package/dist/{list-CAL7KS7B.js → list-QTFWN35D.js} +3 -2
  15. package/dist/mcp.js +285 -23
  16. package/dist/{orchestrate-NNNWNELP.js → orchestrate-HMSQ2CED.js} +4 -4
  17. package/dist/{providers-NKGY36QF.js → providers-YW3FG6DA.js} +1 -1
  18. package/dist/{reindex-CMZARW5K.js → reindex-YG3KIXAK.js} +1 -1
  19. package/dist/{shift-R6TQ6MBP.js → shift-DRF5M3G6.js} +23 -17
  20. package/dist/{spawn-52PASJJL.js → spawn-DIY7T4QW.js} +2 -2
  21. package/dist/{team-JZHIH7H5.js → team-YOGT2Q2X.js} +5 -5
  22. package/dist/{timeline-B6TMGWRU.js → timeline-RKXNRMKF.js} +4 -3
  23. package/dist/university-content/courses/.purpose +4 -4
  24. package/dist/university-content/courses/para-101.json +1 -1
  25. package/dist/university-content/courses/para-201.json +18 -2
  26. package/dist/university-content/plsat/.purpose +18 -0
  27. package/dist/university-content/plsat/v3.0.json +105 -0
  28. package/dist/university-ui/assets/{index-BPzqnvrg.js → index-TcsCEBMo.js} +2 -2
  29. package/dist/university-ui/assets/{index-BPzqnvrg.js.map → index-TcsCEBMo.js.map} +1 -1
  30. package/dist/university-ui/index.html +1 -1
  31. package/package.json +1 -1
  32. package/templates/paradigm/config.yaml +1 -0
  33. package/dist/chunk-CHSHON3O.js +0 -669
  34. package/dist/{chunk-7WTOOH23.js → chunk-5SXMV4SP.js} +0 -0
  35. package/dist/{chunk-4UC6AQOC.js → chunk-C5ZE6WEX.js} +0 -0
  36. package/dist/{flow-KZKMMXJC.js → flow-UFMPVOEM.js} +1 -1
@@ -5,13 +5,17 @@ import {
5
5
  import {
6
6
  AgentSpawner,
7
7
  extractSymbols
8
- } from "./chunk-6EQRU7WC.js";
8
+ } from "./chunk-J26YQVAK.js";
9
9
  import {
10
10
  AuditLogger
11
11
  } from "./chunk-PBHIFAL4.js";
12
12
  import {
13
13
  loadAgentsManifest
14
14
  } from "./chunk-PMXRGPRQ.js";
15
+ import {
16
+ extractDeclaredGates,
17
+ loadPortalConfig
18
+ } from "./chunk-MW5DMGBB.js";
15
19
  import {
16
20
  calculateCost
17
21
  } from "./chunk-5JGJACDU.js";
@@ -20,10 +24,6 @@ import {
20
24
  getReferencesTo,
21
25
  searchSymbols
22
26
  } from "./chunk-6P4IFIK2.js";
23
- import {
24
- extractDeclaredGates,
25
- loadPortalConfig
26
- } from "./chunk-MW5DMGBB.js";
27
27
 
28
28
  // src/core/orchestrator.ts
29
29
  import { minimatch } from "minimatch";
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ log
4
+ } from "./chunk-4NCFWYGG.js";
5
+ import "./chunk-ZXMDA7VB.js";
6
+
7
+ // src/commands/conductor.ts
8
+ import { execSync, spawn } from "child_process";
9
+ import * as fs from "fs";
10
+ import * as path from "path";
11
+ import { fileURLToPath } from "url";
12
+ import chalk from "chalk";
13
+ var __filename = fileURLToPath(import.meta.url);
14
+ var __dirname = path.dirname(__filename);
15
+ async function conductorCommand(options) {
16
+ const cmdLog = log.command("conductor");
17
+ const conductorDir = findConductorDir();
18
+ if (!conductorDir) {
19
+ cmdLog.error("Could not locate packages/conductor/");
20
+ console.log(chalk.gray(" Ensure the Paradigm monorepo is intact."));
21
+ process.exit(1);
22
+ }
23
+ const buildDir = path.join(conductorDir, ".build", "release");
24
+ const binaryPath = path.join(buildDir, "conductor");
25
+ const needsBuild = options.build || !fs.existsSync(binaryPath);
26
+ if (needsBuild) {
27
+ cmdLog.info("Building Conductor\u2026");
28
+ try {
29
+ const buildCmd = "swift build -c release";
30
+ execSync(buildCmd, {
31
+ cwd: conductorDir,
32
+ stdio: options.verbose ? "inherit" : "pipe"
33
+ });
34
+ cmdLog.success("Build complete");
35
+ } catch (error) {
36
+ cmdLog.error("Build failed");
37
+ const errMsg = error.message || "";
38
+ if (errMsg.includes("xcode-select")) {
39
+ console.log(chalk.gray(" Xcode Command Line Tools are required."));
40
+ console.log(chalk.gray(" Install with: xcode-select --install"));
41
+ } else {
42
+ console.log(chalk.gray(` ${errMsg.slice(0, 200)}`));
43
+ }
44
+ process.exit(1);
45
+ }
46
+ }
47
+ cmdLog.info("Launching Conductor\u2026");
48
+ const child = spawn(binaryPath, [], {
49
+ detached: true,
50
+ stdio: "ignore"
51
+ });
52
+ child.unref();
53
+ console.log(chalk.cyan("\n Paradigm Conductor is running."));
54
+ console.log(chalk.gray(" Look for the waveform icon in your menu bar."));
55
+ console.log(chalk.gray(" Quit via the menu bar icon or Cmd+Q.\n"));
56
+ }
57
+ function findConductorDir() {
58
+ let dir = path.resolve(__dirname, "..");
59
+ for (let i = 0; i < 5; i++) {
60
+ const candidate = path.join(dir, "packages", "conductor");
61
+ if (fs.existsSync(path.join(candidate, "Package.swift"))) {
62
+ return candidate;
63
+ }
64
+ dir = path.dirname(dir);
65
+ }
66
+ const cwdCandidate = path.join(process.cwd(), "packages", "conductor");
67
+ if (fs.existsSync(path.join(cwdCandidate, "Package.swift"))) {
68
+ return cwdCandidate;
69
+ }
70
+ return null;
71
+ }
72
+ export {
73
+ conductorCommand
74
+ };
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BackgroundOrchestrator
4
- } from "./chunk-GC6X3YM7.js";
4
+ } from "./chunk-ZOH24ZPF.js";
5
5
  import "./chunk-6QC3YGB6.js";
6
- import "./chunk-6EQRU7WC.js";
6
+ import "./chunk-J26YQVAK.js";
7
7
  import "./chunk-PBHIFAL4.js";
8
- import "./chunk-7WTOOH23.js";
8
+ import "./chunk-5SXMV4SP.js";
9
9
  import "./chunk-PMXRGPRQ.js";
10
+ import "./chunk-MW5DMGBB.js";
10
11
  import "./chunk-5JGJACDU.js";
11
12
  import "./chunk-6P4IFIK2.js";
12
13
  import "./chunk-MRENOFTR.js";
13
14
  import "./chunk-IRKUEJVW.js";
14
- import "./chunk-MW5DMGBB.js";
15
15
  import "./chunk-ZXMDA7VB.js";
16
16
 
17
17
  // src/commands/team/diff.ts
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ DISCIPLINE_MAPPINGS,
4
+ GENERIC_SYMBOL_MAPPING,
5
+ STACK_PRESETS,
6
+ detectDiscipline,
7
+ detectStack,
8
+ getDisciplineConfig,
9
+ getDisciplineScanPatterns,
10
+ getStackConfig,
11
+ listStackPresets
12
+ } from "./chunk-UPLDI7CN.js";
13
+ import "./chunk-ZXMDA7VB.js";
14
+ export {
15
+ DISCIPLINE_MAPPINGS,
16
+ GENERIC_SYMBOL_MAPPING,
17
+ STACK_PRESETS,
18
+ detectDiscipline,
19
+ detectStack,
20
+ getDisciplineConfig,
21
+ getDisciplineScanPatterns,
22
+ getStackConfig,
23
+ listStackPresets
24
+ };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  doctorCommand
4
- } from "./chunk-4UC6AQOC.js";
4
+ } from "./chunk-C5ZE6WEX.js";
5
5
  import "./chunk-KB4XJWE3.js";
6
6
  import "./chunk-YO6DVTL7.js";
7
7
  import "./chunk-4NCFWYGG.js";
package/dist/index.js CHANGED
@@ -1,8 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  initCommand
4
- } from "./chunk-XKI55IFI.js";
5
- import "./chunk-CHSHON3O.js";
4
+ } from "./chunk-SCC77UUP.js";
6
5
  import "./chunk-W4VFKZVF.js";
7
6
  import "./chunk-AK5M6KJB.js";
8
7
  import {
@@ -17,6 +16,7 @@ import {
17
16
  findGateFiles
18
17
  } from "./chunk-IRKUEJVW.js";
19
18
  import "./chunk-Z7W7HNRG.js";
19
+ import "./chunk-UPLDI7CN.js";
20
20
  import "./chunk-KB4XJWE3.js";
21
21
  import "./chunk-YO6DVTL7.js";
22
22
  import {
@@ -109,11 +109,39 @@ ${chalk2.magenta("\u2560\u2550\u255D")}${chalk2.cyan("\u251C\u2500\u2524\u251C\u
109
109
  ${chalk2.magenta("\u2569 ")}${chalk2.cyan("\u2534 \u2534\u2534\u2514\u2500\u2534 \u2534\u2500\u2534\u2518\u2534 \u2514\u2500\u2518\u2534 \u2534")} ${chalk2.gray(`v${VERSION}`)}
110
110
  `;
111
111
  program.name("paradigm").description("Unified developer tools ecosystem").version(VERSION).addHelpText("before", banner);
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("--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
- 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("--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-R6TQ6MBP.js");
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
+ 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-DRF5M3G6.js");
115
115
  await shiftCommand(options);
116
116
  });
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) => {
118
+ const { listStackPresets } = await import("./discipline-5F5OVTXB.js");
119
+ const chalk3 = (await import("chalk")).default;
120
+ const presets = listStackPresets(options.discipline);
121
+ if (presets.length === 0) {
122
+ console.log(chalk3.yellow(`
123
+ No presets found${options.discipline ? ` for discipline: ${options.discipline}` : ""}
124
+ `));
125
+ return;
126
+ }
127
+ console.log(chalk3.blue("\n Available Stack Presets\n"));
128
+ console.log(chalk3.gray(" Use with: paradigm init --stack <id> or paradigm shift --stack <id>\n"));
129
+ const byDiscipline = /* @__PURE__ */ new Map();
130
+ for (const preset of presets) {
131
+ const group = byDiscipline.get(preset.discipline) || [];
132
+ group.push(preset);
133
+ byDiscipline.set(preset.discipline, group);
134
+ }
135
+ for (const [discipline, group] of byDiscipline) {
136
+ console.log(chalk3.white(` ${discipline}`));
137
+ for (const preset of group) {
138
+ console.log(chalk3.cyan(` ${preset.id.padEnd(20)}`) + chalk3.gray(preset.name));
139
+ }
140
+ console.log("");
141
+ }
142
+ console.log(chalk3.gray(` ${presets.length} presets available. Auto-detected when --stack is omitted.
143
+ `));
144
+ });
117
145
  program.command("setup [path]").description("Interactive setup wizard for Paradigm").option("-y, --yes", "Accept all defaults (non-interactive)").option("-f, --force", "Overwrite existing .paradigm config").action(async (path2, options) => {
118
146
  const { setupCommand } = await import("./setup-HOI52TN3.js");
119
147
  await setupCommand(path2, options);
@@ -198,7 +226,7 @@ program.command("cost [path]").description("Analyze token costs for AI context")
198
226
  });
199
227
  var scanCmd = program.command("scan").description("Visual discovery and auto-generation commands");
200
228
  scanCmd.command("auto [path]").description("Auto-generate .purpose files from code analysis").option("-n, --dry-run", "Show what would be generated without writing").option("-f, --force", "Overwrite existing .purpose files").option("--json", "Output as JSON").option("--init", "Full project initialization: generate .purpose files + portal.yaml").action(async (path2, options) => {
201
- const { autoScanCommand } = await import("./auto-B22FVSQI.js");
229
+ const { autoScanCommand } = await import("./auto-24ICVUH4.js");
202
230
  await autoScanCommand(path2, options);
203
231
  });
204
232
  scanCmd.action(() => {
@@ -209,7 +237,7 @@ scanCmd.action(() => {
209
237
  });
210
238
  var flowCmd = program.command("flow").description("Flow management commands");
211
239
  flowCmd.command("diagram <flowId>").description("Generate Mermaid diagram for a flow").option("-o, --output <path>", "Output file path").action(async (flowId, options) => {
212
- const { flowDiagramCommand } = await import("./flow-KZKMMXJC.js");
240
+ const { flowDiagramCommand } = await import("./flow-UFMPVOEM.js");
213
241
  await flowDiagramCommand(flowId, options);
214
242
  });
215
243
  flowCmd.action(() => {
@@ -217,7 +245,7 @@ flowCmd.action(() => {
217
245
  });
218
246
  var teamCmd = program.command("team").description("Multi-agent orchestration commands");
219
247
  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) => {
220
- const { teamInitCommand } = await import("./team-JZHIH7H5.js");
248
+ const { teamInitCommand } = await import("./team-YOGT2Q2X.js");
221
249
  await teamInitCommand(path2, {
222
250
  ...options,
223
251
  configureModels: options.configureModels,
@@ -225,47 +253,47 @@ teamCmd.command("init [path]").description("Initialize team configuration with d
225
253
  });
226
254
  });
227
255
  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) => {
228
- const { teamStatusCommand } = await import("./team-JZHIH7H5.js");
256
+ const { teamStatusCommand } = await import("./team-YOGT2Q2X.js");
229
257
  await teamStatusCommand(path2, options);
230
258
  });
231
259
  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) => {
232
- const { teamHandoffCommand } = await import("./team-JZHIH7H5.js");
260
+ const { teamHandoffCommand } = await import("./team-YOGT2Q2X.js");
233
261
  await teamHandoffCommand(path2, options);
234
262
  });
235
263
  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) => {
236
- const { teamAcceptCommand } = await import("./team-JZHIH7H5.js");
264
+ const { teamAcceptCommand } = await import("./team-YOGT2Q2X.js");
237
265
  await teamAcceptCommand(handoffId, path2, options);
238
266
  });
239
267
  teamCmd.command("check [path]").description("Check for conflicts and team health issues").option("--json", "Output as JSON").action(async (path2, options) => {
240
- const { teamCheckCommand } = await import("./team-JZHIH7H5.js");
268
+ const { teamCheckCommand } = await import("./team-YOGT2Q2X.js");
241
269
  await teamCheckCommand(path2, options);
242
270
  });
243
271
  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) => {
244
- const { teamHistoryCommand } = await import("./team-JZHIH7H5.js");
272
+ const { teamHistoryCommand } = await import("./team-YOGT2Q2X.js");
245
273
  await teamHistoryCommand(path2, { ...options, limit: parseInt(options.limit) });
246
274
  });
247
275
  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) => {
248
- const { teamResetCommand } = await import("./team-JZHIH7H5.js");
276
+ const { teamResetCommand } = await import("./team-YOGT2Q2X.js");
249
277
  await teamResetCommand(path2, options);
250
278
  });
251
279
  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) => {
252
- const { teamSpawnCommand } = await import("./spawn-52PASJJL.js");
280
+ const { teamSpawnCommand } = await import("./spawn-DIY7T4QW.js");
253
281
  await teamSpawnCommand(agent, path2, options);
254
282
  });
255
283
  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) => {
256
- const { teamOrchestrateCommand } = await import("./orchestrate-NNNWNELP.js");
284
+ const { teamOrchestrateCommand } = await import("./orchestrate-HMSQ2CED.js");
257
285
  await teamOrchestrateCommand(task, path2, options);
258
286
  });
259
287
  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) => {
260
- const { teamDiffCommand } = await import("./diff-QC7PWIPF.js");
288
+ const { teamDiffCommand } = await import("./diff-AH7L4PRQ.js");
261
289
  await teamDiffCommand(orchestrationId, path2, options);
262
290
  });
263
291
  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) => {
264
- const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-AAYFKS74.js");
292
+ const { teamAcceptOrchestrationCommand } = await import("./accept-orchestration-6EM5EHXA.js");
265
293
  await teamAcceptOrchestrationCommand(orchestrationId, path2, options);
266
294
  });
267
295
  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) => {
268
- const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-AAYFKS74.js");
296
+ const { teamRejectOrchestrationCommand } = await import("./accept-orchestration-6EM5EHXA.js");
269
297
  await teamRejectOrchestrationCommand(orchestrationId, path2, options);
270
298
  });
271
299
  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) => {
@@ -277,11 +305,11 @@ teamCmd.command("export [path]").description("Export orchestration data").option
277
305
  await teamExportCommand(path2, options);
278
306
  });
279
307
  teamCmd.command("providers [path]").description("Show available agent providers and their status").option("--set <provider>", "Set preferred provider: auto, claude, claude-code, claude-cli, manual").option("--json", "Output as JSON").action(async (path2, options) => {
280
- const { teamProvidersCommand } = await import("./providers-NKGY36QF.js");
308
+ const { teamProvidersCommand } = await import("./providers-YW3FG6DA.js");
281
309
  await teamProvidersCommand(path2, options);
282
310
  });
283
311
  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) => {
284
- const { teamModelsCommand } = await import("./team-JZHIH7H5.js");
312
+ const { teamModelsCommand } = await import("./team-YOGT2Q2X.js");
285
313
  await teamModelsCommand(path2, options);
286
314
  });
287
315
  var agentsCmd = teamCmd.command("agents").description("Agent management commands");
@@ -296,7 +324,7 @@ agentsCmd.action(() => {
296
324
  console.log("\nRun `paradigm team agents suggest --help` for options.\n");
297
325
  });
298
326
  teamCmd.action(async () => {
299
- const { teamStatusCommand } = await import("./team-JZHIH7H5.js");
327
+ const { teamStatusCommand } = await import("./team-YOGT2Q2X.js");
300
328
  await teamStatusCommand(void 0, {});
301
329
  });
302
330
  var pluginCmd = program.command("plugin").description("Plugin management commands");
@@ -326,7 +354,7 @@ workspaceCmd.action(async () => {
326
354
  await workspaceStatusCommand({});
327
355
  });
328
356
  program.command("doctor").description("Health check - validate Paradigm setup").option("--context", "Run only context audit checks (CLAUDE.md quality)").action(async (options) => {
329
- const { doctorCommand } = await import("./doctor-RVODPMHJ.js");
357
+ const { doctorCommand } = await import("./doctor-INBOLZC7.js");
330
358
  await doctorCommand(options);
331
359
  });
332
360
  program.command("sweep").description("Entropy detection and cleanup \u2014 find orphaned symbols, stale purpose files, phantom gates").option("--dry", "Report only, no fixes applied").option("--skip-fix", "Same as --dry").option("-q, --quiet", "Minimal output").action(async (options) => {
@@ -626,7 +654,7 @@ triageCmd.option("-l, --limit <number>", "Maximum incidents to show", "10").opti
626
654
  });
627
655
  var loreCmd = program.command("lore").description("Project lore - timeline of everything that happened to this project");
628
656
  loreCmd.command("list").alias("ls").description("List recent lore entries").option("--author <author>", "Filter by author").option("--type <type>", "Filter by type: agent-session, human-note, decision, review, incident, milestone, retro, insight").option("--symbol <symbol>", "Filter by symbol").option("--tags <tags>", "Filter by tags (comma-separated)").option("--from <date>", "Filter from date (ISO format, e.g., 2026-02-20)").option("--to <date>", "Filter to date (ISO format)").option("-l, --limit <number>", "Number of entries", "20").option("--json", "Output as JSON").action(async (options) => {
629
- const { loreListCommand } = await import("./list-CAL7KS7B.js");
657
+ const { loreListCommand } = await import("./list-QTFWN35D.js");
630
658
  await loreListCommand(options);
631
659
  });
632
660
  loreCmd.command("show <id>").description("Show full detail for a lore entry").option("--json", "Output as JSON").action(async (id, options) => {
@@ -658,7 +686,7 @@ loreCmd.command("retag").description("Add or remove tags from matching lore entr
658
686
  await loreRetagCommand(options);
659
687
  });
660
688
  loreCmd.command("timeline").description("Show lore timeline grouped by date with hot symbols and authors").option("-l, --limit <number>", "Number of entries", "20").option("--json", "Output as JSON").action(async (options) => {
661
- const { loreTimelineCommand } = await import("./timeline-B6TMGWRU.js");
689
+ const { loreTimelineCommand } = await import("./timeline-RKXNRMKF.js");
662
690
  await loreTimelineCommand(options);
663
691
  });
664
692
  loreCmd.option("-p, --port <port>", "Port to run on", "3840").option("--no-open", "Don't open browser automatically").action(async (options) => {
@@ -719,6 +747,10 @@ sentinelCmd.command("defend [path]", { isDefault: true }).description("Launch th
719
747
  const { sentinelCommand } = await import("./sentinel-FUR3QKCJ.js");
720
748
  await sentinelCommand(path2, options);
721
749
  });
750
+ program.command("conductor").description("Launch Paradigm Conductor \u2014 multimodal mission control for Claude Code sessions").option("--build", "Force rebuild the native binary").option("-v, --verbose", "Show build output").action(async (options) => {
751
+ const { conductorCommand } = await import("./conductor-CAIY5LJA.js");
752
+ await conductorCommand(options);
753
+ });
722
754
  program.command("university").description("Launch Paradigm University - interactive learning platform & PLSAT certification").option("-p, --port <port>", "Port to run on", "3839").option("--no-open", "Don't open browser automatically").action(async (options) => {
723
755
  const { universityCommand } = await import("./university-A66BMZ4Z.js");
724
756
  await universityCommand(void 0, options);
@@ -38,14 +38,15 @@ async function loreListCommand(options) {
38
38
  "milestone": chalk.hex("#60a5fa")
39
39
  };
40
40
  for (const entry of entries) {
41
- const colorFn = typeColor[entry.type] || chalk.white;
41
+ const entryType = entry.type || "note";
42
+ const colorFn = typeColor[entryType] || chalk.white;
42
43
  const date = new Date(entry.timestamp);
43
44
  const dateStr = date.toLocaleDateString("en-US", { month: "short", day: "numeric" });
44
45
  const timeStr = date.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit" });
45
46
  const authorIcon = entry.agent ? "\u{1F916}" : "\u{1F464}";
46
47
  const verifyIcon = entry.verification?.status === "pass" ? chalk.green("\u2713") : entry.verification?.status === "fail" ? chalk.red("\u2717") : entry.verification?.status === "partial" ? chalk.yellow("\u26A0") : chalk.gray("\xB7");
47
48
  const reviewStr = entry.review ? chalk.yellow("\u2605".repeat(entry.review.quality) + "\u2606".repeat(5 - entry.review.quality)) : "";
48
- console.log(` ${chalk.gray(entry.id)} ${colorFn(entry.type.padEnd(14))} ${verifyIcon} ${chalk.white(entry.title)}`);
49
+ console.log(` ${chalk.gray(entry.id)} ${colorFn(entryType.padEnd(14))} ${verifyIcon} ${chalk.white(entry.title)}`);
49
50
  console.log(` ${chalk.gray(dateStr + " " + timeStr)} ${authorIcon} ${chalk.gray(entry.author)} ${(entry.symbols_touched || []).map((s) => chalk.cyan(s)).join(" ")} ${reviewStr}`);
50
51
  console.log();
51
52
  }