codedeck 0.5.0 → 0.5.1

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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/cli/commands/doctor.js +10 -2
  4. package/dist/cli/commands/doctor.js.map +1 -1
  5. package/dist/cli/commands/open.js +49 -12
  6. package/dist/cli/commands/open.js.map +1 -1
  7. package/dist/cli/commands/profile.js +191 -0
  8. package/dist/cli/commands/profile.js.map +1 -0
  9. package/dist/cli/commands/run.js +36 -5
  10. package/dist/cli/commands/run.js.map +1 -1
  11. package/dist/cli/commands/setup.js +175 -23
  12. package/dist/cli/commands/setup.js.map +1 -1
  13. package/dist/cli/index.js +2 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/config/config.js +82 -2
  16. package/dist/config/config.js.map +1 -1
  17. package/dist/daemon/daemon.js +1 -0
  18. package/dist/daemon/daemon.js.map +1 -1
  19. package/dist/drivers/codex/parser.js +14 -10
  20. package/dist/drivers/codex/parser.js.map +1 -1
  21. package/dist/open/contract.js.map +1 -1
  22. package/dist/open/launchers/claude.js +8 -2
  23. package/dist/open/launchers/claude.js.map +1 -1
  24. package/dist/plugin/agents/auditor.md +2 -0
  25. package/dist/plugin/agents/general.md +10 -2
  26. package/dist/plugin/agents/orchestrator-edit.md +10 -2
  27. package/dist/plugin/agents/orchestrator-read.md +10 -2
  28. package/dist/plugin/agents/orchestrator.md +18 -3
  29. package/dist/plugin/prompts/_partials/dispatch.md +2 -0
  30. package/dist/plugin/prompts/_partials/reports-dispatch.md +5 -0
  31. package/dist/plugin/prompts/_partials/reports-general.md +5 -0
  32. package/dist/plugin/prompts/_partials/spec-gates.md +6 -0
  33. package/dist/plugin/prompts/_partials/worktree.md +1 -1
  34. package/dist/plugin/prompts/roles/general.md +1 -0
  35. package/dist/plugin/prompts/roles/orchestrator-edit.md +1 -0
  36. package/dist/plugin/prompts/roles/orchestrator-read.md +1 -0
  37. package/dist/plugin/prompts/roles/orchestrator.md +3 -1
  38. package/dist/web/canvas-page.js +79 -33
  39. package/dist/web/canvas-page.js.map +1 -1
  40. package/dist/web/review-page.js +121 -22
  41. package/dist/web/review-page.js.map +1 -1
  42. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { IpcClient } from "../../daemon/ipc.js";
3
- import { loadConfig, resolveDefaultSandbox, resolveModel, resolveRoleBinding } from "../../config/config.js";
3
+ import { loadConfig, resolveDefaultSandbox, resolveEffectiveConfig, resolveModel, resolveRoleBinding } from "../../config/config.js";
4
4
  import { CODEX_SANDBOXES, parseEffort, parseSandbox, REASONING_EFFORTS } from "../../core/driver.js";
5
5
  import { exitCodeForOutcome } from "../../core/errors.js";
6
6
  import { isTerminalStatus, normalizeAgentId } from "../../core/session.js";
