@kbediako/codex-orchestrator 0.1.38 → 0.2.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 (299) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/README.md +70 -301
  3. package/bin/codex-orchestrator.js +161 -0
  4. package/codex.orchestrator.json +149 -13
  5. package/dist/bin/codex-orchestrator.js +795 -1154
  6. package/dist/orchestrator/src/cli/adapters/CommandPlanner.js +22 -4
  7. package/dist/orchestrator/src/cli/adapters/CommandReviewer.js +3 -3
  8. package/dist/orchestrator/src/cli/adapters/CommandTester.js +2 -2
  9. package/dist/orchestrator/src/cli/adapters/cloudFailureDiagnostics.js +183 -11
  10. package/dist/orchestrator/src/cli/coStatusAttachCliShell.js +402 -0
  11. package/dist/orchestrator/src/cli/coStatusCliShell.js +429 -0
  12. package/dist/orchestrator/src/cli/coStatusOperatorAutopilotCliShell.js +120 -0
  13. package/dist/orchestrator/src/cli/codexCliShell.js +72 -0
  14. package/dist/orchestrator/src/cli/codexDefaultsSetup.js +49 -11
  15. package/dist/orchestrator/src/cli/config/delegationConfig.js +317 -5
  16. package/dist/orchestrator/src/cli/config/repoConfigPolicy.js +2 -3
  17. package/dist/orchestrator/src/cli/config/userConfig.js +28 -13
  18. package/dist/orchestrator/src/cli/control/authenticatedControlRouteGate.js +69 -0
  19. package/dist/orchestrator/src/cli/control/authenticatedRouteComposition.js +267 -0
  20. package/dist/orchestrator/src/cli/control/authenticatedRouteController.js +5 -0
  21. package/dist/orchestrator/src/cli/control/authenticatedRouteDispatcher.js +41 -0
  22. package/dist/orchestrator/src/cli/control/compatibilityIssuePresenter.js +1035 -0
  23. package/dist/orchestrator/src/cli/control/confirmationApproveController.js +62 -0
  24. package/dist/orchestrator/src/cli/control/confirmationCreateController.js +69 -0
  25. package/dist/orchestrator/src/cli/control/confirmationIssueConsumeController.js +43 -0
  26. package/dist/orchestrator/src/cli/control/confirmationListController.js +22 -0
  27. package/dist/orchestrator/src/cli/control/confirmationValidateController.js +58 -0
  28. package/dist/orchestrator/src/cli/control/confirmations.js +25 -3
  29. package/dist/orchestrator/src/cli/control/controlActionCancelConfirmation.js +65 -0
  30. package/dist/orchestrator/src/cli/control/controlActionController.js +77 -0
  31. package/dist/orchestrator/src/cli/control/controlActionControllerSequencing.js +161 -0
  32. package/dist/orchestrator/src/cli/control/controlActionExecution.js +142 -0
  33. package/dist/orchestrator/src/cli/control/controlActionFinalization.js +43 -0
  34. package/dist/orchestrator/src/cli/control/controlActionOutcome.js +60 -0
  35. package/dist/orchestrator/src/cli/control/controlActionPreflight.js +476 -0
  36. package/dist/orchestrator/src/cli/control/controlAuthenticatedRouteHandoff.js +57 -0
  37. package/dist/orchestrator/src/cli/control/controlBootstrapAssembly.js +39 -0
  38. package/dist/orchestrator/src/cli/control/controlBootstrapMetadataPersistence.js +16 -0
  39. package/dist/orchestrator/src/cli/control/controlEventTransport.js +49 -0
  40. package/dist/orchestrator/src/cli/control/controlExpiryLifecycle.js +102 -0
  41. package/dist/orchestrator/src/cli/control/controlHostOwnership.js +480 -0
  42. package/dist/orchestrator/src/cli/control/controlHostSupervision.js +608 -0
  43. package/dist/orchestrator/src/cli/control/controlOversightFacade.js +8 -0
  44. package/dist/orchestrator/src/cli/control/controlOversightReadContract.js +1 -0
  45. package/dist/orchestrator/src/cli/control/controlOversightReadService.js +16 -0
  46. package/dist/orchestrator/src/cli/control/controlOversightUpdateContract.js +1 -0
  47. package/dist/orchestrator/src/cli/control/controlPersistenceFiles.js +6 -0
  48. package/dist/orchestrator/src/cli/control/controlQuestionChildResolution.js +18 -0
  49. package/dist/orchestrator/src/cli/control/controlRequestContext.js +42 -0
  50. package/dist/orchestrator/src/cli/control/controlRequestController.js +9 -0
  51. package/dist/orchestrator/src/cli/control/controlRequestPredispatch.js +17 -0
  52. package/dist/orchestrator/src/cli/control/controlRequestRouteDispatch.js +44 -0
  53. package/dist/orchestrator/src/cli/control/controlRuntime.js +992 -0
  54. package/dist/orchestrator/src/cli/control/controlServer.js +23 -1456
  55. package/dist/orchestrator/src/cli/control/controlServerAuditAndErrorHelpers.js +115 -0
  56. package/dist/orchestrator/src/cli/control/controlServerAuthenticatedRouteBranch.js +29 -0
  57. package/dist/orchestrator/src/cli/control/controlServerBootstrapLifecycle.js +30 -0
  58. package/dist/orchestrator/src/cli/control/controlServerBootstrapStartSequence.js +21 -0
  59. package/dist/orchestrator/src/cli/control/controlServerOwnedRuntimeLifecycle.js +67 -0
  60. package/dist/orchestrator/src/cli/control/controlServerPublicLifecycle.js +756 -0
  61. package/dist/orchestrator/src/cli/control/controlServerPublicRouteHelpers.js +86 -0
  62. package/dist/orchestrator/src/cli/control/controlServerReadyInstanceLifecycle.js +25 -0
  63. package/dist/orchestrator/src/cli/control/controlServerReadyInstanceStartup.js +18 -0
  64. package/dist/orchestrator/src/cli/control/controlServerRequestBodyHelpers.js +37 -0
  65. package/dist/orchestrator/src/cli/control/controlServerRequestShell.js +40 -0
  66. package/dist/orchestrator/src/cli/control/controlServerRequestShellBinding.js +17 -0
  67. package/dist/orchestrator/src/cli/control/controlServerSeedLoading.js +27 -0
  68. package/dist/orchestrator/src/cli/control/controlServerSeededRuntimeAssembly.js +186 -0
  69. package/dist/orchestrator/src/cli/control/controlServerStartupInputPreparation.js +31 -0
  70. package/dist/orchestrator/src/cli/control/controlServerStartupSequence.js +49 -0
  71. package/dist/orchestrator/src/cli/control/controlState.js +233 -2
  72. package/dist/orchestrator/src/cli/control/controlStatusDashboard.js +1899 -0
  73. package/dist/orchestrator/src/cli/control/controlTelegramBridgeBootstrapLifecycle.js +22 -0
  74. package/dist/orchestrator/src/cli/control/controlTelegramBridgeLifecycle.js +67 -0
  75. package/dist/orchestrator/src/cli/control/controlTelegramBridgeOversightFacadeFactory.js +8 -0
  76. package/dist/orchestrator/src/cli/control/controlTelegramCommandController.js +49 -0
  77. package/dist/orchestrator/src/cli/control/controlTelegramDispatchRead.js +40 -0
  78. package/dist/orchestrator/src/cli/control/controlTelegramPollingController.js +89 -0
  79. package/dist/orchestrator/src/cli/control/controlTelegramProjectionNotificationController.js +29 -0
  80. package/dist/orchestrator/src/cli/control/controlTelegramPushState.js +63 -0
  81. package/dist/orchestrator/src/cli/control/controlTelegramQuestionRead.js +13 -0
  82. package/dist/orchestrator/src/cli/control/controlTelegramReadController.js +216 -0
  83. package/dist/orchestrator/src/cli/control/controlTelegramUpdateHandler.js +63 -0
  84. package/dist/orchestrator/src/cli/control/controlWatcher.js +73 -5
  85. package/dist/orchestrator/src/cli/control/delegationRegisterController.js +35 -0
  86. package/dist/orchestrator/src/cli/control/dynamicToolBridgePolicy.js +139 -0
  87. package/dist/orchestrator/src/cli/control/eventsSseController.js +12 -0
  88. package/dist/orchestrator/src/cli/control/linearBudgetState.js +1789 -0
  89. package/dist/orchestrator/src/cli/control/linearDispatchSource.js +1137 -0
  90. package/dist/orchestrator/src/cli/control/linearGraphqlClient.js +150 -0
  91. package/dist/orchestrator/src/cli/control/linearRateLimit.js +102 -0
  92. package/dist/orchestrator/src/cli/control/linearWebhookController.js +499 -0
  93. package/dist/orchestrator/src/cli/control/liveLinearAdvisoryRuntime.js +70 -0
  94. package/dist/orchestrator/src/cli/control/observabilityApiController.js +173 -0
  95. package/dist/orchestrator/src/cli/control/observabilityReadModel.js +500 -0
  96. package/dist/orchestrator/src/cli/control/observabilitySurface.js +284 -0
  97. package/dist/orchestrator/src/cli/control/observabilityUpdateNotifier.js +22 -0
  98. package/dist/orchestrator/src/cli/control/operatorDashboardPresenter.js +252 -0
  99. package/dist/orchestrator/src/cli/control/providerAgentCapacity.js +70 -0
  100. package/dist/orchestrator/src/cli/control/providerControlHostFreshnessGauge.js +1068 -0
  101. package/dist/orchestrator/src/cli/control/providerIntakeState.js +473 -0
  102. package/dist/orchestrator/src/cli/control/providerIssueHandoff.js +6811 -0
  103. package/dist/orchestrator/src/cli/control/providerIssueObservability.js +1348 -0
  104. package/dist/orchestrator/src/cli/control/providerIssueRetryQueue.js +84 -0
  105. package/dist/orchestrator/src/cli/control/providerLinearRuntimeProof.js +588 -0
  106. package/dist/orchestrator/src/cli/control/providerLinearScreenshotProof.js +473 -0
  107. package/dist/orchestrator/src/cli/control/providerLinearWorkerTruth.js +383 -0
  108. package/dist/orchestrator/src/cli/control/providerLinearWorkflowAudit.js +254 -0
  109. package/dist/orchestrator/src/cli/control/providerLinearWorkflowFacade.js +5573 -0
  110. package/dist/orchestrator/src/cli/control/providerLinearWorkflowStates.js +115 -0
  111. package/dist/orchestrator/src/cli/control/providerMergeCloseout.js +1868 -0
  112. package/dist/orchestrator/src/cli/control/providerOperatorAutopilot.js +1580 -0
  113. package/dist/orchestrator/src/cli/control/providerOperatorAutopilotLifecycle.js +154 -0
  114. package/dist/orchestrator/src/cli/control/providerOperatorAutopilotLocalRolloutExecution.js +1006 -0
  115. package/dist/orchestrator/src/cli/control/providerPollingHealth.js +435 -0
  116. package/dist/orchestrator/src/cli/control/providerTerminalCleanup.js +516 -0
  117. package/dist/orchestrator/src/cli/control/providerWorkerHosts.js +191 -0
  118. package/dist/orchestrator/src/cli/control/providerWorkflowConfigStore.js +515 -0
  119. package/dist/orchestrator/src/cli/control/questionChildResolutionAdapter.js +361 -0
  120. package/dist/orchestrator/src/cli/control/questionQueueController.js +181 -0
  121. package/dist/orchestrator/src/cli/control/questionReadRetryDeduplication.js +9 -0
  122. package/dist/orchestrator/src/cli/control/questionReadSequence.js +10 -0
  123. package/dist/orchestrator/src/cli/control/securityViolationController.js +27 -0
  124. package/dist/orchestrator/src/cli/control/selectedRunProjection.js +1838 -0
  125. package/dist/orchestrator/src/cli/control/telegramOversightApiClient.js +48 -0
  126. package/dist/orchestrator/src/cli/control/telegramOversightBridge.js +180 -0
  127. package/dist/orchestrator/src/cli/control/telegramOversightBridgeProjectionDeliveryQueue.js +25 -0
  128. package/dist/orchestrator/src/cli/control/telegramOversightBridgeRuntimeLifecycle.js +45 -0
  129. package/dist/orchestrator/src/cli/control/telegramOversightBridgeStateStore.js +77 -0
  130. package/dist/orchestrator/src/cli/control/telegramOversightControlActionApiClient.js +45 -0
  131. package/dist/orchestrator/src/cli/control/trackerDispatchPilot.js +439 -0
  132. package/dist/orchestrator/src/cli/control/uiDataController.js +34 -0
  133. package/dist/orchestrator/src/cli/control/uiSessionController.js +100 -0
  134. package/dist/orchestrator/src/cli/controlHostCliShell.js +860 -0
  135. package/dist/orchestrator/src/cli/controlHostFreshnessGaugeCliShell.js +129 -0
  136. package/dist/orchestrator/src/cli/controlHostSupervisionCliShell.js +2127 -0
  137. package/dist/orchestrator/src/cli/delegationCliShell.js +62 -0
  138. package/dist/orchestrator/src/cli/delegationServer.js +567 -678
  139. package/dist/orchestrator/src/cli/delegationServerCliShell.js +52 -0
  140. package/dist/orchestrator/src/cli/delegationServerQuestionFlowShell.js +228 -0
  141. package/dist/orchestrator/src/cli/delegationServerToolDispatchShell.js +411 -0
  142. package/dist/orchestrator/src/cli/delegationServerTransport.js +274 -0
  143. package/dist/orchestrator/src/cli/delegationSetup.js +51 -171
  144. package/dist/orchestrator/src/cli/devtoolsCliShell.js +34 -0
  145. package/dist/orchestrator/src/cli/doctor.js +542 -122
  146. package/dist/orchestrator/src/cli/doctorCliRequestShell.js +72 -0
  147. package/dist/orchestrator/src/cli/doctorCliShell.js +138 -0
  148. package/dist/orchestrator/src/cli/doctorUsage.js +119 -15
  149. package/dist/orchestrator/src/cli/exec/experience.js +16 -2
  150. package/dist/orchestrator/src/cli/exec/summary.js +3 -0
  151. package/dist/orchestrator/src/cli/execCliShell.js +51 -0
  152. package/dist/orchestrator/src/cli/flowCliRequestShell.js +44 -0
  153. package/dist/orchestrator/src/cli/flowCliShell.js +239 -0
  154. package/dist/orchestrator/src/cli/frontendTestCliRequestShell.js +80 -0
  155. package/dist/orchestrator/src/cli/frontendTestCliShell.js +41 -0
  156. package/dist/orchestrator/src/cli/init.js +1 -0
  157. package/dist/orchestrator/src/cli/initCliShell.js +50 -0
  158. package/dist/orchestrator/src/cli/linearCliShell.js +1200 -0
  159. package/dist/orchestrator/src/cli/mcpEnableCliShell.js +132 -0
  160. package/dist/orchestrator/src/cli/metrics/metricsAggregator.js +3 -2
  161. package/dist/orchestrator/src/cli/metrics/metricsRecorder.js +56 -0
  162. package/dist/orchestrator/src/cli/orchestrator.js +66 -1376
  163. package/dist/orchestrator/src/cli/planCliShell.js +19 -0
  164. package/dist/orchestrator/src/cli/prCliShell.js +41 -0
  165. package/dist/orchestrator/src/cli/providerLinearChildLanePhaseContract.js +204 -0
  166. package/dist/orchestrator/src/cli/providerLinearChildLaneRunner.js +1772 -0
  167. package/dist/orchestrator/src/cli/providerLinearChildLaneShell.js +2420 -0
  168. package/dist/orchestrator/src/cli/providerLinearChildStreamShell.js +385 -0
  169. package/dist/orchestrator/src/cli/providerLinearWorkerRunner.js +5738 -0
  170. package/dist/orchestrator/src/cli/resumeCliShell.js +14 -0
  171. package/dist/orchestrator/src/cli/reviewCliLaunchShell.js +72 -0
  172. package/dist/orchestrator/src/cli/rlm/alignment.js +3 -3
  173. package/dist/orchestrator/src/cli/rlm/context.js +94 -7
  174. package/dist/orchestrator/src/cli/rlm/rlmCodexRuntimeShell.js +546 -0
  175. package/dist/orchestrator/src/cli/rlm/symbolic.js +4 -2
  176. package/dist/orchestrator/src/cli/rlmCliRequestShell.js +42 -0
  177. package/dist/orchestrator/src/cli/rlmCompletionCliShell.js +46 -0
  178. package/dist/orchestrator/src/cli/rlmLaunchCliShell.js +51 -0
  179. package/dist/orchestrator/src/cli/rlmRunner.js +83 -523
  180. package/dist/orchestrator/src/cli/run/blockMemory.js +500 -0
  181. package/dist/orchestrator/src/cli/run/manifest.js +410 -73
  182. package/dist/orchestrator/src/cli/run/manifestPersister.js +45 -14
  183. package/dist/orchestrator/src/cli/run/runMemoryController.js +216 -0
  184. package/dist/orchestrator/src/cli/run/source0.js +690 -0
  185. package/dist/orchestrator/src/cli/run/workspacePath.js +101 -0
  186. package/dist/orchestrator/src/cli/runtime/mode.js +2 -1
  187. package/dist/orchestrator/src/cli/runtime/provider.js +39 -2
  188. package/dist/orchestrator/src/cli/selfCheckCliShell.js +12 -0
  189. package/dist/orchestrator/src/cli/services/commandRunner.js +667 -18
  190. package/dist/orchestrator/src/cli/services/execRuntime.js +66 -1
  191. package/dist/orchestrator/src/cli/services/orchestratorAutoScoutEvidenceRecorder.js +71 -0
  192. package/dist/orchestrator/src/cli/services/orchestratorCloudBranchResolution.js +8 -0
  193. package/dist/orchestrator/src/cli/services/orchestratorCloudEnvironmentResolution.js +22 -0
  194. package/dist/orchestrator/src/cli/services/orchestratorCloudExecutionLifecycleShell.js +39 -0
  195. package/dist/orchestrator/src/cli/services/orchestratorCloudPromptBuilder.js +37 -0
  196. package/dist/orchestrator/src/cli/services/orchestratorCloudRouteFallbackContract.js +45 -0
  197. package/dist/orchestrator/src/cli/services/orchestratorCloudRouteShell.js +36 -0
  198. package/dist/orchestrator/src/cli/services/orchestratorCloudTargetExecutor.js +277 -0
  199. package/dist/orchestrator/src/cli/services/orchestratorControlPlaneLifecycle.js +98 -0
  200. package/dist/orchestrator/src/cli/services/orchestratorControlPlaneLifecycleShell.js +54 -0
  201. package/dist/orchestrator/src/cli/services/orchestratorExecutionLifecycle.js +112 -0
  202. package/dist/orchestrator/src/cli/services/orchestratorExecutionModePolicy.js +27 -0
  203. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouteAdapterShell.js +59 -0
  204. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouteDecisionShell.js +57 -0
  205. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouteState.js +21 -0
  206. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouter.js +2 -0
  207. package/dist/orchestrator/src/cli/services/orchestratorLocalPipelineExecutor.js +149 -0
  208. package/dist/orchestrator/src/cli/services/orchestratorLocalRouteShell.js +63 -0
  209. package/dist/orchestrator/src/cli/services/orchestratorPlanShell.js +54 -0
  210. package/dist/orchestrator/src/cli/services/orchestratorPlanTargetTracker.js +16 -0
  211. package/dist/orchestrator/src/cli/services/orchestratorResumePreparationShell.js +84 -0
  212. package/dist/orchestrator/src/cli/services/orchestratorResumeTokenValidation.js +15 -0
  213. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleCompletion.js +31 -0
  214. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleExecutionRegistration.js +37 -0
  215. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleOrchestrationShell.js +83 -0
  216. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleTaskManagerShell.js +37 -0
  217. package/dist/orchestrator/src/cli/services/orchestratorRuntimeManifestMutation.js +20 -0
  218. package/dist/orchestrator/src/cli/services/orchestratorStartPreparationShell.js +56 -0
  219. package/dist/orchestrator/src/cli/services/orchestratorStatusShell.js +70 -0
  220. package/dist/orchestrator/src/cli/services/pipelineResolver.js +7 -3
  221. package/dist/orchestrator/src/cli/services/plannerMemory.js +119 -0
  222. package/dist/orchestrator/src/cli/services/runPreparation.js +7 -3
  223. package/dist/orchestrator/src/cli/services/runSummaryWriter.js +9 -0
  224. package/dist/orchestrator/src/cli/setupBootstrapShell.js +114 -0
  225. package/dist/orchestrator/src/cli/setupCliShell.js +51 -0
  226. package/dist/orchestrator/src/cli/skillsCliShell.js +56 -0
  227. package/dist/orchestrator/src/cli/startCliRequestShell.js +53 -0
  228. package/dist/orchestrator/src/cli/startCliShell.js +68 -0
  229. package/dist/orchestrator/src/cli/statusCliShell.js +22 -0
  230. package/dist/orchestrator/src/cli/utils/authProvenanceFingerprint.js +27 -0
  231. package/dist/orchestrator/src/cli/utils/cloudPreflight.js +83 -1
  232. package/dist/orchestrator/src/cli/utils/delegationConfigParser.js +250 -0
  233. package/dist/orchestrator/src/cli/utils/delegationMcpHealth.js +1382 -0
  234. package/dist/orchestrator/src/cli/utils/devtools.js +2 -54
  235. package/dist/orchestrator/src/cli/utils/mcpServerEntry.js +53 -0
  236. package/dist/orchestrator/src/cli/utils/packageProgramResolver.js +151 -0
  237. package/dist/orchestrator/src/cli/utils/providerOverrideEnv.js +71 -0
  238. package/dist/orchestrator/src/cli/utils/trailingJsonObject.js +59 -0
  239. package/dist/orchestrator/src/learning/crystalizer.js +2 -2
  240. package/dist/orchestrator/src/persistence/ExperienceStore.js +233 -49
  241. package/dist/orchestrator/src/persistence/TaskStateStore.js +6 -6
  242. package/dist/orchestrator/src/persistence/lockFile.js +70 -4
  243. package/dist/orchestrator/src/persistence/sanitizeIdentifier.js +39 -0
  244. package/dist/orchestrator/src/sync/createCloudSyncWorker.js +3 -2
  245. package/dist/orchestrator/src/utils/atomicWrite.js +17 -2
  246. package/dist/packages/orchestrator/src/exec/unified-exec.js +99 -6
  247. package/dist/packages/orchestrator/src/instructions/promptPacks.js +150 -19
  248. package/dist/packages/sdk-node/src/orchestrator.js +137 -13
  249. package/dist/packages/shared/config/designConfig.js +8 -1
  250. package/dist/packages/shared/streams/stdio.js +1 -1
  251. package/dist/scripts/design/pipeline/permit.js +15 -0
  252. package/dist/scripts/lib/docs-catalog.js +365 -0
  253. package/dist/scripts/lib/docs-helpers.js +87 -5
  254. package/dist/scripts/lib/pr-watch-merge.js +1088 -80
  255. package/dist/scripts/lib/provider-run-contract.js +26 -0
  256. package/dist/scripts/lib/review-command-intent-classification.js +532 -0
  257. package/dist/scripts/lib/review-command-probe-classification.js +385 -0
  258. package/dist/scripts/lib/review-execution-boundary-preflight.js +279 -0
  259. package/dist/scripts/lib/review-execution-runtime.js +753 -0
  260. package/dist/scripts/lib/review-execution-state.js +1144 -0
  261. package/dist/scripts/lib/review-execution-telemetry.js +215 -0
  262. package/dist/scripts/lib/review-inspection-target-parsing.js +78 -0
  263. package/dist/scripts/lib/review-launch-attempt.js +601 -0
  264. package/dist/scripts/lib/review-meta-surface-boundary-analysis.js +300 -0
  265. package/dist/scripts/lib/review-meta-surface-normalization.js +746 -0
  266. package/dist/scripts/lib/review-non-interactive-handoff.js +61 -0
  267. package/dist/scripts/lib/review-prompt-context.js +376 -0
  268. package/dist/scripts/lib/review-scope-advisory.js +286 -0
  269. package/dist/scripts/lib/review-scope-paths.js +123 -0
  270. package/dist/scripts/lib/review-shell-command-parser.js +389 -0
  271. package/dist/scripts/lib/review-shell-env-interpreter.js +340 -0
  272. package/dist/scripts/lib/run-manifests.js +192 -36
  273. package/dist/scripts/lib/spark-policy-classifier.js +593 -0
  274. package/dist/scripts/run-review.js +507 -1777
  275. package/docs/public/downstream-setup.md +106 -0
  276. package/docs/public/provider-onboarding.md +173 -0
  277. package/package.json +20 -10
  278. package/plugins/codex-orchestrator/.codex-plugin/plugin.json +30 -0
  279. package/plugins/codex-orchestrator/.mcp.json +13 -0
  280. package/plugins/codex-orchestrator/launcher.mjs +359 -0
  281. package/schemas/manifest.json +394 -0
  282. package/skills/collab-subagents-first/SKILL.md +1 -1
  283. package/skills/delegation-usage/DELEGATION_GUIDE.md +24 -11
  284. package/skills/delegation-usage/SKILL.md +19 -13
  285. package/skills/land/SKILL.md +77 -0
  286. package/skills/linear/SKILL.md +255 -0
  287. package/skills/release/SKILL.md +47 -3
  288. package/skills/standalone-review/SKILL.md +6 -1
  289. package/templates/README.md +4 -2
  290. package/templates/codex/.codex/agents/awaiter-high.toml +2 -2
  291. package/templates/codex/.codex/agents/worker-complex.toml +1 -1
  292. package/templates/codex/.codex/config.toml +3 -4
  293. package/templates/codex/.codex/providers/README.md +13 -0
  294. package/templates/codex/.codex/providers/control.example.json +18 -0
  295. package/templates/codex/.codex/providers/provider.env.example +15 -0
  296. package/templates/codex/AGENTS.md +12 -7
  297. package/templates/codex/mcp-client.json +5 -1
  298. package/docs/README.md +0 -310
  299. package/docs/assets/setup.gif +0 -0
