@zaip-ai/cli 4.9.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/services/adapter-hook-sources.d.ts +3 -0
  2. package/dist/services/adapter-hook-sources.d.ts.map +1 -1
  3. package/dist/services/adapter-hook-sources.js +3 -0
  4. package/dist/services/adapter-hook-sources.js.map +1 -1
  5. package/dist/services/adapters.d.ts +1 -1
  6. package/dist/services/adapters.d.ts.map +1 -1
  7. package/dist/services/adapters.js +5 -2
  8. package/dist/services/adapters.js.map +1 -1
  9. package/dist/services/adapters.test.js +1 -1
  10. package/dist/services/adapters.test.js.map +1 -1
  11. package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
  12. package/dist/services/codex-conversation-lifecycle-hook.js +16 -6
  13. package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
  14. package/dist/services/codex-hook-activation.d.ts +1 -1
  15. package/dist/services/codex-hook-activation.d.ts.map +1 -1
  16. package/dist/services/codex-hook-activation.js +116 -10
  17. package/dist/services/codex-hook-activation.js.map +1 -1
  18. package/dist/services/codex-pre-tool-cli-capture-template.d.ts +2 -0
  19. package/dist/services/codex-pre-tool-cli-capture-template.d.ts.map +1 -0
  20. package/dist/services/codex-pre-tool-cli-capture-template.js +104 -0
  21. package/dist/services/codex-pre-tool-cli-capture-template.js.map +1 -0
  22. package/dist/services/codex-pre-tool-cloud-template.d.ts +2 -0
  23. package/dist/services/codex-pre-tool-cloud-template.d.ts.map +1 -0
  24. package/dist/services/codex-pre-tool-cloud-template.js +190 -0
  25. package/dist/services/codex-pre-tool-cloud-template.js.map +1 -0
  26. package/dist/services/codex-pre-tool-dependencies.test-support.d.ts +2 -0
  27. package/dist/services/codex-pre-tool-dependencies.test-support.d.ts.map +1 -0
  28. package/dist/services/codex-pre-tool-dependencies.test-support.js +9 -0
  29. package/dist/services/codex-pre-tool-dependencies.test-support.js.map +1 -0
  30. package/dist/services/codex-pre-tool-hook-fixture.test-support.d.ts +5 -0
  31. package/dist/services/codex-pre-tool-hook-fixture.test-support.d.ts.map +1 -0
  32. package/dist/services/codex-pre-tool-hook-fixture.test-support.js +19 -0
  33. package/dist/services/codex-pre-tool-hook-fixture.test-support.js.map +1 -0
  34. package/dist/services/codex-pre-tool-hook-template-bootstrap.test.d.ts +2 -0
  35. package/dist/services/codex-pre-tool-hook-template-bootstrap.test.d.ts.map +1 -0
  36. package/dist/services/codex-pre-tool-hook-template-bootstrap.test.js +107 -0
  37. package/dist/services/codex-pre-tool-hook-template-bootstrap.test.js.map +1 -0
  38. package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
  39. package/dist/services/codex-pre-tool-hook-template.js +96 -210
  40. package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
  41. package/dist/services/codex-pre-tool-hook-template.test.js +32 -80
  42. package/dist/services/codex-pre-tool-hook-template.test.js.map +1 -1
  43. package/dist/services/codex-pre-tool-host-context-template.d.ts +2 -0
  44. package/dist/services/codex-pre-tool-host-context-template.d.ts.map +1 -0
  45. package/dist/services/codex-pre-tool-host-context-template.js +139 -0
  46. package/dist/services/codex-pre-tool-host-context-template.js.map +1 -0
  47. package/dist/services/codex-pre-tool-support-template.d.ts.map +1 -1
  48. package/dist/services/codex-pre-tool-support-template.js +61 -101
  49. package/dist/services/codex-pre-tool-support-template.js.map +1 -1
  50. package/dist/services/codex-subagent-hook-template.d.ts +1 -1
  51. package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
  52. package/dist/services/codex-subagent-hook-template.js +13 -2
  53. package/dist/services/codex-subagent-hook-template.js.map +1 -1
  54. package/dist/services/codex-validation-runtime-template.d.ts.map +1 -1
  55. package/dist/services/codex-validation-runtime-template.js +10 -4
  56. package/dist/services/codex-validation-runtime-template.js.map +1 -1
  57. package/dist/services/runtime-template-test-support.d.ts +1 -0
  58. package/dist/services/runtime-template-test-support.d.ts.map +1 -1
  59. package/dist/services/runtime-template-test-support.js +23 -2
  60. package/dist/services/runtime-template-test-support.js.map +1 -1
  61. package/dist/services/runtime-template.test.js +4 -23
  62. package/dist/services/runtime-template.test.js.map +1 -1
  63. package/package.json +1 -1
  64. package/templates/.agents/README-ENG.md +49 -7
  65. package/templates/.agents/README.md +37 -10
  66. package/templates/.agents/config/agents/discovery.json +1 -1
  67. package/templates/.agents/dashboard/.zaip-managed.json +121 -73
  68. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-BW7Vy1cp.js → CostCalculationGuidePage-w6pjt4OM.js} +1 -1
  69. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-Cp_hEVd8.js → DashboardHelpDialog-DhlntQcR.js} +76 -11
  70. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-Prcs-ydy.js → PricingSettingsDialog-BHoZT2an.js} +1 -1
  71. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-Cu40wAFF.js → ProjectSettingsPage-IcncIZ9Y.js} +1 -1
  72. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-Bh3YBd3C.js → TraceabilityWorkspace-C6rORjpr.js} +1 -1
  73. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-uPnOBShc.js +68 -0
  74. package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-CF7B1Hjn.js → dashboard-localization-DWXjEIgc.js} +49 -7
  75. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DOhy6D2-.js → icons-vendor-Hc9fp_gs.js} +1 -1
  76. package/templates/.agents/dashboard/apps/frontend/dist/assets/{index-qVSJnJ0_.js → index-BqeOEZW5.js} +2 -2
  77. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CkPC-yMz.js → react-vendor-C9ta_O10.js} +1 -1
  78. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BEdGoIDm.js → traceability-IcefoTOv.js} +1 -1
  79. package/templates/.agents/dashboard/apps/frontend/dist/index.html +5 -5
  80. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  81. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  82. package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +10 -3
  83. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.run-page.test.ts +5 -1
  84. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.period-values.test.tsx +2 -2
  85. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +5 -5
  86. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +36 -43
  87. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +1 -0
  88. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-formatters.ts +6 -4
  89. package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.ts +2 -2
  90. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +1 -1
  91. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +11 -25
  92. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-defaults.ts +26 -0
  93. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  94. package/templates/.agents/dashboard/modules/operations/src/contracts.ts +11 -16
  95. package/templates/.agents/dashboard/modules/operations/src/planning-contracts.ts +14 -0
  96. package/templates/.agents/dashboard/modules/operations/src/react/DecisionTable.tsx +65 -0
  97. package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +5 -71
  98. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +10 -36
  99. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +7 -2
  100. package/templates/.agents/dashboard/modules/operations/src/react/use-operations-filter-sync.ts +66 -0
  101. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  102. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  103. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  104. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  105. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +193 -191
  106. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +169 -169
  107. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  108. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +193 -191
  109. package/templates/.agents/dashboard/packages/local-runtime/src/active-capture-failure.test.ts +38 -0
  110. package/templates/.agents/dashboard/packages/local-runtime/src/active-capture-failure.ts +35 -0
  111. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +53 -2
  112. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +18 -1
  113. package/templates/.agents/dashboard/packages/local-runtime/src/manifest-runs.ts +8 -2
  114. package/templates/.agents/dashboard/packages/local-runtime/src/server-capture-projection-order.test.ts +118 -0
  115. package/templates/.agents/dashboard/packages/local-runtime/src/server-cost-run-search.test.ts +90 -0
  116. package/templates/.agents/dashboard/packages/local-runtime/src/server-cost-run-search.ts +86 -0
  117. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +8 -1
  118. package/templates/.agents/dashboard/packages/local-runtime/src/server-projection-loaders.ts +13 -0
  119. package/templates/.agents/dashboard/packages/local-runtime/src/server-projections.ts +30 -74
  120. package/templates/.agents/dashboard/packages/local-runtime/src/server-route-handlers.ts +42 -0
  121. package/templates/.agents/dashboard/packages/local-runtime/src/server-routes.test.ts +60 -0
  122. package/templates/.agents/dashboard/packages/local-runtime/src/server-run-projections.test.ts +12 -2
  123. package/templates/.agents/dashboard/packages/local-runtime/src/server-telemetry-command.test.ts +29 -4
  124. package/templates/.agents/dashboard/packages/local-runtime/src/server-telemetry-refresh.ts +7 -0
  125. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +51 -54
  126. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +28 -45
  127. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +5 -0
  128. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-page.test.ts +49 -0
  129. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-page.ts +44 -1
  130. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-cached-cost-page.ts +11 -10
  131. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +1 -1
  132. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-item-index.test.ts +18 -1
  133. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  134. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  135. package/templates/.agents/design/.zaip-managed.json +3 -3
  136. package/templates/.agents/design/apps/catalog/package.json +1 -1
  137. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  138. package/templates/.agents/requirements/autonomous-assurance.md +11 -2
  139. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  140. package/templates/.agents/requirements/comparative-audit.md +1 -1
  141. package/templates/.agents/requirements/context-engine.md +1 -1
  142. package/templates/.agents/requirements/cost-observability.md +1 -1
  143. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  144. package/templates/.agents/requirements/data-export.md +1 -1
  145. package/templates/.agents/requirements/design-system.md +1 -1
  146. package/templates/.agents/requirements/execution-engine.md +1 -1
  147. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  148. package/templates/.agents/requirements/model-orchestration.md +1 -1
  149. package/templates/.agents/requirements/public-distribution.md +1 -1
  150. package/templates/.agents/requirements/software-architecture.md +1 -1
  151. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  152. package/templates/.agents/requirements/work-lifecycle.md +2 -1
  153. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  154. package/templates/.agents/rules/run-lifecycle-closure.md +2 -1
  155. package/templates/.agents/rules/workflow.md +1 -0
  156. package/templates/.agents/runtime/VERSION +1 -1
  157. package/templates/.agents/runtime/bin/zaip.mjs +1178 -764
  158. package/templates/.agents/runtime/checksums.sha256 +6 -6
  159. package/templates/.agents/runtime/manifest.json +1 -1
  160. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
  161. package/templates/.agents/runtime/provenance.json +5 -5
  162. package/templates/.agents/runtime/sbom.cdx.json +59 -59
  163. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +1 -1
  164. package/templates/.agents/skills/zaip-skill-execution/references/controlled-release-recovery.md +14 -0
  165. package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +1 -1
  166. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +5 -1
  167. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.mjs +12 -0
  168. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.test.mjs +25 -0
  169. package/templates/.agents/skills/zaip-skill-maintenance-enter/SKILL.md +23 -0
  170. package/templates/.agents/skills/zaip-skill-maintenance-enter/agents/openai.yaml +4 -0
  171. package/templates/.agents/skills/zaip-skill-maintenance-enter/scripts/maintenance.mjs +213 -0
  172. package/templates/.agents/skills/zaip-skill-maintenance-enter/scripts/maintenance.test.mjs +207 -0
  173. package/templates/.agents/skills/zaip-skill-maintenance-exit/SKILL.md +21 -0
  174. package/templates/.agents/skills/zaip-skill-maintenance-exit/agents/openai.yaml +4 -0
  175. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +2 -0
  176. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +37 -8
  177. package/templates/.agents/zaip-aios/VERSION +1 -1
  178. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +38 -0
  179. package/templates/template-manifest.json +188 -116
  180. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-Co2Jiuzh.js +0 -68
