codex-orchestrator 0.1.27 → 0.1.29

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 (37) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +11 -2
  3. package/dist/src/cli.js +28 -1
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/github/gh-issue-adapter.d.ts +2 -1
  6. package/dist/src/github/gh-issue-adapter.d.ts.map +1 -1
  7. package/dist/src/github/gh-issue-adapter.js +9 -0
  8. package/dist/src/github/gh-issue-adapter.js.map +1 -1
  9. package/dist/src/github/issues.d.ts +29 -0
  10. package/dist/src/github/issues.d.ts.map +1 -1
  11. package/dist/src/github/issues.js +75 -0
  12. package/dist/src/github/issues.js.map +1 -1
  13. package/dist/src/index.d.ts +2 -2
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +1 -1
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/runner/doctor-command.d.ts +2 -0
  18. package/dist/src/runner/doctor-command.d.ts.map +1 -1
  19. package/dist/src/runner/doctor-command.js +40 -10
  20. package/dist/src/runner/doctor-command.js.map +1 -1
  21. package/dist/src/runner/recovery.d.ts +1 -1
  22. package/dist/src/runner/recovery.d.ts.map +1 -1
  23. package/dist/src/runner/recovery.js +6 -3
  24. package/dist/src/runner/recovery.js.map +1 -1
  25. package/dist/src/setup/codex-command-resolver.d.ts +10 -0
  26. package/dist/src/setup/codex-command-resolver.d.ts.map +1 -0
  27. package/dist/src/setup/codex-command-resolver.js +91 -0
  28. package/dist/src/setup/codex-command-resolver.js.map +1 -0
  29. package/dist/src/setup/prompt-sync.d.ts +13 -0
  30. package/dist/src/setup/prompt-sync.d.ts.map +1 -0
  31. package/dist/src/setup/prompt-sync.js +219 -0
  32. package/dist/src/setup/prompt-sync.js.map +1 -0
  33. package/dist/src/setup/setup-command.d.ts +5 -0
  34. package/dist/src/setup/setup-command.d.ts.map +1 -1
  35. package/dist/src/setup/setup-command.js +41 -29
  36. package/dist/src/setup/setup-command.js.map +1 -1
  37. package/package.json +1 -1
@@ -1,7 +1,9 @@
1
1
  import { access, constants } from 'node:fs/promises';
2
2
  import { resolve } from 'node:path';
3
3
  import { codexPhaseKeys } from '../config/schema.js';
4
+ import { resolveExecutableCommand } from '../setup/codex-command-resolver.js';
4
5
  import { GhCliLabelAdapter } from '../setup/github-label-adapter.js';
6
+ import { checkPromptFiles } from '../setup/prompt-sync.js';
5
7
  import { defaultShellCommandExecutor } from '../process/command.js';
6
8
  import { readRunnerConfig } from './command-utils.js';