@@ -0,0 +1,359 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'node:child_process';
4
+ import { existsSync, readFileSync, writeSync } from 'node:fs';
5
+ import { homedir } from 'node:os';
6
+ import { dirname, isAbsolute, join } from 'node:path';
7
+ import process from 'node:process';
8
+
9
+ const FORWARDABLE_SIGNALS = ['SIGINT', 'SIGTERM', 'SIGHUP'];
10
+ const MARKETPLACE_NAME = 'codex-orchestrator';
11
+ const MARKETPLACE_SECTION = `[marketplaces.${MARKETPLACE_NAME}]`;
12
+ const MARKETPLACE_SECTION_PATTERN = new RegExp(
13
+ `^marketplaces\\s*\\.\\s*(?:"${escapeRegExp(MARKETPLACE_NAME)}"|'${escapeRegExp(MARKETPLACE_NAME)}'|${escapeRegExp(MARKETPLACE_NAME)})$`,
14
+ 'u'
15
+ );
16
+
17
+ function main() {
18
+ const sourceRoot = resolveMarketplaceSourceRoot();
19
+ const entrypoint = join(sourceRoot, 'bin', 'codex-orchestrator.js');
20
+ if (!existsSync(entrypoint)) {
21
+ throw new Error(
22
+ `Codex Orchestrator marketplace source is missing ${entrypoint}. Keep the marketplace source installed or re-run codex plugin marketplace add.`
23
+ );
24
+ }
25
+
26
+ const child = spawn(process.execPath, [entrypoint, ...process.argv.slice(2)], {
27
+ env: {
28
+ ...process.env,
29
+ CODEX_ORCHESTRATOR_PACKAGE_ROOT: sourceRoot
30
+ },
31
+ stdio: 'inherit'
32
+ });
33
+
34
+ let forwardedStopSignal = null;
35
+ const disposeSignalForwarding = installSignalForwarding(child, (signal) => {
36
+ forwardedStopSignal ??= signal;
37
+ });
38
+
39
+ child.once('error', (error) => {
40
+ disposeSignalForwarding();
41
+ writeWarning(error instanceof Error ? error.message : String(error));
42
+ process.exitCode = 1;
43
+ });
44
+
45
+ child.once('close', (code, signal) => {
46
+ disposeSignalForwarding();
47
+ if (forwardedStopSignal) {
48
+ reemitSignal(forwardedStopSignal);
49
+ return;
50
+ }
51
+ if (signal) {
52
+ reemitSignal(signal);
53
+ return;
54
+ }
55
+ process.exitCode = typeof code === 'number' ? code : 1;
56
+ });
57
+ }
58
+
59
+ function resolveMarketplaceSourceRoot() {
60
+ const { codexHome, configPath } = resolveCodexPaths();
61
+ if (!existsSync(configPath)) {
62
+ throw new Error(`Unable to locate Codex config at ${configPath}. Re-run codex plugin marketplace add for Codex Orchestrator.`);
63
+ }
64
+
65
+ const raw = readFileSync(configPath, 'utf8');
66
+ const marketplaceConfig = readMarketplaceConfig(raw, configPath);
67
+ const source = marketplaceConfig?.source;
68
+ const sourceType = marketplaceConfig?.sourceType;
69
+ if (!source) {
70
+ throw new Error(
71
+ `Codex config at ${configPath} is missing ${MARKETPLACE_SECTION}. Re-run codex plugin marketplace add for Codex Orchestrator.`
72
+ );
73
+ }
74
+ if (sourceType === 'local') {
75
+ return resolveLocalMarketplaceSourceRoot(source, configPath);
76
+ }
77
+ if (sourceType === 'git') {
78
+ return resolveInstalledMarketplaceSourceRoot(codexHome, source);
79
+ }
80
+ if (sourceType) {
81
+ throw new Error(
82
+ `Codex config at ${configPath} has unsupported ${MARKETPLACE_SECTION}.source_type=${JSON.stringify(sourceType)}. Expected "local" or "git".`
83
+ );
84
+ }
85
+ if (isAbsolute(source)) {
86
+ return source;
87
+ }
88
+ return resolveInstalledMarketplaceSourceRoot(codexHome, source);
89
+ }
90
+
91
+ function resolveLocalMarketplaceSourceRoot(source, configPath) {
92
+ return isAbsolute(source) ? source : join(dirname(configPath), source);
93
+ }
94
+
95
+ function resolveInstalledMarketplaceSourceRoot(codexHome, source) {
96
+ const installedMarketplaceRoot = join(codexHome, '.tmp', 'marketplaces', MARKETPLACE_NAME);
97
+ if (existsSync(installedMarketplaceRoot)) {
98
+ return installedMarketplaceRoot;
99
+ }
100
+ throw new Error(
101
+ `Codex marketplace source resolved to ${JSON.stringify(source)}, but ${installedMarketplaceRoot} is unavailable. Re-run codex plugin marketplace add for Codex Orchestrator.`
102
+ );
103
+ }
104
+
105
+ function resolveCodexPaths() {
106
+ const codexHome = normalizeOptionalString(process.env.CODEX_HOME);
107
+ if (codexHome) {
108
+ return {
109
+ codexHome,
110
+ configPath: join(codexHome, 'config.toml')
111
+ };
112
+ }
113
+ const resolvedCodexHome = join(homedir(), '.codex');
114
+ return {
115
+ codexHome: resolvedCodexHome,
116
+ configPath: join(resolvedCodexHome, 'config.toml')
117
+ };
118
+ }
119
+
120
+ function readMarketplaceConfig(rawConfig, configPath) {
121
+ const marketplaceSectionLines = findMarketplaceSectionLines(rawConfig);
122
+ if (!marketplaceSectionLines) {
123
+ return null;
124
+ }
125
+ const source = normalizeOptionalString(readMarketplaceAssignment(marketplaceSectionLines, 'source', configPath));
126
+ const sourceType = normalizeOptionalString(
127
+ readMarketplaceAssignment(marketplaceSectionLines, 'source_type', configPath) ??
128
+ readMarketplaceAssignment(marketplaceSectionLines, 'sourceType', configPath)
129
+ );
130
+ if (!source && !sourceType) {
131
+ return null;
132
+ }
133
+ return { source, sourceType };
134
+ }
135
+
136
+ function findMarketplaceSectionLines(rawConfig) {
137
+ const lines = rawConfig.split(/\r?\n/u);
138
+ const sectionLines = [];
139
+ let inMarketplaceSection = false;
140
+ for (const line of lines) {
141
+ const trimmed = stripTomlInlineComment(line).trim();
142
+ const tableMatch = trimmed.match(/^\[(.+)\]$/u);
143
+ if (tableMatch) {
144
+ const tableName = tableMatch[1]?.trim() ?? '';
145
+ if (MARKETPLACE_SECTION_PATTERN.test(tableName)) {
146
+ inMarketplaceSection = true;
147
+ continue;
148
+ }
149
+ if (inMarketplaceSection) {
150
+ break;
151
+ }
152
+ continue;
153
+ }
154
+ if (inMarketplaceSection) {
155
+ sectionLines.push(line);
156
+ }
157
+ }
158
+ return inMarketplaceSection ? sectionLines : null;
159
+ }
160
+
161
+ function readMarketplaceAssignment(sectionLines, key, configPath) {
162
+ const keyPattern = new RegExp(`^(?:"${escapeRegExp(key)}"|'${escapeRegExp(key)}'|${escapeRegExp(key)})\\s*=`, 'u');
163
+ for (const line of sectionLines) {
164
+ const withoutComment = stripTomlInlineComment(line).trim();
165
+ if (!keyPattern.test(withoutComment)) {
166
+ continue;
167
+ }
168
+ const separatorIndex = withoutComment.indexOf('=');
169
+ if (separatorIndex === -1) {
170
+ continue;
171
+ }
172
+ const rawKey = withoutComment.slice(0, separatorIndex).trim();
173
+ const parsedKey = rawKey.startsWith('"') || rawKey.startsWith("'")
174
+ ? parseTomlStringValue(rawKey, configPath, `key:${key}`)
175
+ : rawKey;
176
+ if (parsedKey !== key) {
177
+ continue;
178
+ }
179
+ const rawValue = withoutComment.slice(separatorIndex + 1).trim();
180
+ if (rawValue.length === 0) {
181
+ throw new Error(`Unable to parse Codex config at ${configPath}: ${MARKETPLACE_SECTION}.${key} is empty.`);
182
+ }
183
+ return parseTomlStringValue(rawValue, configPath, key);
184
+ }
185
+ return null;
186
+ }
187
+
188
+ function stripTomlInlineComment(line) {
189
+ let result = '';
190
+ let inBasicString = false;
191
+ let inLiteralString = false;
192
+ let escaping = false;
193
+ for (let index = 0; index < line.length; index += 1) {
194
+ const char = line[index];
195
+ if (escaping) {
196
+ result += char;
197
+ escaping = false;
198
+ continue;
199
+ }
200
+ if (inBasicString) {
201
+ result += char;
202
+ if (char === '\\') {
203
+ escaping = true;
204
+ } else if (char === '"') {
205
+ inBasicString = false;
206
+ }
207
+ continue;
208
+ }
209
+ if (inLiteralString) {
210
+ result += char;
211
+ if (char === "'") {
212
+ if (line[index + 1] === "'") {
213
+ result += "'";
214
+ index += 1;
215
+ } else {
216
+ inLiteralString = false;
217
+ }
218
+ }
219
+ continue;
220
+ }
221
+ if (char === '#') {
222
+ break;
223
+ }
224
+ result += char;
225
+ if (char === '"') {
226
+ inBasicString = true;
227
+ } else if (char === "'") {
228
+ inLiteralString = true;
229
+ }
230
+ }
231
+ return result;
232
+ }
233
+
234
+ function parseTomlStringValue(rawValue, configPath, key) {
235
+ if (rawValue.startsWith("'")) {
236
+ return parseTomlLiteralString(rawValue, configPath, key);
237
+ }
238
+ if (rawValue.startsWith('"')) {
239
+ return parseTomlBasicString(rawValue, configPath, key);
240
+ }
241
+ return rawValue;
242
+ }
243
+
244
+ function parseTomlBasicString(rawValue, configPath, key) {
245
+ let escaping = false;
246
+ for (let index = 1; index < rawValue.length; index += 1) {
247
+ const char = rawValue[index];
248
+ if (escaping) {
249
+ escaping = false;
250
+ continue;
251
+ }
252
+ if (char === '\\') {
253
+ escaping = true;
254
+ continue;
255
+ }
256
+ if (char === '"') {
257
+ try {
258
+ return JSON.parse(rawValue.slice(0, index + 1));
259
+ } catch (error) {
260
+ const detail = error instanceof Error ? error.message : String(error);
261
+ throw new Error(
262
+ `Unable to parse Codex config at ${configPath}: ${MARKETPLACE_SECTION}.${key} has an invalid basic string (${detail}).`
263
+ );
264
+ }
265
+ }
266
+ }
267
+ throw new Error(
268
+ `Unable to parse Codex config at ${configPath}: ${MARKETPLACE_SECTION}.${key} has an unterminated basic string.`
269
+ );
270
+ }
271
+
272
+ function parseTomlLiteralString(rawValue, configPath, key) {
273
+ let parsed = '';
274
+ for (let index = 1; index < rawValue.length; index += 1) {
275
+ const char = rawValue[index];
276
+ if (char !== "'") {
277
+ parsed += char;
278
+ continue;
279
+ }
280
+ if (rawValue[index + 1] === "'") {
281
+ parsed += "'";
282
+ index += 1;
283
+ continue;
284
+ }
285
+ return parsed;
286
+ }
287
+ throw new Error(
288
+ `Unable to parse Codex config at ${configPath}: ${MARKETPLACE_SECTION}.${key} has an unterminated literal string.`
289
+ );
290
+ }
291
+
292
+ function escapeRegExp(value) {
293
+ return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
294
+ }
295
+
296
+ function normalizeOptionalString(value) {
297
+ if (typeof value !== 'string') {
298
+ return null;
299
+ }
300
+ const trimmed = value.trim();
301
+ return trimmed.length > 0 ? trimmed : null;
302
+ }
303
+
304
+ function writeWarning(message) {
305
+ const line = `${message}\n`;
306
+ const stderrFd = process.stderr.fd;
307
+ if (typeof stderrFd === 'number') {
308
+ try {
309
+ writeSync(stderrFd, line);
310
+ return;
311
+ } catch {
312
+ // Fall through to process.stderr when direct fd writes are unavailable.
313
+ }
314
+ }
315
+ process.stderr.write(line);
316
+ }
317
+
318
+ function installSignalForwarding(child, onForwardedSignal) {
319
+ const handlers = new Map();
320
+ for (const signal of FORWARDABLE_SIGNALS) {
321
+ const handler = () => {
322
+ onForwardedSignal(signal);
323
+ forwardSignal(child, signal);
324
+ };
325
+ process.on(signal, handler);
326
+ handlers.set(signal, handler);
327
+ }
328
+ return () => {
329
+ for (const [signal, handler] of handlers) {
330
+ process.off(signal, handler);
331
+ }
332
+ };
333
+ }
334
+
335
+ function forwardSignal(child, signal) {
336
+ if (child.exitCode !== null || child.signalCode !== null) {
337
+ return;
338
+ }
339
+ try {
340
+ child.kill(signal);
341
+ } catch {
342
+ // Ignore forwarding races when the child exits between checks.
343
+ }
344
+ }
345
+
346
+ function reemitSignal(signal) {
347
+ try {
348
+ process.kill(process.pid, signal);
349
+ } catch {
350
+ process.exitCode = 1;
351
+ }
352
+ }
353
+
354
+ try {
355
+ main();
356
+ } catch (error) {
357
+ writeWarning(error instanceof Error ? error.message : String(error));
358
+ process.exitCode = 1;
359
+ }