@@ -2,4 +2,7 @@ export { CODEX_CONVERSATION_LIFECYCLE_HOOK } from "./codex-conversation-lifecycl
2
2
  export { CODEX_PRE_TOOL_HOOK } from "./codex-pre-tool-hook-template.js";
3
3
  export { CODEX_PRE_TOOL_SUPPORT_HOOK } from "./codex-pre-tool-support-template.js";
4
4
  export { CODEX_SUBAGENT_LIFECYCLE_HOOK } from "./codex-subagent-hook-template.js";
5
+ export { CODEX_PRE_TOOL_CLOUD_HOOK } from "./codex-pre-tool-cloud-template.js";
6
+ export { CODEX_PRE_TOOL_HOST_CONTEXT_HOOK } from "./codex-pre-tool-host-context-template.js";
7
+ export { CODEX_PRE_TOOL_CLI_CAPTURE_HOOK } from "./codex-pre-tool-cli-capture-template.js";
5
8
  //# sourceMappingURL=adapter-hook-sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-hook-sources.d.ts","sourceRoot":"","sources":["../../src/services/adapter-hook-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"adapter-hook-sources.d.ts","sourceRoot":"","sources":["../../src/services/adapter-hook-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC"}
@@ -2,4 +2,7 @@ export { CODEX_CONVERSATION_LIFECYCLE_HOOK } from "./codex-conversation-lifecycl
2
2
  export { CODEX_PRE_TOOL_HOOK } from "./codex-pre-tool-hook-template.js";
