@kbediako/codex-orchestrator 0.1.23 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -130,6 +130,11 @@ flowchart TB
130
130
 
131
131
  ## Skills (bundled)
132
132
 
133
+ Recommended one-shot bootstrap (skills + delegation + DevTools wiring):
134
+ ```bash
135
+ codex-orchestrator setup --yes
136
+ ```
137
+
133
138
  The release ships skills under `skills/` for downstream packaging. If you already have global skills installed, treat those as the primary reference and use bundled skills as the shipped fallback. Install bundled skills into `$CODEX_HOME/skills`:
134
139
  ```bash
135
140
  codex-orchestrator skills install
@@ -142,6 +147,7 @@ Options:
142
147
 
143
148
  Bundled skills (may vary by release):
144
149
  - `collab-subagents-first`
150
+ - `chrome-devtools`
145
151
  - `delegation-usage`
146
152
  - `standalone-review`
147
153
  - `docs-first`
@@ -157,6 +163,11 @@ Check readiness (deps + capability wiring):
157
163
  codex-orchestrator doctor --format json
158
164
  ```
159
165
 
166
+ Auto-fix wiring (delegation + DevTools):
167
+ ```bash
168
+ codex-orchestrator doctor --apply --yes
169
+ ```
170
+
160
171
  Usage snapshot (scans local `.runs/`):
