@kbediako/codex-orchestrator 0.1.38 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/README.md +46 -317
  3. package/bin/codex-orchestrator.js +161 -0
  4. package/codex.orchestrator.json +149 -13
  5. package/dist/bin/codex-orchestrator.js +797 -1154
  6. package/dist/orchestrator/src/cli/adapters/CommandBuilder.js +50 -0
  7. package/dist/orchestrator/src/cli/adapters/CommandPlanner.js +22 -4
  8. package/dist/orchestrator/src/cli/adapters/CommandReviewer.js +3 -3
  9. package/dist/orchestrator/src/cli/adapters/CommandTester.js +2 -2
  10. package/dist/orchestrator/src/cli/adapters/cloudFailureDiagnostics.js +295 -11
  11. package/dist/orchestrator/src/cli/coStatusAttachCliShell.js +402 -0
  12. package/dist/orchestrator/src/cli/coStatusCliShell.js +451 -0
  13. package/dist/orchestrator/src/cli/coStatusOperatorAutopilotCliShell.js +120 -0
  14. package/dist/orchestrator/src/cli/codexCliShell.js +119 -0
  15. package/dist/orchestrator/src/cli/codexDefaultsSetup.js +265 -36
  16. package/dist/orchestrator/src/cli/config/delegationConfig.js +317 -5
  17. package/dist/orchestrator/src/cli/config/repoConfigPolicy.js +2 -3
  18. package/dist/orchestrator/src/cli/config/userConfig.js +28 -13
  19. package/dist/orchestrator/src/cli/control/authenticatedControlRouteGate.js +69 -0
  20. package/dist/orchestrator/src/cli/control/authenticatedRouteComposition.js +267 -0
  21. package/dist/orchestrator/src/cli/control/authenticatedRouteController.js +5 -0
  22. package/dist/orchestrator/src/cli/control/authenticatedRouteDispatcher.js +41 -0
  23. package/dist/orchestrator/src/cli/control/compatibilityIssuePresenter.js +1035 -0
  24. package/dist/orchestrator/src/cli/control/confirmationApproveController.js +62 -0
  25. package/dist/orchestrator/src/cli/control/confirmationCreateController.js +69 -0
  26. package/dist/orchestrator/src/cli/control/confirmationIssueConsumeController.js +43 -0
  27. package/dist/orchestrator/src/cli/control/confirmationListController.js +22 -0
  28. package/dist/orchestrator/src/cli/control/confirmationValidateController.js +58 -0
  29. package/dist/orchestrator/src/cli/control/confirmations.js +25 -3
  30. package/dist/orchestrator/src/cli/control/controlActionCancelConfirmation.js +65 -0
  31. package/dist/orchestrator/src/cli/control/controlActionController.js +77 -0
  32. package/dist/orchestrator/src/cli/control/controlActionControllerSequencing.js +161 -0
  33. package/dist/orchestrator/src/cli/control/controlActionExecution.js +142 -0
  34. package/dist/orchestrator/src/cli/control/controlActionFinalization.js +43 -0
  35. package/dist/orchestrator/src/cli/control/controlActionOutcome.js +60 -0
  36. package/dist/orchestrator/src/cli/control/controlActionPreflight.js +476 -0
  37. package/dist/orchestrator/src/cli/control/controlAuthenticatedRouteHandoff.js +57 -0
  38. package/dist/orchestrator/src/cli/control/controlBootstrapAssembly.js +39 -0
  39. package/dist/orchestrator/src/cli/control/controlBootstrapMetadataPersistence.js +16 -0
  40. package/dist/orchestrator/src/cli/control/controlEventTransport.js +49 -0
  41. package/dist/orchestrator/src/cli/control/controlExpiryLifecycle.js +102 -0
  42. package/dist/orchestrator/src/cli/control/controlHostOwnership.js +480 -0
  43. package/dist/orchestrator/src/cli/control/controlHostSupervision.js +630 -0
  44. package/dist/orchestrator/src/cli/control/controlOversightFacade.js +8 -0
  45. package/dist/orchestrator/src/cli/control/controlOversightReadContract.js +1 -0
  46. package/dist/orchestrator/src/cli/control/controlOversightReadService.js +16 -0
  47. package/dist/orchestrator/src/cli/control/controlOversightUpdateContract.js +1 -0
  48. package/dist/orchestrator/src/cli/control/controlPersistenceFiles.js +6 -0
  49. package/dist/orchestrator/src/cli/control/controlQuestionChildResolution.js +18 -0
  50. package/dist/orchestrator/src/cli/control/controlRequestContext.js +42 -0
  51. package/dist/orchestrator/src/cli/control/controlRequestController.js +9 -0
  52. package/dist/orchestrator/src/cli/control/controlRequestPredispatch.js +17 -0
  53. package/dist/orchestrator/src/cli/control/controlRequestRouteDispatch.js +44 -0
  54. package/dist/orchestrator/src/cli/control/controlRuntime.js +1003 -0
  55. package/dist/orchestrator/src/cli/control/controlServer.js +23 -1456
  56. package/dist/orchestrator/src/cli/control/controlServerAuditAndErrorHelpers.js +115 -0
  57. package/dist/orchestrator/src/cli/control/controlServerAuthenticatedRouteBranch.js +29 -0
  58. package/dist/orchestrator/src/cli/control/controlServerBootstrapLifecycle.js +30 -0
  59. package/dist/orchestrator/src/cli/control/controlServerBootstrapStartSequence.js +21 -0
  60. package/dist/orchestrator/src/cli/control/controlServerOwnedRuntimeLifecycle.js +67 -0
  61. package/dist/orchestrator/src/cli/control/controlServerPublicLifecycle.js +756 -0
  62. package/dist/orchestrator/src/cli/control/controlServerPublicRouteHelpers.js +86 -0
  63. package/dist/orchestrator/src/cli/control/controlServerReadyInstanceLifecycle.js +25 -0
  64. package/dist/orchestrator/src/cli/control/controlServerReadyInstanceStartup.js +18 -0
  65. package/dist/orchestrator/src/cli/control/controlServerRequestBodyHelpers.js +37 -0
  66. package/dist/orchestrator/src/cli/control/controlServerRequestShell.js +40 -0
  67. package/dist/orchestrator/src/cli/control/controlServerRequestShellBinding.js +17 -0
  68. package/dist/orchestrator/src/cli/control/controlServerSeedLoading.js +27 -0
  69. package/dist/orchestrator/src/cli/control/controlServerSeededRuntimeAssembly.js +186 -0
  70. package/dist/orchestrator/src/cli/control/controlServerStartupInputPreparation.js +31 -0
  71. package/dist/orchestrator/src/cli/control/controlServerStartupSequence.js +49 -0
  72. package/dist/orchestrator/src/cli/control/controlState.js +233 -2
  73. package/dist/orchestrator/src/cli/control/controlStatusDashboard.js +1904 -0
  74. package/dist/orchestrator/src/cli/control/controlTelegramBridgeBootstrapLifecycle.js +22 -0
  75. package/dist/orchestrator/src/cli/control/controlTelegramBridgeLifecycle.js +67 -0
  76. package/dist/orchestrator/src/cli/control/controlTelegramBridgeOversightFacadeFactory.js +8 -0
  77. package/dist/orchestrator/src/cli/control/controlTelegramCommandController.js +49 -0
  78. package/dist/orchestrator/src/cli/control/controlTelegramDispatchRead.js +40 -0
  79. package/dist/orchestrator/src/cli/control/controlTelegramPollingController.js +89 -0
  80. package/dist/orchestrator/src/cli/control/controlTelegramProjectionNotificationController.js +29 -0
  81. package/dist/orchestrator/src/cli/control/controlTelegramPushState.js +63 -0
  82. package/dist/orchestrator/src/cli/control/controlTelegramQuestionRead.js +13 -0
  83. package/dist/orchestrator/src/cli/control/controlTelegramReadController.js +216 -0
  84. package/dist/orchestrator/src/cli/control/controlTelegramUpdateHandler.js +63 -0
  85. package/dist/orchestrator/src/cli/control/controlWatcher.js +73 -5
  86. package/dist/orchestrator/src/cli/control/delegationRegisterController.js +35 -0
  87. package/dist/orchestrator/src/cli/control/dynamicToolBridgePolicy.js +139 -0
  88. package/dist/orchestrator/src/cli/control/eventsSseController.js +12 -0
  89. package/dist/orchestrator/src/cli/control/linearBudgetState.js +1789 -0
  90. package/dist/orchestrator/src/cli/control/linearDispatchSource.js +1137 -0
  91. package/dist/orchestrator/src/cli/control/linearGraphqlClient.js +150 -0
  92. package/dist/orchestrator/src/cli/control/linearRateLimit.js +102 -0
  93. package/dist/orchestrator/src/cli/control/linearWebhookController.js +499 -0
  94. package/dist/orchestrator/src/cli/control/liveLinearAdvisoryRuntime.js +70 -0
  95. package/dist/orchestrator/src/cli/control/observabilityApiController.js +173 -0
  96. package/dist/orchestrator/src/cli/control/observabilityReadModel.js +500 -0
  97. package/dist/orchestrator/src/cli/control/observabilitySurface.js +284 -0
  98. package/dist/orchestrator/src/cli/control/observabilityUpdateNotifier.js +22 -0
  99. package/dist/orchestrator/src/cli/control/operatorDashboardPresenter.js +252 -0
  100. package/dist/orchestrator/src/cli/control/providerAgentCapacity.js +70 -0
  101. package/dist/orchestrator/src/cli/control/providerControlHostFreshnessGauge.js +1068 -0
  102. package/dist/orchestrator/src/cli/control/providerIntakeState.js +473 -0
  103. package/dist/orchestrator/src/cli/control/providerIssueHandoff.js +6811 -0
  104. package/dist/orchestrator/src/cli/control/providerIssueObservability.js +1348 -0
  105. package/dist/orchestrator/src/cli/control/providerIssueRetryQueue.js +84 -0
  106. package/dist/orchestrator/src/cli/control/providerLinearRuntimeProof.js +588 -0
  107. package/dist/orchestrator/src/cli/control/providerLinearScreenshotProof.js +473 -0
  108. package/dist/orchestrator/src/cli/control/providerLinearWorkerTruth.js +383 -0
  109. package/dist/orchestrator/src/cli/control/providerLinearWorkflowAudit.js +254 -0
  110. package/dist/orchestrator/src/cli/control/providerLinearWorkflowFacade.js +5573 -0
  111. package/dist/orchestrator/src/cli/control/providerLinearWorkflowStates.js +115 -0
  112. package/dist/orchestrator/src/cli/control/providerMergeCloseout.js +1868 -0
  113. package/dist/orchestrator/src/cli/control/providerOperatorAutopilot.js +1580 -0
  114. package/dist/orchestrator/src/cli/control/providerOperatorAutopilotLifecycle.js +154 -0
  115. package/dist/orchestrator/src/cli/control/providerOperatorAutopilotLocalRolloutExecution.js +1006 -0
  116. package/dist/orchestrator/src/cli/control/providerPollingHealth.js +435 -0
  117. package/dist/orchestrator/src/cli/control/providerTerminalCleanup.js +516 -0
  118. package/dist/orchestrator/src/cli/control/providerWorkerHosts.js +191 -0
  119. package/dist/orchestrator/src/cli/control/providerWorkflowConfigStore.js +515 -0
  120. package/dist/orchestrator/src/cli/control/questionChildResolutionAdapter.js +361 -0
  121. package/dist/orchestrator/src/cli/control/questionQueueController.js +181 -0
  122. package/dist/orchestrator/src/cli/control/questionReadRetryDeduplication.js +9 -0
  123. package/dist/orchestrator/src/cli/control/questionReadSequence.js +10 -0
  124. package/dist/orchestrator/src/cli/control/securityViolationController.js +27 -0
  125. package/dist/orchestrator/src/cli/control/selectedRunProjection.js +1885 -0
  126. package/dist/orchestrator/src/cli/control/telegramOversightApiClient.js +48 -0
  127. package/dist/orchestrator/src/cli/control/telegramOversightBridge.js +180 -0
  128. package/dist/orchestrator/src/cli/control/telegramOversightBridgeProjectionDeliveryQueue.js +25 -0
  129. package/dist/orchestrator/src/cli/control/telegramOversightBridgeRuntimeLifecycle.js +45 -0
  130. package/dist/orchestrator/src/cli/control/telegramOversightBridgeStateStore.js +77 -0
  131. package/dist/orchestrator/src/cli/control/telegramOversightControlActionApiClient.js +45 -0
  132. package/dist/orchestrator/src/cli/control/trackerDispatchPilot.js +439 -0
  133. package/dist/orchestrator/src/cli/control/uiDataController.js +34 -0
  134. package/dist/orchestrator/src/cli/control/uiSessionController.js +100 -0
  135. package/dist/orchestrator/src/cli/controlHostCliShell.js +860 -0
  136. package/dist/orchestrator/src/cli/controlHostFreshnessGaugeCliShell.js +129 -0
  137. package/dist/orchestrator/src/cli/controlHostSupervisionCliShell.js +2127 -0
  138. package/dist/orchestrator/src/cli/delegationCliShell.js +62 -0
  139. package/dist/orchestrator/src/cli/delegationServer.js +567 -678
  140. package/dist/orchestrator/src/cli/delegationServerCliShell.js +52 -0
  141. package/dist/orchestrator/src/cli/delegationServerQuestionFlowShell.js +228 -0
  142. package/dist/orchestrator/src/cli/delegationServerToolDispatchShell.js +411 -0
  143. package/dist/orchestrator/src/cli/delegationServerTransport.js +274 -0
  144. package/dist/orchestrator/src/cli/delegationSetup.js +51 -171
  145. package/dist/orchestrator/src/cli/devtoolsCliShell.js +34 -0
  146. package/dist/orchestrator/src/cli/doctor.js +678 -164
  147. package/dist/orchestrator/src/cli/doctorCliRequestShell.js +72 -0
  148. package/dist/orchestrator/src/cli/doctorCliShell.js +138 -0
  149. package/dist/orchestrator/src/cli/doctorUsage.js +119 -15
  150. package/dist/orchestrator/src/cli/exec/experience.js +16 -2
  151. package/dist/orchestrator/src/cli/exec/summary.js +3 -0
  152. package/dist/orchestrator/src/cli/execCliShell.js +51 -0
  153. package/dist/orchestrator/src/cli/flowCliRequestShell.js +44 -0
  154. package/dist/orchestrator/src/cli/flowCliShell.js +239 -0
  155. package/dist/orchestrator/src/cli/frontendTestCliRequestShell.js +80 -0
  156. package/dist/orchestrator/src/cli/frontendTestCliShell.js +41 -0
  157. package/dist/orchestrator/src/cli/init.js +95 -1
  158. package/dist/orchestrator/src/cli/initCliShell.js +50 -0
  159. package/dist/orchestrator/src/cli/linearCliShell.js +1200 -0
  160. package/dist/orchestrator/src/cli/mcpEnableCliShell.js +132 -0
  161. package/dist/orchestrator/src/cli/metrics/metricsAggregator.js +3 -2
  162. package/dist/orchestrator/src/cli/metrics/metricsRecorder.js +56 -0
  163. package/dist/orchestrator/src/cli/orchestrator.js +66 -1376
  164. package/dist/orchestrator/src/cli/planCliShell.js +19 -0
  165. package/dist/orchestrator/src/cli/prCliShell.js +41 -0
  166. package/dist/orchestrator/src/cli/providerLinearChildLanePhaseContract.js +204 -0
  167. package/dist/orchestrator/src/cli/providerLinearChildLaneRunner.js +1835 -0
  168. package/dist/orchestrator/src/cli/providerLinearChildLaneShell.js +2420 -0
  169. package/dist/orchestrator/src/cli/providerLinearChildStreamShell.js +385 -0
  170. package/dist/orchestrator/src/cli/providerLinearWorkerRunner.js +6834 -0
  171. package/dist/orchestrator/src/cli/resumeCliShell.js +14 -0
  172. package/dist/orchestrator/src/cli/reviewCliLaunchShell.js +72 -0
  173. package/dist/orchestrator/src/cli/rlm/alignment.js +3 -3
  174. package/dist/orchestrator/src/cli/rlm/context.js +94 -7
  175. package/dist/orchestrator/src/cli/rlm/rlmCodexRuntimeShell.js +546 -0
  176. package/dist/orchestrator/src/cli/rlm/symbolic.js +4 -2
  177. package/dist/orchestrator/src/cli/rlmCliRequestShell.js +42 -0
  178. package/dist/orchestrator/src/cli/rlmCompletionCliShell.js +46 -0
  179. package/dist/orchestrator/src/cli/rlmLaunchCliShell.js +51 -0
  180. package/dist/orchestrator/src/cli/rlmRunner.js +83 -523
  181. package/dist/orchestrator/src/cli/run/blockMemory.js +500 -0
  182. package/dist/orchestrator/src/cli/run/manifest.js +410 -73
  183. package/dist/orchestrator/src/cli/run/manifestPersister.js +45 -14
  184. package/dist/orchestrator/src/cli/run/runMemoryController.js +216 -0
  185. package/dist/orchestrator/src/cli/run/source0.js +690 -0
  186. package/dist/orchestrator/src/cli/run/workspacePath.js +101 -0
  187. package/dist/orchestrator/src/cli/runtime/mode.js +2 -1
  188. package/dist/orchestrator/src/cli/runtime/provider.js +39 -2
  189. package/dist/orchestrator/src/cli/selfCheckCliShell.js +12 -0
  190. package/dist/orchestrator/src/cli/services/commandRunner.js +698 -18
  191. package/dist/orchestrator/src/cli/services/execRuntime.js +66 -1
  192. package/dist/orchestrator/src/cli/services/orchestratorAutoScoutEvidenceRecorder.js +71 -0
  193. package/dist/orchestrator/src/cli/services/orchestratorCloudBranchResolution.js +8 -0
  194. package/dist/orchestrator/src/cli/services/orchestratorCloudEnvironmentResolution.js +22 -0
  195. package/dist/orchestrator/src/cli/services/orchestratorCloudExecutionLifecycleShell.js +39 -0
  196. package/dist/orchestrator/src/cli/services/orchestratorCloudPromptBuilder.js +37 -0
  197. package/dist/orchestrator/src/cli/services/orchestratorCloudRouteFallbackContract.js +45 -0
  198. package/dist/orchestrator/src/cli/services/orchestratorCloudRouteShell.js +36 -0
  199. package/dist/orchestrator/src/cli/services/orchestratorCloudTargetExecutor.js +277 -0
  200. package/dist/orchestrator/src/cli/services/orchestratorControlPlaneLifecycle.js +98 -0
  201. package/dist/orchestrator/src/cli/services/orchestratorControlPlaneLifecycleShell.js +54 -0
  202. package/dist/orchestrator/src/cli/services/orchestratorExecutionLifecycle.js +112 -0
  203. package/dist/orchestrator/src/cli/services/orchestratorExecutionModePolicy.js +27 -0
  204. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouteAdapterShell.js +59 -0
  205. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouteDecisionShell.js +57 -0
  206. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouteState.js +21 -0
  207. package/dist/orchestrator/src/cli/services/orchestratorExecutionRouter.js +2 -0
  208. package/dist/orchestrator/src/cli/services/orchestratorLocalPipelineExecutor.js +149 -0
  209. package/dist/orchestrator/src/cli/services/orchestratorLocalRouteShell.js +63 -0
  210. package/dist/orchestrator/src/cli/services/orchestratorPlanShell.js +54 -0
  211. package/dist/orchestrator/src/cli/services/orchestratorPlanTargetTracker.js +16 -0
  212. package/dist/orchestrator/src/cli/services/orchestratorResumePreparationShell.js +84 -0
  213. package/dist/orchestrator/src/cli/services/orchestratorResumeTokenValidation.js +15 -0
  214. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleCompletion.js +31 -0
  215. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleExecutionRegistration.js +37 -0
  216. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleOrchestrationShell.js +83 -0
  217. package/dist/orchestrator/src/cli/services/orchestratorRunLifecycleTaskManagerShell.js +37 -0
  218. package/dist/orchestrator/src/cli/services/orchestratorRuntimeManifestMutation.js +20 -0
  219. package/dist/orchestrator/src/cli/services/orchestratorStartPreparationShell.js +56 -0
  220. package/dist/orchestrator/src/cli/services/orchestratorStatusShell.js +70 -0
  221. package/dist/orchestrator/src/cli/services/pipelineResolver.js +7 -3
  222. package/dist/orchestrator/src/cli/services/plannerMemory.js +119 -0
  223. package/dist/orchestrator/src/cli/services/runPreparation.js +7 -3
  224. package/dist/orchestrator/src/cli/services/runSummaryWriter.js +9 -0
  225. package/dist/orchestrator/src/cli/setupBootstrapShell.js +114 -0
  226. package/dist/orchestrator/src/cli/setupCliShell.js +51 -0
  227. package/dist/orchestrator/src/cli/skillsCliShell.js +56 -0
  228. package/dist/orchestrator/src/cli/startCliRequestShell.js +53 -0
  229. package/dist/orchestrator/src/cli/startCliShell.js +68 -0
  230. package/dist/orchestrator/src/cli/statusCliShell.js +22 -0
  231. package/dist/orchestrator/src/cli/utils/authProvenanceFingerprint.js +27 -0
  232. package/dist/orchestrator/src/cli/utils/cloudPreflight.js +285 -7
  233. package/dist/orchestrator/src/cli/utils/codexFeatures.js +60 -0
  234. package/dist/orchestrator/src/cli/utils/delegationConfigParser.js +250 -0
  235. package/dist/orchestrator/src/cli/utils/delegationMcpHealth.js +1382 -0
  236. package/dist/orchestrator/src/cli/utils/devtools.js +2 -54
  237. package/dist/orchestrator/src/cli/utils/mcpServerEntry.js +53 -0
  238. package/dist/orchestrator/src/cli/utils/packageProgramResolver.js +151 -0
  239. package/dist/orchestrator/src/cli/utils/providerOverrideEnv.js +71 -0
  240. package/dist/orchestrator/src/cli/utils/trailingJsonObject.js +59 -0
  241. package/dist/orchestrator/src/learning/crystalizer.js +2 -2
  242. package/dist/orchestrator/src/manager.js +74 -4
  243. package/dist/orchestrator/src/persistence/ExperienceStore.js +233 -49
  244. package/dist/orchestrator/src/persistence/TaskStateStore.js +6 -6
  245. package/dist/orchestrator/src/persistence/lockFile.js +70 -4
  246. package/dist/orchestrator/src/persistence/sanitizeIdentifier.js +39 -0
  247. package/dist/orchestrator/src/sync/createCloudSyncWorker.js +3 -2
  248. package/dist/orchestrator/src/utils/atomicWrite.js +17 -2
  249. package/dist/packages/orchestrator/src/exec/unified-exec.js +99 -6
  250. package/dist/packages/orchestrator/src/instructions/promptPacks.js +150 -19
  251. package/dist/packages/sdk-node/src/orchestrator.js +137 -13
  252. package/dist/packages/shared/config/designConfig.js +8 -1
  253. package/dist/packages/shared/streams/stdio.js +1 -1
  254. package/dist/scripts/design/pipeline/permit.js +15 -0
  255. package/dist/scripts/lib/docs-catalog.js +399 -0
  256. package/dist/scripts/lib/docs-helpers.js +87 -5
  257. package/dist/scripts/lib/pr-watch-merge.js +1088 -80
  258. package/dist/scripts/lib/provider-run-contract.js +26 -0
  259. package/dist/scripts/lib/review-command-intent-classification.js +532 -0
  260. package/dist/scripts/lib/review-command-probe-classification.js +385 -0
  261. package/dist/scripts/lib/review-execution-boundary-preflight.js +279 -0
  262. package/dist/scripts/lib/review-execution-runtime.js +753 -0
  263. package/dist/scripts/lib/review-execution-state.js +1144 -0
  264. package/dist/scripts/lib/review-execution-telemetry.js +215 -0
  265. package/dist/scripts/lib/review-inspection-target-parsing.js +78 -0
  266. package/dist/scripts/lib/review-launch-attempt.js +601 -0
  267. package/dist/scripts/lib/review-meta-surface-boundary-analysis.js +300 -0
  268. package/dist/scripts/lib/review-meta-surface-normalization.js +746 -0
  269. package/dist/scripts/lib/review-non-interactive-handoff.js +61 -0
  270. package/dist/scripts/lib/review-prompt-context.js +376 -0
  271. package/dist/scripts/lib/review-scope-advisory.js +286 -0
  272. package/dist/scripts/lib/review-scope-paths.js +123 -0
  273. package/dist/scripts/lib/review-shell-command-parser.js +389 -0
  274. package/dist/scripts/lib/review-shell-env-interpreter.js +340 -0
  275. package/dist/scripts/lib/run-manifests.js +192 -36
  276. package/dist/scripts/lib/spark-policy-classifier.js +593 -0
  277. package/dist/scripts/run-review.js +507 -1777
  278. package/docs/README.md +43 -20
  279. package/docs/book/README.md +19 -0
  280. package/docs/book/codex-cli-0124-adoption.md +68 -0
  281. package/docs/book/local-hook-impact.md +73 -0
  282. package/docs/book/operations.md +60 -0
  283. package/docs/book/public-posture.md +34 -0
  284. package/docs/book/setup.md +91 -0
  285. package/docs/book/skills.md +11 -0
  286. package/docs/guides/codex-version-policy.md +104 -0
  287. package/docs/public/downstream-setup.md +113 -0
  288. package/docs/public/provider-onboarding.md +173 -0
  289. package/package.json +23 -10
  290. package/plugins/codex-orchestrator/.codex-plugin/plugin.json +30 -0
  291. package/plugins/codex-orchestrator/.mcp.json +13 -0
  292. package/plugins/codex-orchestrator/launcher.mjs +361 -0
  293. package/schemas/manifest.json +411 -0
  294. package/skills/README.md +26 -0
  295. package/skills/collab-subagents-first/SKILL.md +1 -1
  296. package/skills/delegation-usage/DELEGATION_GUIDE.md +30 -12
  297. package/skills/delegation-usage/SKILL.md +25 -14
  298. package/skills/land/SKILL.md +77 -0
  299. package/skills/linear/SKILL.md +255 -0
  300. package/skills/release/SKILL.md +47 -3
  301. package/skills/standalone-review/SKILL.md +6 -1
  302. package/templates/README.md +4 -2
  303. package/templates/codex/.codex/agents/awaiter-high.toml +2 -2
  304. package/templates/codex/.codex/agents/worker-complex.toml +1 -1
  305. package/templates/codex/.codex/config.toml +3 -4
  306. package/templates/codex/.codex/providers/README.md +13 -0
  307. package/templates/codex/.codex/providers/control.example.json +18 -0
  308. package/templates/codex/.codex/providers/provider.env.example +15 -0
  309. package/templates/codex/AGENTS.md +15 -8
  310. package/templates/codex/mcp-client.json +5 -1
  311. package/docs/assets/setup.gif +0 -0