3
3
  export { CODEX_PRE_TOOL_SUPPORT_HOOK } from "./codex-pre-tool-support-template.js";
4
4
  export { CODEX_SUBAGENT_LIFECYCLE_HOOK } from "./codex-subagent-hook-template.js";
5
+ export { CODEX_PRE_TOOL_CLOUD_HOOK } from "./codex-pre-tool-cloud-template.js";
6
+ export { CODEX_PRE_TOOL_HOST_CONTEXT_HOOK } from "./codex-pre-tool-host-context-template.js";
7
+ export { CODEX_PRE_TOOL_CLI_CAPTURE_HOOK } from "./codex-pre-tool-cli-capture-template.js";
5
8
  //# sourceMappingURL=adapter-hook-sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-hook-sources.js","sourceRoot":"","sources":["../../src/services/adapter-hook-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"adapter-hook-sources.js","sourceRoot":"","sources":["../../src/services/adapter-hook-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type PublicAgentCatalog } from "./agent-adapters.js";
2
2
  export { isManagedAdapter } from "./managed-adapter.js";
3
- export declare const ADAPTERS_VERSION = "4.9.0";
3
+ export declare const ADAPTERS_VERSION = "5.0.0";
4
4
  export interface AdapterFile {
5
5
  path: string;
6
6
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/services/adapters.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMxD,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAuLD,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,SAAS,WAAW,EAAE,CA4ExB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC,CAaD;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,CA6B7D"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/services/adapters.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMxD,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAuLD,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,SAAS,WAAW,EAAE,CA2FxB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC,CAaD;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC,CA6B7D"}
@@ -1,6 +1,6 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { resolve } from "node:path";
3
- import { CODEX_CONVERSATION_LIFECYCLE_HOOK, CODEX_PRE_TOOL_HOOK, CODEX_PRE_TOOL_SUPPORT_HOOK, CODEX_SUBAGENT_LIFECYCLE_HOOK, } from "./adapter-hook-sources.js";
3
+ import { CODEX_CONVERSATION_LIFECYCLE_HOOK, CODEX_PRE_TOOL_HOOK, CODEX_PRE_TOOL_SUPPORT_HOOK, CODEX_PRE_TOOL_CLOUD_HOOK, CODEX_PRE_TOOL_HOST_CONTEXT_HOOK, CODEX_PRE_TOOL_CLI_CAPTURE_HOOK, CODEX_SUBAGENT_LIFECYCLE_HOOK, } from "./adapter-hook-sources.js";
4
4
  import { codexAgentConfig, parsePublicAgentCatalog, publicAgentAdapterFiles, } from "./agent-adapters.js";
5
5
  import { serializeAgentDiscovery } from "./agent-discovery.js";
6
6
  import { isReconciledCodexConfig, reconcileCodexConfig } from "./codex-config-overlay.js";
@@ -11,7 +11,7 @@ export { isManagedAdapter } from "./managed-adapter.js";
11
11
  import { CODEX_GITHUB_DEPLOY_RULES, CODEX_SECURITY_RULES } from "./codex-rules.js";
12
12
  import { codexWindowsHookCommand } from "./codex-windows-hook-command.js";
13
13
  import { applyTransactionalChanges, assertSafeDestination } from "./transactional-files.js";
