@zaip-ai/cli 2.6.0 → 3.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 (301) hide show
  1. package/README.md +36 -13
  2. package/dist/services/adapters.d.ts +1 -1
  3. package/dist/services/adapters.d.ts.map +1 -1
  4. package/dist/services/adapters.js +5 -2
  5. package/dist/services/adapters.js.map +1 -1
  6. package/dist/services/agent-adapters.js +12 -9
  7. package/dist/services/agent-adapters.js.map +1 -1
  8. package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
  9. package/dist/services/codex-conversation-lifecycle-hook.js +32 -21
  10. package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
  11. package/dist/services/install-agents-template.js +9 -1
  12. package/dist/services/install-agents-template.js.map +1 -1
  13. package/dist/services/runtime-template.test.js +25 -2
  14. package/dist/services/runtime-template.test.js.map +1 -1
  15. package/dist/services/transactional-files.d.ts.map +1 -1
  16. package/dist/services/transactional-files.js +59 -14
  17. package/dist/services/transactional-files.js.map +1 -1
  18. package/package.json +1 -1
  19. package/templates/.agents/README-ENG.md +71 -10
  20. package/templates/.agents/README.md +72 -10
  21. package/templates/.agents/config/agents/catalog.yaml +3 -0
  22. package/templates/.agents/config/agents/discovery.json +2 -2
  23. package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +1 -1
  24. package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +1 -1
  25. package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +1 -1
  26. package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +1 -1
  27. package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +1 -1
  28. package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +1 -1
  29. package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +1 -1
  30. package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +1 -1
  31. package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
  32. package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +1 -1
  33. package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +1 -1
  34. package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +1 -1
  35. package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +1 -1
  36. package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +1 -1
  37. package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +1 -1
  38. package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +13 -10
  39. package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +1 -1
  40. package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +1 -1
  41. package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +1 -1
  42. package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +1 -1
  43. package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +1 -1
  44. package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +1 -1
  45. package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +1 -1
  46. package/templates/.agents/config/project.yaml +10 -1
  47. package/templates/.agents/dashboard/.zaip-managed.json +246 -134
  48. package/templates/.agents/dashboard/README.md +16 -0
  49. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-CGxeQak4.js → CostCalculationGuidePage-CEDZjl4V.js} +1 -1
  50. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-tzS7YxYB.js → DashboardHelpDialog-TnrL1ZyZ.js} +915 -550
  51. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-DEbCi1gP.js → PricingSettingsDialog-DjQpBqGU.js} +1 -1
  52. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B9GWkEyN.css +1 -0
  53. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BAvLPAee.js +3 -0
  54. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-t1Om0Abw.js → TraceabilityWorkspace-BQZXUnQu.js} +1 -1
  55. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-06__WZco.js +68 -0
  56. package/templates/.agents/dashboard/apps/frontend/dist/assets/dashboard-localization-Basaw1NR.js +824 -0
  57. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DiGC-dsJ.js → icons-vendor-DEmo6Tn2.js} +1 -1
  58. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-BQe3zTvL.js +2 -0
  59. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-kPO6yNed.js → react-vendor-CadYsm83.js} +1 -1
  60. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BzKK8kK3.js +1 -0
  61. package/templates/.agents/dashboard/apps/frontend/dist/index.html +5 -5
  62. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  63. package/templates/.agents/dashboard/apps/frontend/src/AppDashboardContent.tsx +10 -5
  64. package/templates/.agents/dashboard/apps/frontend/src/AutonomySettings.tsx +82 -0
  65. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +38 -7
  66. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +164 -171
  67. package/templates/.agents/dashboard/apps/frontend/src/__tests__/app-composition-support.ts +6 -1
  68. package/templates/.agents/dashboard/apps/frontend/src/cost-monitor-population.test.tsx +149 -0
  69. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-settings.ts +2 -1
  70. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +19 -0
  71. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +22 -1
  72. package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.test.ts +54 -0
  73. package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.ts +20 -2
  74. package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.test.ts +37 -43
  75. package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.ts +9 -251
  76. package/templates/.agents/dashboard/apps/frontend/src/dashboard-project-overview.ts +34 -7
  77. package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.test.ts +51 -0
  78. package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.ts +3 -1
  79. package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +35 -0
  80. package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +19 -4
  81. package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +5 -3
  82. package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.test.ts +112 -23
  83. package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.ts +49 -12
  84. package/templates/.agents/dashboard/apps/frontend/src/project-settings-copy.ts +181 -0
  85. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +11 -1
  86. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +34 -51
  87. package/templates/.agents/dashboard/apps/frontend/src/project-settings-state.css +55 -0
  88. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +12 -0
  89. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
  90. package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.ts +1 -2
  91. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +6 -0
  92. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +2 -0
  93. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +3 -1
  94. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-task-pagination.ts +4 -15
  95. package/templates/.agents/dashboard/apps/frontend/src/use-dashboard-app-model.tsx +2 -2
  96. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  97. package/templates/.agents/dashboard/modules/cost-monitor/src/complete-cost-average.test.ts +73 -0
  98. package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +9 -0
  99. package/templates/.agents/dashboard/modules/cost-monitor/src/period-averages.ts +60 -0
  100. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +8 -22
  101. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +2 -3
  102. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostPeriodAverageCards.tsx +32 -8
  103. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +3 -2
  104. package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +1 -42
  105. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +2 -1
  106. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +3 -2
  107. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +8 -2
  108. package/templates/.agents/dashboard/modules/cost-monitor/src/server/index.ts +1 -0
  109. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  110. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview-keeps-structure-classes-mutually-exclusive.test.ts +4 -3
  111. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +66 -3
  112. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +71 -1
  113. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +36 -30
  114. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +5 -14
  115. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +3 -0
  116. package/templates/.agents/dashboard/modules/operations/src/react/OverviewCostKpi.tsx +46 -0
  117. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +28 -1
  118. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +11 -4
  119. package/templates/.agents/dashboard/modules/operations/src/react/index.ts +1 -0
  120. package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +2 -2
  121. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +28 -8
  122. package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +19 -2
  123. package/templates/.agents/dashboard/modules/operations/src/react/overview-cost-card.test.tsx +89 -0
  124. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +3 -3
  125. package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +2 -1
  126. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  127. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  128. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  129. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  130. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +238 -226
  131. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +205 -195
  132. package/templates/.agents/dashboard/packages/local-runtime/package.json +2 -2
  133. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +15 -25
  134. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +238 -226
  135. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +1 -1
  136. package/templates/.agents/dashboard/packages/local-runtime/src/project-installation-summary.test.ts +142 -0
  137. package/templates/.agents/dashboard/packages/local-runtime/src/project-installation-summary.ts +190 -0
  138. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +65 -0
  139. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +67 -66
  140. package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.test.ts +91 -0
  141. package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.ts +24 -4
  142. package/templates/.agents/dashboard/packages/local-runtime/src/server-hono-security.test.ts +17 -0
  143. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +21 -2
  144. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +94 -2
  145. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +62 -12
  146. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +26 -0
  147. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -1
  148. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.test.ts +97 -0
  149. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +10 -13
  150. package/templates/.agents/dashboard/packages/local-runtime/src/server-trace-routes.ts +2 -10
  151. package/templates/.agents/dashboard/packages/local-runtime/src/server-traceability-index.test.ts +84 -0
  152. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +15 -1
  153. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-dimension-facts.test.ts +12 -1
  154. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-file-index.test.ts +69 -0
  155. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +3 -1
  156. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +3 -1
  157. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +2 -0
  158. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +9 -0
  159. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-runs.ts +1 -1
  160. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +46 -0
  161. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-provider-alias-parity.test.ts +50 -0
  162. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +13 -2
  163. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +25 -7
  164. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-temporal-dimension.ts +2 -0
  165. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +34 -10
  166. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +17 -3
  167. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +1 -1
  168. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +9 -0
  169. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +4 -4
  170. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.test.ts +54 -1
  171. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +7 -3
  172. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +4 -1
  173. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-risk-population.test.ts +98 -0
  174. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +7 -2
  175. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +2 -1
  176. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +2 -0
  177. package/templates/.agents/dashboard/packages/local-runtime/src/verify-project-settings.mjs +57 -0
  178. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  179. package/templates/.agents/dashboard/scripts/qualify-observability.mjs +130 -0
  180. package/templates/.agents/dashboard/scripts/verify-autonomy-settings.mjs +175 -0
  181. package/templates/.agents/dashboard/scripts/verify-observability.mjs +254 -0
  182. package/templates/.agents/dashboard/scripts/verify-project-setup.mjs +64 -0
  183. package/templates/.agents/dashboard/tests/e2e/lease-global-setup.ts +37 -0
  184. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  185. package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +5 -3
  186. package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-period-transition.spec.ts +22 -1
  187. package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +17 -8
  188. package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +47 -6
  189. package/templates/.agents/dashboard/tests/e2e/specs/lease-lifetime.spec.ts +14 -0
  190. package/templates/.agents/dashboard/tests/observability-fixture.mjs +200 -0
  191. package/templates/.agents/design/.zaip-managed.json +84 -40
  192. package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +72 -0
  193. package/templates/.agents/design/apps/catalog/dist/assets/index-BOjCcUaU.js +72 -0
  194. package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +72 -0
  195. package/templates/.agents/design/apps/catalog/dist/assets/index-CqtYXZfV.js +72 -0
  196. package/templates/.agents/design/apps/catalog/dist/assets/index-D_lfqoyx.js +72 -0
  197. package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +9 -0
  198. package/templates/.agents/design/apps/catalog/dist/index.html +1 -1
  199. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +1 -0
  200. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-B-kAgAjB.js → Color-6AOWCN3U-Cm-yJJz_.js} +1 -1
  201. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +137 -0
  202. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +1 -0
  203. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-BVN7xHtv.js → DocsRenderer-JROSPFPF-Belk4jRr.js} +4 -4
  204. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-CDHtKYkz.js → WithTooltip-7X4HQR7L-DoPvjkS1.js} +1 -1
  205. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-D6AsDkMK.js → chunk-DRQKCCAG-B1itKXEN.js} +1 -1
  206. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-B4m5uloN.js → chunk-W22LQPXL-C-Eb5SPY.js} +1 -1
  207. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-CN8YyTUg.js → components-DnyKLwhj.js} +5 -5
  208. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +1 -0
  209. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-9yZfIsdT.js → iframe-DcXBsFPz.js} +3 -3
  210. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-BoCSnq6H.js → react-18-CRM89QRf.js} +1 -1
  211. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +1 -0
  212. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-Bnn_nMwJ.js → syntaxhighlighter-YFXUGROL-B03jQGTF.js} +1 -1
  213. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-DS_ue2sb.js → theming-4ZyufAga.js} +1 -1
  214. package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +1 -1
  215. package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
  216. package/templates/.agents/design/apps/catalog/package.json +2 -2
  217. package/templates/.agents/design/apps/catalog/src/components/AutonomySpecimen.tsx +15 -0
  218. package/templates/.agents/design/apps/catalog/src/components/CostPopulationSpecimen.test.tsx +19 -0
  219. package/templates/.agents/design/apps/catalog/src/components/CostPopulationSpecimen.tsx +45 -0
  220. package/templates/.agents/design/apps/catalog/src/components/EstimatedCostSpecimen.tsx +48 -0
  221. package/templates/.agents/design/apps/catalog/src/components/ProjectStatusSpecimen.tsx +169 -0
  222. package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +55 -0
  223. package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +60 -0
  224. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  225. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  226. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  227. package/templates/.agents/requirements/comparative-audit.md +1 -1
  228. package/templates/.agents/requirements/context-engine.md +1 -1
  229. package/templates/.agents/requirements/cost-observability.md +1 -1
  230. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  231. package/templates/.agents/requirements/data-export.md +1 -1
  232. package/templates/.agents/requirements/design-system.md +1 -1
  233. package/templates/.agents/requirements/execution-engine.md +1 -1
  234. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  235. package/templates/.agents/requirements/model-orchestration.md +1 -1
  236. package/templates/.agents/requirements/public-distribution.md +1 -1
  237. package/templates/.agents/requirements/software-architecture.md +1 -1
  238. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  239. package/templates/.agents/requirements/work-lifecycle.md +5 -5
  240. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  241. package/templates/.agents/rules/astra-diagnostic.md +3 -1
  242. package/templates/.agents/rules/autonomy-decision.md +10 -2
  243. package/templates/.agents/rules/core.md +12 -1
  244. package/templates/.agents/rules/run-lifecycle-closure.md +8 -6
  245. package/templates/.agents/rules/workflow.md +2 -2
  246. package/templates/.agents/runtime/VERSION +1 -1
  247. package/templates/.agents/runtime/bin/zaip.mjs +383 -350
  248. package/templates/.agents/runtime/checksums.sha256 +6 -6
  249. package/templates/.agents/runtime/manifest.json +1 -1
  250. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
  251. package/templates/.agents/runtime/provenance.json +5 -5
  252. package/templates/.agents/runtime/sbom.cdx.json +3 -3
  253. package/templates/.agents/skills/zaip-skill-dev-environment/SKILL.md +2 -0
  254. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +28 -5
  255. package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +17 -3
  256. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +8 -9
  257. package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +10 -6
  258. package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +2 -0
  259. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +2 -0
  260. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +21 -23
  261. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +37 -13
  262. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +2 -0
  263. package/templates/.agents/skills/zaip-skill-tool-setup/SKILL.md +2 -0
  264. package/templates/.agents/zaip-aios/INDEX.md +9 -1
  265. package/templates/.agents/zaip-aios/README.md +23 -2
  266. package/templates/.agents/zaip-aios/VERSION +1 -1
  267. package/templates/.agents/zaip-aios/guides/01-primeiros-passos.md +5 -1
  268. package/templates/.agents/zaip-aios/guides/03-tasks.md +15 -2
  269. package/templates/.agents/zaip-aios/guides/04-specs.md +13 -0
  270. package/templates/.agents/zaip-aios/guides/05-prds.md +13 -0
  271. package/templates/.agents/zaip-aios/guides/06-execucao.md +19 -4
  272. package/templates/.agents/zaip-aios/guides/07-revisao-e-validacao.md +14 -0
  273. package/templates/.agents/zaip-aios/guides/08-contexto-e-tokens.md +4 -3
  274. package/templates/.agents/zaip-aios/guides/09-agentes-e-squads.md +17 -9
  275. package/templates/.agents/zaip-aios/guides/10-seguranca.md +9 -0
  276. package/templates/.agents/zaip-aios/guides/11-observabilidade-e-custos.md +69 -0
  277. package/templates/.agents/zaip-aios/guides/12-instalacao-e-upgrade.md +9 -4
  278. package/templates/.agents/zaip-aios/guides/13-boas-praticas.md +7 -1
  279. package/templates/.agents/zaip-aios/guides/14-troubleshooting.md +18 -0
  280. package/templates/.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md +54 -3
  281. package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +10 -2
  282. package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +186 -5
  283. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +21 -15
  284. package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +18 -2
  285. package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +14 -2
  286. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +190 -489
  287. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +61 -13
  288. package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +18 -0
  289. package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +18 -1
  290. package/templates/template-manifest.json +425 -269
  291. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-1L7Qw-Gq.js +0 -3
  292. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-EInWr641.css +0 -1
  293. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-B6aZfo5f.js +0 -68
  294. package/templates/.agents/dashboard/apps/frontend/dist/assets/dashboard-localization-CLJ0lT9v.js +0 -231
  295. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DgTmNHN5.js +0 -2
  296. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-DQpKX9c1.js +0 -1
  297. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-BWY-80s4.js +0 -1
  298. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js +0 -27
  299. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js +0 -1
  300. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-EwuTh8Zk.js +0 -1
  301. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-DyL61NPT.js +0 -1