@@ -13,6 +13,7 @@ export class ControlWatcher {
13
13
  lastControlSeq = 0;
14
14
  paused = false;
15
15
  lastPauseRequestId = null;
16
+ lastPauseIntentId = null;
16
17
  lastPauseReason = null;
17
18
  cancelRequested = false;
18
19
  failureRequested = false;
@@ -91,19 +92,24 @@ export class ControlWatcher {
91
92
  }
92
93
  async handlePause(snapshot) {
93
94
  const nextRequestId = snapshot.latest_action?.request_id ?? null;
95
+ const nextIntentId = snapshot.latest_action?.intent_id ?? null;
94
96
  const nextReason = snapshot.latest_action?.reason ?? null;
95
- if (this.paused && nextRequestId === this.lastPauseRequestId && nextReason === this.lastPauseReason) {
97
+ if (this.paused &&
98
+ nextRequestId === this.lastPauseRequestId &&
99
+ nextIntentId === this.lastPauseIntentId &&
100
+ nextReason === this.lastPauseReason) {
96
101
  return;
97
102
  }
98
103
  const wasPaused = this.paused;
99
104
  this.paused = true;
100
105
  this.lastPauseRequestId = nextRequestId;
106
+ this.lastPauseIntentId = nextIntentId;
101
107
  this.lastPauseReason = nextReason;
102
108
  const nextDetail = nextReason ?? 'paused';
103
109
  if (!wasPaused || this.manifest.status_detail !== nextDetail) {
104
110
  this.manifest.status_detail = nextDetail;
105
111
  if (!wasPaused) {
106
- appendSummary(this.manifest, 'Run paused by control request.');
112
+ appendSummary(this.manifest, `Run paused by control request${formatTraceSummary(snapshot)}.`);
107
113
  }
108
114
  await this.persist();
109
115
  }
@@ -112,6 +118,7 @@ export class ControlWatcher {
112
118
  actor: snapshot.latest_action?.requested_by ?? 'user',
113
119
  payload: {
114
120
  request_id: snapshot.latest_action?.request_id ?? null,
121
+ intent_id: snapshot.latest_action?.intent_id ?? null,
115
122
  control_seq: snapshot.control_seq ?? null,
116
123
  requested_by: snapshot.latest_action?.requested_by ?? null,
117
124
  reason: snapshot.latest_action?.reason ?? null
@@ -124,6 +131,7 @@ export class ControlWatcher {
124
131
  payload: {
125
132
  reason: 'control_request',
126
133
  request_id: snapshot.latest_action?.request_id ?? null,
134
+ intent_id: snapshot.latest_action?.intent_id ?? null,
127
135
  control_seq: snapshot.control_seq ?? null,
128
136
  requested_reason: snapshot.latest_action?.reason ?? null
129
137
  },
@@ -136,15 +144,17 @@ export class ControlWatcher {
136
144
  }
137
145
  this.paused = false;
138
146
  this.lastPauseRequestId = null;
147
+ this.lastPauseIntentId = null;
139
148
  this.lastPauseReason = null;
140
149
  this.manifest.status_detail = null;
141
- appendSummary(this.manifest, 'Run resumed by control request.');
150
+ appendSummary(this.manifest, `Run resumed by control request${formatTraceSummary(snapshot)}.`);
142
151
  await this.persist();
143
152
  await this.safeAppend({
144
153
  event: 'run_resumed',
145
154
  actor: 'runner',
146
155
  payload: {
147
156
  request_id: snapshot.latest_action?.request_id ?? null,
157
+ intent_id: snapshot.latest_action?.intent_id ?? null,
148
158
  control_seq: snapshot.control_seq ?? null,
149
159
  requested_by: snapshot.latest_action?.requested_by ?? null,
150
160
  requested_reason: snapshot.latest_action?.reason ?? null
@@ -157,13 +167,14 @@ export class ControlWatcher {
157
167
  return;
158
168
  }
159
169
  this.cancelRequested = true;
160
- appendSummary(this.manifest, 'Run cancellation requested.');
170
+ appendSummary(this.manifest, `Run cancellation requested${formatTraceSummary(snapshot)}.`);
161
171
  await this.persist();
162
172
  await this.safeAppend({
163
173
  event: 'run_canceled',
164
174
  actor: 'runner',
165
175
  payload: {
166
176
  request_id: snapshot.latest_action?.request_id ?? null,
177
+ intent_id: snapshot.latest_action?.intent_id ?? null,
167
178
  control_seq: snapshot.control_seq ?? null,
168
179
  requested_by: snapshot.latest_action?.requested_by ?? null,
169
180
  requested_reason: snapshot.latest_action?.reason ?? null
@@ -177,7 +188,7 @@ export class ControlWatcher {
177
188
  }
178
189
  this.failureRequested = true;
179
190
  this.manifest.status_detail = snapshot.latest_action?.reason ?? 'control_failed';
180
- appendSummary(this.manifest, 'Run failed by control request.');
191
+ appendSummary(this.manifest, `Run failed by control request${formatTraceSummary(snapshot)}.`);
181
192
  await this.persist();
182
193
  await this.safeAppend({
183
194
  event: 'run_failed',
@@ -185,6 +196,7 @@ export class ControlWatcher {
185
196
  payload: {
186
197
  reason: 'control_request',
187
198
  request_id: snapshot.latest_action?.request_id ?? null,
199
+ intent_id: snapshot.latest_action?.intent_id ?? null,
188
200
  control_seq: snapshot.control_seq ?? null,
189
201
  requested_by: snapshot.latest_action?.requested_by ?? null,
190
202
  requested_reason: snapshot.latest_action?.reason ?? null
@@ -220,3 +232,59 @@ async function readControlFile(pathname) {
220
232
  function delay(ms) {
221
233
  return new Promise((resolve) => setTimeout(resolve, ms));
222
234
  }
235
+ function formatTraceSummary(snapshot) {
236
+ const intentId = encodeTraceId(snapshot.latest_action?.intent_id);
237
+ const requestId = encodeTraceId(snapshot.latest_action?.request_id);
238
+ const parts = [];
239
+ if (intentId) {
240
+ parts.push(`intent_id=${intentId}`);
241
+ }
242
+ if (requestId) {
243
+ parts.push(`request_id=${requestId}`);
244
+ }
245
+ if (parts.length === 0) {
246
+ return '';
247
+ }
248
+ return ` (${parts.join(', ')})`;
249
+ }
250
+ function encodeTraceId(value) {
251
+ if (typeof value !== 'string') {
252
+ return '';
253
+ }
254
+ const trimmed = value.trim();
255
+ if (!trimmed) {
256
+ return '';
257
+ }
258
+ const bounded = truncateToCodePoints(sanitizeUnpairedSurrogates(trimmed), 160);
259
+ return encodeURIComponent(bounded);
260
+ }
261
+ function sanitizeUnpairedSurrogates(value) {
262
+ let sanitized = '';
263
+ for (let index = 0; index < value.length; index += 1) {
264
+ const codeUnit = value.charCodeAt(index);
265
+ if (codeUnit >= 0xd800 && codeUnit <= 0xdbff) {
266
+ const nextCodeUnit = value.charCodeAt(index + 1);
267
+ if (nextCodeUnit >= 0xdc00 && nextCodeUnit <= 0xdfff) {
268
+ sanitized += value[index] + value[index + 1];
269
+ index += 1;
270
+ }
271
+ else {
272
+ sanitized += '\uFFFD';
273
+ }
274
+ continue;
275
+ }
276
+ if (codeUnit >= 0xdc00 && codeUnit <= 0xdfff) {
277
+ sanitized += '\uFFFD';
278
+ continue;
279
+ }
280
+ sanitized += value[index];
281
+ }
282
+ return sanitized;
283
+ }
284
+ function truncateToCodePoints(value, maxCodePoints) {
285
+ const chars = Array.from(value);
286
+ if (chars.length <= maxCodePoints) {
287
+ return value;
288
+ }
289
+ return chars.slice(0, maxCodePoints).join('');
290
+ }
@@ -0,0 +1,35 @@
1
+ export async function handleDelegationRegisterRequest(context) {
2
+ const method = context.req.method ?? 'GET';
3
+ const pathname = new URL(context.req.url ?? '/', 'http://localhost').pathname;
4
+ if (pathname !== '/delegation/register' || method !== 'POST') {
5
+ return false;
6
+ }
7
+ const body = await context.readRequestBody();
8
+ const token = readStringValue(body, 'token');
9
+ const parentRunId = readStringValue(body, 'parent_run_id', 'parentRunId');
10
+ const childRunId = readStringValue(body, 'child_run_id', 'childRunId');
11
+ if (!token || !parentRunId || !childRunId) {
12
+ writeDelegationRegisterResponse(context.res, 400, { error: 'missing_delegation_fields' });
13
+ return true;
14
+ }
15
+ const record = context.delegationTokens.register(token, parentRunId, childRunId);
16
+ await context.persistDelegationTokens();
17
+ writeDelegationRegisterResponse(context.res, 200, {
18
+ status: 'registered',
19
+ token_id: record.token_id
20
+ });
21
+ return true;
22
+ }
23
+ function writeDelegationRegisterResponse(res, status, body) {
24
+ res.writeHead(status, { 'Content-Type': 'application/json' });
25
+ res.end(JSON.stringify(body));
26
+ }
27
+ function readStringValue(record, ...keys) {
28
+ for (const key of keys) {
29
+ const value = record[key];
30
+ if (typeof value === 'string' && value.trim().length > 0) {
31
+ return value.trim();
32
+ }
33
+ }
34
+ return undefined;
35
+ }
@@ -0,0 +1,139 @@
1
+ const ALL_DYNAMIC_TOOL_BRIDGE_ACTIONS = new Set([
2
+ 'status',
3
+ 'pause',
4
+ 'resume',
5
+ 'cancel'
6
+ ]);
7
+ const DEFAULT_ALLOWED_SOURCE_IDS = new Set(['appserver_dynamic_tool']);
8
+ const SOURCE_ID_KEYS = ['id', 'source_id', 'sourceId', 'bridge_source', 'bridgeSource'];
9
+ const FLAT_SOURCE_KEYS = ['bridge_source', 'bridgeSource', 'source_id', 'sourceId'];
10
+ export function evaluateDynamicToolBridgeRequest(input) {
11
+ const policy = resolveDynamicToolBridgePolicy(input.featureToggles ?? null);
12
+ if (!policy.enabled) {
13
+ return { ok: false, error: 'dynamic_tool_bridge_disabled', policy };
14
+ }
15
+ if (policy.killSwitch) {
16
+ return { ok: false, error: 'dynamic_tool_bridge_kill_switched', policy };
17
+ }
18
+ const source = resolveDynamicToolBridgeSource(input.args);
19
+ if (source.kind === 'missing') {
20
+ return { ok: false, error: 'dynamic_tool_bridge_source_missing', policy };
21
+ }
22
+ if (source.kind === 'invalid') {
23
+ return { ok: false, error: 'dynamic_tool_bridge_source_invalid', policy };
24
+ }
25
+ if (!policy.allowedSourceIds.has(source.sourceId)) {
26
+ return { ok: false, error: 'dynamic_tool_bridge_source_not_allowed', policy };
27
+ }
28
+ if (!policy.allowedActions.has(input.action)) {
29
+ return { ok: false, error: 'dynamic_tool_bridge_action_not_allowed', policy };
30
+ }
31
+ return { ok: true, policy, sourceId: source.sourceId };
32
+ }
33
+ export function resolveDynamicToolBridgePolicy(featureToggles) {
34
+ const toggles = featureToggles ?? {};
35
+ const direct = readRecordValue(toggles, 'dynamic_tool_bridge');
36
+ const coordinator = readRecordValue(toggles, 'coordinator');
37
+ const nested = coordinator ? readRecordValue(coordinator, 'dynamic_tool_bridge') : undefined;
38
+ const policy = nested ?? direct ?? {};
39
+ const allowedActions = normalizeAllowedActions(readStringArrayValue(policy, 'allowed_actions', 'allowedActions', 'action_allowlist', 'actionAllowlist'));
40
+ const allowedSources = normalizeAllowedSources(readStringArrayValue(policy, 'allowed_sources', 'allowedSources', 'source_allowlist', 'sourceAllowlist'));
41
+ return {
42
+ configured: Boolean(nested || direct),
43
+ enabled: readBooleanValue(policy, 'enabled') ?? false,
44
+ killSwitch: readBooleanValue(policy, 'kill_switch', 'killSwitch') ?? false,
45
+ allowedActions,
46
+ allowedSourceIds: allowedSources
47
+ };
48
+ }
49
+ export function resolveDynamicToolBridgeSource(args) {
50
+ const hasSourceObject = Object.prototype.hasOwnProperty.call(args, 'source');
51
+ const rawSource = args.source;
52
+ if (hasSourceObject && (!rawSource || typeof rawSource !== 'object' || Array.isArray(rawSource))) {
53
+ return { kind: 'invalid' };
54
+ }
55
+ const sourceObject = hasSourceObject ? rawSource : null;
56
+ const sourceIdFromObject = sourceObject ? readStringValue(sourceObject, ...SOURCE_ID_KEYS) : undefined;
57
+ const sourceIdFromFlat = readStringValue(args, ...FLAT_SOURCE_KEYS);
58
+ const sourceId = sourceIdFromObject ?? sourceIdFromFlat;
59
+ if (sourceId) {
60
+ return { kind: 'ready', sourceId: sourceId.toLowerCase() };
61
+ }
62
+ const hasRecognizedObjectKey = sourceObject !== null && SOURCE_ID_KEYS.some((key) => Object.prototype.hasOwnProperty.call(sourceObject, key));
63
+ const hasRecognizedFlatKey = FLAT_SOURCE_KEYS.some((key) => Object.prototype.hasOwnProperty.call(args, key));
64
+ if (hasSourceObject || hasRecognizedObjectKey || hasRecognizedFlatKey) {
65
+ return { kind: 'invalid' };
66
+ }
67
+ return { kind: 'missing' };
68
+ }
69
+ function normalizeAllowedActions(values) {
70
+ if (!values) {
71
+ return new Set(ALL_DYNAMIC_TOOL_BRIDGE_ACTIONS);
72
+ }
73
+ const allowed = new Set();
74
+ for (const value of values) {
75
+ const normalized = value.trim().toLowerCase();
76
+ if (normalized === 'status' || normalized === 'pause' || normalized === 'resume' || normalized === 'cancel') {
77
+ allowed.add(normalized);
78
+ }
79
+ }
80
+ return allowed;
81
+ }
82
+ function normalizeAllowedSources(values) {
83
+ if (!values) {
84
+ return new Set(DEFAULT_ALLOWED_SOURCE_IDS);
85
+ }
86
+ const allowed = new Set();
87
+ for (const value of values) {
88
+ const normalized = value.trim().toLowerCase();
89
+ if (normalized.length > 0) {
90
+ allowed.add(normalized);
91
+ }
92
+ }
93
+ return allowed;
94
+ }
95
+ function readStringValue(record, ...keys) {
96
+ for (const key of keys) {
97
+ const value = record[key];
98
+ if (typeof value === 'string' && value.trim().length > 0) {
99
+ return value.trim();
100
+ }
101
+ }
102
+ return undefined;
103
+ }
104
+ function readBooleanValue(record, ...keys) {
105
+ for (const key of keys) {
106
+ const value = record[key];
107
+ if (typeof value === 'boolean') {
108
+ return value;
109
+ }
110
+ }
111
+ return undefined;
112
+ }
113
+ function readRecordValue(record, key) {
114
+ const value = record[key];
115
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
116
+ return value;
117
+ }
118
+ return undefined;
119
+ }
120
+ function readStringArrayValue(record, ...keys) {
121
+ for (const key of keys) {
122
+ const value = record[key];
123
+ if (!Array.isArray(value)) {
124
+ continue;
125
+ }
126
+ const parsed = [];
127
+ for (const item of value) {
128
+ if (typeof item !== 'string') {
129
+ continue;
130
+ }
131
+ const trimmed = item.trim();
132
+ if (trimmed.length > 0) {
133
+ parsed.push(trimmed);
134
+ }
135
+ }
136
+ return parsed;
137
+ }
138
+ return undefined;
139
+ }
@@ -0,0 +1,12 @@
1
+ export function handleEventsSseRequest(context) {
2
+ context.res.writeHead(200, {
3
+ 'Content-Type': 'text/event-stream',
4
+ 'Cache-Control': 'no-cache',
5
+ Connection: 'keep-alive'
6
+ });
7
+ context.res.write(`: ok\n\n`);
8
+ context.clients.add(context.res);
9
+ context.req.on('close', () => {
10
+ context.clients.delete(context.res);
11
+ });
12
+ }