14
- export const ADAPTERS_VERSION = "4.9.0";
14
+ export const ADAPTERS_VERSION = "5.0.0";
15
15
  const ROOT_GUIDANCE = `# ZAIP-AIOS
16
16
 
17
17
  Read \`.agents/config/project.yaml\` first. Apply ZAIP only for literal boolean \`zaip.enabled: true\`, except framework maintenance or \`zaip enable\`. \`AGENTS.md\` is a bootstrap; canonical guidance lives in \`.agents/\`.
@@ -203,6 +203,9 @@ export function adapterFiles(workspaceRoot, catalog) {
203
203
  managed(".codex/hooks/zaip-hook-activation.mjs", CODEX_HOOK_ACTIVATION, "codex-hook-activation"),
204
204
  managed(".codex/hooks/zaip-pre-tool-use.mjs", CODEX_PRE_TOOL_HOOK, "codex-safety-hook"),
205
205
  managed(".codex/hooks/zaip-pre-tool-support.mjs", CODEX_PRE_TOOL_SUPPORT_HOOK, "codex-safety-support"),
206
+ managed(".codex/hooks/zaip-pre-tool-cloud.mjs", CODEX_PRE_TOOL_CLOUD_HOOK, "codex-safety-cloud"),
207
+ managed(".codex/hooks/zaip-pre-tool-host-context.mjs", CODEX_PRE_TOOL_HOST_CONTEXT_HOOK, "codex-safety-host-context"),
208
+ managed(".codex/hooks/zaip-pre-tool-cli-capture.mjs", CODEX_PRE_TOOL_CLI_CAPTURE_HOOK, "codex-safety-cli-capture"),
206
209
  managed(".codex/hooks/zaip-native-tool-authority.mjs", CODEX_NATIVE_TOOL_AUTHORITY_HOOK, "codex-native-tool-authority"),
207
210
  managed(".codex/hooks/zaip-conversation-lifecycle.mjs", CODEX_CONVERSATION_LIFECYCLE_HOOK, "codex-conversation-lifecycle-hook"),
208
211
  managed(".codex/hooks/zaip-subagent-lifecycle.mjs", CODEX_SUBAGENT_LIFECYCLE_HOOK, "codex-subagent-lifecycle-hook"),
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/services/adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/services/adapters.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,7 @@ describe("public adapter overlays", () => {
88
88
  const canonicalSkillMetadata = await readFile(join(repositoryRoot, ".agents/skills/zaip-aios/agents/openai.yaml"), "utf8");
89
89
  await expect(readFile(join(root, ".codex/skills/zaip-aios/agents/openai.yaml"), "utf8")).resolves.toContain(canonicalSkillMetadata.trim());
90
90
  await expect(readFile(join(root, ".claude/skills/zaip-aios/agents/openai.yaml"), "utf8")).resolves.toContain(canonicalSkillMetadata.trim());
91
- await expect(readFile(join(root, ".codex/hooks/zaip-pre-tool-support.mjs"), "utf8")).resolves.toContain("process.env.CODEX_TURN_ID !== turnId");
91
+ await expect(readFile(join(root, ".codex/hooks/zaip-pre-tool-cli-capture.mjs"), "utf8")).resolves.toContain("process.env.CODEX_TURN_ID !== turnId");
92
92
  await expect(checkAdapters(root)).resolves.toEqual({ valid: true, drifted: [] });
93
93
  });
94
94
  });
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.test.js","sourceRoot":"","sources":["../../src/services/adapters.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.test.js","sourceRoot":"","sources":["../../src/services/adapters.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-conversation-lifecycle-hook.d.ts","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,QAyP7C,CAAC"}
1
+ {"version":3,"file":"codex-conversation-lifecycle-hook.d.ts","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,QAmQ7C,CAAC"}
@@ -7,6 +7,8 @@ import { fileURLToPath } from "node:url";
7
7
  const hookRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..");
8
8
  const activation = await import("./zaip-hook-activation.mjs").catch(() => null);
9
9
  let root = hookRoot, local;
10
+ let trackingEnabled = false;
11
+ let governanceEnabled = false;
10
12
  // The host hook stays below 10s. Explicit CLI recovery runs in the active Codex
11
13
  // tool session and may finish expensive canonical closure within its own bound.
12
14
  const automatic = process.argv.length === 3 && process.argv[2] === "--recover-previous-turn";
@@ -21,7 +23,7 @@ let raw = ""; for await (const chunk of process.stdin) raw += chunk;
21
23
  const event = parse(raw), session = text(event?.session_id), turn = text(event?.turn_id);
22
24
  let receipt, receiptPath, lease;
23
25
  function reply(pending = false) {
24
- if (!replay) activation?.recordActivation(root, event, pending ? "pending" : "observed");
26
+ if (!replay && governanceEnabled) activation?.recordActivation(root, event, pending ? "pending" : "observed");
25
27
  // Closure belongs to the live orchestrator. Stop only records/reconciles;
26
28
  // a pending receipt must never manufacture another user prompt.
27
29
  writeSync(1, JSON.stringify({}) + "\n");
@@ -134,7 +136,7 @@ function call(cli, args, path) {
134
136
  return new Promise(done => {
135
137
  const remaining = deadline - Date.now() - 150;
136
138
  if (remaining <= 0) return done({ code: 1, out: "", timeout: true });
137
- const child = spawn(process.execPath, [cli, ...args, "--workspace", root, "--json"], { cwd: root, windowsHide: true, env: { ...process.env, CODEX_THREAD_ID: session, CODEX_TURN_ID: turn, CODEX_TRANSCRIPT_PATH: path ?? "" }, stdio: ["ignore", "pipe", "ignore"] });
139
+ const child = spawn(process.execPath, [cli, ...args, "--workspace", root, "--json"], { cwd: root, windowsHide: true, env: { ...process.env, CODEX_THREAD_ID: session, CODEX_TURN_ID: turn, CODEX_TRANSCRIPT_PATH: path ?? "", ZAIP_HOOK_TRACKING_ENABLED: trackingEnabled ? "true" : "false" }, stdio: ["ignore", "pipe", "ignore"] });
138
140
  let out = "", settled = false;
139
141
  const finish = (code, timeout = false) => { if (settled) return; settled = true; clearTimeout(timer); done({ code, out, timeout }); };
140
142
  const timer = setTimeout(() => { child.kill(); finish(1, true); }, remaining);
@@ -160,7 +162,10 @@ async function selectWorkspace(correlationKey, worktrees) {
160
162
  if (correlation?.schema_version === 1 && correlation.thread_id === session && correlation.turn_id === turn && correlation.agent_path === null && typeof correlation.run_id === "string") matches.push(candidate);
161
163
  }
162
164
  if (matches.length > 1) throw new Error("workspace_correlation_ambiguous");
163
- return matches[0] ?? hookRoot;
165
+ if (matches.length === 1) return matches[0];
166
+ const containing = worktrees.filter(candidate => inside(event.cwd, candidate));
167
+ if (containing.length > 1) throw new Error("workspace_cwd_ambiguous");
168
+ return containing[0] ?? hookRoot;
164
169
  }
165
170
  try {
166
171
  if (event?.hook_event_name !== "Stop" || !session || !turn || !text(event.cwd)) { reply(); process.exit(0); }
@@ -172,8 +177,13 @@ try {
172
177
  const correlationKey = hash(JSON.stringify(["codex", session, turn, null, null]));
173
178
  root = automatic ? hookRoot : await selectWorkspace(correlationKey, worktrees);
174
179
  local = resolve(root, ".local/hooks");
175
- const config = await readFile(resolve(root, ".agents/config/project.yaml"), "utf8");
176
- if (!/zaip:\s*\r?\n\s*enabled:\s*true\s*(?:\r?\n|$)/.test(config)) { reply(); process.exit(0); }
180
+ const policy = await activation?.hookPolicies?.(root) ?? { governance: false, tracking: false, diagnostic: "policy_module_unavailable" };
181
+ activation?.recordPolicyDiagnostic?.(root, policy);
182
+ trackingEnabled = policy.tracking;
183
+ governanceEnabled = policy.governance;
184
+ if (!replay && policy.tracking) activation?.recordHookObservation?.(root, event, policy.governance);
185
+ if (policy.tracking) activation?.replayHookObservations?.(root);
186
+ if (!policy.governance) { reply(); process.exit(0); }
177
187
  await mkdir(local, { recursive: true });
178
188
  receiptPath = resolve(local, "stop-" + hash(JSON.stringify([session, turn])) + ".json");
179
189
  lease = await acquire(receiptPath + ".lock");
@@ -236,7 +246,7 @@ try {
236
246
  throw new Error("owned_task_recoverable");
237
247
  }
238
248
  }
239
- if (intake.task !== null) {
249
+ if (intake.task !== null && trackingEnabled) {
240
250
  const usage = await call(cli, ["run", "usage", run, "--disable-codex-raw"], transcriptPath);
241
251
  if (usage.code !== 0 || parse(usage.out) === null) throw new Error("telemetry_pending");
242
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex-conversation-lifecycle-hook.js","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyP1D,CAAC"}
1
+ {"version":3,"file":"codex-conversation-lifecycle-hook.js","sourceRoot":"","sources":["../../src/services/codex-conversation-lifecycle-hook.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmQ1D,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export declare const HOOK_ACTIVATION_EVENTS: readonly ["PreToolUse", "SubagentStart", "SubagentStop", "Stop"];
2
- export declare const HOOK_ACTIVATION_FILES: readonly [".codex/config.toml", ".codex/hooks/zaip-pre-tool-use.mjs", ".codex/hooks/zaip-pre-tool-support.mjs", ".codex/hooks/zaip-native-tool-authority.mjs", ".codex/hooks/zaip-subagent-lifecycle.mjs", ".codex/hooks/zaip-conversation-lifecycle.mjs", ".codex/hooks/zaip-hook-activation.mjs"];
2
+ export declare const HOOK_ACTIVATION_FILES: readonly [".codex/config.toml", ".codex/hooks/zaip-pre-tool-use.mjs", ".codex/hooks/zaip-pre-tool-support.mjs", ".codex/hooks/zaip-pre-tool-cloud.mjs", ".codex/hooks/zaip-pre-tool-host-context.mjs", ".codex/hooks/zaip-pre-tool-cli-capture.mjs", ".codex/hooks/zaip-native-tool-authority.mjs", ".codex/hooks/zaip-subagent-lifecycle.mjs", ".codex/hooks/zaip-conversation-lifecycle.mjs", ".codex/hooks/zaip-hook-activation.mjs"];
3
3
  export declare const CODEX_HOOK_ACTIVATION: string;
4
4
  //# sourceMappingURL=codex-hook-activation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-hook-activation.d.ts","sourceRoot":"","sources":["../../src/services/codex-hook-activation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,YACjC,YAAY,EACZ,eAAe,EACf,cAAc,EACd,MAAM,CACE,CAAC;AACX,eAAO,MAAM,qBAAqB,YAChC,oBAAoB,EACpB,oCAAoC,EACpC,wCAAwC,EACxC,6CAA6C,EAC7C,0CAA0C,EAC1C,8CAA8C,EAC9C,uCAAuC,CAC/B,CAAC;AAGX,eAAO,MAAM,qBAAqB,QA0DjC,CAAC"}
1
+ {"version":3,"file":"codex-hook-activation.d.ts","sourceRoot":"","sources":["../../src/services/codex-hook-activation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,YACjC,YAAY,EACZ,eAAe,EACf,cAAc,EACd,MAAM,CACE,CAAC;AACX,eAAO,MAAM,qBAAqB,YAChC,oBAAoB,EACpB,oCAAoC,EACpC,wCAAwC,EACxC,sCAAsC,EACtC,6CAA6C,EAC7C,4CAA4C,EAC5C,6CAA6C,EAC7C,0CAA0C,EAC1C,8CAA8C,EAC9C,uCAAuC,CAC/B,CAAC;AAGX,eAAO,MAAM,qBAAqB,QAiKjC,CAAC"}
@@ -8,6 +8,9 @@ export const HOOK_ACTIVATION_FILES = [
8
8
  ".codex/config.toml",
9
9
  ".codex/hooks/zaip-pre-tool-use.mjs",
10
10
  ".codex/hooks/zaip-pre-tool-support.mjs",
11
+ ".codex/hooks/zaip-pre-tool-cloud.mjs",
12
+ ".codex/hooks/zaip-pre-tool-host-context.mjs",
13
+ ".codex/hooks/zaip-pre-tool-cli-capture.mjs",
11
14
  ".codex/hooks/zaip-native-tool-authority.mjs",
12
15
  ".codex/hooks/zaip-subagent-lifecycle.mjs",
13
16
  ".codex/hooks/zaip-conversation-lifecycle.mjs",
@@ -15,7 +18,8 @@ export const HOOK_ACTIVATION_FILES = [
15
18
  ];
16
19
  // Local diagnostic evidence, not a replacement for Codex's trust store or a security boundary.
17
20
  export const CODEX_HOOK_ACTIVATION = String.raw `import { createHash, randomUUID } from "node:crypto";
