@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
@@ -0,0 +1,746 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import { normalizeCommandToken } from './review-shell-command-parser.js';
4
+ const REVIEW_ACTIVE_CLOSEOUT_BUNDLE_KIND = 'review-closeout-bundle';
5
+ export const ARCHITECTURE_CONTEXT_META_SURFACE_KIND = 'architecture-context';
6
+ const REVIEW_SUPPORT_CODEX_SKILL_PATH_RE = /(?:^|\/)\.codex\/skills\/(?:standalone-review|delegation-usage)\/SKILL\.md$/u;
7
+ export function expandMetaSurfaceOperandCandidates(command, args, operand, envAssignments = new Map(), auditStartupAnchorEnvVarPaths = new Map(), blockedEnvVars = new Set(), repoRoot = null) {
8
+ const candidates = [];
9
+ const normalizedEnvVar = normalizeAuditMetaSurfaceEnvVar(operand);
10
+ const resolvedEnvPath = resolveAuditMetaSurfaceEnvOperandPath(operand, envAssignments, auditStartupAnchorEnvVarPaths, blockedEnvVars, repoRoot);
11
+ if (resolvedEnvPath) {
12
+ candidates.push(resolvedEnvPath);
13
+ }
14
+ if (normalizedEnvVar && blockedEnvVars.has(normalizedEnvVar)) {
15
+ return candidates;
16
+ }
17
+ candidates.push(operand);
18
+ const gitRevisionPathCandidate = extractGitRevisionPathCandidate(command, args, operand);
19
+ if (gitRevisionPathCandidate) {
20
+ candidates.push(gitRevisionPathCandidate);
21
+ }
22
+ return candidates;
23
+ }
24
+ export function segmentMatchesAuditStartupAnchorPath(command, args, envAssignments, auditStartupAnchorPaths, auditStartupAnchorEnvVarPaths, blockedEnvVars, repoRoot) {
25
+ if (auditStartupAnchorPaths.size === 0) {
26
+ return false;
27
+ }
28
+ for (const operand of extractMetaSurfaceOperands(command, args)) {
29
+ for (const candidate of expandMetaSurfaceOperandCandidates(command, args, operand, envAssignments, auditStartupAnchorEnvVarPaths, blockedEnvVars, repoRoot)) {
30
+ const normalizedOperand = normalizeAuditStartupAnchorPath(candidate, repoRoot);
31
+ if (normalizedOperand && auditStartupAnchorPaths.has(normalizedOperand)) {
32
+ return true;
33
+ }
34
+ }
35
+ }
36
+ return false;
37
+ }
38
+ export function classifyMetaSurfaceDirectDetailed(command, args, touchedPaths, repoRoot, activeCloseoutBundleRoots = new Set(), envAssignments = new Map(), auditStartupAnchorEnvVarPaths = new Map(), blockedEnvVars = new Set(), inlineAssignedEnvVars = new Set(), allowedMetaSurfacePaths = new Set()) {
39
+ const detailedSamples = [];
40
+ for (const operand of extractMetaSurfaceOperands(command, args)) {
41
+ const resolvedEnvPath = resolveAuditMetaSurfaceEnvOperandPath(operand, envAssignments, auditStartupAnchorEnvVarPaths, blockedEnvVars, repoRoot);
42
+ const normalizedEnvVar = normalizeAuditMetaSurfaceEnvVar(operand);
43
+ if (resolvedEnvPath && normalizedEnvVar) {
44
+ const allowedAuditEnvPath = auditStartupAnchorEnvVarPaths.get(normalizedEnvVar) ?? null;
45
+ if (normalizedEnvVar === 'MANIFEST') {
46
+ if (allowedAuditEnvPath && resolvedEnvPath === allowedAuditEnvPath) {
47
+ detailedSamples.push({ kind: 'run-manifest', candidate: resolvedEnvPath, operand });
48
+ continue;
49
+ }
50
+ }
51
+ if (normalizedEnvVar === 'RUNNER_LOG' || normalizedEnvVar === 'RUN_LOG') {
52
+ if (allowedAuditEnvPath && resolvedEnvPath === allowedAuditEnvPath) {
53
+ detailedSamples.push({ kind: 'run-runner-log', candidate: resolvedEnvPath, operand });
54
+ continue;
55
+ }
56
+ }
57
+ }
58
+ const candidates = resolvedEnvPath &&
59
+ normalizedEnvVar &&
60
+ !inlineAssignedEnvVars.has(normalizedEnvVar)
61
+ ? [resolvedEnvPath]
62
+ : expandMetaSurfaceOperandCandidates(command, args, operand, envAssignments, auditStartupAnchorEnvVarPaths, blockedEnvVars, repoRoot);
63
+ for (const candidate of candidates) {
64
+ const operandKind = classifyMetaSurfaceOperand(candidate, touchedPaths, repoRoot, activeCloseoutBundleRoots, allowedMetaSurfacePaths);
65
+ if (operandKind) {
66
+ detailedSamples.push({ kind: operandKind, candidate, operand });
67
+ break;
68
+ }
69
+ }
70
+ }
71
+ return detailedSamples;
72
+ }
73
+ export function extractMetaSurfaceOperands(command, args) {
74
+ const operands = [];
75
+ let positionalIndex = 0;
76
+ for (let index = 0; index < args.length; index += 1) {
77
+ const token = args[index] ?? '';
78
+ if (!token) {
79
+ continue;
80
+ }
81
+ if (token === '--') {
82
+ for (const tail of args.slice(index + 1)) {
83
+ if (shouldCollectMetaSurfacePositional(command, positionalIndex)) {
84
+ operands.push(tail);
85
+ }
86
+ positionalIndex += 1;
87
+ }
88
+ break;
89
+ }
90
+ if (token.startsWith('--manifest=')) {
91
+ operands.push(token.slice('--manifest='.length));
92
+ continue;
93
+ }
94
+ if (token.startsWith('-')) {
95
+ if (token === '--manifest') {
96
+ const manifestValue = args[index + 1];
97
+ if (manifestValue) {
98
+ operands.push(manifestValue);
99
+ index += 1;
100
+ }
101
+ continue;
102
+ }
103
+ if (metaSurfaceOptionConsumesValue(command, token) && !token.includes('=')) {
104
+ index += 1;
105
+ }
106
+ continue;
107
+ }
108
+ if (shouldCollectMetaSurfacePositional(command, positionalIndex)) {
109
+ operands.push(token);
110
+ }
111
+ positionalIndex += 1;
112
+ }
113
+ return operands;
114
+ }
115
+ export function normalizeAuditStartupAnchorPath(candidate, repoRoot) {
116
+ const normalized = candidate.trim().replace(/\\/gu, '/');
117
+ if (!normalized) {
118
+ return null;
119
+ }
120
+ if (normalized.startsWith('$')) {
121
+ return null;
122
+ }
123
+ if (normalized.startsWith('/')) {
124
+ return normalizeScopePath(normalized);
125
+ }
126
+ if (/^[A-Za-z]:\//u.test(normalized)) {
127
+ return normalizeScopePath(normalized);
128
+ }
129
+ if (!repoRoot) {
130
+ return normalizeScopePath(normalized);
131
+ }
132
+ return normalizeScopePath(path.resolve(repoRoot, normalized));
133
+ }
134
+ export function normalizeAuditMetaSurfaceEnvVar(candidate) {
135
+ const trimmed = candidate.trim();
136
+ const match = /^\$(?:\{)?([A-Z_]+)(?:\})?$/iu.exec(trimmed);
137
+ return match?.[1]?.toUpperCase() ?? null;
138
+ }
139
+ export function normalizeAuditMetaSurfaceEnvVarPathMap(entries, repoRoot) {
140
+ const normalized = new Map();
141
+ if (!entries) {
142
+ return normalized;
143
+ }
144
+ for (const [key, value] of Object.entries(entries)) {
145
+ const normalizedKey = key.trim().replace(/^\$/u, '').replace(/[{}]/gu, '').toUpperCase();
146
+ const normalizedValue = normalizeAuditStartupAnchorPath(value, repoRoot);
147
+ if (normalizedKey && normalizedValue) {
148
+ normalized.set(normalizedKey, normalizedValue);
149
+ }
150
+ }
151
+ return normalized;
152
+ }
153
+ export function normalizeScopePath(value) {
154
+ return value.trim().replace(/\\/gu, '/').replace(/^\.\//u, '');
155
+ }
156
+ export function normalizeScopeRoot(value) {
157
+ if (!value) {
158
+ return null;
159
+ }
160
+ const normalized = normalizeScopePath(value).replace(/\/+$/u, '');
161
+ return normalized.length > 0 ? normalized : null;
162
+ }
163
+ export function normalizeActiveCloseoutBundleRoot(value, repoRoot) {
164
+ if (!value) {
165
+ return null;
166
+ }
167
+ const normalized = normalizeAuditStartupAnchorPath(value, repoRoot);
168
+ const repoRelativeRoot = normalized ? relativizeOperandToRepoRoot(normalized, repoRoot) : '';
169
+ return repoRelativeRoot.length > 0 ? repoRelativeRoot.replace(/\/+$/u, '') : null;
170
+ }
171
+ export function relativizeOperandToRepoRoot(operand, repoRoot) {
172
+ if (!repoRoot) {
173
+ return operand;
174
+ }
175
+ if (operand === repoRoot) {
176
+ return '';
177
+ }
178
+ if (operand.startsWith(`${repoRoot}/`)) {
179
+ return operand.slice(repoRoot.length + 1);
180
+ }
181
+ return operand;
182
+ }
183
+ export function isTouchedScopePath(operand, touchedPaths, repoRoot = null) {
184
+ const normalizedOperand = normalizeScopePath(operand);
185
+ const repoRelativeOperand = relativizeOperandToRepoRoot(normalizedOperand, repoRoot);
186
+ const equivalentOperands = new Set([repoRelativeOperand]);
187
+ for (const touchedPath of touchedPaths) {
188
+ if (equivalentOperands.has(normalizeScopePath(touchedPath))) {
189
+ return true;
190
+ }
191
+ }
192
+ return false;
193
+ }
194
+ export function isTouchedReviewScopePathFamilyOperand(operand, touchedPaths, repoRoot = null) {
195
+ const normalizedOperand = normalizeScopePath(operand);
196
+ const repoRelativeOperand = relativizeOperandToRepoRoot(normalizedOperand, repoRoot);
197
+ const shellEnvInterpreterPathFamily = [
198
+ 'scripts/lib/review-shell-env-interpreter.ts',
199
+ 'dist/scripts/lib/review-shell-env-interpreter.js'
200
+ ];
201
+ if (shellEnvInterpreterPathFamily.includes(repoRelativeOperand)) {
202
+ return shellEnvInterpreterPathFamily.some((familyPath) => isTouchedScopePath(familyPath, touchedPaths, repoRoot));
203
+ }
204
+ const promptContextPathFamily = [
205
+ 'scripts/lib/review-prompt-context.ts',
206
+ 'dist/scripts/lib/review-prompt-context.js',
207
+ 'tests/review-prompt-context.spec.ts'
208
+ ];
209
+ if (promptContextPathFamily.includes(repoRelativeOperand)) {
210
+ return promptContextPathFamily.some((familyPath) => isTouchedScopePath(familyPath, touchedPaths, repoRoot));
211
+ }
212
+ const reviewScopePathFamily = [
213
+ 'scripts/lib/review-scope-paths.ts',
214
+ 'dist/scripts/lib/review-scope-paths.js',
215
+ 'tests/review-scope-paths.spec.ts'
216
+ ];
217
+ const reviewScopeAdvisoryPathFamily = [
218
+ 'scripts/lib/review-scope-advisory.ts',
219
+ 'dist/scripts/lib/review-scope-advisory.js',
220
+ 'tests/review-scope-advisory.spec.ts'
221
+ ];
222
+ if (!reviewScopePathFamily.includes(repoRelativeOperand)) {
223
+ const reviewMetaSurfaceNormalizationPathFamily = [
224
+ 'scripts/lib/review-meta-surface-normalization.ts',
225
+ 'dist/scripts/lib/review-meta-surface-normalization.js',
226
+ 'tests/review-meta-surface-normalization.spec.ts'
227
+ ];
228
+ const reviewInspectionTargetParsingPathFamily = [
229
+ 'scripts/lib/review-inspection-target-parsing.ts',
230
+ 'dist/scripts/lib/review-inspection-target-parsing.js',
231
+ 'tests/review-inspection-target-parsing.spec.ts',
232
+ 'scripts/lib/review-execution-state.ts',
233
+ 'tests/review-execution-state.spec.ts'
234
+ ];
235
+ const reviewCommandProbeClassificationPathFamily = [
236
+ 'scripts/lib/review-command-probe-classification.ts',
237
+ 'dist/scripts/lib/review-command-probe-classification.js',
238
+ 'tests/review-command-probe-classification.spec.ts',
239
+ 'scripts/lib/review-execution-state.ts',
240
+ 'tests/review-execution-state.spec.ts'
241
+ ];
242
+ const reviewCommandIntentClassificationPathFamily = [
243
+ 'scripts/lib/review-command-intent-classification.ts',
244
+ 'dist/scripts/lib/review-command-intent-classification.js',
245
+ 'tests/review-command-intent-classification.spec.ts',
246
+ 'scripts/lib/review-execution-state.ts',
247
+ 'tests/review-execution-state.spec.ts'
248
+ ];
249
+ const reviewMetaSurfaceBoundaryAnalysisPathFamily = [
250
+ 'scripts/lib/review-meta-surface-boundary-analysis.ts',
251
+ 'dist/scripts/lib/review-meta-surface-boundary-analysis.js',
252
+ 'tests/review-meta-surface-boundary-analysis.spec.ts',
253
+ 'scripts/lib/review-execution-state.ts',
254
+ 'tests/review-execution-state.spec.ts'
255
+ ];
256
+ const reviewShellCommandParserSharedPathFamily = [
257
+ 'scripts/lib/review-shell-command-parser.ts',
258
+ 'dist/scripts/lib/review-shell-command-parser.js'
259
+ ];
260
+ const reviewShellCommandParserInspectionTargetParsingPathFamily = [
261
+ ...reviewShellCommandParserSharedPathFamily,
262
+ 'scripts/lib/review-inspection-target-parsing.ts',
263
+ ];
264
+ const reviewShellCommandParserCommandProbeClassificationPathFamily = [
265
+ ...reviewShellCommandParserSharedPathFamily,
266
+ 'scripts/lib/review-command-probe-classification.ts',
267
+ ];
268
+ const reviewShellCommandParserCommandIntentClassificationPathFamily = [
269
+ ...reviewShellCommandParserSharedPathFamily,
270
+ 'scripts/lib/review-command-intent-classification.ts',
271
+ ];
272
+ const reviewShellCommandParserMetaSurfaceBoundaryAnalysisPathFamily = [
273
+ ...reviewShellCommandParserSharedPathFamily,
274
+ 'scripts/lib/review-meta-surface-boundary-analysis.ts',
275
+ ];
276
+ const reviewShellCommandParserNormalizationPathFamily = [
277
+ ...reviewShellCommandParserSharedPathFamily,
278
+ 'scripts/lib/review-meta-surface-normalization.ts',
279
+ 'tests/review-meta-surface-normalization.spec.ts'
280
+ ];
281
+ const reviewShellCommandParserExecutionStatePathFamily = [
282
+ ...reviewShellCommandParserSharedPathFamily,
283
+ 'scripts/lib/review-execution-state.ts',
284
+ 'tests/review-execution-state.spec.ts'
285
+ ];
286
+ const reviewExecutionTelemetryPathFamily = [
287
+ 'scripts/lib/review-execution-telemetry.ts',
288
+ 'dist/scripts/lib/review-execution-telemetry.js',
289
+ 'scripts/lib/review-execution-state.ts',
290
+ 'dist/scripts/lib/review-execution-state.js',
291
+ 'scripts/run-review.ts',
292
+ 'dist/scripts/run-review.js'
293
+ ];
294
+ const reviewExecutionRuntimePathFamily = [
295
+ 'scripts/lib/review-execution-runtime.ts',
296
+ 'scripts/lib/review-execution-runtime.js',
297
+ 'dist/scripts/lib/review-execution-runtime.js'
298
+ ];
299
+ const reviewExecutionBoundaryPreflightPathFamily = [
300
+ 'scripts/lib/review-execution-boundary-preflight.ts',
301
+ 'scripts/lib/review-execution-boundary-preflight.js',
302
+ 'dist/scripts/lib/review-execution-boundary-preflight.js',
303
+ 'tests/review-execution-boundary-preflight.spec.ts',
304
+ 'tests/review-execution-boundary-preflight.spec.js'
305
+ ];
306
+ const reviewNonInteractiveHandoffPathFamily = [
307
+ 'scripts/lib/review-non-interactive-handoff.ts',
308
+ 'scripts/lib/review-non-interactive-handoff.js',
309
+ 'dist/scripts/lib/review-non-interactive-handoff.js',
310
+ 'tests/review-non-interactive-handoff.spec.ts',
311
+ 'tests/review-non-interactive-handoff.spec.js'
312
+ ];
313
+ const reviewLaunchAttemptPathFamily = [
314
+ 'scripts/lib/review-launch-attempt.ts',
315
+ 'scripts/lib/review-launch-attempt.js',
316
+ 'dist/scripts/lib/review-launch-attempt.js'
317
+ ];
318
+ const reviewNonInteractiveHandoffLaunchAttemptPathFamily = [
319
+ ...reviewNonInteractiveHandoffPathFamily,
320
+ ...reviewLaunchAttemptPathFamily,
321
+ 'tests/review-launch-attempt.spec.ts',
322
+ 'tests/review-launch-attempt.spec.js'
323
+ ];
324
+ const reviewScopeAdvisoryScopePathsPathFamily = [
325
+ ...reviewScopeAdvisoryPathFamily,
326
+ ...reviewScopePathFamily
327
+ ];
328
+ const reviewScopeAdvisoryRunReviewPathFamily = [
329
+ ...reviewScopeAdvisoryPathFamily,
330
+ 'scripts/run-review.ts',
331
+ 'scripts/run-review.js',
332
+ 'dist/scripts/run-review.js',
333
+ 'tests/run-review.spec.ts',
334
+ 'tests/run-review.spec.js'
335
+ ];
336
+ const reviewExecutionRuntimeRunReviewPathFamily = [
337
+ ...reviewExecutionRuntimePathFamily,
338
+ 'scripts/run-review.ts',
339
+ 'scripts/run-review.js',
340
+ 'dist/scripts/run-review.js'
341
+ ];
342
+ const reviewExecutionBoundaryPreflightRunReviewPathFamily = [
343
+ ...reviewExecutionBoundaryPreflightPathFamily,
344
+ 'scripts/run-review.ts',
345
+ 'scripts/run-review.js',
346
+ 'dist/scripts/run-review.js',
347
+ 'tests/run-review.spec.ts',
348
+ 'tests/run-review.spec.js'
349
+ ];
350
+ const reviewNonInteractiveHandoffRunReviewPathFamily = [
351
+ ...reviewNonInteractiveHandoffPathFamily,
352
+ 'scripts/run-review.ts',
353
+ 'scripts/run-review.js',
354
+ 'dist/scripts/run-review.js',
355
+ 'tests/run-review.spec.ts',
356
+ 'tests/run-review.spec.js'
357
+ ];
358
+ const reviewExecutionBoundaryPreflightDependencyPathFamily = [
359
+ ...reviewExecutionBoundaryPreflightPathFamily,
360
+ ...reviewLaunchAttemptPathFamily,
361
+ 'scripts/lib/review-execution-state.ts',
362
+ 'scripts/lib/review-execution-state.js',
363
+ 'dist/scripts/lib/review-execution-state.js',
364
+ 'tests/review-launch-attempt.spec.ts',
365
+ 'tests/review-launch-attempt.spec.js'
366
+ ];
367
+ const reviewExecutionBoundaryPreflightExecutionStatePathFamily = [
368
+ ...reviewExecutionBoundaryPreflightPathFamily,
369
+ 'scripts/lib/review-execution-state.ts',
370
+ 'scripts/lib/review-execution-state.js',
371
+ 'dist/scripts/lib/review-execution-state.js',
372
+ 'tests/review-execution-state.spec.ts',
373
+ 'tests/review-execution-state.spec.js'
374
+ ];
375
+ const reviewLaunchAttemptRunReviewPathFamily = [
376
+ ...reviewLaunchAttemptPathFamily,
377
+ 'scripts/run-review.ts',
378
+ 'scripts/run-review.js',
379
+ 'dist/scripts/run-review.js',
380
+ 'tests/run-review.spec.ts',
381
+ 'tests/run-review.spec.js'
382
+ ];
383
+ const reviewLaunchAttemptDependencyPathFamily = [
384
+ ...reviewLaunchAttemptPathFamily,
385
+ ...reviewExecutionRuntimePathFamily,
386
+ 'scripts/lib/review-execution-state.ts',
387
+ 'scripts/lib/review-execution-state.js',
388
+ 'dist/scripts/lib/review-execution-state.js'
389
+ ];
390
+ const reviewLaunchAttemptFocusedSpecPathFamily = [
391
+ ...new Set([
392
+ ...reviewLaunchAttemptRunReviewPathFamily,
393
+ ...reviewLaunchAttemptDependencyPathFamily,
394
+ ...reviewNonInteractiveHandoffLaunchAttemptPathFamily,
395
+ ...reviewExecutionBoundaryPreflightDependencyPathFamily
396
+ ])
397
+ ];
398
+ const reviewExecutionRuntimeRegressionSpecPathFamily = [
399
+ 'tests/run-review.spec.ts',
400
+ 'tests/run-review.spec.js'
401
+ ];
402
+ const reviewLaunchAttemptRegressionSpecPathFamily = [
403
+ 'tests/review-launch-attempt.spec.ts',
404
+ 'tests/review-launch-attempt.spec.js'
405
+ ];
406
+ const reviewExecutionRuntimeExecutionStatePathFamily = [
407
+ ...reviewExecutionRuntimePathFamily,
408
+ 'scripts/lib/review-execution-state.ts',
409
+ 'scripts/lib/review-execution-state.js',
410
+ 'dist/scripts/lib/review-execution-state.js',
411
+ 'tests/review-execution-state.spec.ts',
412
+ 'tests/review-execution-state.spec.js'
413
+ ];
414
+ const reviewSupportPathFamilies = [
415
+ reviewMetaSurfaceNormalizationPathFamily,
416
+ reviewInspectionTargetParsingPathFamily,
417
+ reviewCommandProbeClassificationPathFamily,
418
+ reviewCommandIntentClassificationPathFamily,
419
+ reviewMetaSurfaceBoundaryAnalysisPathFamily,
420
+ reviewScopeAdvisoryPathFamily,
421
+ reviewScopeAdvisoryScopePathsPathFamily,
422
+ reviewScopeAdvisoryRunReviewPathFamily,
423
+ reviewShellCommandParserInspectionTargetParsingPathFamily,
424
+ reviewShellCommandParserCommandProbeClassificationPathFamily,
425
+ reviewShellCommandParserCommandIntentClassificationPathFamily,
426
+ reviewShellCommandParserMetaSurfaceBoundaryAnalysisPathFamily,
427
+ reviewShellCommandParserNormalizationPathFamily,
428
+ reviewShellCommandParserExecutionStatePathFamily,
429
+ reviewExecutionTelemetryPathFamily,
430
+ reviewNonInteractiveHandoffLaunchAttemptPathFamily,
431
+ reviewLaunchAttemptDependencyPathFamily,
432
+ reviewLaunchAttemptRunReviewPathFamily,
433
+ reviewExecutionBoundaryPreflightDependencyPathFamily,
434
+ reviewExecutionBoundaryPreflightExecutionStatePathFamily,
435
+ reviewExecutionBoundaryPreflightRunReviewPathFamily,
436
+ reviewNonInteractiveHandoffRunReviewPathFamily,
437
+ reviewExecutionRuntimeRunReviewPathFamily,
438
+ reviewExecutionRuntimeExecutionStatePathFamily
439
+ ];
440
+ if (reviewLaunchAttemptRegressionSpecPathFamily.includes(repoRelativeOperand)) {
441
+ return reviewLaunchAttemptFocusedSpecPathFamily.some((path) => isTouchedScopePath(path, touchedPaths, repoRoot));
442
+ }
443
+ if (reviewLaunchAttemptFocusedSpecPathFamily.includes(repoRelativeOperand) &&
444
+ reviewLaunchAttemptRegressionSpecPathFamily.some((path) => isTouchedScopePath(path, touchedPaths, repoRoot))) {
445
+ return true;
446
+ }
447
+ if (reviewExecutionRuntimeRegressionSpecPathFamily.includes(repoRelativeOperand)) {
448
+ return (reviewExecutionRuntimePathFamily.some((path) => isTouchedScopePath(path, touchedPaths, repoRoot)) ||
449
+ reviewNonInteractiveHandoffPathFamily.some((path) => isTouchedScopePath(path, touchedPaths, repoRoot)));
450
+ }
451
+ if (reviewExecutionRuntimePathFamily.includes(repoRelativeOperand) &&
452
+ reviewExecutionRuntimeRegressionSpecPathFamily.some((path) => isTouchedScopePath(path, touchedPaths, repoRoot))) {
453
+ return true;
454
+ }
455
+ return reviewSupportPathFamilies.some((familyPath) => familyPath.includes(repoRelativeOperand) &&
456
+ familyPath.some((path) => isTouchedScopePath(path, touchedPaths, repoRoot)));
457
+ }
458
+ return [...reviewScopePathFamily, ...reviewScopeAdvisoryPathFamily].some((familyPath) => isTouchedScopePath(familyPath, touchedPaths, repoRoot));
459
+ }
460
+ function resolveAuditMetaSurfaceEnvOperandPath(operand, envAssignments, auditStartupAnchorEnvVarPaths, blockedEnvVars, repoRoot) {
461
+ const normalizedEnvVar = normalizeAuditMetaSurfaceEnvVar(operand);
462
+ if (!normalizedEnvVar) {
463
+ return null;
464
+ }
465
+ if (blockedEnvVars.has(normalizedEnvVar)) {
466
+ return null;
467
+ }
468
+ const inlineValue = envAssignments.get(normalizedEnvVar);
469
+ if (inlineValue !== undefined) {
470
+ const normalizedInlinePath = normalizeAuditStartupAnchorPath(inlineValue, repoRoot);
471
+ if (normalizedInlinePath) {
472
+ return normalizedInlinePath;
473
+ }
474
+ return null;
475
+ }
476
+ return auditStartupAnchorEnvVarPaths.get(normalizedEnvVar) ?? null;
477
+ }
478
+ function extractGitRevisionPathCandidate(command, args, operand) {
479
+ if (command !== 'git') {
480
+ return null;
481
+ }
482
+ const invocation = resolveGitInvocation(args);
483
+ if (invocation.subcommand !== 'show') {
484
+ return null;
485
+ }
486
+ const normalizedOperand = operand.replace(/\\/gu, '/');
487
+ if (normalizedOperand.startsWith(':')) {
488
+ return normalizedOperand.slice(1);
489
+ }
490
+ if (normalizedOperand.includes('://')) {
491
+ return null;
492
+ }
493
+ const separatorIndex = normalizedOperand.lastIndexOf(':');
494
+ if (separatorIndex <= 0 || separatorIndex === normalizedOperand.length - 1) {
495
+ return null;
496
+ }
497
+ return normalizedOperand.slice(separatorIndex + 1);
498
+ }
499
+ export function resolveGitInvocation(args) {
500
+ let index = 0;
501
+ while (index < args.length) {
502
+ const token = args[index] ?? '';
503
+ const normalized = normalizeCommandToken(token);
504
+ if (!normalized) {
505
+ index += 1;
506
+ continue;
507
+ }
508
+ if (normalized === '--') {
509
+ return { subcommand: null, subcommandArgs: [] };
510
+ }
511
+ if (token.startsWith('-')) {
512
+ index += gitOptionConsumesValue(token) && !token.includes('=') ? 2 : 1;
513
+ continue;
514
+ }
515
+ return { subcommand: normalized, subcommandArgs: args.slice(index + 1) };
516
+ }
517
+ return { subcommand: null, subcommandArgs: [] };
518
+ }
519
+ function gitOptionConsumesValue(option) {
520
+ const normalized = option.toLowerCase();
521
+ return (normalized === '-c' ||
522
+ normalized === '-C' ||
523
+ normalized === '--git-dir' ||
524
+ normalized.startsWith('--git-dir=') ||
525
+ normalized === '--work-tree' ||
526
+ normalized.startsWith('--work-tree=') ||
527
+ normalized === '--namespace' ||
528
+ normalized.startsWith('--namespace=') ||
529
+ normalized === '--exec-path' ||
530
+ normalized.startsWith('--exec-path=') ||
531
+ normalized === '--config-env' ||
532
+ normalized.startsWith('--config-env=') ||
533
+ normalized === '--super-prefix' ||
534
+ normalized.startsWith('--super-prefix='));
535
+ }
536
+ function metaSurfaceOptionConsumesValue(command, option) {
537
+ const normalized = option.toLowerCase();
538
+ if (command === 'rg') {
539
+ return (normalized === '-g' ||
540
+ normalized === '--glob' ||
541
+ normalized.startsWith('--glob=') ||
542
+ normalized === '--iglob' ||
543
+ normalized.startsWith('--iglob=') ||
544
+ normalized === '-e' ||
545
+ normalized === '--regexp' ||
546
+ normalized.startsWith('--regexp=') ||
547
+ normalized === '-f' ||
548
+ normalized === '--file' ||
549
+ normalized.startsWith('--file=') ||
550
+ normalized === '--pre' ||
551
+ normalized.startsWith('--pre=') ||
552
+ normalized === '--pre-glob' ||
553
+ normalized.startsWith('--pre-glob=') ||
554
+ normalized === '-r' ||
555
+ normalized === '--replace' ||
556
+ normalized.startsWith('--replace=') ||
557
+ normalized === '-t' ||
558
+ normalized === '--type' ||
559
+ normalized.startsWith('--type=') ||
560
+ normalized === '--type-not' ||
561
+ normalized.startsWith('--type-not='));
562
+ }
563
+ if (command === 'grep' || command === 'ggrep') {
564
+ return normalized === '-e' || normalized === '-f';
565
+ }
566
+ return false;
567
+ }
568
+ function shouldCollectMetaSurfacePositional(command, positionalIndex) {
569
+ if (command === 'rg' || command === 'grep' || command === 'ggrep') {
570
+ return positionalIndex >= 1;
571
+ }
572
+ return true;
573
+ }
574
+ function classifyMetaSurfaceOperand(operand, touchedPaths, repoRoot, activeCloseoutBundleRoots = new Set(), allowedMetaSurfacePaths = new Set()) {
575
+ const normalized = operand.trim().replace(/\\/gu, '/');
576
+ if (!normalized) {
577
+ return null;
578
+ }
579
+ if (/^[A-Za-z_][A-Za-z0-9_]*=.*/u.test(normalized)) {
580
+ return null;
581
+ }
582
+ if (isTouchedScopePath(normalized, touchedPaths, repoRoot) ||
583
+ isTouchedReviewScopePathFamilyOperand(normalized, touchedPaths, repoRoot)) {
584
+ return null;
585
+ }
586
+ const activeCloseoutBundleKind = classifyActiveCloseoutBundleCandidate(normalized, activeCloseoutBundleRoots, repoRoot);
587
+ if (activeCloseoutBundleKind) {
588
+ return activeCloseoutBundleKind;
589
+ }
590
+ if (/^\$(?:\{)?MANIFEST(?:\})?$/iu.test(normalized)) {
591
+ return 'run-manifest';
592
+ }
593
+ if (/^\$(?:\{)?(?:RUNNER_LOG|RUN_LOG)(?:\})?$/iu.test(normalized)) {
594
+ return 'run-runner-log';
595
+ }
596
+ if (normalized.includes('.codex/memories/')) {
597
+ return 'codex-memories';
598
+ }
599
+ if (isReviewSupportCodexSkillPath(normalized, repoRoot)) {
600
+ return 'review-support';
601
+ }
602
+ if (normalized.includes('.codex/skills/')) {
603
+ return 'codex-skills';
604
+ }
605
+ if (normalized.includes('.runs/') && normalized.endsWith('/manifest.json')) {
606
+ return 'run-manifest';
607
+ }
608
+ if (normalized.includes('.runs/') && normalized.endsWith('/runner.ndjson')) {
609
+ return 'run-runner-log';
610
+ }
611
+ const normalizedAllowedMetaSurfacePath = normalizeAuditStartupAnchorPath(normalized, repoRoot);
612
+ if (normalizedAllowedMetaSurfacePath !== null &&
613
+ allowedMetaSurfacePaths.has(normalizedAllowedMetaSurfacePath)) {
614
+ return ARCHITECTURE_CONTEXT_META_SURFACE_KIND;
615
+ }
616
+ if (normalized.includes('/review/') &&
617
+ /\/(?:prompt\.txt|output\.log|telemetry\.json)$/iu.test(normalized)) {
618
+ return 'review-artifacts';
619
+ }
620
+ if (matchesPathSuffix(normalized, 'scripts/pack-smoke.mjs') ||
621
+ matchesPathSuffix(normalized, 'scripts/pack-smoke.js') ||
622
+ matchesPathSuffix(normalized, 'scripts/lib/run-manifests.js') ||
623
+ matchesPathSuffix(normalized, 'scripts/lib/run-manifests.d.ts') ||
624
+ matchesPathSuffix(normalized, 'scripts/lib/review-shell-env-interpreter.ts') ||
625
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-shell-env-interpreter.js') ||
626
+ matchesPathSuffix(normalized, 'scripts/lib/review-prompt-context.ts') ||
627
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-prompt-context.js') ||
628
+ matchesPathSuffix(normalized, 'scripts/lib/review-scope-paths.ts') ||
629
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-scope-paths.js') ||
630
+ matchesPathSuffix(normalized, 'scripts/lib/review-scope-advisory.ts') ||
631
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-scope-advisory.js') ||
632
+ matchesPathSuffix(normalized, 'scripts/lib/review-meta-surface-normalization.ts') ||
633
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-meta-surface-normalization.js') ||
634
+ matchesPathSuffix(normalized, 'scripts/lib/review-inspection-target-parsing.ts') ||
635
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-inspection-target-parsing.js') ||
636
+ matchesPathSuffix(normalized, 'scripts/lib/review-command-probe-classification.ts') ||
637
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-command-probe-classification.js') ||
638
+ matchesPathSuffix(normalized, 'scripts/lib/review-command-intent-classification.ts') ||
639
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-command-intent-classification.js') ||
640
+ matchesPathSuffix(normalized, 'scripts/lib/review-meta-surface-boundary-analysis.ts') ||
641
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-meta-surface-boundary-analysis.js') ||
642
+ matchesPathSuffix(normalized, 'scripts/lib/review-shell-command-parser.ts') ||
643
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-shell-command-parser.js') ||
644
+ matchesPathSuffix(normalized, 'scripts/lib/review-execution-telemetry.ts') ||
645
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-execution-telemetry.js') ||
646
+ matchesPathSuffix(normalized, 'scripts/lib/review-execution-boundary-preflight.ts') ||
647
+ matchesPathSuffix(normalized, 'scripts/lib/review-execution-boundary-preflight.js') ||
648
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-execution-boundary-preflight.js') ||
649
+ matchesPathSuffix(normalized, 'scripts/lib/review-non-interactive-handoff.ts') ||
650
+ matchesPathSuffix(normalized, 'scripts/lib/review-non-interactive-handoff.js') ||
651
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-non-interactive-handoff.js') ||
652
+ matchesPathSuffix(normalized, 'scripts/lib/review-launch-attempt.ts') ||
653
+ matchesPathSuffix(normalized, 'scripts/lib/review-launch-attempt.js') ||
654
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-launch-attempt.js') ||
655
+ matchesPathSuffix(normalized, 'scripts/lib/review-execution-runtime.ts') ||
656
+ matchesPathSuffix(normalized, 'scripts/lib/review-execution-runtime.js') ||
657
+ matchesPathSuffix(normalized, 'dist/scripts/lib/review-execution-runtime.js') ||
658
+ matchesPathSuffix(normalized, 'tests/review-meta-surface-boundary-analysis.spec.ts') ||
659
+ matchesPathSuffix(normalized, 'scripts/run-review.ts') ||
660
+ matchesPathSuffix(normalized, 'scripts/run-review.js') ||
661
+ matchesPathSuffix(normalized, 'dist/scripts/run-review.js') ||
662
+ matchesPathSuffix(normalized, 'scripts/lib/review-execution-state.ts') ||
663
+ matchesPathSuffix(normalized, 'tests/review-prompt-context.spec.ts') ||
664
+ matchesPathSuffix(normalized, 'tests/review-meta-surface-normalization.spec.ts') ||
665
+ matchesPathSuffix(normalized, 'tests/review-inspection-target-parsing.spec.ts') ||
666
+ matchesPathSuffix(normalized, 'tests/review-command-probe-classification.spec.ts') ||
667
+ matchesPathSuffix(normalized, 'tests/review-command-intent-classification.spec.ts') ||
668
+ matchesPathSuffix(normalized, 'tests/review-execution-boundary-preflight.spec.ts') ||
669
+ matchesPathSuffix(normalized, 'tests/review-execution-boundary-preflight.spec.js') ||
670
+ matchesPathSuffix(normalized, 'tests/review-non-interactive-handoff.spec.ts') ||
671
+ matchesPathSuffix(normalized, 'tests/review-non-interactive-handoff.spec.js') ||
672
+ matchesPathSuffix(normalized, 'tests/review-launch-attempt.spec.ts') ||
673
+ matchesPathSuffix(normalized, 'tests/review-launch-attempt.spec.js') ||
674
+ matchesPathSuffix(normalized, 'tests/review-scope-paths.spec.ts') ||
675
+ matchesPathSuffix(normalized, 'tests/review-scope-advisory.spec.ts') ||
676
+ matchesPathSuffix(normalized, 'tests/run-review.spec.ts') ||
677
+ matchesPathSuffix(normalized, 'tests/run-review.spec.js') ||
678
+ matchesPathSuffix(normalized, 'tests/review-execution-state.spec.ts') ||
679
+ matchesPathSuffix(normalized, 'tests/review-execution-state.spec.js')) {
680
+ return 'review-support';
681
+ }
682
+ if (matchesPathSuffix(normalized, 'docs/standalone-review-guide.md') ||
683
+ matchesPathSuffix(normalized, 'docs/guides/review-artifacts.md') ||
684
+ /(?:^|\/)docs\/(?:PRD|TECH_SPEC|ACTION_PLAN)-.*standalone-review.*\.md$/iu.test(normalized) ||
685
+ /(?:^|\/)docs\/findings\/.*standalone-review.*\.md$/iu.test(normalized)) {
686
+ return 'review-docs';
687
+ }
688
+ return null;
689
+ }
690
+ function isReviewSupportCodexSkillPath(normalized, repoRoot) {
691
+ if (!REVIEW_SUPPORT_CODEX_SKILL_PATH_RE.test(normalized)) {
692
+ return false;
693
+ }
694
+ const normalizedRepoRoot = normalizeScopeRoot(repoRoot ?? undefined);
695
+ if (normalizedRepoRoot) {
696
+ if (isPathInsideNormalizedRoot(normalized, normalizedRepoRoot)) {
697
+ return false;
698
+ }
699
+ }
700
+ return isGlobalCodexSkillPath(normalized);
701
+ }
702
+ function isGlobalCodexSkillPath(normalized) {
703
+ if (normalized.startsWith('~/.codex/') ||
704
+ normalized.startsWith('$HOME/.codex/') ||
705
+ normalized.startsWith('${HOME}/.codex/')) {
706
+ return true;
707
+ }
708
+ const homeRoots = [process.env.HOME, process.env.USERPROFILE, os.homedir()]
709
+ .map((candidate) => normalizeScopeRoot(candidate ?? undefined))
710
+ .filter((candidate) => candidate !== null)
711
+ .map((candidate) => `${candidate}/.codex`);
712
+ if (homeRoots.some((root) => isPathInsideNormalizedRoot(normalized, root))) {
713
+ return true;
714
+ }
715
+ return (/^\/(?:Users|home|var\/home)\/[^/]+\/\.codex\//iu.test(normalized) ||
716
+ /^\/root\/\.codex\//iu.test(normalized) ||
717
+ /^[A-Za-z]:\/Users\/[^/]+\/\.codex\//iu.test(normalized));
718
+ }
719
+ function isPathInsideNormalizedRoot(normalized, normalizedRoot) {
720
+ if (normalized === normalizedRoot || normalized.startsWith(`${normalizedRoot}/`)) {
721
+ return true;
722
+ }
723
+ if (/^[A-Za-z]:\//u.test(normalized) && /^[A-Za-z]:\//u.test(normalizedRoot)) {
724
+ const lowerNormalized = normalized.toLowerCase();
725
+ const lowerRoot = normalizedRoot.toLowerCase();
726
+ return lowerNormalized === lowerRoot || lowerNormalized.startsWith(`${lowerRoot}/`);
727
+ }
728
+ return false;
729
+ }
730
+ function matchesPathSuffix(value, relativePath) {
731
+ const normalizedRelativePath = normalizeScopePath(relativePath);
732
+ return value === normalizedRelativePath || value.endsWith(`/${normalizedRelativePath}`);
733
+ }
734
+ export function classifyActiveCloseoutBundleCandidate(candidate, activeCloseoutBundleRoots, repoRoot) {
735
+ if (activeCloseoutBundleRoots.size === 0) {
736
+ return null;
737
+ }
738
+ const normalized = normalizeScopePath(candidate);
739
+ const repoRelativeOperand = relativizeOperandToRepoRoot(normalized, repoRoot);
740
+ for (const root of activeCloseoutBundleRoots) {
741
+ if (repoRelativeOperand === root || repoRelativeOperand.startsWith(`${root}/`)) {
742
+ return REVIEW_ACTIVE_CLOSEOUT_BUNDLE_KIND;
743
+ }
744
+ }
745
+ return null;
746
+ }