161
172
  ```bash
162
173
  codex-orchestrator doctor --usage
@@ -173,6 +184,7 @@ codex-orchestrator devtools setup
173
184
  - `codex-orchestrator plan <pipeline>` — preview pipeline stages.
174
185
  - `codex-orchestrator exec <cmd>` — run a one-off command with the exec runtime.
175
186
  - `codex-orchestrator init codex` — install starter templates (`mcp-client.json`, `AGENTS.md`) into a repo.
187
+ - `codex-orchestrator setup --yes` — install bundled skills and configure delegation + DevTools wiring.
176
188
  - `codex-orchestrator init codex --codex-cli --yes --codex-source <path>` — optionally provision a CO-managed Codex CLI binary (build-from-source default; set `CODEX_CLI_SOURCE` to avoid passing `--codex-source` every time).
177
189
  - `codex-orchestrator init codex --codex-cli --yes --codex-download-url <url> --codex-download-sha256 <sha>` — opt-in to a prebuilt Codex CLI download.
178
190
  - `codex-orchestrator codex setup` — plan/apply a CO-managed Codex CLI install (optional managed/pinned path; use `--download-url` + `--download-sha256` for prebuilts).
@@ -18,7 +18,7 @@ import { formatDoctorUsageSummary, runDoctorUsage } from '../orchestrator/src/cl
18
18
  import { formatDevtoolsSetupSummary, runDevtoolsSetup } from '../orchestrator/src/cli/devtoolsSetup.js';
19
19
  import { formatCodexCliSetupSummary, runCodexCliSetup } from '../orchestrator/src/cli/codexCliSetup.js';
20
20
  import { formatDelegationSetupSummary, runDelegationSetup } from '../orchestrator/src/cli/delegationSetup.js';
21
- import { formatSkillsInstallSummary, installSkills } from '../orchestrator/src/cli/skills.js';
21
+ import { formatSkillsInstallSummary, installSkills, listBundledSkills } from '../orchestrator/src/cli/skills.js';
22
22
  import { loadPackageInfo } from '../orchestrator/src/cli/utils/packageInfo.js';
23
23
  import { slugify } from '../orchestrator/src/cli/utils/strings.js';
24
24
  import { serveMcp } from '../orchestrator/src/cli/mcp.js';
@@ -65,6 +65,9 @@ async function main() {
65
65
  case 'init':
66
66
  await handleInit(args);
67
67
  break;
68
+ case 'setup':
69
+ await handleSetup(args);
70
+ break;
68
71
  case 'doctor':
69
72
  await handleDoctor(args);
70
73
  break;
@@ -556,10 +559,106 @@ async function handleInit(rawArgs) {
556
559
  }
557
560
  }
558
561
  }
562
+ async function handleSetup(rawArgs) {
563
+ const { positionals, flags } = parseArgs(rawArgs);
564
+ if (isHelpRequest(positionals, flags)) {
565
+ console.log(`Usage: codex-orchestrator setup [--yes] [--format json]
566
+
567
+ One-shot bootstrap for downstream users. Installs bundled skills and configures
568
+ delegation + DevTools MCP wiring.
569
+
570
+ Options:
571
+ --yes Apply setup (otherwise plan only).
572
+ --repo <path> Repo root for delegation wiring (default cwd).
573
+ --format json Emit machine-readable output (dry-run only).
574
+ `);
575
+ return;
576
+ }
577
+ const format = flags['format'] === 'json' ? 'json' : 'text';
578
+ const apply = Boolean(flags['yes']);
579
+ if (format === 'json' && apply) {
580
+ throw new Error('setup does not support --format json with --yes.');
581
+ }
582
+ const repoFlag = readStringFlag(flags, 'repo');
583
+ const repoRoot = repoFlag ?? process.cwd();
584
+ const repoFlagValue = repoFlag ? (/\s/u.test(repoFlag) ? JSON.stringify(repoFlag) : repoFlag) : null;
585
+ const delegationRepoArg = repoFlagValue ? ` --repo ${repoFlagValue}` : '';
586
+ const bundledSkills = await listBundledSkills();
587
+ if (bundledSkills.length === 0) {
588
+ throw new Error('No bundled skills detected; cannot run setup.');
589
+ }
590
+ const forceSkills = bundledSkills.filter((skill) => skill !== 'chrome-devtools');
591
+ if (!apply) {
592
+ const forceOnly = forceSkills.join(',');
593
+ const forceCommand = forceOnly ? `codex-orchestrator skills install --force --only ${forceOnly}` : null;
594
+ const devtoolsCommand = bundledSkills.includes('chrome-devtools')
595
+ ? 'codex-orchestrator skills install --only chrome-devtools'
596
+ : null;
597
+ const delegation = await runDelegationSetup({ repoRoot });
598
+ const devtools = await runDevtoolsSetup();
599
+ const payload = {
600
+ status: 'planned',
601
+ steps: {
602
+ skills: {
603
+ commandLines: [forceCommand, devtoolsCommand].filter((entry) => Boolean(entry)),
604
+ note: 'Installs bundled skills into $CODEX_HOME/skills (setup avoids overwriting chrome-devtools when already present).'
605
+ },
606
+ delegation,
607
+ devtools
608
+ }
609
+ };
610
+ if (format === 'json') {
611
+ console.log(JSON.stringify(payload, null, 2));
612
+ return;
613
+ }
614
+ console.log('Setup plan:');
615
+ console.log('- Skills:');
616
+ for (const commandLine of payload.steps.skills.commandLines) {
617
+ console.log(` - ${commandLine}`);
618
+ }
619
+ console.log(`- Delegation: codex-orchestrator delegation setup --yes${delegationRepoArg}`);
620
+ console.log('- DevTools: codex-orchestrator devtools setup --yes');
621
+ console.log('Run with --yes to apply this setup.');
622
+ return;
623
+ }
624
+ const primarySkills = forceSkills.length > 0 ? await installSkills({ force: true, only: forceSkills }) : null;
625
+ const devtoolsSkill = bundledSkills.includes('chrome-devtools')
626
+ ? await installSkills({ force: false, only: ['chrome-devtools'] })
627
+ : null;
628
+ const skills = primarySkills && devtoolsSkill
629
+ ? {
630
+ sourceRoot: primarySkills.sourceRoot,
631
+ targetRoot: primarySkills.targetRoot,
632
+ skills: [...new Set([...primarySkills.skills, ...devtoolsSkill.skills])],
633
+ written: [...primarySkills.written, ...devtoolsSkill.written],
634
+ skipped: [...primarySkills.skipped, ...devtoolsSkill.skipped]
635
+ }
636
+ : devtoolsSkill ?? primarySkills;
637
+ if (!skills) {
638
+ throw new Error('No bundled skills detected; cannot run setup.');
639
+ }
640
+ const delegation = await runDelegationSetup({ apply: true, repoRoot });
641
+ const devtools = await runDevtoolsSetup({ apply: true });
642
+ for (const line of formatSkillsInstallSummary(skills)) {
643
+ console.log(line);
644
+ }
645
+ for (const line of formatDelegationSetupSummary(delegation)) {
646
+ console.log(line);
647
+ }
648
+ for (const line of formatDevtoolsSetupSummary(devtools)) {
649
+ console.log(line);
650
+ }
651
+ console.log('Next: codex-orchestrator doctor --usage');
652
+ }
559
653
  async function handleDoctor(rawArgs) {
560
654
  const { flags } = parseArgs(rawArgs);
561
655
  const format = flags['format'] === 'json' ? 'json' : 'text';
562
656
  const includeUsage = Boolean(flags['usage']);
657
+ const wantsApply = Boolean(flags['apply']);
658
+ const apply = Boolean(flags['yes']);
659
+ if (wantsApply && format === 'json') {
660
+ throw new Error('doctor --apply does not support --format json.');
661
+ }
563
662
  const windowDaysRaw = readStringFlag(flags, 'window-days');
564
663
  let windowDays = undefined;
565
664
  if (windowDaysRaw) {
@@ -591,6 +690,63 @@ async function handleDoctor(rawArgs) {
591
690
  console.log(line);
592
691
  }
593
692
  }
693
+ if (!wantsApply) {
694
+ return;
695
+ }
696
+ const repoRoot = process.cwd();
697
+ const delegationPlan = await runDelegationSetup({ repoRoot });
698
+ const devtoolsPlan = await runDevtoolsSetup();
699
+ const needsDelegation = !delegationPlan.readiness.configured;
700
+ const needsDevtoolsSkill = devtoolsPlan.readiness.skill.status !== 'ok';
701
+ const devtoolsConfigStatus = devtoolsPlan.readiness.config.status;
702
+ const needsDevtoolsConfig = devtoolsConfigStatus === 'missing';
703
+ const hasInvalidDevtoolsConfig = devtoolsConfigStatus === 'invalid';
704
+ if (!needsDelegation && !needsDevtoolsSkill && !needsDevtoolsConfig && !hasInvalidDevtoolsConfig) {
705
+ console.log('Doctor apply: nothing to do.');
706
+ return;
707
+ }
708
+ console.log('Doctor apply plan:');
709
+ if (needsDevtoolsSkill) {
710
+ console.log('- Install skill: chrome-devtools (codex-orchestrator skills install --only chrome-devtools)');
711
+ }
712
+ if (hasInvalidDevtoolsConfig) {
713
+ console.log(`- DevTools MCP config is invalid: ${devtoolsPlan.readiness.config.path} (fix config.toml then rerun doctor --apply)`);
714
+ }
715
+ if (needsDevtoolsConfig) {
716
+ console.log('- Configure DevTools MCP: codex-orchestrator devtools setup --yes');
717
+ }
718
+ if (needsDelegation) {
719
+ console.log('- Configure delegation MCP: codex-orchestrator delegation setup --yes');
720
+ }
721
+ if (!apply) {
722
+ console.log('Run with --apply --yes to apply these fixes.');
723
+ return;
724
+ }
725
+ if (needsDevtoolsSkill) {
726
+ const skills = await installSkills({ only: ['chrome-devtools'] });
727
+ for (const line of formatSkillsInstallSummary(skills)) {
728
+ console.log(line);
729
+ }
730
+ }
731
+ if (needsDelegation) {
732
+ const delegation = await runDelegationSetup({ apply: true, repoRoot });
733
+ for (const line of formatDelegationSetupSummary(delegation)) {
734
+ console.log(line);
735
+ }
736
+ }
737
+ if (hasInvalidDevtoolsConfig) {
738
+ console.log(`DevTools setup: skipped (config.toml is invalid: ${devtoolsPlan.readiness.config.path}). Fix it and rerun doctor --apply --yes.`);
739
+ }
740
+ else if (needsDevtoolsConfig) {
741
+ const devtools = await runDevtoolsSetup({ apply: true });
742
+ for (const line of formatDevtoolsSetupSummary(devtools)) {
743
+ console.log(line);
744
+ }
745
+ }
746
+ const doctorAfter = runDoctor();
747
+ for (const line of formatDoctorSummary(doctorAfter)) {
748
+ console.log(line);
749
+ }
594
750
  }
595
751
  async function handleDevtools(rawArgs) {
596
752
  const { positionals, flags } = parseArgs(rawArgs);
@@ -1023,11 +1179,17 @@ Commands:
1023
1179
  --codex-download-sha256 <sha> Expected SHA256 for the prebuilt download.
1024
1180
  --codex-force Overwrite existing CO-managed codex binary.
1025
1181
  --yes Apply codex CLI setup (otherwise plan only).
1026
- doctor [--format json] [--usage] [--window-days <n>] [--task <id>]
1182
+ setup [--yes] [--format json]
1183
+ --yes Apply setup (otherwise plan only).
1184
+ --repo <path> Repo root for delegation wiring (default cwd).
1185
+ --format json Emit machine-readable output (dry-run only).
1186
+ doctor [--format json] [--usage] [--window-days <n>] [--task <id>] [--apply]
1027
1187
  --usage Include a local usage snapshot (scans .runs/).
1028
1188
  --window-days <n> Window for --usage (default 30).
1029
1189
  --task <id> Limit --usage scan to a specific task directory.
1030
- --format json Emit machine-readable output.
1190
+ --apply Plan/apply quick fixes for DevTools + delegation wiring (use with --yes).
1191
+ --yes Apply fixes when --apply is set.
1192
+ --format json Emit machine-readable output (not supported with --apply).
1031
1193
  codex setup
1032
1194
  --source <path> Build from local Codex repo (or git URL).
1033
1195
  --ref <ref> Git ref (branch/tag/sha) when building from repo.
@@ -20,7 +20,8 @@ export async function runDevtoolsSetup(options = {}) {
20
20
  throw new Error(`Cannot apply DevTools setup because config.toml is invalid: ${readiness.config.path}`);
21
21
  }
22
22
  await applyDevtoolsSetup(plan, env);
23
- return { status: 'applied', plan, readiness };
23
+ const readinessAfter = resolveDevtoolsReadiness(env);
24
+ return { status: 'applied', plan, readiness: readinessAfter };
24
25
  }
25
26
  export function formatDevtoolsSetupSummary(result) {
26
27
  const lines = [];
@@ -51,6 +51,7 @@ export function runDoctor(cwd = process.cwd()) {
51
51
  install: readiness.config.status === 'ok'
52
52
  ? undefined
53
53
  : [
54
+ 'Quick fix: codex-orchestrator doctor --apply --yes',
54
55
  'Run: codex-orchestrator devtools setup',
55
56
  `Run: ${setupPlan.commandLine}`,
56
57
  `Config path: ${setupPlan.configPath}`,
@@ -115,6 +116,7 @@ export function runDoctor(cwd = process.cwd()) {
115
116
  status: delegationStatus,
116
117
  config: delegationConfig,
117
118
  enablement: [
119
+ 'Quick fix: codex-orchestrator doctor --apply --yes',
118
120
  'Run: codex-orchestrator delegation setup --yes',
119
121
  'Or manually: codex mcp add delegation -- codex-orchestrator delegate-server',
120
122
  "Enable for a run with: codex -c 'mcp_servers.delegation.enabled=true' ...",
@@ -61,7 +61,7 @@ export function formatInitSummary(result, cwd) {
61
61
  lines.push('No files written.');
62
62
  }
63
63
  lines.push('Next steps (recommended):');
64
- lines.push(' - codex-orchestrator delegation setup --yes');
64
+ lines.push(' - codex-orchestrator setup --yes # installs bundled skills + configures delegation/devtools wiring');
65
65
  lines.push(' - codex-orchestrator codex setup # optional: managed/pinned Codex CLI (stock CLI works by default)');
66
66
  return lines;
67
67
  }
@@ -36,6 +36,12 @@ export async function installSkills(options = {}) {
36
36
  skills: selectedSkills
37
37
  };
38
38
  }
39
+ export async function listBundledSkills() {
40
+ const pkgRoot = findPackageRoot();
41
+ const sourceRoot = join(pkgRoot, 'skills');
42
+ await assertDirectory(sourceRoot);
43
+ return await listSkillNames(sourceRoot);
44
+ }
39
45
  export function formatSkillsInstallSummary(result, cwd = process.cwd()) {
40
46
  const lines = [];
41
47
  lines.push(`Skills source: ${result.sourceRoot}`);
package/docs/README.md CHANGED
@@ -101,7 +101,8 @@ Use `npx @kbediako/codex-orchestrator resume --run <run-id>` to continue interru
101
101
  ## Companion Package Commands
102
102
  - `codex-orchestrator mcp serve [--repo <path>] [--dry-run] [-- <extra args>]`: launch the MCP stdio server (delegates to `codex mcp-server`; stdout guard keeps protocol-only output, logs to stderr).
103
103
  - `codex-orchestrator init codex [--cwd <path>] [--force]`: copy starter templates into a repo (includes `mcp-client.json` and `AGENTS.md`; no overwrite unless `--force`).
104
- - `codex-orchestrator doctor [--format json] [--usage]`: check optional tooling dependencies plus collab/cloud/delegation readiness and print enablement commands. `--usage` appends a local usage snapshot (scans `.runs/`).
104
+ - `codex-orchestrator setup [--yes]`: one-shot bootstrap for downstream users (installs bundled skills and configures delegation + DevTools wiring).
105
+ - `codex-orchestrator doctor [--format json] [--usage] [--apply]`: check optional tooling dependencies plus collab/cloud/delegation readiness and print enablement commands. `--usage` appends a local usage snapshot (scans `.runs/`). `--apply` plans/applies quick fixes (use with `--yes`).
105
106
  - `codex-orchestrator devtools setup [--yes]`: print DevTools MCP setup instructions (`--yes` applies `codex mcp add ...`).
106
107
  - `codex-orchestrator delegation setup [--yes]`: configure delegation MCP wiring (`--yes` applies `codex mcp add ...`).
107
108
  - `codex-orchestrator skills install [--force] [--only <skills>] [--codex-home <path>]`: install bundled skills into `$CODEX_HOME/skills` (global skills remain the primary reference when installed).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kbediako/codex-orchestrator",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: chrome-devtools
3
+ description: Control and inspect Chrome via the Chrome DevTools MCP server (navigate, interact, screenshots, console, network, perf).
4
+ allowed-tools: mcp__chrome-devtools__*
5
+ ---
6
+
7
+ # Chrome DevTools (MCP)
8
+
9
+ Use this skill when you need browser-grounded evidence (UI screenshots, console errors, network failures, perf traces) or when a task requires real page interaction.
10
+
11
+ ## Preflight
12
+
13
+ - Ensure the MCP server is configured: `codex-orchestrator devtools setup --yes`.
14
+ - If tools are missing in the current run, enable the server and restart the run:
15
+ - `codex -c 'mcp_servers.chrome-devtools.enabled=true' ...`
16
+
17
+ ## Default Workflow
18
+
19
+ 1. Open a new page and navigate to the target URL.
20
+ 2. Wait for the page to be stable (avoid racing async renders).
21
+ 3. Interact with the UI (click/fill/press) to reproduce the behavior.
22
+ 4. Collect evidence:
23
+ - Screenshot(s) for visual state
24
+ - Console messages for runtime errors
25
+ - Network requests for failed/slow calls
26
+ 5. Close pages when finished.
27
+
28
+ ## Evidence Discipline
29
+
30
+ - Always capture at least one screenshot when validating UI behavior.
31
+ - When debugging, always include:
32
+ - `list_console_messages`
33
+ - `list_network_requests` (and fetch details for failures)
34
+
@@ -64,8 +64,10 @@ For runner + delegation coordination (short `--task` flow), see `docs/delegation
64
64
  ### 0) One-time setup (register the MCP server)
65
65
 
66
66
  - Register the delegation server once:
67
- - Preferred: `codex-orchestrator delegation setup --yes`
68
- - This wraps `codex mcp add delegation ...` and keeps wiring discoverable via `codex-orchestrator doctor`.
67
+ - Preferred: `codex-orchestrator setup --yes`
68
+ - One-shot bootstrap (installs bundled skills + configures delegation/DevTools wiring).
69
+ - `codex-orchestrator delegation setup --yes`
70
+ - Delegation-only setup (wraps `codex mcp add delegation ...` and keeps wiring discoverable via `codex-orchestrator doctor`).
69
71
  - `codex mcp add delegation -- codex-orchestrator delegate-server`
70
72
  - Optional: append `--repo /path/to/repo` to pin the server to one repo (not recommended if you work across repos).
71
73
  - `delegate-server` is the canonical name; `delegation-server` is supported as an alias.