18
- import { lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, writeFileSync } from "node:fs";
21
+ import { lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, writeFileSync, existsSync, linkSync, unlinkSync } from "node:fs";
22
+ import { spawn } from "node:child_process";
19
23
  import { dirname, resolve } from "node:path";
20
24
  const files = ${JSON.stringify(HOOK_ACTIVATION_FILES)};
21
25
  const events = ${JSON.stringify(HOOK_ACTIVATION_EVENTS)};
@@ -60,17 +64,119 @@ export function recordActivation(root, event, outcome = "observed") {
60
64
  renameSync(temporary, path);
61
65
  } catch { /* Diagnostics must not break a tool or turn. Missing evidence stays unknown. */ }
62
66
  }
63
- export async function isZaipDisabled(repositoryRoot, boundedCanonicalText) {
67
+ export function parseHookPolicies(source) {
68
+ if (typeof source !== "string" || Buffer.byteLength(source) > 65536) return { governance: false, tracking: false, diagnostic: "config_unsafe" };
69
+ const sections = { zaip: { seen: false, enabledSeen: false, value: false }, tracking: { seen: false, enabledSeen: false, value: false } };
70
+ let section = null, childIndent = null, invalid = null;
71
+ for (const raw of source.replace(/\r\n/g, "\n").split("\n")) {
72
+ if (!raw.trim() || /^\s*#/.test(raw)) continue;
73
+ const indent = /^ */.exec(raw)?.[0].length ?? 0;
74
+ if (indent === 0) {
75
+ section = null; childIndent = null;
76
+ const match = /^(zaip|tracking):(?:\s*(\{\s*enabled:\s*(true|false)\s*\}))?(?:\s*#.*)?$/.exec(raw);
77
+ if (!match) {
78
+ if (/^(zaip|tracking):/.test(raw)) invalid ??= "invalid_policy_section";
79
+ continue;
80
+ }
81
+ section = match[1];
82
+ if (sections[section].seen) invalid ??= "duplicate_section_" + section;
83
+ sections[section].seen = true;
84
+ if (match[3]) { sections[section].enabledSeen = true; sections[section].value = match[3] === "true"; }
85
+ continue;
86
+ }
87
+ if (section === null) continue;
88
+ if (childIndent === null) childIndent = indent;
89
+ if (indent !== childIndent) continue;
90
+ const key = /^\s+enabled:\s*(true|false)(?:\s*#.*)?$/.exec(raw);
91
+ if (key) {
92
+ if (sections[section].enabledSeen) invalid ??= "duplicate_enabled_" + section;
93
+ sections[section].enabledSeen = true;
94
+ sections[section].value = key[1] === "true";
95
+ } else if (/^\s+enabled\s*:/.test(raw)) invalid ??= "invalid_enabled_" + section;
96
+ }
97
+ if (invalid) return { governance: false, tracking: false, diagnostic: invalid };
98
+ return { governance: sections.zaip.enabledSeen && sections.zaip.value,
99
+ tracking: sections.tracking.enabledSeen && sections.tracking.value,
100
+ diagnostic: sections.zaip.enabledSeen && sections.tracking.enabledSeen ? null : "policy_missing" };
101
+ }
102
+ export async function hookPolicies(repositoryRoot, boundedCanonicalText) {
64
103
  try {
65
- const source = (await boundedCanonicalText(resolve(repositoryRoot, ".agents/config/project.yaml"), 65536))
66
- .replace(/\r\n/g, "\n");
67
- const zaipKeys = [...source.matchAll(/^(?:zaip|"zaip"|'zaip')\s*:/gm)];
68
- const block = /^zaip:\n((?:[ \t][^\n]*(?:\n|$)|\n)*)/m.exec(source)?.[1];
69
- if (zaipKeys.length !== 1 || block === undefined) return false;
70
- return /^ enabled: false\n*$/.test(block);
71
- } catch {
72
- return false;
104
+ const path = resolve(repositoryRoot, ".agents/config/project.yaml");
105
+ const source = boundedCanonicalText ? await boundedCanonicalText(path, 65536) : (() => {
106
+ const info = lstatSync(path);
107
+ if (!info.isFile() || info.isSymbolicLink() || info.size > 65536 || realpathSync(path).toLowerCase() !== path.toLowerCase()) throw new Error("unsafe_config");
108
+ return readFileSync(path, "utf8");
109
+ })();
110
+ return parseHookPolicies(source);
111
+ } catch (error) {
112
+ return { governance: false, tracking: false, diagnostic: error?.code === "ENOENT" ? "config_missing" : "config_unavailable" };
73
113
  }
74
114
  }
115
+ export async function isZaipDisabled(repositoryRoot, boundedCanonicalText) {
116
+ return !(await hookPolicies(repositoryRoot, boundedCanonicalText)).governance;
117
+ }
118
+ export function recordPolicyDiagnostic(root, policy) {
119
+ if (!policy.diagnostic) return;
120
+ try {
121
+ const directory = resolve(root, ".local/hooks");
122
+ mkdirSync(directory, { recursive: true });
123
+ if (!lstatSync(directory).isDirectory() || lstatSync(directory).isSymbolicLink() ||
124
+ realpathSync(directory).toLowerCase() !== directory.toLowerCase()) return;
125
+ const path = resolve(directory, "policy-status.json");
126
+ const temporary = path + ".tmp-" + randomUUID();
127
+ writeFileSync(temporary, JSON.stringify({ schema_version: 1, diagnostic: policy.diagnostic, observed_at: new Date().toISOString() }) + "\n", { flag: "wx", mode: 0o600 });
128
+ renameSync(temporary, path);
129
+ } catch { /* A policy diagnostic cannot block the host operation. */ }
130
+ }
131
+ export function recordHookObservation(root, event, governance = false) {
132
+ try {
133
+ const name = event?.hook_event_name;
134
+ if (!events.includes(name)) return;
135
+ const session_id = typeof event.session_id === "string" && event.session_id.length <= 200 ? event.session_id : null;
136
+ const turn_id = typeof event.turn_id === "string" && event.turn_id.length <= 200 ? event.turn_id : null;
137
+ if (!session_id || !turn_id) return;
138
+ const agent_id = typeof event.agent_id === "string" && event.agent_id.length <= 200 ? event.agent_id : null;
139
+ const parent_agent_id = typeof event.parent_agent_id === "string" && event.parent_agent_id.length <= 200 ? event.parent_agent_id : null;
140
+ const agent_path = typeof event.agent_path === "string" && event.agent_path.length <= 500 ? event.agent_path : null;
141
+ const tool_call_id = typeof event.tool_call_id === "string" && event.tool_call_id.length <= 200 ? event.tool_call_id : null;
142
+ const source_key = JSON.stringify([name, session_id, turn_id, agent_id, agent_path, tool_call_id, name === "PreToolUse" && !tool_call_id ? digest(JSON.stringify(event.tool_input ?? null)) : null]);
143
+ const directory = resolve(root, ".local/hooks/observations");
144
+ mkdirSync(directory, { recursive: true });
145
+ if (!lstatSync(directory).isDirectory() || lstatSync(directory).isSymbolicLink() ||
146
+ realpathSync(directory).toLowerCase() !== directory.toLowerCase()) return;
147
+ const path = resolve(directory, digest(source_key) + ".json");
148
+ const receipt = { schema_version: 1, state: "pending", event_id: "HOBS-" + digest(source_key), event_name: name,
149
+ session_id, turn_id, agent_id, agent_path, parent_agent_id, tool_call_id,
150
+ agent_type: typeof event.agent_type === "string" && event.agent_type.length <= 100 ? event.agent_type : null,
151
+ model: typeof event.model === "string" && event.model.length <= 200 ? event.model : null,
152
+ reasoning_effort: typeof event.model_reasoning_effort === "string" && event.model_reasoning_effort.length <= 40 ? event.model_reasoning_effort : null,
153
+ status: ["completed", "failed", "cancelled"].includes(event.status) ? event.status : null,
154
+ transcript_path: name === "Stop" && typeof event.transcript_path === "string" && event.transcript_path.length <= 4096 ? event.transcript_path : null,
155
+ governance,
156
+ observed_at: new Date().toISOString() };
157
+ if (!existsSync(path)) {
158
+ const temporary = path + ".tmp-" + randomUUID();
159
+ writeFileSync(temporary, JSON.stringify(receipt) + "\n", { flag: "wx", mode: 0o600 });
160
+ try { linkSync(temporary, path); } catch { /* Concurrent duplicate leaves its first durable receipt. */ }
161
+ finally { unlinkSync(temporary); }
162
+ }
163
+ const cli = resolve(root, ".agents/runtime/bin/zaip.mjs");
164
+ if (!existsSync(cli)) return;
165
+ const child = spawn(process.execPath, [cli, "hook", "observe", "--receipt", path, "--workspace", root, "--json"],
166
+ { cwd: root, detached: true, windowsHide: true, stdio: "ignore" });
167
+ child.on("error", () => {});
168
+ child.unref();
169
+ } catch { /* The durable receipt is replayable; observation never blocks a tool. */ }
170
+ }
171
+ export function replayHookObservations(root) {
172
+ try {
173
+ const cli = resolve(root, ".agents/runtime/bin/zaip.mjs");
174
+ if (!existsSync(cli)) return;
175
+ const child = spawn(process.execPath, [cli, "hook", "replay-observations", "--workspace", root, "--json"],
176
+ { cwd: root, detached: true, windowsHide: true, stdio: "ignore" });
177
+ child.on("error", () => {});
178
+ child.unref();
179
+ } catch { /* Pending receipts remain visible for a later replay. */ }
180
+ }
75
181
  `;
76
182
  //# sourceMappingURL=codex-hook-activation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-hook-activation.js","sourceRoot":"","sources":["../../src/services/codex-hook-activation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY;IACZ,eAAe;IACf,cAAc;IACd,MAAM;CACE,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oBAAoB;IACpB,oCAAoC;IACpC,wCAAwC;IACxC,6CAA6C;IAC7C,0CAA0C;IAC1C,8CAA8C;IAC9C,uCAAuC;CAC/B,CAAC;AAEX,+FAA+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;gBAG/B,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC;iBACpC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDtD,CAAC"}
1
+ {"version":3,"file":"codex-hook-activation.js","sourceRoot":"","sources":["../../src/services/codex-hook-activation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,YAAY;IACZ,eAAe;IACf,cAAc;IACd,MAAM;CACE,CAAC;AACX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oBAAoB;IACpB,oCAAoC;IACpC,wCAAwC;IACxC,sCAAsC;IACtC,6CAA6C;IAC7C,4CAA4C;IAC5C,6CAA6C;IAC7C,0CAA0C;IAC1C,8CAA8C;IAC9C,uCAAuC;CAC/B,CAAC;AAEX,+FAA+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;gBAI/B,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC;iBACpC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4JtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CODEX_PRE_TOOL_CLI_CAPTURE_HOOK: string;
2
+ //# sourceMappingURL=codex-pre-tool-cli-capture-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-pre-tool-cli-capture-template.d.ts","sourceRoot":"","sources":["../../src/services/codex-pre-tool-cli-capture-template.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,QAsG3C,CAAC"}
@@ -0,0 +1,104 @@
1
+ export const CODEX_PRE_TOOL_CLI_CAPTURE_HOOK = String.raw `import { createHash, randomUUID } from "node:crypto";
2
+ import { link, lstat, mkdir, readFile, realpath, unlink, writeFile } from "node:fs/promises";
3
+ import { isAbsolute, resolve, toNamespacedPath } from "node:path";
4
+ const pathIdentity = value => process.platform === "win32" ? toNamespacedPath(resolve(value)).toLowerCase() : resolve(value);
5
+ const hasTraversalSegment = path => path.split(/[\\/]/).includes("..");
6
+
7
+ export function createCliTurnCapture({ inside, tokenizeLiteralCommand }) {
8
+ async function captureCliTurn(repositoryRoot, event, command) {
9
+ const tokens = tokenizeLiteralCommand(command);
10
+ if (!tokens || tokens.length < 4) return;
11
+ let reviewedNode = /^(?:node|node\.exe)$/i.test(tokens[0]);
12
+ if (!reviewedNode && isAbsolute(tokens[0])) {
13
+ try {
14
+ const optIn = JSON.parse(await readFile(resolve(repositoryRoot, ".local/validation-runtime.json"), "utf8"));
15
+ reviewedNode = typeof optIn.executable === "string" &&
16
+ pathIdentity(await realpath(tokens[0])) === pathIdentity(await realpath(optIn.executable));
17
+ } catch { reviewedNode = false; }
18
+ }
19
+ if (!reviewedNode) return;
20
+ const script = resolve(event.cwd, tokens[1]);
21
+ if (script.toLowerCase() !== resolve(repositoryRoot, ".agents/runtime/bin/zaip.mjs").toLowerCase()) return;
22
+ if (tokens.some(token => token.startsWith("--codex-hook-"))) throw new Error("Codex hook identity cannot be supplied by the caller.");
23
+ const nativeStart = (tokens[2] === "conversation" || tokens[2] === "run") && tokens[3] === "start";
24
+ const historicalApplicability = tokens[2] === "task" && tokens[3] === "assurance" &&
25
+ /^TASK-[A-Z0-9-]+$/.test(tokens[4] ?? "") && (() => {
26
+ const tail = tokens.slice(5), seen = new Set();
27
+ for (let i = 0; i < tail.length; i++) {
28
+ const flag = tail[i];
29
+ if (seen.has(flag)) return false;
30
+ seen.add(flag);
31
+ if (flag === "--json") continue;
32
+ if (!["--inherit-applicability-attempt", "--applicability-map", "--run"].includes(flag) || !tail[i + 1]) return false;
33
+ i++;
34
+ }
35
+ const attempt = tail[tail.indexOf("--inherit-applicability-attempt") + 1];
36
+ const map = tail[tail.indexOf("--applicability-map") + 1];
37
+ const run = tail[tail.indexOf("--run") + 1];
38
+ const source = (seen.has("--inherit-applicability-attempt") && !seen.has("--applicability-map") && /^[1-9]\d*$/.test(attempt ?? "")) ||
39
+ (seen.has("--applicability-map") && !seen.has("--inherit-applicability-attempt") && /^\.local\/[A-Za-z0-9_./-]+\.json$/.test(map ?? "") && !hasTraversalSegment(map));
40
+ return seen.size === 3 && seen.has("--json") && source && /^RUN-[A-Z0-9-]+$/.test(run ?? "");
41
+ })();
42
+ const causalReservation = tokens[2] === "execution" && tokens[3] === "native-next" &&
43
+ /^EXEC-[A-Z0-9-]+$/.test(tokens[4] ?? "") && (() => {
44
+ const tail = tokens.slice(5), seen = new Set();
45
+ for (let i = 0; i < tail.length; i++) {
46
+ const flag = tail[i];
47
+ if (seen.has(flag)) return false;
48
+ seen.add(flag);
49
+ if (flag === "--json" || flag === "--reserve-causal") continue;
50
+ if (!["--run", "--contexts", "--host-capabilities"].includes(flag) || !tail[i + 1]) return false;
51
+ i++;
52
+ }
53
+ return seen.has("--reserve-causal") && seen.has("--json") && seen.has("--run") &&
54
+ seen.has("--contexts") && /^RUN-[A-Z0-9-]+$/.test(tail[tail.indexOf("--run") + 1] ?? "");
55
+ })();
56
+ if (!nativeStart && !historicalApplicability && !causalReservation) return;
57
+ if (tokens.includes("--help") || tokens.includes("-h")) return;
58
+ const threadId = event.session_id, turnId = event.turn_id, toolUseId = event.tool_use_id;
59
+ if (typeof threadId !== "string" || !/^[A-Za-z0-9_-]{1,256}$/.test(threadId) ||
60
+ typeof turnId !== "string" || !turnId || turnId.length > 256 ||
61
+ typeof toolUseId !== "string" || !toolUseId || toolUseId.length > 256 ||
62
+ (process.env.CODEX_THREAD_ID && process.env.CODEX_THREAD_ID !== threadId) ||
63
+ (process.env.CODEX_TURN_ID && process.env.CODEX_TURN_ID !== turnId)) {
64
+ throw new Error("Codex thread, turn and tool identity could not be captured for the ZAIP CLI.");
65
+ }
66
+ const directory = resolve(repositoryRoot, ".local/codex-hook-turn/v1");
67
+ const argvSha256 = createHash("sha256").update(JSON.stringify(tokens.slice(2))).digest("hex");
68
+ const digest = createHash("sha256").update(JSON.stringify([threadId, toolUseId])).digest("hex");
69
+ const target = resolve(directory, digest + ".json");
70
+ const temporary = resolve(directory, digest + "." + randomUUID() + ".tmp");
71
+ try {
72
+ let parent = repositoryRoot;
73
+ for (const part of [".local", "codex-hook-turn", "v1"]) {
74
+ parent = resolve(parent, part);
75
+ try { await mkdir(parent); } catch (error) { if (error?.code !== "EEXIST") throw error; }
76
+ const info = await lstat(parent), physical = await realpath(parent);
77
+ if (!info.isDirectory() || info.isSymbolicLink() || !inside(physical, repositoryRoot)) throw new Error("Unsafe turn receipt directory");
78
+ }
79
+ const value = {
80
+ schema_version: 1, thread_id: threadId, turn_id: turnId,
81
+ tool_use_sha256: digest, argv_sha256: argvSha256, observed_at_ms: Date.now(),
82
+ };
83
+ await writeFile(temporary, JSON.stringify(value) + "\n", { flag: "wx", mode: 0o600 });
84
+ try { await link(temporary, target); }
85
+ catch (error) {
86
+ if (error.code !== "EEXIST") throw error;
87
+ const info = await lstat(target);
88
+ if (!info.isFile() || info.isSymbolicLink() || info.size > 4096 ||
89
+ pathIdentity(await realpath(target)) !== pathIdentity(target)) throw new Error("Unsafe existing turn receipt");
90
+ const prior = JSON.parse(await readFile(target, "utf8"));
91
+ for (const key of ["schema_version", "thread_id", "turn_id", "tool_use_sha256", "argv_sha256"])
92
+ if (prior[key] !== value[key]) throw new Error("Conflicting existing turn receipt");
93
+ if (!Number.isSafeInteger(prior.observed_at_ms) || prior.observed_at_ms > Date.now()) throw new Error("Invalid turn receipt time");
94
+ }
95
+ } catch {
96
+ throw new Error("Codex turn identity could not be persisted for the ZAIP CLI.");
97
+ } finally { await unlink(temporary).catch(() => {}); }
98
+ return command + " --codex-hook-id=" + digest + " --codex-hook-thread=" + threadId;
99
+ }
100
+
101
+ return captureCliTurn;
102
+ }
103
+ `;
104
+ //# sourceMappingURL=codex-pre-tool-cli-capture-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-pre-tool-cli-capture-template.js","sourceRoot":"","sources":["../../src/services/codex-pre-tool-cli-capture-template.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGxD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CODEX_PRE_TOOL_CLOUD_HOOK: string;
2
+ //# sourceMappingURL=codex-pre-tool-cloud-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-pre-tool-cloud-template.d.ts","sourceRoot":"","sources":["../../src/services/codex-pre-tool-cloud-template.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,QA4LrC,CAAC"}