@@ -18,8 +18,9 @@ export function registerRunCommand(program) {
18
18
  .argument("<prompt>", "prompt for the agent (e.g. \"implement authentication\")")
19
19
  .option("--agent <agent>", "agent to use: claude | codex | opencode | omp | antigravity (ignored for a role with a binding; default: claude or config.defaultAgent)")
20
20
  .option("--model <model>", "model to use (e.g. claude-opus-5, gpt-5; ignored for a role with a binding)")
21
- .option("--effort <level>", `reasoning effort: ${REASONING_EFFORTS.join(" | ")}`)
21
+ .option("--effort <level>", `reasoning effort: ${REASONING_EFFORTS.join(" | ")} (required unless the role binds one; opencode ignores)`)
22
22
  .option("--role <role>", `prefix the prompt with a CodeDeck role: ${ROLES.join(" | ")} (3-letter prefixes accepted)`)
23
+ .option("--profile <name>", "use a saved setup profile instead of the active one (see profile list)")
23
24
  .option("--fast", "use the priority service tier (1.5x speed) — codex and omp only")
24
25
  .option("--sandbox <mode>", `codex sandbox: ${CODEX_SANDBOXES.join(" | ")} (default: workspace-write)`)
25
26
  .option("--dangerously-bypass-approvals-and-sandbox", "codex: bypass sandbox and approvals (sets sandbox to danger-full-access)")
@@ -42,7 +43,17 @@ Resume with: ${getCliName()} send <id> "continue"
42
43
  .action(async (prompt, opts) => {
43
44
  const cwd = opts.cwd ? path.resolve(opts.cwd) : process.cwd();
44
45
  const sessionName = opts.name ?? slugify(prompt);
45
- const cfg = loadConfig();
46
+ // Resolved once here so a --profile run carries its own setup even
47
+ // while another profile runs beside it. The daemon only sees the
48
+ // concrete values below, never the profile name.
49
+ let cfg;
50
+ try {
51
+ cfg = resolveEffectiveConfig(loadConfig(), opts.profile);
52
+ }
53
+ catch (e) {
54
+ console.error(e instanceof Error ? e.message : String(e));
55
+ process.exit(3); // usage error — infra class
56
+ }
46
57
  // A bound role owns both halves. The worker dispatches the role and the
47
58
  // role decides the harness and model; --agent/--model cannot override a
48
59
  // bound role. They used to, which let every worker force the run onto its
@@ -65,6 +76,9 @@ Resume with: ${getCliName()} send <id> "continue"
65
76
  const resolvedAgent = opts.agent ? normalizeAgentId(opts.agent) ?? opts.agent : undefined;
66
77
  agent = (resolvedAgent || cfg.defaultAgent || "claude");
67
78
  model = resolveModel(agent, opts.model, cfg);
79
+ if (parseRole(opts.role)) {
80
+ console.error(`Warning: role "${opts.role}" is not bound; using ${agent}${model ? ` / ${model}` : ""} fallback. Change it with ${getCliName()} setup.`);
81
+ }
68
82
  }
69
83
  // `open` hands the role to Claude as `--agent`, which no other harness
70
84
  // has. Here it becomes a prompt prefix instead, so a codex or opencode
@@ -80,6 +94,10 @@ Resume with: ${getCliName()} send <id> "continue"
80
94
  }
81
95
  // Validate here so a typo fails before a session row is created; codex
82
96
  // would otherwise reject it at spawn time, leaving a dead session behind.
97
+ // --effort wins, then the role's own binding. No global fallback: a run
98
+ // without either fails loud. Opencode has no effort channel: any value
99
+ // warns and is dropped so the stored session never claims a level that
100
+ // was never applied.
83
101
  let effort;
84
102
  if (opts.effort) {
85
103
  try {
@@ -90,6 +108,17 @@ Resume with: ${getCliName()} send <id> "continue"
90
108
  process.exit(3); // usage error — infra class
91
109
  }
92
110
  }
111
+ else {
112
+ effort = binding?.effort;
113
+ }
114
+ if (effort === undefined && agent !== "opencode") {
115
+ console.error(`No effort bound to this run. Run ${getCliName()} setup to bind one or pass --effort (${REASONING_EFFORTS.join(" | ")}).`);
116
+ process.exit(3); // usage error — infra class
117
+ }
118
+ if (agent === "opencode" && effort !== undefined) {
119
+ console.error(`Warning: effort "${effort}" has no effect on opencode (no mapped reader); continuing without it.`);
120
+ effort = undefined;
121
+ }
93
122
  let sandbox;
94
123
  if (opts.sandbox) {
95
124
  try {
@@ -153,6 +182,8 @@ Resume with: ${getCliName()} send <id> "continue"
153
182
  process.exit(3); // infra: daemon unavailable
154
183
  }
155
184
  const background = !!opts.detach;
185
+ // Without flags the daemon would fall back to the base config, which
186
+ // ignores the profile. Pass the effective answer explicitly instead.
156
187
  const params = {
157
188
  prompt: rolePrompt,
158
189
  runId: runIdFromEnvironment(),
@@ -164,8 +195,8 @@ Resume with: ${getCliName()} send <id> "continue"
164
195
  dangerouslyBypassApprovalsAndSandbox: agent === "codex" ? dangerouslyBypass : undefined,
165
196
  name: sessionName,
166
197
  cwd,
167
- worktree: opts.worktree,
168
- noWorktree: opts.noWorktree,
198
+ worktree: opts.worktree ?? (cfg.worktree === true ? true : undefined),
199
+ noWorktree: opts.noWorktree ?? (opts.worktree === undefined && cfg.worktree === false ? true : undefined),
169
200
  detach: background,
170
201
  };
171
202
  let result;
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { AUTOCOMPACT_DEFAULT_CAP, AUTOCOMPACT_DEFAULT_PERCENT, } from "../../core/autocompact.js";
2
+ import { parseEffort, REASONING_EFFORTS } from "../../core/driver.js";
2
3
  import { getBatchModels, getCachedOrDiscoverModels, } from "../../core/models.js";
3
4
  import { isAgentId } from "../../core/session.js";
4
5
  import { itemKey } from "../picker-state.js";
@@ -8,7 +9,7 @@ import { getCliName } from "../cli-name.js";
8
9
  import { getRegistry } from "../../drivers/registry.js";
9
10
  import { ROLES } from "../../core/roles.js";
10
11
  import { getPaths } from "../../config/paths.js";
11
- import { BALANCED_PRESET, DISPATCHER_PRESET, EXPLORER_PRESET, ORCHESTRATOR_PRESETS, createSetupConfigStore, DEFAULT_CONFIG, isOrchestratorMode, loadConfig, orchestratorModeLabel, resolveOrchestratorMode, saveConfig, serializeConfig, } from "../../config/config.js";
12
+ import { BALANCED_PRESET, baseConfig, DISPATCHER_PRESET, EXPLORER_PRESET, getProfileSnapshot, ORCHESTRATOR_PRESETS, createSetupConfigStore, DEFAULT_CONFIG, extractProfileSnapshot, isOrchestratorMode, loadConfig, orchestratorModeLabel, parseProfileName, resolveEffectiveConfig, resolveOrchestratorMode, saveConfig, serializeConfig, } from "../../config/config.js";
12
13
  const ORCHESTRATOR_SCREEN_ROLE = "orchestrator-mode";
13
14
  const ORCHESTRATOR_PICKER_GROUP = "orchestrator";
14
15
  const PARALLELISM_NONE = "none";
@@ -20,6 +21,8 @@ const AUTOCOMPACT_SCREEN_ROLE = "autocompact";
20
21
  const AUTOCOMPACT_PICKER_GROUP = "autocompact";
21
22
  const AUTOCOMPACT_OFF = "off";
22
23
  const AUTOCOMPACT_ON = "on";
24
+ const EFFORT_PICKER_GROUP = "effort";
25
+ const ROLE_EFFORT_PREFIX = "effort.";
23
26
  const AUTOCOMPACT_DESCRIPTION = `Native autocompact applies to Claude and OpenCode sessions. Claude's default window is min(${AUTOCOMPACT_DEFAULT_CAP / 1000}k tokens, ${AUTOCOMPACT_DEFAULT_PERCENT * 100}% of the context window); OpenCode uses its internal context trigger.`;
24
27
  const ORCHESTRATOR_PARALLELISM_NOTE_LINES = [
25
28
  "parallelism is advisory. Version 1 puts the requested cap in the",
@@ -181,6 +184,41 @@ export function buildAutocompactScreen(config = {}, index = 0, total = 1) {
181
184
  next: () => [],
182
185
  };
183
186
  }
187
+ /**
188
+ * One follow-up screen per bound role, shown after the shared screens so the
189
+ * triple harness:model:effort is chosen in a single setup pass. Opencode has
190
+ * no effort channel and gets no screen: its bindings keep no effort.
191
+ */
192
+ export function buildRoleEffortScreen(role, binding, index = 0, total = 1) {
193
+ let selected;
194
+ try {
195
+ selected = typeof binding.effort === "string" ? parseEffort(binding.effort) : undefined;
196
+ }
197
+ catch {
198
+ selected = undefined;
199
+ }
200
+ const values = selected === undefined
201
+ ? [...REASONING_EFFORTS]
202
+ : [selected, ...REASONING_EFFORTS.filter((level) => level !== selected)];
203
+ const items = values.map((value) => ({
204
+ id: value,
205
+ label: value,
206
+ group: EFFORT_PICKER_GROUP,
207
+ harness: EFFORT_PICKER_GROUP,
208
+ ...(value === selected ? { note: "atual" } : {}),
209
+ }));
210
+ return {
211
+ role: `${ROLE_EFFORT_PREFIX}${role}`,
212
+ title: `${role} effort`,
213
+ counter: `configuração ${index + 1} de ${total}`,
214
+ description: [`Effort para ${role} (${binding.harness} · ${binding.model}). --effort sobrescreve.`],
215
+ items,
216
+ pinned: true,
217
+ known: new Set(items.map((item) => itemKey(item.harness, item.id))),
218
+ harnesses: new Set([EFFORT_PICKER_GROUP]),
219
+ next: () => [],
220
+ };
221
+ }
184
222
  function modeAfterParameter(mode, result) {
185
223
  const parameters = collectOrchestratorParameters([result], mode);
186
224
  return orchestratorConfigFromSelection("custom", parameters) ?? mode;
@@ -282,8 +320,16 @@ export function needsModelSetup(config, isTTY = isInteractiveTerminal()) {
282
320
  return false;
283
321
  // `agents` is what setup writes now. A config carrying only the older
284
322
  // per-harness `models` has never answered the per-role question, so it still
285
- // counts as unset.
286
- return config == null || config.agents == null;
323
+ // counts as unset. The active profile answers too: its agents are the ones
324
+ // a launch would use.
325
+ if (config == null)
326
+ return true;
327
+ try {
328
+ return resolveEffectiveConfig(config).agents == null;
329
+ }
330
+ catch {
331
+ return config.agents == null;
332
+ }
287
333
  }
288
334
  /**
289
335
  * The catalog of every installed harness, flattened into one list.
@@ -429,7 +475,11 @@ function watchResize(listener) {
429
475
  };
430
476
  }
431
477
  export async function runModelSetupWizard(options = {}) {
432
- const config = options.config ?? loadConfig();
478
+ const loaded = options.config ?? loadConfig();
479
+ const profile = options.profile !== undefined ? parseProfileName(options.profile) : undefined;
480
+ const config = profile === undefined
481
+ ? loaded
482
+ : { ...baseConfig(loaded), ...getProfileSnapshot(loaded, profile) };
433
483
  if (!(options.isTTY ?? isInteractiveTerminal()))
434
484
  return config;
435
485
  const output = options.output ?? process.stdout;
@@ -451,7 +501,27 @@ export async function runModelSetupWizard(options = {}) {
451
501
  console.error(`Warning: Could not discover models: ${error instanceof Error ? error.message : String(error)}`);
452
502
  harnesses = [];
453
503
  }
454
- const roleScreens = buildScreens(ROLES, harnesses, config.agents ?? {}, config.defaultAgent ?? "claude");
504
+ // Each role screen is immediately followed by its effort screen, so the
505
+ // triple harness:model:effort is chosen in one step instead of a second
506
+ // pass at the end. A second runScreens call is not an option: the picker
507
+ // owns raw mode for exactly one run per stream set.
508
+ const roleScreens = buildScreens(ROLES, harnesses, config.agents ?? {}, config.defaultAgent ?? "claude").map((screen, roleIndex) => ({
509
+ ...screen,
510
+ next: (result) => {
511
+ if (result.kind !== "picked" || result.harness === "opencode")
512
+ return [];
513
+ const role = screen.role;
514
+ const prev = config.agents?.[role];
515
+ const sameTarget = prev?.harness === result.harness && prev?.model === result.id;
516
+ return [
517
+ buildRoleEffortScreen(role, {
518
+ harness: result.harness,
519
+ model: result.id,
520
+ ...(sameTarget && prev?.effort !== undefined ? { effort: prev.effort } : {}),
521
+ }, roleIndex, ROLES.length),
522
+ ];
523
+ },
524
+ }));
455
525
  // Writing `agents` is what marks first-run setup as done. Doing that after
456
526
  // showing nothing would spend the single prompt the user ever gets.
457
527
  if (roleScreens.length === 0) {
@@ -522,9 +592,28 @@ export async function runModelSetupWizard(options = {}) {
522
592
  updatedConfig.autocompact = { ...config.autocompact, enabled: false };
523
593
  }
524
594
  }
595
+ // Per-role effort answers arrive as followups of their role screen, in the
596
+ // same run. Skipping a role asks no effort; only a bound role can receive one.
597
+ for (const result of answeredResults) {
598
+ if (result.kind !== "picked" || !result.role.startsWith(ROLE_EFFORT_PREFIX))
599
+ continue;
600
+ const target = result.role.slice(ROLE_EFFORT_PREFIX.length);
601
+ if (agents[target] === undefined)
602
+ continue;
603
+ if (REASONING_EFFORTS.includes(result.id)) {
604
+ agents[target] = { ...agents[target], effort: result.id };
605
+ }
606
+ }
607
+ updatedConfig.agents = { ...agents };
608
+ const toSave = profile === undefined
609
+ ? updatedConfig
610
+ : {
611
+ ...loaded,
612
+ profiles: { ...loaded.profiles, [profile]: extractProfileSnapshot(updatedConfig) },
613
+ };
525
614
  let saved = false;
526
615
  try {
527
- (options.save ?? saveConfig)(updatedConfig);
616
+ (options.save ?? saveConfig)(toSave);
528
617
  saved = true;
529
618
  }
530
619
  catch (error) {
@@ -535,7 +624,10 @@ export async function runModelSetupWizard(options = {}) {
535
624
  const summary = roleScreens
536
625
  .map((screen) => {
537
626
  const binding = agents[screen.role];
538
- return `${screen.role} ${binding ? `${binding.harness}:${binding.model}` : "unset"}`;
627
+ const triple = binding
628
+ ? `${binding.harness}:${binding.model}${binding.effort ? `:${binding.effort}` : ""}`
629
+ : "unset";
630
+ return `${screen.role} ${triple}`;
539
631
  })
540
632
  .join(" · ");
541
633
  const modeSummary = orchestrator === undefined ? "" : ` · orchestrator ${orchestratorModeLabel(orchestrator)}`;
@@ -549,21 +641,37 @@ export class SetupUsageError extends Error {
549
641
  }
550
642
  }
551
643
  function invalidBindMessage(value) {
552
- return `Invalid --bind "${value}": expected role=harness:model (role: general|orchestrator|reviewer|auditor; harness: claude|codex|opencode|omp; model: non-empty and without whitespace, control characters or '=')`;
644
+ return `Invalid --bind "${value}": expected role=harness:model[:effort] (role: general|orchestrator|reviewer|auditor; harness: claude|codex|opencode|omp; model: non-empty and without whitespace, control characters or '='; effort: ${REASONING_EFFORTS.join("|")})`;
553
645
  }
554
646
  export function parseBind(value) {
555
647
  const equals = value.indexOf("=");
556
648
  const roleValue = equals < 0 ? "" : value.slice(0, equals);
557
649
  const right = equals < 0 ? "" : value.slice(equals + 1);
558
- const colon = right.indexOf(":");
559
- const harnessValue = colon < 0 ? "" : right.slice(0, colon);
560
- const model = colon < 0 ? "" : right.slice(colon + 1);
650
+ const firstColon = right.indexOf(":");
651
+ // An effort suffix is only read off a model that carries a colon of its
652
+ // own: the single-colon form always stays harness:model, so a model
653
+ // literally named "high" keeps binding. The price is that a model id
654
+ // ending in ":<level>" cannot be written with its suffix intact.
655
+ const lastColon = right.lastIndexOf(":");
656
+ const trailing = lastColon < 0 ? "" : right.slice(lastColon + 1);
657
+ const hasEffortSuffix = lastColon > firstColon &&
658
+ firstColon >= 0 &&
659
+ REASONING_EFFORTS.includes(trailing);
660
+ const harnessValue = firstColon < 0 ? "" : right.slice(0, firstColon);
661
+ const model = firstColon < 0
662
+ ? ""
663
+ : hasEffortSuffix
664
+ ? right.slice(firstColon + 1, lastColon)
665
+ : right.slice(firstColon + 1);
561
666
  const role = ROLES.includes(roleValue) ? roleValue : undefined;
562
667
  const harness = isAgentId(harnessValue) ? harnessValue : undefined;
563
668
  const modelPattern = /^[^\p{White_Space}\p{Cc}\p{Cf}=]+$/u;
564
669
  if (!role || !harness || !modelPattern.test(model))
565
670
  throw new SetupUsageError(invalidBindMessage(value));
566
- return { role, binding: { harness, model } };
671
+ return {
672
+ role,
673
+ binding: { harness, model, ...(hasEffortSuffix ? { effort: trailing } : {}) },
674
+ };
567
675
  }
568
676
  export const parseSetupBind = parseBind;
569
677
  function parseError(message, json) {
@@ -578,12 +686,36 @@ export function parseSetupArgs(args) {
578
686
  let refresh = false;
579
687
  let nonInteractive = false;
580
688
  let dryRun = false;
689
+ let profile;
581
690
  for (let index = 0; index < args.length; index += 1) {
582
691
  const arg = args[index];
583
692
  if (arg === "--refresh") {
584
693
  refresh = true;
585
694
  continue;
586
695
  }
696
+ if (arg === "--profile") {
697
+ const value = args[index + 1];
698
+ if (value === undefined || isSetupFlag(value)) {
699
+ return parseError('Option "--profile" expects a name.', json);
700
+ }
701
+ index += 1;
702
+ try {
703
+ profile = parseProfileName(value);
704
+ }
705
+ catch (error) {
706
+ return parseError(error instanceof Error ? error.message : String(error), json);
707
+ }
708
+ continue;
709
+ }
710
+ if (arg.startsWith("--profile=")) {
711
+ try {
712
+ profile = parseProfileName(arg.slice("--profile=".length));
713
+ }
714
+ catch (error) {
715
+ return parseError(error instanceof Error ? error.message : String(error), json);
716
+ }
717
+ continue;
718
+ }
587
719
  if (arg === "--non-interactive") {
588
720
  nonInteractive = true;
589
721
  continue;
@@ -598,7 +730,7 @@ export function parseSetupArgs(args) {
598
730
  if (arg === "--bind") {
599
731
  const value = args[index + 1];
600
732
  if (value === undefined || isSetupFlag(value)) {
601
- return parseError('Option "--bind" expects role=harness:model.', json);
733
+ return parseError('Option "--bind" expects role=harness:model[:effort].', json);
602
734
  }
603
735
  index += 1;
604
736
  try {
@@ -631,6 +763,7 @@ export function parseSetupArgs(args) {
631
763
  dryRun,
632
764
  binds,
633
765
  batch: nonInteractive || json || dryRun || binds.length > 0,
766
+ ...(profile === undefined ? {} : { profile }),
634
767
  },
635
768
  };
636
769
  }
@@ -913,19 +1046,32 @@ export async function runSetupBatch(options, dependencies = {}) {
913
1046
  return errorResult(read, null, notNeededCatalog(), [], [], read.readError ? 15 : 14, message);
914
1047
  }
915
1048
  const current = { ...DEFAULT_CONFIG, ...(read.config ?? {}) };
1049
+ // --profile edits one saved setup instead of the active one. A name nobody
1050
+ // saved yet starts from the base config, so creating a profile needs no
1051
+ // separate gesture.
1052
+ const profile = options.profile;
1053
+ const target = profile === undefined
1054
+ ? current
1055
+ : { ...baseConfig(current), ...getProfileSnapshot(current, profile) };
916
1056
  const lastByRole = new Map();
917
1057
  options.binds.forEach((binding, index) => lastByRole.set(binding.role, index));
918
1058
  const winning = options.binds.filter((binding, index) => lastByRole.get(binding.role) === index);
919
- const existingAgents = jsonObject(current.agents) ? current.agents : {};
1059
+ const existingAgents = jsonObject(target.agents) ? target.agents : {};
1060
+ const updatedAgents = {
1061
+ ...existingAgents,
1062
+ ...Object.fromEntries(winning.map(({ role, binding }) => [role, binding])),
1063
+ };
920
1064
  const proposed = options.binds.length === 0
921
1065
  ? { ...current }
922
- : {
923
- ...current,
924
- agents: {
925
- ...existingAgents,
926
- ...Object.fromEntries(winning.map(({ role, binding }) => [role, binding])),
927
- },
928
- };
1066
+ : profile === undefined
1067
+ ? { ...current, agents: updatedAgents }
1068
+ : {
1069
+ ...current,
1070
+ profiles: {
1071
+ ...current.profiles,
1072
+ [profile]: { ...extractProfileSnapshot(target), agents: updatedAgents },
1073
+ },
1074
+ };
929
1075
  const changes = diffConfig(current, proposed);
930
1076
  let catalog;
931
1077
  let bindingValidations = [];
@@ -1021,8 +1167,10 @@ export async function runSetupBatch(options, dependencies = {}) {
1021
1167
  };
1022
1168
  }
1023
1169
  const message = "Configuration saved.";
1024
- if (!options.json)
1025
- writeLine(stderr, `saved: ${configSummary(proposed)}`);
1170
+ const summarized = profile === undefined ? proposed : (proposed.profiles?.[profile] ?? proposed);
1171
+ if (!options.json) {
1172
+ writeLine(stderr, profile === undefined ? `saved: ${configSummary(summarized)}` : `saved profile "${profile}": ${configSummary(summarized)}`);
1173
+ }
1026
1174
  return {
1027
1175
  code: 0,
1028
1176
  envelope: { proposta: proposed, validacoes: validations, mudancas: changes, resultado: { status: "applied", code: 0, saved: true, message } },
@@ -1038,6 +1186,8 @@ function commandTokens(opts, command) {
1038
1186
  tokens.push("--json");
1039
1187
  if (opts.dryRun)
1040
1188
  tokens.push("--dry-run");
1189
+ if (typeof opts.profile === "string")
1190
+ tokens.push("--profile", opts.profile);
1041
1191
  const binds = Array.isArray(opts.bind) ? opts.bind : opts.bind === undefined ? [] : [opts.bind];
1042
1192
  for (const bind of binds) {
1043
1193
  tokens.push("--bind");
@@ -1072,6 +1222,7 @@ export async function executeSetupAction(args, dependencies = {}) {
1072
1222
  discoverModels: dependencies.wizardDiscoverModels,
1073
1223
  save: dependencies.saveConfig,
1074
1224
  isTTY: tty,
1225
+ ...(parsed.options.profile === undefined ? {} : { profile: parsed.options.profile }),
1075
1226
  });
1076
1227
  return { code: 0 };
1077
1228
  }
@@ -1090,6 +1241,7 @@ export function registerSetupCommand(program, dependencies = {}) {
1090
1241
  .option("--non-interactive", "run setup without the picker")
1091
1242
  .option("--json", "output one machine-readable envelope")
1092
1243
  .option("--dry-run", "show the proposed config without writing it")
1244
+ .option("--profile <name>", "edit a saved profile instead of the active setup")
1093
1245
  .option("--bind [binding]", "bind a role to a harness and model", (value, previous = []) => [...previous, value], [])
1094
1246
  .action(async (opts, command) => {
1095
1247
  const result = await executeSetupAction(commandTokens(opts, command), dependencies);