@@ -72,7 +72,7 @@ test("measures Cost, Operation and Traceability surfaces without full snapshot h
72
72
  const apiActivityAt = new Map<string, number>();
73
73
  page.on("request", (request) => {
74
74
  if (!request.url().includes("/api/v2/")) return;
75
- if (isBackgroundReconciliation(request.url())) return;
75
+ if (isBackgroundReconciliation(request.url()) || isBrowserLease(request.url())) return;
76
76
  apiActivityAt.set(request.url(), performance.now());
77
77
  requestStartedAt.set(request, performance.now());
78
78
  apiRequestCount += 1;
@@ -81,7 +81,7 @@ test("measures Cost, Operation and Traceability surfaces without full snapshot h
81
81
  });
82
82
  const finishApiRequest = (request: { url(): string }) => {
83
83
  if (!request.url().includes("/api/v2/")) return;
84
- if (isBackgroundReconciliation(request.url())) return;
84
+ if (isBackgroundReconciliation(request.url()) || isBrowserLease(request.url())) return;
85
85
  apiActivityAt.set(request.url(), performance.now());
86
86
  const count = activeApiRequests.get(request.url()) ?? 0;
87
87
  if (count <= 1) activeApiRequests.delete(request.url());
@@ -501,15 +501,18 @@ async function waitForQuietApiRequests(
501
501
  .poll(
502
502
  () => {
503
503
  const latestActivityAt = getLatestActivityAt();
504
- return (
505
- getActiveApiRequests().length === 0 &&
506
- latestActivityAt !== null &&
507
- performance.now() - latestActivityAt >= 500
508
- );
504
+ return {
505
+ pending: getActiveApiRequests().map((url) => {
506
+ const parsed = new URL(url);
507
+ parsed.searchParams.delete("token");
508
+ return `${parsed.pathname}${parsed.search}`;
509
+ }),
510
+ settled: latestActivityAt !== null && performance.now() - latestActivityAt >= 500,
511
+ };
509
512
  },
510
513
  { timeout: 10_000 },
511
514
  )
512
- .toBe(true);
515
+ .toEqual({ pending: [], settled: true });
513
516
  }
514
517
 
515
518
  async function selectedPeriodQuery(page: Page, period: Metric["period"]): Promise<PeriodQuery> {
@@ -540,6 +543,12 @@ function isBackgroundReconciliation(url: string): boolean {
540
543
  return new URL(url).pathname === "/api/v2/reconcile-open-work";
541
544
  }
542
545
 
546
+ /** The browser's ownership stream intentionally stays open until page teardown.
547
+ * Its HTTP failures are still collected by the response listener above. */
548
+ function isBrowserLease(url: string): boolean {
549
+ return new URL(url).pathname === "/api/v2/browser-lease";
550
+ }
551
+
543
552
  async function assertCostPagination(
544
553
  page: Page,
545
554
  surface: Locator,
@@ -169,7 +169,11 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
169
169
  const initialUrl = new URL(initialResponse.url());
170
170
  expect(initialUrl.searchParams.has("from")).toBe(false);
171
171
  expect(initialUrl.searchParams.has("to")).toBe(false);
172
- await expect(page.getByRole("navigation", { name: "Dashboard Zaip AIOS menu" })).toBeVisible();
172
+ // Identity is loaded independently; both the initial title and the title
173
+ // with the observed repository identify the same accessible navigation.
174
+ await expect(
175
+ page.getByRole("navigation", { name: /^Dashboard Zaip AIOS(?: .+)? menu$/ }),
176
+ ).toBeVisible();
173
177
  const capabilityNav = page.getByRole("navigation", { name: "Áreas do dashboard" });
174
178
  const globalControls = page.locator(".dashboard-global-controls");
175
179
  await expect(capabilityNav).toBeVisible();
@@ -303,7 +307,8 @@ test("loads a quick Operations summary without full snapshot hydration", async (
303
307
  await expect(page.getByRole("heading", { name: "Status das PRDs" })).toBeVisible();
304
308
  await expect(page.getByRole("heading", { name: "Top 5 PRDs" })).toBeVisible();
305
309
  await expect(page.locator(".operations-run-bar").first()).toBeVisible();
306
- expect(operationsRequests.some((url) => url.includes("scope=detail"))).toBe(true);
310
+ // Quick already contains the macro counts, chart data and Top 5 asserted above.
311
+ expect(operationsRequests.some((url) => url.includes("scope=detail"))).toBe(false);
307
312
 
308
313
  await selectOperations(page);
309
314
  await expect(page.getByLabel("Kanban de trabalho")).toBeVisible();
@@ -418,7 +423,7 @@ test("embeds traceability and keeps global settings and help available", async (
418
423
  await page.getByRole("button", { name: "Fechar ajuda" }).click();
419
424
  });
420
425
 
421
- test("groups macro work in All and reveals descendant Tasks only in Tasks", async ({ page }) => {
426
+ test("filters the all-work board into Tasks, SPECs and PRDs after hydration", async ({ page }) => {
422
427
  await openDashboard(page);
423
428
  await selectPopulatedAllTime(page);
424
429
  await selectOperations(page);
@@ -427,15 +432,25 @@ test("groups macro work in All and reveals descendant Tasks only in Tasks", asyn
427
432
  const allItemCount = await boardItemCount(board);
428
433
 
429
434
  await page.getByRole("button", { exact: true, name: "Tarefas" }).click();
435
+ await expect(page.getByRole("button", { exact: true, name: "Tarefas" })).toHaveClass("is-active");
436
+ await expect(
437
+ board.locator(".operations-work-kind.is-spec, .operations-work-kind.is-prd"),
438
+ ).toHaveCount(0);
430
439
  const taskItemCount = await boardItemCount(board);
431
440
  expect(allItemCount).toBeGreaterThan(taskItemCount);
432
441
 
433
442
  await page.getByRole("button", { exact: true, name: "SPECs" }).click();
443
+ await expect(page.getByRole("button", { exact: true, name: "SPECs" })).toHaveClass("is-active");
444
+ await expect(
445
+ board.locator(".operations-work-kind.is-task, .operations-work-kind.is-prd"),
446
+ ).toHaveCount(0);
434
447
  const spec = page
435
448
  .locator(".operations-work-card")
436
449
  .filter({ has: page.locator(".operations-work-kind.is-spec") })
437
450
  .first();
438
- if ((await spec.count()) === 0) {
451
+ // The quick projection already supplies global totals; a temporarily empty
452
+ // paginated DOM does not mean the selected entity collection is empty.
453
+ if ((await boardItemCount(board)) === 0) {
439
454
  await expect(
440
455
  page.getByLabel("Kanban de trabalho").locator(".operations-task-card"),
441
456
  ).toHaveCount(0);
@@ -448,11 +463,15 @@ test("groups macro work in All and reveals descendant Tasks only in Tasks", asyn
448
463
  }
449
464
 
450
465
  await page.getByRole("button", { exact: true, name: "PRDs" }).click();
466
+ await expect(page.getByRole("button", { exact: true, name: "PRDs" })).toHaveClass("is-active");
467
+ await expect(
468
+ board.locator(".operations-work-kind.is-task, .operations-work-kind.is-spec"),
469
+ ).toHaveCount(0);
451
470
  const prd = page
452
471
  .locator(".operations-work-card")
453
472
  .filter({ has: page.locator(".operations-work-kind.is-prd") })
454
473
  .first();
455
- if ((await prd.count()) === 0) {
474
+ if ((await boardItemCount(board)) === 0) {
456
475
  await expect(
457
476
  page.getByLabel("Kanban de trabalho").locator(".operations-task-card"),
458
477
  ).toHaveCount(0);
@@ -540,6 +559,12 @@ test("shows the observed all-time macro duration consistently for SPEC and PRD",
540
559
  test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconciled", async ({
541
560
  page,
542
561
  }) => {
562
+ const fullDetailRequests: string[] = [];
563
+ page.on("request", (request) => {
564
+ const url = new URL(request.url());
565
+ if (url.pathname === "/api/v2/operations" && url.searchParams.get("scope") === "detail")
566
+ fullDetailRequests.push(url.href);
567
+ });
543
568
  const openedAt = Date.now();
544
569
  const initialQuickResponse = await openDashboard(page);
545
570
  expect(Date.now() - openedAt).toBeLessThan(3_000);
@@ -601,6 +626,9 @@ test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconci
601
626
  expect(donutCount).toBe(cardCount);
602
627
  expect(statusCounts.reduce((sum, value) => sum + Number(value), 0)).toBe(cardCount);
603
628
  expect(classificationCounts.reduce((sum, value) => sum + Number(value), 0)).toBe(cardCount);
629
+ // Macro metrics are already present in the exact quick response below.
630
+ // Clicking their cards must not start an unrelated full-history request.
631
+ expect(fullDetailRequests).toEqual([]);
604
632
 
605
633
  const macroKey = kind === "SPECs" ? "specs" : "prds";
606
634
  const macroDuration =
@@ -671,7 +699,20 @@ test("keeps aggregate KPIs visible without an obsolete coverage overlay", async
671
699
  await expect(page.locator(".operations-coverage-toast")).toHaveCount(0);
672
700
  await expect(page.getByRole("article", { name: /Tempo total de execu/ })).toBeVisible();
673
701
  await expect(page.getByRole("article", { name: /Tokens gastos/ })).toBeVisible();
674
- await expect(page.getByRole("article", { name: /Custo Estimado/ })).toBeVisible();
702
+ const cost = page.getByRole("article", {
703
+ name: /^Custo Estimado:/,
704
+ });
705
+ await expect(cost).toBeVisible();
706
+ await expect(cost.locator("small")).toContainText(/\/ tarefa .*\/ hora/);
707
+ await expect(cost).not.toContainText("Subtotal estimado conhecido");
708
+ if (await cost.getAttribute("aria-description")) {
709
+ await expect(cost).toHaveAttribute("aria-description", /runs com custo conhecido/);
710
+ await expect(cost.locator("small")).toHaveText(
711
+ /R\$\s*[\d.,]+ \/ tarefa \(R\$\s*[\d.,]+ \/ hora\)/,
712
+ );
713
+ await expect(cost).not.toContainText("ⓘ");
714
+ await expect(cost).not.toContainText("indisponíveis por cobertura parcial");
715
+ }
675
716
  });
676
717
 
677
718
  async function openDashboard(page: import("@playwright/test").Page) {
@@ -0,0 +1,14 @@
1
+ import { expect, test } from "@playwright/test";
2
+
3
+ test("keeps the suite-owned runtime alive across closed browser pages", async ({
4
+ page,
5
+ request,
6
+ }) => {
7
+ await page.goto("/");
8
+ await page.close();
9
+ // Production launcher expiry is 12s: a replacement page must not race that deadline.
10
+ await new Promise((resolve) => setTimeout(resolve, 13_000));
11
+ const response = await request.get("/api/v2/health");
12
+ expect(response.status()).toBe(200);
13
+ expect(await response.json()).toMatchObject({ status: "ok" });
14
+ });
@@ -0,0 +1,200 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+
4
+ // Entirely synthetic acceptance fixtures, never real lifecycle evidence.
5
+ const at = "2026-01-01T02:30:00.000Z"; // 2025-12-31 in Sao Paulo.
6
+ export const cases = [
7
+ { suffix: "COMPLETE-A001", status: "completed", tokens: 15 },
8
+ { suffix: "FAILED-A002", status: "failed", tokens: null },
9
+ { suffix: "BLOCKED-A003", status: "blocked", tokens: 0 },
10
+ ].map((value) => ({
11
+ ...value,
12
+ task: `TASK-2026-01-01-00-00-${value.suffix}`,
13
+ change: `CHG-2026-01-01-00-00-${value.suffix}`,
14
+ run: `RUN-2026-01-01-00-00-${value.suffix}`,
15
+ }));
16
+
17
+ async function put(root, file, content) {
18
+ const target = join(root, file);
19
+ await mkdir(dirname(target), { recursive: true });
20
+ await writeFile(target, content, "utf8");
21
+ }
22
+ const markdown = (data) =>
23
+ `---\n${Object.entries(data)
24
+ .map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
25
+ .join("\n")}\n---\n\n# Synthetic observability qualification fixture\n`;
26
+
27
+ export async function createObservabilityFixture(root) {
28
+ await put(
29
+ root,
30
+ ".agents/config/project.yaml",
31
+ "schema_version: 1\nzaip:\n enabled: true\nproject:\n id: synthetic-observability\n name: Synthetic observability\n timezone: America/Sao_Paulo\nstack:\n id: zaip-aios-stack\n overrides: {}\nclients:\n codex: true\n claude: true\ntracking:\n enabled: true\n currency: BRL\n storage_mode: tracked_sanitized\n",
32
+ );
33
+ await put(
34
+ root,
35
+ ".agents/config/framework.lock.yaml",
36
+ "lock_version: 1\nframework:\n version: 2.6.0\n distribution_sha256: null\nlayout:\n version: 3\nresolved_profile:\n id: null\n sha256: null\nmanaged_files: {}\n",
37
+ );
38
+ for (const item of cases) {
39
+ const task = {
40
+ schema_version: 2,
41
+ id: item.task,
42
+ revision: 1,
43
+ change_id: item.change,
44
+ title: `Synthetic ${item.status}`,
45
+ short_name: item.suffix,
46
+ objective: "Synthetic cross-layer regression",
47
+ status: item.status,
48
+ attempt_count: item.status === "completed" ? 2 : 1,
49
+ risk: "standard",
50
+ priority: "medium",
51
+ owner: null,
52
+ requirement_ids: ["REQ-SYNTHETIC-001"],
53
+ acceptance_ids: ["AC-SYNTHETIC-001"],
54
+ depends_on: [],
55
+ write_scopes: ["synthetic/**"],
56
+ plan_revision: 1,
57
+ plan_hash: "a".repeat(64),
58
+ created_at: at,
59
+ updated_at: at,
60
+ started_at: at,
61
+ finished_at: item.status === "blocked" ? null : at,
62
+ result:
63
+ item.status === "blocked"
64
+ ? null
65
+ : {
66
+ summary: "Synthetic terminal fixture, not real approval",
67
+ changed_files: [],
68
+ evidence_ids: ["EVD-SYNTHETIC-FIXTURE"],
69
+ completed_run_id: item.run,
70
+ },
71
+ };
72
+ const change = {
73
+ schema_version: 2,
74
+ id: item.change,
75
+ revision: 1,
76
+ title: task.title,
77
+ status: item.status,
78
+ risk: "standard",
79
+ source: { type: "task", task_id: item.task },
80
+ requirement_ids: task.requirement_ids,
81
+ acceptance_ids: task.acceptance_ids,
82
+ requirement_impact: { type: "none", reason: "Synthetic fixture" },
83
+ task_ids: [item.task],
84
+ plan_revision: 1,
85
+ plan_hash: task.plan_hash,
86
+ created_at: at,
87
+ updated_at: at,
88
+ started_at: at,
89
+ finished_at: task.finished_at,
90
+ result: item.status === "blocked" ? null : "Synthetic fixture",
91
+ };
92
+ await put(root, `.agents/records/tasks/2026/01/${item.task}.md`, markdown(task));
93
+ await put(root, `.agents/records/changes/2026/01/${item.change}/change.md`, markdown(change));
94
+ const common = { schema_version: 2, run_id: item.run, occurred_at: at, phase: "execution" };
95
+ const records = [
96
+ {
97
+ ...common,
98
+ event_id: `${item.run}:1`,
99
+ sequence: 1,
100
+ type: "run.started",
101
+ attribution_status: "attributed",
102
+ run_role: "orchestrator",
103
+ run_purpose: "execution",
104
+ requires_finalizer: false,
105
+ execution_kind: "delivery",
106
+ execution_eligibility: ["delivery"],
107
+ entrypoint: "task",
108
+ work_type: item.status === "completed" ? "rework" : "new",
109
+ storage_mode: "tracked_sanitized",
110
+ client: "codex",
111
+ agent: "synthetic-agent",
112
+ agent_name: "synthetic-agent",
113
+ provider: "openai",
114
+ model: "synthetic-model",
115
+ reasoning_effort: null,
116
+ client_thread_id: `synthetic-${item.suffix}`,
117
+ client_turn_id: `synthetic-turn-${item.suffix}`,
118
+ conversation_id: `CONV-SYNTHETIC-${item.suffix}`,
119
+ execution_id: `EXEC-SYNTHETIC-${item.suffix}`,
120
+ task_id: item.task,
121
+ spec_id: null,
122
+ prd_id: null,
123
+ change_id: item.change,
124
+ parent_run_id: null,
125
+ continuation_of_run_id: null,
126
+ retry_of_run_id: item.status === "completed" ? `${item.run}-PRIOR` : null,
127
+ },
128
+ ];
129
+ if (item.tokens !== null)
130
+ records.push({
131
+ ...common,
132
+ event_id: `${item.run}:2`,
133
+ sequence: 2,
134
+ type: "usage.recorded",
135
+ activity_kind: "model_usage",
136
+ classification_source: "explicit",
137
+ tokens: {
138
+ input: item.tokens,
139
+ cached_input: 0,
140
+ output: 0,
141
+ reasoning: 0,
142
+ total: item.tokens,
143
+ source: "provider_reported",
144
+ },
145
+ cost: { usd: null, brl: null, fx_rate: null },
146
+ provider: "openai",
147
+ model: "synthetic-model",
148
+ source_segment_key: `synthetic-${item.suffix}`,
149
+ supersedes_event_id: null,
150
+ });
151
+ records.push({
152
+ ...common,
153
+ event_id: `${item.run}:${records.length + 1}`,
154
+ sequence: records.length + 1,
155
+ type: "run.finished",
156
+ status: item.status === "failed" ? "failed" : "completed",
157
+ duration_ms: null,
158
+ duration_provenance: null,
159
+ });
160
+ await put(
161
+ root,
162
+ `.agents/records/runs/2026/01/${item.run}.jsonl`,
163
+ `${records.map((record) => JSON.stringify(record)).join("\n")}\n`,
164
+ );
165
+ if (item.status === "completed") {
166
+ for (const kind of ["PRIOR", "FINALIZER"]) {
167
+ const runId = `${item.run}-${kind}`;
168
+ const extra = records.map((record, index) => ({
169
+ ...record,
170
+ run_id: runId,
171
+ event_id: `${runId}:${index + 1}`,
172
+ }));
173
+ Object.assign(extra[0], {
174
+ run_role: kind === "FINALIZER" ? "subagent" : "orchestrator",
175
+ run_purpose: kind === "FINALIZER" ? "finalization" : "execution",
176
+ agent: kind === "FINALIZER" ? "zaip-agent-finalizer" : "synthetic-agent",
177
+ agent_name: kind === "FINALIZER" ? "zaip-agent-finalizer" : "synthetic-agent",
178
+ parent_run_id: kind === "FINALIZER" ? item.run : null,
179
+ retry_of_run_id: null,
180
+ client_turn_id: `synthetic-turn-${kind}`,
181
+ });
182
+ extra[1].tokens = {
183
+ input: 0,
184
+ cached_input: 0,
185
+ output: 0,
186
+ reasoning: 0,
187
+ total: 0,
188
+ source: "provider_reported",
189
+ };
190
+ extra.at(-1).status = kind === "PRIOR" ? "failed" : "completed";
191
+ await put(
192
+ root,
193
+ `.agents/records/runs/2026/01/${runId}.jsonl`,
194
+ `${extra.map((record) => JSON.stringify(record)).join("\n")}\n`,
195
+ );
196
+ }
197
+ }
198
+ }
199
+ return cases;
200
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "2.6.0",
3
+ "version": "3.0.0",
4
4
  "files": [
5
5
  {
6
6
  "path": "DESIGN.md",
@@ -22,45 +22,69 @@
22
22
  "path": "apps/catalog/dist/assets/index-BEmIE7WE.css",
23
23
  "sha256": "0dec92315d3d26a016136093c1db4172c38f4a502e4c57eecbb59a7bc03491ce"
24
24
  },
25
+ {
26
+ "path": "apps/catalog/dist/assets/index-BJV597iq.js",
27
+ "sha256": "21b800284807d7e24d2cb0158735231a407b4a5320fcdc77e998aa25b11adbac"
28
+ },
29
+ {
30
+ "path": "apps/catalog/dist/assets/index-BOjCcUaU.js",
31
+ "sha256": "6a9b1016f383271faadbfdf1e3ecd7b2f637a1378dcd720fe5b0107db8a8be96"
32
+ },
33
+ {
34
+ "path": "apps/catalog/dist/assets/index-B_WhrCZe.js",
35
+ "sha256": "e6cb2980664683803b11f825bcfdd26dece46e10645e1dedf3a4b3b1bfc0497e"
36
+ },
25
37
  {
26
38
  "path": "apps/catalog/dist/assets/index-CqqYWY2f.js",
27
39
  "sha256": "8316a3bfa4c0fdf4128c850b5ab0724e54fe1d71c3368a6d31db4ba7172b9006"
28
40
  },
41
+ {
42
+ "path": "apps/catalog/dist/assets/index-CqtYXZfV.js",
43
+ "sha256": "3e33cde89232dfdd2c2168e662c4f19e02c389e1b337a0d52ff5c3a98d543d8a"
44
+ },
29
45
  {
30
46
  "path": "apps/catalog/dist/assets/index-D9pj7Jlf.js",
31
47
  "sha256": "5d6ff092c238ebc0df8587c753271d5f6561f723c6271b7ef26a855667079fb4"
32
48
  },
49
+ {
50
+ "path": "apps/catalog/dist/assets/index-D_lfqoyx.js",
51
+ "sha256": "dcc34d6f634d6d743e4d2f274356102883b99b0ec51cab2c4be73fa165f04d07"
52
+ },
53
+ {
54
+ "path": "apps/catalog/dist/assets/index-i_PO2k9R.js",
55
+ "sha256": "44394c96e7b5193e08a5f7d726beee39384d4dc64025dbb29e99e5fd8f5acf41"
56
+ },
33
57
  {
34
58
  "path": "apps/catalog/dist/index.html",
35
- "sha256": "262c0178c7ea79fe0aee2bb7236f9b5b1388f19f85bcbfdff44c7cfa5af249ff"
59
+ "sha256": "18ff187bda3952dc4a33817417f51b676e7e65b81da7994210ffb532b7cadf4d"
36
60
  },
37
61
  {
38
62
  "path": "apps/catalog/dist/logo_novo_azul.png",
39
63
  "sha256": "bb6043bda9fc53a111aaea4d6a004559b9ce8a3569691c060d217a7c6aafa0ae"
40
64
  },
41
65
  {
42
- "path": "apps/catalog/dist/storybook/assets/CatalogShell-BWY-80s4.js",
43
- "sha256": "84d451e4102b3f22bb5ad5862f7c1639929f12a1b972ec390076b49381814e0c"
66
+ "path": "apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js",
67
+ "sha256": "8e0579004ab4c0762e8b146027245e25e8a4b08636bf442d3baeb088df165c38"
44
68
  },
45
69
  {
46
- "path": "apps/catalog/dist/storybook/assets/Color-6AOWCN3U-B-kAgAjB.js",
47
- "sha256": "0e3ac0b9820668e73414175d055967f9d49bb2e7d826cdbd4aa6cd7fd384a713"
70
+ "path": "apps/catalog/dist/storybook/assets/Color-6AOWCN3U-Cm-yJJz_.js",
71
+ "sha256": "23f476e91f11645780ffe4f087c38984ea0965abde8643d1bdca86557a5709ed"
48
72
  },
49
73
  {
50
- "path": "apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js",
51
- "sha256": "2981c30e093c3a23616f465a6afc1bc287732692af998d608593598a731c97c4"
74
+ "path": "apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js",
75
+ "sha256": "2543b4ee66c023533961b9b2819df1037fd9ad7325161b101d34aad65930336a"
52
76
  },
53
77
  {
54
- "path": "apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js",
55
- "sha256": "3471400ec1a7cf9cce8f1e58068f91ebe416d34aea4be99a2431aeb0dba776a2"
78
+ "path": "apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js",
79
+ "sha256": "9eda01f608291b76264c5be12d7705ceb0f98b3db5d0b233115924616879e54f"
56
80
  },
57
81
  {
58
- "path": "apps/catalog/dist/storybook/assets/DocsRenderer-JROSPFPF-BVN7xHtv.js",
59
- "sha256": "162d64f939550ce9e9582f15e3befbb7a8d5fdcc502410ed88262994d6cb82ce"
82
+ "path": "apps/catalog/dist/storybook/assets/DocsRenderer-JROSPFPF-Belk4jRr.js",
83
+ "sha256": "8523cd25ceeadf333725b3b3ce040da3085c8f000aab78253be23d005044ef54"
60
84
  },
61
85
  {
62
- "path": "apps/catalog/dist/storybook/assets/WithTooltip-7X4HQR7L-CDHtKYkz.js",
63
- "sha256": "9be8ec095a76bf6993527027d4fd16ed5a97340c31de0bf86d1658840989aabe"
86
+ "path": "apps/catalog/dist/storybook/assets/WithTooltip-7X4HQR7L-DoPvjkS1.js",
87
+ "sha256": "e8f1f5ba181489d068dbdc3827f2ad5ffee3dc5c0a0b1b5adf879e248d10eda8"
64
88
  },
65
89
  {
66
90
  "path": "apps/catalog/dist/storybook/assets/axe-Bk3eEgJf.js",
@@ -71,33 +95,33 @@
71
95
  "sha256": "99518b5bd7da5186fe889de049274f734939938a15b2a6ff4fd72b09b89ddf3b"
72
96
  },
73
97
  {
74
- "path": "apps/catalog/dist/storybook/assets/chunk-DRQKCCAG-D6AsDkMK.js",
75
- "sha256": "6802628b929020272748a738451006529a09d123e54c31e174612fbc134e34f5"
98
+ "path": "apps/catalog/dist/storybook/assets/chunk-DRQKCCAG-B1itKXEN.js",
99
+ "sha256": "27542bdba914092f8cf4689ad4dcbfb685a5ee4f58da5e1c0b9d88fcfd73567e"
76
100
  },
77
101
  {
78
102
  "path": "apps/catalog/dist/storybook/assets/chunk-QQBDHPVZ-nYh9QWsm.js",
79
103
  "sha256": "9ffd7aa2b8e7fab1f375c22fdb4b4755ccfc867e7665f99f997792d0f54de00f"
80
104
  },
81
105
  {
82
- "path": "apps/catalog/dist/storybook/assets/chunk-W22LQPXL-B4m5uloN.js",
83
- "sha256": "8c45d2277c1a1c93f0bdc62c0122c515babacff466bb79538c95c1f885e76a1b"
84
- },
85
- {
86
- "path": "apps/catalog/dist/storybook/assets/components-CN8YyTUg.js",
87
- "sha256": "2793aa528869e3947d41591db2023524f8d81578f713214e9acac02f743d22e7"
106
+ "path": "apps/catalog/dist/storybook/assets/chunk-W22LQPXL-C-Eb5SPY.js",
107
+ "sha256": "271931e984ef5a8ae88a0656891a09759e35317a03e822feba30b007c9f41ad8"
88
108
  },
89
109
  {
90
- "path": "apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-EwuTh8Zk.js",
91
- "sha256": "73f231544e7f0272b6ac45ec3a665c69b6fc2073afa243915c1d09e119c18aa7"
110
+ "path": "apps/catalog/dist/storybook/assets/components-DnyKLwhj.js",
111
+ "sha256": "ac5912a25c27494ad9a29ae1a9bf40e029dcb8e5c791afbdf4c187e334c9219f"
92
112
  },
93
113
  {
94
- "path": "apps/catalog/dist/storybook/assets/iframe-9yZfIsdT.js",
95
- "sha256": "df67a8dec8d3c121cf18f0564e2bce71ba6ff261beb0c1d6950f035e924b79bb"
114
+ "path": "apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js",
115
+ "sha256": "9d4d56b3d4a0c056061d50222b4decd82678e8e8761b05f59f813482eecbe72e"
96
116
  },
97
117
  {
98
118
  "path": "apps/catalog/dist/storybook/assets/iframe-BEmIE7WE.css",
99
119
  "sha256": "0dec92315d3d26a016136093c1db4172c38f4a502e4c57eecbb59a7bc03491ce"
100
120
  },
121
+ {
122
+ "path": "apps/catalog/dist/storybook/assets/iframe-DcXBsFPz.js",
123
+ "sha256": "40b5d200ef9399e02ecb80556abf037c22440ec63f6f4cff4bba398728a65be0"
124
+ },
101
125
  {
102
126
  "path": "apps/catalog/dist/storybook/assets/jsx-runtime-f3rHp9ZU.js",
103
127
  "sha256": "26ef3f0950be4bb72906cc4b4f17246878b27b597267f289269b983924d71708"
@@ -111,20 +135,20 @@
111
135
  "sha256": "d010fa8d2cdceaf3b253755a2361c1bfe3aec58a535addad704b993439203d0a"
112
136
  },
113
137
  {
114
- "path": "apps/catalog/dist/storybook/assets/react-18-BoCSnq6H.js",
115
- "sha256": "df23d7771d993b8ba5253df50e543a9b400b58b11a7072b133d7eda5e8f80c85"
138
+ "path": "apps/catalog/dist/storybook/assets/react-18-CRM89QRf.js",
139
+ "sha256": "6649cba74dcb232a0eb2a0dae30fc14e89feb1a2ce058d739eee60f179fc3367"
116
140
  },
117
141
  {
118
- "path": "apps/catalog/dist/storybook/assets/react-DyL61NPT.js",
119
- "sha256": "4acedd0abf660b7a77ad5b6a6ba23085084a64047985a934f0bb46247de65203"
142
+ "path": "apps/catalog/dist/storybook/assets/react-C3tkVMIp.js",
143
+ "sha256": "b09a358f062f4384248dbc36ac02f10ccadef817d5f8e99c868f8b4b01186ecc"
120
144
  },
121
145
  {
122
- "path": "apps/catalog/dist/storybook/assets/syntaxhighlighter-YFXUGROL-Bnn_nMwJ.js",
123
- "sha256": "7e5238e615473f83cfaa939d4f3c4ec1462af17900163a0dcf3ec4de32a9cfbf"
146
+ "path": "apps/catalog/dist/storybook/assets/syntaxhighlighter-YFXUGROL-B03jQGTF.js",
147
+ "sha256": "f11d6edf9a82c4b9cbc17bd1634536693ea6f3d4a6790077304e9d2284653ca7"
124
148
  },
125
149
  {
126
- "path": "apps/catalog/dist/storybook/assets/theming-DS_ue2sb.js",
127
- "sha256": "deba2831ca2a9bae10430a9388d4c1cb3b83d0824f2e55f3ffce97bf51818cf2"
150
+ "path": "apps/catalog/dist/storybook/assets/theming-4ZyufAga.js",
151
+ "sha256": "f75b8877a9ee69ee36cc4e682409007e67ab9a88b6e10f477fccbbf5b6b34d5e"
128
152
  },
129
153
  {
130
154
  "path": "apps/catalog/dist/storybook/favicon-wrapper.svg",
@@ -136,7 +160,7 @@
136
160
  },
137
161
  {
138
162
  "path": "apps/catalog/dist/storybook/iframe.html",
139
- "sha256": "b7deee3a08a07f9977c8bf559d84b697fc61082a9540fbd963a4f3768d5fee95"
163
+ "sha256": "fee23dc8cd65234edfceab7fbb0eae7f4fd37b1835a1238c91dfaed9247928b9"
140
164
  },
141
165
  {
142
166
  "path": "apps/catalog/dist/storybook/index.html",
@@ -144,7 +168,7 @@
144
168
  },
145
169
  {
146
170
  "path": "apps/catalog/dist/storybook/index.json",
147
- "sha256": "c572a7733e2d4f98ac10da5d5b1c6a77d4b383a753d15be85a83d4d9f6e21943"
171
+ "sha256": "1055b3e9b85dbeb01c13d59621863c0ca990e7356648258cb17ff9be91d821a3"
148
172
  },
149
173
  {
150
174
  "path": "apps/catalog/dist/storybook/logo_novo_azul.png",
@@ -228,7 +252,7 @@
228
252
  },
229
253
  {
230
254
  "path": "apps/catalog/package.json",
231
- "sha256": "a42c9ded7ec7b3b3028b832180df0d525181a2008cd2270b689db5af5b284ea1"
255
+ "sha256": "f7691218b679609a07adc311a1ab5861aee4e636a848985a4590f13a0c13008f"
232
256
  },
233
257
  {
234
258
  "path": "apps/catalog/public/logo_novo_azul.png",
@@ -238,14 +262,34 @@
238
262
  "path": "apps/catalog/src/App.tsx",
239
263
  "sha256": "a3aab3182b47fb78512945fd99d993a9c6cff3ef251a83055c7579ae4cbec854"
240
264
  },
265
+ {
266
+ "path": "apps/catalog/src/components/AutonomySpecimen.tsx",
267
+ "sha256": "fdef00ec4dc4a76e072a22605407dcee8e5b65fb568c6449e622470b30fbf677"
268
+ },
241
269
  {
242
270
  "path": "apps/catalog/src/components/CatalogShell.tsx",
243
271
  "sha256": "9c1c20501aabf476bde54b453fe826efe31a0b3d484a0a050c898bf45f343096"
244
272
  },
273
+ {
274
+ "path": "apps/catalog/src/components/CostPopulationSpecimen.test.tsx",
275
+ "sha256": "2e76031ba2e94f0d4473d09c5e96e41f749fe099a13b3e4bcdd24a8455b16ac4"
276
+ },
277
+ {
278
+ "path": "apps/catalog/src/components/CostPopulationSpecimen.tsx",
279
+ "sha256": "d92bc8d55660b020db6ba9d47037a782fbbeba9b76febf7869718064d1928170"
280
+ },
281
+ {
282
+ "path": "apps/catalog/src/components/EstimatedCostSpecimen.tsx",
283
+ "sha256": "9350423a97fec486c54eeadd1f74bbdb066ef830cc8b980385c389c1f001feda"
284
+ },
245
285
  {
246
286
  "path": "apps/catalog/src/components/Primitives.tsx",
247
287
  "sha256": "68d65caaa90818b7e942db30cd2fd6f68912e63b974c940ce694b93fa1bdc5ce"
248
288
  },
289
+ {
290
+ "path": "apps/catalog/src/components/ProjectStatusSpecimen.tsx",
291
+ "sha256": "3ff413dad7e8e9e127c8c2cfebe685afcfe0e7840742960c1d9408cadaf3f092"
292
+ },
249
293
  {
250
294
  "path": "apps/catalog/src/components/dialog-focus.test.ts",
251
295
  "sha256": "b62a5209b8554a4500ff241fb3d0cb67bff4ff751b8eddbda2dfd17dd9b6beed"
@@ -264,7 +308,7 @@
264
308
  },
265
309
  {
266
310
  "path": "apps/catalog/src/pages/ComponentsPage.tsx",
267
- "sha256": "c3e8636f2c71e4207221515804ca34f699a9bdddbe73c90cd8bfd9239fd8ddff"
311
+ "sha256": "7d2173517ecb0469bc197aeef93e6d9fb79bc0c0eaaca9ed1ffe1481c0310664"
268
312
  },
269
313
  {
270
314
  "path": "apps/catalog/src/pages/DesignSystemPage.tsx",
@@ -272,7 +316,7 @@
272
316
  },
273
317
  {
274
318
  "path": "apps/catalog/src/stories/Components.stories.tsx",
275
- "sha256": "6912173802ebc94e6771baea062eed57eae0524dda4fc8fb7b447b0f37c5f2fd"
319
+ "sha256": "b8c891b3473f710bd45aea316a76639f6ac49e5f5f2e0c7e823f3e8d8b4eb495"
276
320
  },
277
321
  {
278
322
  "path": "apps/catalog/src/stories/DesignSystem.stories.tsx",
@@ -308,7 +352,7 @@
308
352
  },
309
353
  {
310
354
  "path": "packages/local-runtime/package.json",
311
- "sha256": "40dffff6d98f8ba0051a62a08795e555fa552276d768fbb858fdd8e9b6ec7815"
355
+ "sha256": "39f18ddf46b11fc8894c3200673a65076c573c63305d990c2fbd192cd98db91c"
312
356
  },
313
357
  {
314
358
  "path": "packages/local-runtime/runtime.mjs",