7
9
  export async function runDoctorCommand(options) {
@@ -17,8 +19,9 @@ export async function runDoctorCommand(options) {
17
19
  }
18
20
  if (config) {
19
21
  const shellExecutor = options.shellExecutor ?? defaultShellCommandExecutor;
22
+ const commandResolver = options.commandResolver ?? resolveExecutableCommand;
20
23
  const labelAdapter = options.labelAdapter ?? new GhCliLabelAdapter(config.github.owner, config.github.repo);
21
- checks.push(...await collectReadinessChecks(targetRoot, config, labelAdapter, shellExecutor));
24
+ checks.push(...await collectReadinessChecks(targetRoot, config, labelAdapter, shellExecutor, commandResolver));
22
25
  }
23
26
  const json = buildDoctorJson(targetRoot, config, checks);
24
27
  return {
@@ -26,17 +29,18 @@ export async function runDoctorCommand(options) {
26
29
  json,
27
30
  };
28
31
  }
29
- async function collectReadinessChecks(targetRoot, config, labelAdapter, shellExecutor) {
32
+ async function collectReadinessChecks(targetRoot, config, labelAdapter, shellExecutor, commandResolver) {
30
33
  const checks = [];
31
- checks.push(await checkCommand(shellExecutor, 'git', 'git', 'Git command'));
34
+ checks.push(await checkCommand(commandResolver, 'git', 'git', 'Git command'));
32
35
  checks.push(await checkShell(shellExecutor, 'git-repository', 'Git repository', 'git rev-parse --is-inside-work-tree', targetRoot));
33
36
  checks.push(await checkShell(shellExecutor, 'base-branch', 'Base branch', `git rev-parse --verify ${shellQuote(config.branches.base)}`, targetRoot));
34
37
  checks.push(await checkLabels(labelAdapter, Object.values(config.github.labels).map((label) => label.name)));
35
38
  checks.push(await checkPath(targetRoot, 'target', 'Target directory'));
36
39
  checks.push(await checkPath(resolve(targetRoot, config.runner.stateDir), 'state-dir', 'Runner state directory', 'warn'));
37
40
  checks.push(await checkPath(resolve(targetRoot, config.runner.workspaceRoot), 'workspace-root', 'Runner workspace root', 'warn'));
38
- checks.push(await checkCommand(shellExecutor, config.codex.command, 'codex-command', 'Codex command'));
39
- checks.push(...await checkProfileCommands(config, shellExecutor));
41
+ checks.push(await checkPromptUpdates(targetRoot));
42
+ checks.push(await checkCommand(commandResolver, config.codex.command, 'codex-command', 'Codex command'));
43
+ checks.push(...await checkProfileCommands(config, commandResolver));
40
44
  checks.push(check('configured-checks', 'Configured checks', Object.keys(config.checks).length > 0 ? 'pass' : 'warn', Object.keys(config.checks).length > 0 ? `${Object.keys(config.checks).length} check(s) configured` : 'no configured checks'));
41
45
  checks.push(check('phase-profiles', 'Phase profiles', 'pass', 'phase profile config is valid and missing profiles fall back to global Codex config'));
42
46
  checks.push(check('visual-proof', 'Visual proof prerequisites', config.reviewGates.visualProof.enabled && !config.reviewGates.visualProof.runnerValidationCommand ? 'warn' : 'pass', config.reviewGates.visualProof.enabled
@@ -44,14 +48,25 @@ async function collectReadinessChecks(targetRoot, config, labelAdapter, shellExe
44
48
  : 'visual proof gate is disabled'));
45
49
  return checks;
46
50
  }
47
- async function checkProfileCommands(config, shellExecutor) {
51
+ async function checkPromptUpdates(targetRoot) {
52
+ const result = await checkPromptFiles(targetRoot);
53
+ const pending = result.installed.length + result.updated.length + result.conflicts.length;
54
+ if (pending === 0) {
55
+ return check('prompt-sync', 'Prompt sync', 'pass', 'project prompts match bundled package prompts');
56
+ }
57
+ return check('prompt-sync', 'Prompt sync', 'warn', `prompt updates available: ${result.installed.length} missing, ${result.updated.length} safe update(s), ${result.conflicts.length} conflict(s)`, [
58
+ 'Run codex-orchestrator setup --sync-prompts=auto to apply safe prompt updates.',
59
+ 'Use --sync-prompts=replace to overwrite local prompt edits with bundled prompts.',
60
+ ]);
61
+ }
62
+ async function checkProfileCommands(config, commandResolver) {
48
63
  const checks = [];
49
64
  for (const phase of codexPhaseKeys) {
50
65
  const command = config.codex.profiles?.[phase]?.command;
51
66
  if (!command || command === config.codex.command) {
52
67
  continue;
53
68
  }
54
- checks.push(await checkCommand(shellExecutor, command, `codex-profile-${phase}`, `Codex profile ${phase}`));
69
+ checks.push(await checkCommand(commandResolver, command, `codex-profile-${phase}`, `Codex profile ${phase}`));
55
70
  }
56
71
  return checks;
57
72
  }
@@ -75,12 +90,24 @@ async function checkPath(path, id, title, missingStatus = 'fail') {
75
90
  return check(id, title, missingStatus, `${path} is not readable`);
76
91
  }
77
92
  }
78
- async function checkCommand(shellExecutor, command, id, title) {
79
- return checkShell(shellExecutor, id, title, `command -v ${shellQuote(command)}`, undefined);
93
+ async function checkCommand(commandResolver, command, id, title) {
94
+ const resolvedCommand = await commandResolver(command);
95
+ return check(id, title, resolvedCommand ? 'pass' : 'fail', resolvedCommand ? `${title} is ready` : unavailableCommandSummary(id, command));
80
96
  }
81
97
  async function checkShell(shellExecutor, id, title, command, cwd) {
82
98
  const result = await shellExecutor(command, { cwd });
83
- return check(id, title, result.exitCode === 0 ? 'pass' : 'fail', result.exitCode === 0 ? `${title} is ready` : (result.stderr || result.stdout || `${title} failed`));
99
+ return check(id, title, result.exitCode === 0 ? 'pass' : 'fail', result.exitCode === 0
100
+ ? `${title} is ready`
101
+ : (result.stderr || result.stdout || `${title} failed`));
102
+ }
103
+ function unavailableCommandSummary(id, command) {
104
+ if (id === 'codex-command') {
105
+ return `Codex command '${command}' is not available. Re-run setup so codex-orchestrator can persist a stable Codex CLI path.`;
106
+ }
107
+ if (id.startsWith('codex-profile-')) {
108
+ return `Codex profile command '${command}' is not available. Re-run setup or update the configured profile command.`;
109
+ }
110
+ return `Command '${command}' is not available.`;
84
111
  }
85
112
  function buildDoctorJson(targetRoot, config, checks) {
86
113
  const pass = checks.filter((item) => item.status === 'pass');
@@ -118,6 +145,9 @@ function check(id, title, status, summary, details) {
118
145
  return { id, title, status, summary, details };
119
146
  }
120
147
  function shellQuote(value) {
148
+ if (process.platform === 'win32') {
149
+ return `"${value.replaceAll('"', '""')}"`;
150
+ }
121
151
  return `'${value.replaceAll("'", "'\\''")}'`;
122
152
  }
123
153
  //# sourceMappingURL=doctor-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-command.js","sourceRoot":"","sources":["../../../src/runner/doctor-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-command.js","sourceRoot":"","sources":["../../../src/runner/doctor-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAkC,MAAM,oCAAoC,CAAC;AAE9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAA6B,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAoCtD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA6B;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,MAA2C,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,2BAA2B,CAAC;QAC3E,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,wBAAwB,CAAC;QAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5G,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7E,IAAI;KACL,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,UAAkB,EAClB,MAA+B,EAC/B,YAAgC,EAChC,aAAmC,EACnC,eAA0C;IAE1C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC;IACpI,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAC1B,aAAa,EACb,aAAa,EACb,aAAa,EACb,0BAA0B,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAC5D,UAAU,CACX,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC;IACzH,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAAC;IAClI,MAAM,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IACzG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,KAAK,CACf,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAC5H,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,CACf,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,qFAAqF,CACtF,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,CACf,cAAc,EACd,4BAA4B,EAC5B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACnH,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO;QACpC,CAAC,CAAC,8BAA8B;QAChC,CAAC,CAAC,+BAA+B,CACpC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;IAC1F,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,+CAA+C,CAAC,CAAC;IACtG,CAAC;IAED,OAAO,KAAK,CACV,aAAa,EACb,aAAa,EACb,MAAM,EACN,6BAA6B,MAAM,CAAC,SAAS,CAAC,MAAM,aAAa,MAAM,CAAC,OAAO,CAAC,MAAM,oBAAoB,MAAM,CAAC,SAAS,CAAC,MAAM,cAAc,EAC/I;QACE,gFAAgF;QAChF,kFAAkF;KACnF,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAA+B,EAC/B,eAA0C;IAE1C,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QACxD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,eAAe,EAAE,OAAO,EAAE,iBAAiB,KAAK,EAAE,EAAE,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC;IAChH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,cAAwB;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,KAAK,CACV,eAAe,EACf,eAAe,EACf,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACtC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,4BAA4B,EAClG,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CACV,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,EACN,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,EAAU,EAAE,KAAa,EAAE,gBAAmC,MAAM;IACzG,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,kBAAkB,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,eAA0C,EAC1C,OAAe,EACf,EAAU,EACV,KAAa;IAEb,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,KAAK,CACV,EAAE,EACF,KAAK,EACL,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACjC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,EAAE,OAAO,CAAC,CAC/E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,aAAmC,EACnC,EAAU,EACV,KAAa,EACb,OAAe,EACf,GAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACrD,OAAO,KAAK,CACV,EAAE,EACF,KAAK,EACL,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACvC,MAAM,CAAC,QAAQ,KAAK,CAAC;QACnB,CAAC,CAAC,GAAG,KAAK,WAAW;QACrB,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,SAAS,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,EAAU,EAAE,OAAe;IAC5D,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;QAC3B,OAAO,kBAAkB,OAAO,6FAA6F,CAAC;IAChI,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,OAAO,0BAA0B,OAAO,4EAA4E,CAAC;IACvH,CAAC;IAED,OAAO,YAAY,OAAO,qBAAqB,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CACtB,UAAkB,EAClB,MAA2C,EAC3C,MAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7D,OAAO;QACL,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;QAC5E,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACpE,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAkB;IAC1C,OAAO;QACL,2BAA2B;QAC3B,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;QAChD,WAAW,MAAM,CAAC,MAAM,EAAE;QAC1B,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO;QAChG,OAAO;QACP,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,OAAO;QACP,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,OAAO;QACP,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;KAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,MAA2B;IAC/C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,KAAK,CACZ,EAAU,EACV,KAAa,EACb,MAAyB,EACzB,OAAe,EACf,OAAkB;IAElB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC"}
@@ -2,7 +2,7 @@ import type { CodexOrchestratorConfig } from '../config/schema.js';
2
2
  import type { GitHubIssueAdapter } from '../github/issues.js';
3
3
  import { type RunnerMode } from './issue-state-machine.js';
4
4
  import type { RunnerStateStore } from './local-state.js';
5
- export type RecoveryStatus = 'active' | 'stale' | 'missing' | 'completed' | 'waiting-for-clarification' | 'clarification-resumable';
5
+ export type RecoveryStatus = 'active' | 'stale' | 'missing' | 'completed' | 'closed-missing-evidence' | 'waiting-for-clarification' | 'clarification-resumable';
6
6
  export interface RecoveryEntry {
7
7
  issueNumber: number;
8
8
  mode: RunnerMode;
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/runner/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,2BAA2B,GAC3B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,EAAE,uBAAuB,CAAC;IAChC,GAAG,EAAE,IAAI,CAAC;IACV,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAWD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAoCrG"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/runner/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,yBAAyB,GACzB,2BAA2B,GAC3B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,gBAAgB,CAAC;IACxB,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,EAAE,uBAAuB,CAAC;IAChC,GAAG,EAAE,IAAI,CAAC;IACV,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAYD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAoCrG"}
@@ -1,9 +1,11 @@
1
+ import { hasIssueClosureEvidence } from '../github/issues.js';
1
2
  import { clearClarificationGate, hasMaintainerResponseAfterLatestClarification, } from './issue-state-machine.js';
2
3
  const recoveryReasons = {
3
4
  active: 'GitHub still marks the issue running',
4
5
  stale: 'local run exists but GitHub no longer marks it running',
5
6
  missing: 'local run has no matching GitHub issue',
6
7
  completed: 'GitHub marks the work completed',
8
+ 'closed-missing-evidence': 'GitHub marks the issue closed without completion evidence',
7
9
  'waiting-for-clarification': 'blocked clarification is waiting for maintainer response',
8
10
  'clarification-resumable': 'maintainer clarification response detected',
9
11
  };
@@ -44,9 +46,10 @@ function classifyIssue(issue, config) {
44
46
  return 'missing';
45
47
  }
46
48
  const labels = new Set(issue.labels.map((label) => label.name));
47
- if (issue.state === 'CLOSED' ||
48
- labels.has(config.github.labels.review.name) ||
49
- issue.closedByPullRequestsReferences.length > 0) {
49
+ if (issue.state === 'CLOSED') {
50
+ return hasIssueClosureEvidence(issue) ? 'completed' : 'closed-missing-evidence';
51
+ }
52
+ if (labels.has(config.github.labels.review.name) || issue.closedByPullRequestsReferences.length > 0) {
50
53
  return 'completed';
51
54
  }
52
55
  if (labels.has(config.github.labels.blocked.name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/runner/recovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/runner/recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type CodexCommandResolver = () => Promise<string | undefined>;
2
+ export type ExecutableCommandResolver = (command: string) => Promise<string | undefined>;
3
+ export interface ResolveCodexCommandOptions {
4
+ env?: NodeJS.ProcessEnv;
5
+ platform?: NodeJS.Platform;
6
+ canExecute?: (path: string) => Promise<boolean>;
7
+ }
8
+ export declare function resolveCodexCommand(options?: ResolveCodexCommandOptions): Promise<string | undefined>;
9
+ export declare function resolveExecutableCommand(command: string, options?: ResolveCodexCommandOptions): Promise<string | undefined>;
10
+ //# sourceMappingURL=codex-command-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-command-resolver.d.ts","sourceRoot":"","sources":["../../../src/setup/codex-command-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AACrE,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzF,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB/G;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB7B"}
@@ -0,0 +1,91 @@
1
+ import { access, constants } from 'node:fs/promises';
2
+ import { posix, win32 } from 'node:path';
3
+ export async function resolveCodexCommand(options = {}) {
4
+ const platform = options.platform ?? process.platform;
5
+ const env = options.env ?? process.env;
6
+ const canExecute = options.canExecute ?? isExecutable;
7
+ const fromPath = await resolveExecutableCommand('codex', { env, platform, canExecute });
8
+ if (fromPath) {
9
+ return fromPath;
10
+ }
11
+ for (const candidate of knownFallbackCandidates(platform)) {
12
+ if (await canExecute(candidate)) {
13
+ return candidate;
14
+ }
15
+ }
16
+ return undefined;
17
+ }
18
+ export async function resolveExecutableCommand(command, options = {}) {
19
+ const platform = options.platform ?? process.platform;
20
+ const env = options.env ?? process.env;
21
+ const canExecute = options.canExecute ?? isExecutable;
22
+ if (hasPathSegment(command, platform)) {
23
+ return await canExecute(command) ? command : undefined;
24
+ }
25
+ for (const candidate of pathCandidates(command, env, platform)) {
26
+ if (await canExecute(candidate)) {
27
+ return candidate;
28
+ }
29
+ }
30
+ return undefined;
31
+ }
32
+ function pathCandidates(command, env, platform) {
33
+ const pathValue = readPathValue(env);
34
+ if (!pathValue) {
35
+ return [];
36
+ }
37
+ const pathModule = platform === 'win32' ? win32 : posix;
38
+ const commands = commandNames(command, platform, env);
39
+ const separator = platform === 'win32' ? ';' : ':';
40
+ const directories = pathValue.split(separator).filter((item) => item.length > 0);
41
+ return directories.flatMap((directory) => commands.map((command) => pathModule.join(directory, command)));
42
+ }
43
+ function commandNames(command, platform, env) {
44
+ if (platform !== 'win32') {
45
+ return [command];
46
+ }
47
+ if (win32.extname(command)) {
48
+ return [command];
49
+ }
50
+ const extensions = readPathExt(env);
51
+ return [command, ...extensions.map((extension) => `${command}${extension.toLowerCase()}`)];
52
+ }
53
+ function hasPathSegment(command, platform) {
54
+ if (platform === 'win32') {
55
+ return command.includes('\\') || command.includes('/') || win32.isAbsolute(command);
56
+ }
57
+ return command.includes('/') || posix.isAbsolute(command);
58
+ }
59
+ function readPathValue(env) {
60
+ return env.PATH ?? env.Path ?? env.path;
61
+ }
62
+ function readPathExt(env) {
63
+ const value = env.PATHEXT ?? '.COM;.EXE;.BAT;.CMD';
64
+ const seen = new Set();
65
+ const extensions = [];
66
+ for (const rawExtension of value.split(';')) {
67
+ const extension = rawExtension.trim();
68
+ if (!extension || seen.has(extension.toLowerCase())) {
69
+ continue;
70
+ }
71
+ seen.add(extension.toLowerCase());
72
+ extensions.push(extension);
73
+ }
74
+ return extensions;
75
+ }
76
+ function knownFallbackCandidates(platform) {
77
+ if (platform === 'darwin') {
78
+ return ['/Applications/Codex.app/Contents/Resources/codex'];
79
+ }
80
+ return [];
81
+ }
82
+ async function isExecutable(path) {
83
+ try {
84
+ await access(path, constants.X_OK);
85
+ return true;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
91
+ //# sourceMappingURL=codex-command-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-command-resolver.js","sourceRoot":"","sources":["../../../src/setup/codex-command-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const promptSyncModes: readonly ["auto", "keep", "replace", "merge"];
2
+ export type PromptSyncMode = (typeof promptSyncModes)[number];
3
+ export interface PromptSyncResult {
4
+ manifestPath: string;
5
+ installed: string[];
6
+ updated: string[];
7
+ preserved: string[];
8
+ conflicts: string[];
9
+ }
10
+ export declare function promptManifestPath(targetRoot: string): string;
11
+ export declare function checkPromptFiles(targetRoot: string, mode?: PromptSyncMode): Promise<PromptSyncResult>;
12
+ export declare function syncPromptFiles(targetRoot: string, mode: PromptSyncMode): Promise<PromptSyncResult>;
13
+ //# sourceMappingURL=prompt-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-sync.d.ts","sourceRoot":"","sources":["../../../src/setup/prompt-sync.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,+CAAgD,CAAC;AAC7E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAsBD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,cAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEnH;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEzG"}
@@ -0,0 +1,219 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { cp, mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { dirname, join } from 'node:path';
4
+ import { readPackageInfo } from '../package-info.js';
5
+ import { workflowDefinitions } from './workflows.js';
6
+ export const promptSyncModes = ['auto', 'keep', 'replace', 'merge'];
7
+ export function promptManifestPath(targetRoot) {
8
+ return join(targetRoot, '.codex-orchestrator', 'prompts', 'manifest.json');
9
+ }
10
+ export async function checkPromptFiles(targetRoot, mode = 'auto') {
11
+ return visitPromptFiles(targetRoot, mode, false);
12
+ }
13
+ export async function syncPromptFiles(targetRoot, mode) {
14
+ return visitPromptFiles(targetRoot, mode, true);
15
+ }
16
+ async function visitPromptFiles(targetRoot, mode, write) {
17
+ const packageInfo = await readPackageInfo();
18
+ const manifestPath = promptManifestPath(targetRoot);
19
+ const manifest = await readPromptManifest(manifestPath, packageInfo.name, packageInfo.version);
20
+ const result = {
21
+ manifestPath,
22
+ installed: [],
23
+ updated: [],
24
+ preserved: [],
25
+ conflicts: [],
26
+ };
27
+ for (const definition of promptDefinitions()) {
28
+ const destination = join(targetRoot, definition.destinationRelativePath);
29
+ const source = new URL(`../../../prompts/${definition.sourceRelativePath}`, import.meta.url);
30
+ const packageContent = await readFile(source, 'utf8');
31
+ const packageHash = sha256(packageContent);
32
+ const existingContent = await readOptionalFile(destination);
33
+ const existingHash = existingContent === undefined ? undefined : sha256(existingContent);
34
+ const entry = manifest.prompts[definition.manifestKey];
35
+ if (mode === 'replace' || existingContent === undefined) {
36
+ if (write) {
37
+ await mkdir(dirname(destination), { recursive: true });
38
+ await cp(source, destination, { force: true });
39
+ }
40
+ manifest.prompts[definition.manifestKey] = manifestEntry(packageHash, packageInfo.version);
41
+ result[existingContent === undefined ? 'installed' : 'updated'].push(definition.manifestKey);
42
+ continue;
43
+ }
44
+ if (existingHash === packageHash) {
45
+ manifest.prompts[definition.manifestKey] = manifestEntry(packageHash, packageInfo.version);
46
+ result.preserved.push(definition.manifestKey);
47
+ continue;
48
+ }
49
+ if (!entry) {
50
+ if (mode === 'merge') {
51
+ manifest.prompts[definition.manifestKey] = await mergePromptUpdate({
52
+ destination,
53
+ existingContent,
54
+ packageContent,
55
+ packageHash,
56
+ packageVersion: packageInfo.version,
57
+ promptKey: definition.manifestKey,
58
+ write,
59
+ });
60
+ result.updated.push(definition.manifestKey);
61
+ }
62
+ else if (mode === 'keep') {
63
+ result.preserved.push(definition.manifestKey);
64
+ manifest.prompts[definition.manifestKey] = manifestEntry(packageHash, packageInfo.version);
65
+ }
66
+ else {
67
+ result.conflicts.push(definition.manifestKey);
68
+ manifest.prompts[definition.manifestKey] = {
69
+ ...manifestEntry(packageHash, packageInfo.version),
70
+ conflict: true,
71
+ };
72
+ }
73
+ continue;
74
+ }
75
+ if (entry.conflict) {
76
+ if (mode === 'merge') {
77
+ manifest.prompts[definition.manifestKey] = await mergePromptUpdate({
78
+ destination,
79
+ existingContent,
80
+ packageContent,
81
+ packageHash,
82
+ packageVersion: packageInfo.version,
83
+ promptKey: definition.manifestKey,
84
+ write,
85
+ });
86
+ result.updated.push(definition.manifestKey);
87
+ }
88
+ else if (mode === 'keep') {
89
+ result.preserved.push(definition.manifestKey);
90
+ }
91
+ else {
92
+ result.conflicts.push(definition.manifestKey);
93
+ }
94
+ continue;
95
+ }
96
+ const installedHash = entry?.installedHash ?? packageHash;
97
+ const previousPackageHash = entry?.packageHash ?? packageHash;
98
+ const localModified = existingHash !== installedHash;
99
+ const packageChanged = previousPackageHash !== packageHash;
100
+ const canAutoUpdate = !localModified && (mode === 'auto' || mode === 'merge');
101
+ if (canAutoUpdate) {
102
+ if (write) {
103
+ await writeFile(destination, packageContent, 'utf8');
104
+ }
105
+ manifest.prompts[definition.manifestKey] = manifestEntry(packageHash, packageInfo.version);
106
+ result.updated.push(definition.manifestKey);
107
+ continue;
108
+ }
109
+ if (localModified && packageChanged && mode === 'merge') {
110
+ manifest.prompts[definition.manifestKey] = await mergePromptUpdate({
111
+ destination,
112
+ existingContent,
113
+ packageContent,
114
+ packageHash,
115
+ packageVersion: packageInfo.version,
116
+ promptKey: definition.manifestKey,
117
+ write,
118
+ });
119
+ result.updated.push(definition.manifestKey);
120
+ continue;
121
+ }
122
+ if (localModified && packageChanged && mode === 'auto') {
123
+ result.conflicts.push(definition.manifestKey);
124
+ }
125
+ else {
126
+ result.preserved.push(definition.manifestKey);
127
+ }
128
+ manifest.prompts[definition.manifestKey] = {
129
+ installedHash,
130
+ packageHash,
131
+ packageVersion: packageInfo.version,
132
+ };
133
+ }
134
+ if (write) {
135
+ await mkdir(dirname(manifestPath), { recursive: true });
136
+ await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf8');
137
+ }
138
+ return result;
139
+ }
140
+ async function readPromptManifest(path, packageName, packageVersion) {
141
+ try {
142
+ const content = await readFile(path, 'utf8');
143
+ const parsed = JSON.parse(content);
144
+ if (parsed.version === 1 && typeof parsed.prompts === 'object' && parsed.prompts !== null) {
145
+ return {
146
+ version: 1,
147
+ packageName,
148
+ packageVersion,
149
+ prompts: parsed.prompts,
150
+ };
151
+ }
152
+ }
153
+ catch (error) {
154
+ if (!(error instanceof Error && 'code' in error && error.code === 'ENOENT')) {
155
+ throw error;
156
+ }
157
+ }
158
+ return { version: 1, packageName, packageVersion, prompts: {} };
159
+ }
160
+ async function readOptionalFile(path) {
161
+ try {
162
+ return await readFile(path, 'utf8');
163
+ }
164
+ catch (error) {
165
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {
166
+ return undefined;
167
+ }
168
+ throw error;
169
+ }
170
+ }
171
+ function promptDefinitions() {
172
+ return [
173
+ {
174
+ sourceRelativePath: 'setup-skill.md',
175
+ destinationRelativePath: '.codex-orchestrator/prompts/setup-skill.md',
176
+ manifestKey: 'setup-skill.md',
177
+ },
178
+ ...workflowDefinitions.map((definition) => {
179
+ const name = definition.promptPath.replace('.codex-orchestrator/prompts/', '');
180
+ return {
181
+ sourceRelativePath: name,
182
+ destinationRelativePath: definition.promptPath,
183
+ manifestKey: name,
184
+ };
185
+ }),
186
+ ];
187
+ }
188
+ function manifestEntry(packageHash, packageVersion) {
189
+ return {
190
+ installedHash: packageHash,
191
+ packageHash,
192
+ packageVersion,
193
+ };
194
+ }
195
+ async function mergePromptUpdate(input) {
196
+ const mergedContent = appendPackagePromptUpdate(input.existingContent, input.promptKey, input.packageVersion, input.packageContent);
197
+ if (input.write) {
198
+ await writeFile(input.destination, mergedContent, 'utf8');
199
+ }
200
+ return {
201
+ installedHash: sha256(mergedContent),
202
+ packageHash: input.packageHash,
203
+ packageVersion: input.packageVersion,
204
+ };
205
+ }
206
+ function appendPackagePromptUpdate(existingContent, promptKey, packageVersion, packageContent) {
207
+ return [
208
+ existingContent.trimEnd(),
209
+ '',
210
+ `<!-- codex-orchestrator package prompt update: ${promptKey} @ ${packageVersion} -->`,
211
+ packageContent.trimEnd(),
212
+ `<!-- end codex-orchestrator package prompt update: ${promptKey} @ ${packageVersion} -->`,
213
+ '',
214
+ ].join('\n');
215
+ }
216
+ function sha256(value) {
217
+ return createHash('sha256').update(value).digest('hex');
218
+ }
219
+ //# sourceMappingURL=prompt-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-sync.js","sourceRoot":"","sources":["../../../src/setup/prompt-sync.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { CodexOrchestratorConfig } from '../config/schema.js';
2
+ import { type CodexCommandResolver } from './codex-command-resolver.js';
2
3
  import type { GitHubLabelAdapter, LabelPlan } from './labels.js';
4
+ import { type PromptSyncMode, type PromptSyncResult } from './prompt-sync.js';
3
5
  export interface SetupCommandOptions {
4
6
  targetRoot: string;
5
7
  githubOwner?: string;
@@ -7,7 +9,9 @@ export interface SetupCommandOptions {
7
9
  dryRun?: boolean;
8
10
  prepareLabels?: boolean;
9
11
  replacePackageSkills?: boolean;
12
+ promptSyncMode?: PromptSyncMode;
10
13
  labelAdapter?: GitHubLabelAdapter;
14
+ codexCommandResolver?: CodexCommandResolver;
11
15
  }
12
16
  export interface SetupCommandResult {
13
17
  config: CodexOrchestratorConfig;
@@ -15,6 +19,7 @@ export interface SetupCommandResult {
15
19
  dryRun: boolean;
16
20
  labelPlan: LabelPlan;
17
21
  promptFiles: string[];
22
+ promptSync?: PromptSyncResult;
18
23
  output: string;
19
24
  }
20
25
  export declare function runSetupCommand(options: SetupCommandOptions): Promise<SetupCommandResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-command.d.ts","sourceRoot":"","sources":["../../../src/setup/setup-command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAcjE,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,uBAAuB,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmD/F"}
1
+ {"version":3,"file":"setup-command.d.ts","sourceRoot":"","sources":["../../../src/setup/setup-command.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAE7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUjE,OAAO,EAAqC,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAKjH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,uBAAuB,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0D/F"}