@zaip-ai/cli 2.2.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 (571) 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 +26 -9
  5. package/dist/services/adapters.js.map +1 -1
  6. package/dist/services/agent-adapters.js +37 -18
  7. package/dist/services/agent-adapters.js.map +1 -1
  8. package/dist/services/agent-discovery.d.ts +27 -0
  9. package/dist/services/agent-discovery.d.ts.map +1 -0
  10. package/dist/services/agent-discovery.js +73 -0
  11. package/dist/services/agent-discovery.js.map +1 -0
  12. package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
  13. package/dist/services/codex-conversation-lifecycle-hook.js +164 -24
  14. package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
  15. package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
  16. package/dist/services/codex-pre-tool-hook-template.js +146 -72
  17. package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
  18. package/dist/services/codex-rules.d.ts +1 -1
  19. package/dist/services/codex-rules.d.ts.map +1 -1
  20. package/dist/services/codex-rules.js +3 -3
  21. package/dist/services/codex-subagent-hook-template.d.ts +1 -1
  22. package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
  23. package/dist/services/codex-subagent-hook-template.js +117 -66
  24. package/dist/services/codex-subagent-hook-template.js.map +1 -1
  25. package/dist/services/install-agents-template.d.ts.map +1 -1
  26. package/dist/services/install-agents-template.js +65 -7
  27. package/dist/services/install-agents-template.js.map +1 -1
  28. package/dist/services/logger.js +1 -1
  29. package/dist/services/logger.js.map +1 -1
  30. package/dist/services/logger.test.js +22 -1
  31. package/dist/services/logger.test.js.map +1 -1
  32. package/dist/services/runtime-template.test.js +153 -1
  33. package/dist/services/runtime-template.test.js.map +1 -1
  34. package/dist/services/transactional-files.d.ts.map +1 -1
  35. package/dist/services/transactional-files.js +59 -14
  36. package/dist/services/transactional-files.js.map +1 -1
  37. package/package.json +1 -1
  38. package/templates/.agents/.env.example +9 -3
  39. package/templates/.agents/README-ENG.md +101 -15
  40. package/templates/.agents/README.md +102 -17
  41. package/templates/.agents/architecture/software-architecture.md +1 -59
  42. package/templates/.agents/branding/brandbook.md +3 -0
  43. package/templates/.agents/config/agents/catalog.yaml +25 -10
  44. package/templates/.agents/config/agents/discovery.json +319 -0
  45. package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +1 -1
  46. package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +1 -1
  47. package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +3 -3
  48. package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +1 -1
  49. package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +3 -3
  50. package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +12 -9
  51. package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +1 -1
  52. package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +3 -3
  53. package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
  54. package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +3 -3
  55. package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +1 -1
  56. package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +1 -1
  57. package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +1 -1
  58. package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +1 -1
  59. package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +1 -1
  60. package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +13 -10
  61. package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +1 -1
  62. package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +1 -1
  63. package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +1 -1
  64. package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +1 -1
  65. package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +3 -3
  66. package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +3 -3
  67. package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +1 -1
  68. package/templates/.agents/config/pricing/models.json +9 -5
  69. package/templates/.agents/config/project.yaml +22 -2
  70. package/templates/.agents/dashboard/.zaip-managed.json +530 -138
  71. package/templates/.agents/dashboard/README.md +16 -0
  72. package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-CEDZjl4V.js +1 -0
  73. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-DaSllaJp.js → DashboardHelpDialog-TnrL1ZyZ.js} +967 -578
  74. package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-DjQpBqGU.js +1 -0
  75. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B9GWkEyN.css +1 -0
  76. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BAvLPAee.js +3 -0
  77. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BQZXUnQu.js +1 -0
  78. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-06__WZco.js +68 -0
  79. package/templates/.agents/dashboard/apps/frontend/dist/assets/dashboard-localization-Basaw1NR.js +824 -0
  80. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-TPUT2IUt.js → icons-vendor-DEmo6Tn2.js} +1 -1
  81. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-BQe3zTvL.js +2 -0
  82. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-Ct48XHGL.js → react-vendor-CadYsm83.js} +1 -1
  83. package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-Bh1tDfsg.js +1 -0
  84. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BzKK8kK3.js +1 -0
  85. package/templates/.agents/dashboard/apps/frontend/dist/index.html +6 -6
  86. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  87. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +3 -1264
  88. package/templates/.agents/dashboard/apps/frontend/src/AppDashboardContent.tsx +368 -0
  89. package/templates/.agents/dashboard/apps/frontend/src/AutonomySettings.tsx +82 -0
  90. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +130 -0
  91. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +206 -157
  92. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +3 -1
  93. package/templates/.agents/dashboard/apps/frontend/src/__tests__/app-composition-support.ts +12 -0
  94. package/templates/.agents/dashboard/apps/frontend/src/cost-monitor-population.test.tsx +149 -0
  95. package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +9 -7
  96. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-settings.ts +152 -0
  97. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +19 -0
  98. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +50 -154
  99. package/templates/.agents/dashboard/apps/frontend/src/dashboard-app-shell.tsx +33 -0
  100. package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.test.ts +54 -0
  101. package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.ts +48 -0
  102. package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.test.ts +37 -43
  103. package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.ts +9 -251
  104. package/templates/.agents/dashboard/apps/frontend/src/dashboard-project-overview.ts +35 -2
  105. package/templates/.agents/dashboard/apps/frontend/src/dashboard-retry.ts +17 -0
  106. package/templates/.agents/dashboard/apps/frontend/src/dashboard-setup-route.ts +29 -0
  107. package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.test.ts +51 -0
  108. package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.ts +68 -0
  109. package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +38 -2
  110. package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +19 -4
  111. package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +5 -3
  112. package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +2 -2
  113. package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.test.ts +137 -0
  114. package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.ts +66 -0
  115. package/templates/.agents/dashboard/apps/frontend/src/project-settings-copy.ts +181 -0
  116. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +11 -1
  117. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +102 -51
  118. package/templates/.agents/dashboard/apps/frontend/src/project-settings-state.css +55 -0
  119. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +14 -2
  120. package/templates/.agents/dashboard/apps/frontend/src/sao-paulo-day-rollover.test.ts +36 -0
  121. package/templates/.agents/dashboard/apps/frontend/src/sao-paulo-day-rollover.ts +30 -0
  122. package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +2 -5
  123. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +31 -20
  124. package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.ts +1 -2
  125. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +6 -0
  126. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +2 -0
  127. package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +9 -1
  128. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +3 -1
  129. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-task-pagination.ts +66 -0
  130. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +397 -0
  131. package/templates/.agents/dashboard/apps/frontend/src/use-dashboard-app-model.tsx +782 -0
  132. package/templates/.agents/dashboard/apps/frontend/src/use-snapshot-notice.tsx +49 -0
  133. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  134. package/templates/.agents/dashboard/modules/cost-monitor/src/complete-cost-average.test.ts +73 -0
  135. package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +9 -0
  136. package/templates/.agents/dashboard/modules/cost-monitor/src/period-averages.ts +60 -0
  137. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperPanelSlot.tsx +16 -0
  138. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +459 -0
  139. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +8 -22
  140. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +27 -17
  141. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +64 -189
  142. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorRunDialog.tsx +20 -0
  143. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostPeriodAverageCards.tsx +32 -8
  144. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-hides-calls-that-have-no-collected.test.ts +80 -0
  145. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +455 -0
  146. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +18 -525
  147. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +32 -508
  148. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-export-sources.ts +74 -0
  149. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-actions.ts +19 -0
  150. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +49 -0
  151. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +3 -2
  152. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-formatters.ts +115 -0
  153. package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +1 -42
  154. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +2 -1
  155. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test-fixtures.ts +2 -0
  156. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +3 -2
  157. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +8 -2
  158. package/templates/.agents/dashboard/modules/cost-monitor/src/server/index.ts +1 -0
  159. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  160. package/templates/.agents/dashboard/modules/operations/src/contracts.ts +4 -0
  161. package/templates/.agents/dashboard/modules/operations/src/react/EntityTableBadges.tsx +34 -0
  162. package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +8 -38
  163. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview-keeps-structure-classes-mutually-exclusive.test.ts +244 -0
  164. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +66 -3
  165. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +98 -276
  166. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +105 -276
  167. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewCharts.tsx +171 -0
  168. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewPanels.tsx +64 -0
  169. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +9 -17
  170. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +3 -0
  171. package/templates/.agents/dashboard/modules/operations/src/react/OverviewCostKpi.tsx +46 -0
  172. package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.test.tsx +2 -1
  173. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +28 -1
  174. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +11 -4
  175. package/templates/.agents/dashboard/modules/operations/src/react/index.ts +1 -0
  176. package/templates/.agents/dashboard/modules/operations/src/react/manual-work-priority.test.ts +2 -1
  177. package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +8 -4
  178. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +34 -22
  179. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +3 -1
  180. package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +21 -2
  181. package/templates/.agents/dashboard/modules/operations/src/react/overview-cost-card.test.tsx +89 -0
  182. package/templates/.agents/dashboard/modules/operations/src/react/overview-metric-format.ts +32 -0
  183. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +3 -3
  184. package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +2 -1
  185. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  186. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  187. package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
  188. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  189. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  190. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1625 -1613
  191. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1592 -1582
  192. package/templates/.agents/dashboard/packages/local-runtime/package.json +3 -2
  193. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +22 -28
  194. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1625 -1614
  195. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +25 -0
  196. package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.test.ts +1 -1
  197. package/templates/.agents/dashboard/packages/local-runtime/src/project-installation-summary.test.ts +142 -0
  198. package/templates/.agents/dashboard/packages/local-runtime/src/project-installation-summary.ts +190 -0
  199. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +118 -8
  200. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +92 -36
  201. package/templates/.agents/dashboard/packages/local-runtime/src/projection-refresh-diagnostics.ts +35 -0
  202. package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.test.ts +91 -0
  203. package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.ts +24 -4
  204. package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +168 -0
  205. package/templates/.agents/dashboard/packages/local-runtime/src/server-dual-reads-manifest-summaries-without-losing.test.ts +344 -0
  206. package/templates/.agents/dashboard/packages/local-runtime/src/server-hono-security.test.ts +17 -0
  207. package/templates/.agents/dashboard/packages/local-runtime/src/server-http-contracts.ts +31 -0
  208. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +364 -0
  209. package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +461 -0
  210. package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +78 -0
  211. package/templates/.agents/dashboard/packages/local-runtime/src/server-route-context.ts +13 -0
  212. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +94 -2
  213. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +62 -12
  214. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +44 -0
  215. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +22 -3
  216. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +22 -21
  217. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.test.ts +97 -0
  218. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +10 -13
  219. package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-view-allowlist.test.ts +25 -0
  220. package/templates/.agents/dashboard/packages/local-runtime/src/server-trace-routes.ts +56 -0
  221. package/templates/.agents/dashboard/packages/local-runtime/src/server-traceability-index.test.ts +84 -0
  222. package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.test.ts +2 -30
  223. package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.ts +6 -23
  224. package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +1 -1
  225. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +2 -330
  226. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +87 -1060
  227. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-dimension-facts.test.ts +12 -1
  228. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-file-index.test.ts +69 -0
  229. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +3 -1
  230. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +3 -1
  231. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +2 -0
  232. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-first-fold.ts +78 -0
  233. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +570 -0
  234. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-runs.ts +600 -0
  235. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.test.ts +1 -1
  236. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +46 -0
  237. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-provider-alias-parity.test.ts +50 -0
  238. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +269 -0
  239. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-context.ts +32 -0
  240. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +244 -0
  241. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +303 -0
  242. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +547 -0
  243. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +360 -0
  244. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +169 -0
  245. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +493 -0
  246. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-temporal-dimension.ts +134 -0
  247. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-timing.ts +299 -0
  248. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +692 -0
  249. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +763 -0
  250. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-does-not-convert-delayed-historical-finalizer.test.ts +706 -0
  251. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +762 -0
  252. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-first-fold-types.ts +1 -1
  253. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +710 -0
  254. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-marks-token-cost-telemetry-unavailable-when.test.ts +618 -0
  255. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +764 -0
  256. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuilds-disposable-snapshot-serves-zaip-records.test.ts +276 -0
  257. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +193 -0
  258. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.test.ts +54 -1
  259. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +7 -3
  260. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-types.ts +123 -0
  261. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +5 -2806
  262. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +17 -6930
  263. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-risk-population.test.ts +98 -0
  264. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +390 -0
  265. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +413 -0
  266. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +2 -0
  267. package/templates/.agents/dashboard/packages/local-runtime/src/verify-project-settings.mjs +57 -0
  268. package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +4 -3
  269. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-build.mjs +195 -0
  270. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-lifecycle.test.mjs +2 -7
  271. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-logging.mjs +35 -0
  272. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-navigation.mjs +114 -0
  273. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-paths.mjs +90 -0
  274. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +89 -418
  275. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +22 -12
  276. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  277. package/templates/.agents/dashboard/scripts/qualify-observability.mjs +130 -0
  278. package/templates/.agents/dashboard/scripts/verify-autonomy-settings.mjs +175 -0
  279. package/templates/.agents/dashboard/scripts/verify-observability.mjs +254 -0
  280. package/templates/.agents/dashboard/scripts/verify-project-setup.mjs +64 -0
  281. package/templates/.agents/dashboard/tests/e2e/lease-global-setup.ts +37 -0
  282. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  283. package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +9 -4
  284. package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-period-transition.spec.ts +22 -1
  285. package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +17 -8
  286. package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +47 -6
  287. package/templates/.agents/dashboard/tests/e2e/specs/lease-lifetime.spec.ts +14 -0
  288. package/templates/.agents/dashboard/tests/observability-fixture.mjs +200 -0
  289. package/templates/.agents/design/.zaip-managed.json +86 -42
  290. package/templates/.agents/design/DESIGN.md +2 -186
  291. package/templates/.agents/design/README.md +12 -2
  292. package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +72 -0
  293. package/templates/.agents/design/apps/catalog/dist/assets/index-BOjCcUaU.js +72 -0
  294. package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +72 -0
  295. package/templates/.agents/design/apps/catalog/dist/assets/index-CqtYXZfV.js +72 -0
  296. package/templates/.agents/design/apps/catalog/dist/assets/index-D_lfqoyx.js +72 -0
  297. package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +9 -0
  298. package/templates/.agents/design/apps/catalog/dist/index.html +1 -1
  299. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +1 -0
  300. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-B-kAgAjB.js → Color-6AOWCN3U-Cm-yJJz_.js} +1 -1
  301. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +137 -0
  302. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +1 -0
  303. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-BVN7xHtv.js → DocsRenderer-JROSPFPF-Belk4jRr.js} +4 -4
  304. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-CDHtKYkz.js → WithTooltip-7X4HQR7L-DoPvjkS1.js} +1 -1
  305. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-D6AsDkMK.js → chunk-DRQKCCAG-B1itKXEN.js} +1 -1
  306. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-B4m5uloN.js → chunk-W22LQPXL-C-Eb5SPY.js} +1 -1
  307. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-CN8YyTUg.js → components-DnyKLwhj.js} +5 -5
  308. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +1 -0
  309. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-9yZfIsdT.js → iframe-DcXBsFPz.js} +3 -3
  310. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-BoCSnq6H.js → react-18-CRM89QRf.js} +1 -1
  311. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +1 -0
  312. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-Bnn_nMwJ.js → syntaxhighlighter-YFXUGROL-B03jQGTF.js} +1 -1
  313. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-DS_ue2sb.js → theming-4ZyufAga.js} +1 -1
  314. package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +1 -1
  315. package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
  316. package/templates/.agents/design/apps/catalog/package.json +2 -2
  317. package/templates/.agents/design/apps/catalog/src/components/AutonomySpecimen.tsx +15 -0
  318. package/templates/.agents/design/apps/catalog/src/components/CostPopulationSpecimen.test.tsx +19 -0
  319. package/templates/.agents/design/apps/catalog/src/components/CostPopulationSpecimen.tsx +45 -0
  320. package/templates/.agents/design/apps/catalog/src/components/EstimatedCostSpecimen.tsx +48 -0
  321. package/templates/.agents/design/apps/catalog/src/components/ProjectStatusSpecimen.tsx +169 -0
  322. package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +55 -0
  323. package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +60 -0
  324. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  325. package/templates/.agents/growth/strategy.md +3 -0
  326. package/templates/.agents/marketing/strategy.md +3 -0
  327. package/templates/.agents/requirements/autonomous-assurance.md +2 -1
  328. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  329. package/templates/.agents/requirements/comparative-audit.md +1 -1
  330. package/templates/.agents/requirements/context-engine.md +1 -1
  331. package/templates/.agents/requirements/cost-observability.md +1 -1
  332. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  333. package/templates/.agents/requirements/data-export.md +1 -1
  334. package/templates/.agents/requirements/design-system.md +13 -4
  335. package/templates/.agents/requirements/execution-engine.md +1 -1
  336. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  337. package/templates/.agents/requirements/model-orchestration.md +1 -1
  338. package/templates/.agents/requirements/public-distribution.md +4 -2
  339. package/templates/.agents/requirements/software-architecture.md +1 -1
  340. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  341. package/templates/.agents/requirements/work-lifecycle.md +6 -6
  342. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  343. package/templates/.agents/rules/architecture.md +2 -0
  344. package/templates/.agents/rules/astra-diagnostic.md +3 -1
  345. package/templates/.agents/rules/autonomy-decision.md +12 -2
  346. package/templates/.agents/rules/cloud-hostinger-autonomy.md +2 -0
  347. package/templates/.agents/rules/context.md +2 -1
  348. package/templates/.agents/rules/core.md +15 -4
  349. package/templates/.agents/rules/design-system-central-contract.md +17 -0
  350. package/templates/.agents/rules/evolution.md +3 -1
  351. package/templates/.agents/rules/frontend-lite.md +3 -1
  352. package/templates/.agents/rules/local-sqlite-storage.md +2 -2
  353. package/templates/.agents/rules/meta-mcp.md +3 -1
  354. package/templates/.agents/rules/model-orchestration.md +1 -1
  355. package/templates/.agents/rules/run-lifecycle-closure.md +11 -7
  356. package/templates/.agents/rules/security.md +3 -1
  357. package/templates/.agents/rules/specialist-routing.md +3 -1
  358. package/templates/.agents/rules/text-writing-utf8.md +1 -1
  359. package/templates/.agents/rules/workflow.md +7 -5
  360. package/templates/.agents/runtime/VERSION +1 -1
  361. package/templates/.agents/runtime/bin/zaip.mjs +821 -516
  362. package/templates/.agents/runtime/checksums.sha256 +6 -6
  363. package/templates/.agents/runtime/manifest.json +1 -1
  364. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
  365. package/templates/.agents/runtime/provenance.json +5 -5
  366. package/templates/.agents/runtime/sbom.cdx.json +3 -3
  367. package/templates/.agents/sales/playbook.md +3 -0
  368. package/templates/.agents/skills/zaip-aios/SKILL.md +5 -3
  369. package/templates/.agents/skills/zaip-skill-adapt-stack/SKILL.md +1 -0
  370. package/templates/.agents/skills/zaip-skill-api-contracts/SKILL.md +14 -0
  371. package/templates/.agents/skills/zaip-skill-api-contracts/agents/openai.yaml +4 -0
  372. package/templates/.agents/skills/zaip-skill-application-observability/SKILL.md +15 -0
  373. package/templates/.agents/skills/zaip-skill-application-observability/agents/openai.yaml +4 -0
  374. package/templates/.agents/skills/zaip-skill-application-observability/references/signal-design.md +3 -0
  375. package/templates/.agents/skills/zaip-skill-application-readiness/SKILL.md +15 -0
  376. package/templates/.agents/skills/zaip-skill-application-readiness/agents/openai.yaml +4 -0
  377. package/templates/.agents/skills/zaip-skill-application-readiness/references/evidence-matrix.md +3 -0
  378. package/templates/.agents/skills/zaip-skill-architecture-design/SKILL.md +14 -0
  379. package/templates/.agents/skills/zaip-skill-architecture-design/agents/openai.yaml +4 -0
  380. package/templates/.agents/skills/zaip-skill-async-jobs/SKILL.md +14 -0
  381. package/templates/.agents/skills/zaip-skill-async-jobs/agents/openai.yaml +4 -0
  382. package/templates/.agents/skills/zaip-skill-auth-tenancy/SKILL.md +15 -0
  383. package/templates/.agents/skills/zaip-skill-auth-tenancy/agents/openai.yaml +4 -0
  384. package/templates/.agents/skills/zaip-skill-auth-tenancy/references/data-access-paths.md +9 -0
  385. package/templates/.agents/skills/zaip-skill-auth-tenancy/references/worker-scenario.md +5 -0
  386. package/templates/.agents/skills/zaip-skill-auth-tenancy/scripts/worker-contract.test.mjs +27 -0
  387. package/templates/.agents/skills/zaip-skill-author-skills/SKILL.md +2 -0
  388. package/templates/.agents/skills/zaip-skill-author-skills/references/engineering-skill-index.md +9 -0
  389. package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +5 -3
  390. package/templates/.agents/skills/zaip-skill-author-skills/scripts/author-skill-scripts.test.mjs +27 -0
  391. package/templates/.agents/skills/zaip-skill-backend/SKILL.md +4 -0
  392. package/templates/.agents/skills/zaip-skill-backend/references/deployment-environments.md +75 -0
  393. package/templates/.agents/skills/zaip-skill-backend/references/supabase-migration-contract.md +23 -0
  394. package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +2 -0
  395. package/templates/.agents/skills/zaip-skill-cache-strategy/SKILL.md +14 -0
  396. package/templates/.agents/skills/zaip-skill-cache-strategy/agents/openai.yaml +4 -0
  397. package/templates/.agents/skills/zaip-skill-change/SKILL.md +1 -1
  398. package/templates/.agents/skills/zaip-skill-cloud-engineering/SKILL.md +7 -0
  399. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/SKILL.md +37 -0
  400. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/agents/openai.yaml +6 -0
  401. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workers-static-assets.md +26 -0
  402. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workflow-templates.md +71 -0
  403. package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/scripts/cloudflare-github-deploy-contract.test.mjs +77 -0
  404. package/templates/.agents/skills/zaip-skill-config/SKILL.md +21 -11
  405. package/templates/.agents/skills/zaip-skill-config/agents/openai.yaml +2 -2
  406. package/templates/.agents/skills/zaip-skill-container-runtime/SKILL.md +14 -0
  407. package/templates/.agents/skills/zaip-skill-container-runtime/agents/openai.yaml +4 -0
  408. package/templates/.agents/skills/zaip-skill-context/SKILL.md +6 -1
  409. package/templates/.agents/skills/zaip-skill-context/references/prd-spec-task-handoff.md +10 -0
  410. package/templates/.agents/skills/zaip-skill-context/references/rule-selection.md +20 -0
  411. package/templates/.agents/skills/zaip-skill-cqrs/SKILL.md +1 -0
  412. package/templates/.agents/skills/zaip-skill-cybersecurity/SKILL.md +18 -0
  413. package/templates/.agents/skills/zaip-skill-cybersecurity/agents/openai.yaml +4 -0
  414. package/templates/.agents/skills/zaip-skill-cybersecurity/references/audit-contract.md +94 -0
  415. package/templates/.agents/skills/zaip-skill-cybersecurity/scripts/score-audit.mjs +185 -0
  416. package/templates/.agents/skills/zaip-skill-cybersecurity/scripts/score-audit.test.mjs +101 -0
  417. package/templates/.agents/skills/zaip-skill-data-modeling/SKILL.md +14 -0
  418. package/templates/.agents/skills/zaip-skill-data-modeling/agents/openai.yaml +4 -0
  419. package/templates/.agents/skills/zaip-skill-database-migrations/SKILL.md +20 -0
  420. package/templates/.agents/skills/zaip-skill-database-migrations/agents/openai.yaml +4 -0
  421. package/templates/.agents/skills/zaip-skill-database-migrations/references/manual-mode.md +15 -0
  422. package/templates/.agents/skills/zaip-skill-database-migrations/references/promotion-example.md +5 -0
  423. package/templates/.agents/skills/zaip-skill-database-migrations/scripts/export-manual-sql.mjs +145 -0
  424. package/templates/.agents/skills/zaip-skill-database-migrations/scripts/export-manual-sql.test.mjs +178 -0
  425. package/templates/.agents/skills/zaip-skill-dependency-upgrade/SKILL.md +14 -0
  426. package/templates/.agents/skills/zaip-skill-dependency-upgrade/agents/openai.yaml +4 -0
  427. package/templates/.agents/skills/zaip-skill-deployment-pipeline/SKILL.md +15 -0
  428. package/templates/.agents/skills/zaip-skill-deployment-pipeline/agents/openai.yaml +4 -0
  429. package/templates/.agents/skills/zaip-skill-deployment-pipeline/references/runtime-shapes.md +3 -0
  430. package/templates/.agents/skills/zaip-skill-design-system/SKILL.md +20 -9
  431. package/templates/.agents/skills/zaip-skill-dev-environment/SKILL.md +16 -0
  432. package/templates/.agents/skills/zaip-skill-dev-environment/agents/openai.yaml +4 -0
  433. package/templates/.agents/skills/zaip-skill-dev-environment/references/inventory-contract.md +7 -0
  434. package/templates/.agents/skills/zaip-skill-dev-environment/scripts/inventory.mjs +77 -0
  435. package/templates/.agents/skills/zaip-skill-disaster-recovery/SKILL.md +15 -0
  436. package/templates/.agents/skills/zaip-skill-disaster-recovery/agents/openai.yaml +4 -0
  437. package/templates/.agents/skills/zaip-skill-disaster-recovery/references/recovery-scope.md +3 -0
  438. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +31 -8
  439. package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +7 -0
  440. package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +18 -8
  441. package/templates/.agents/skills/zaip-skill-external-integrations/SKILL.md +14 -0
  442. package/templates/.agents/skills/zaip-skill-external-integrations/agents/openai.yaml +4 -0
  443. package/templates/.agents/skills/zaip-skill-frontend/SKILL.md +4 -0
  444. package/templates/.agents/skills/zaip-skill-frontend-componentization/SKILL.md +44 -0
  445. package/templates/.agents/skills/zaip-skill-frontend-componentization/agents/openai.yaml +4 -0
  446. package/templates/.agents/skills/zaip-skill-frontend-data-flows/SKILL.md +14 -0
  447. package/templates/.agents/skills/zaip-skill-frontend-data-flows/agents/openai.yaml +4 -0
  448. package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +2 -0
  449. package/templates/.agents/skills/zaip-skill-github-actions-setup/SKILL.md +36 -0
  450. package/templates/.agents/skills/zaip-skill-github-actions-setup/agents/openai.yaml +4 -0
  451. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/cloudflare-pages.md +33 -0
  452. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/github.md +63 -0
  453. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/hostinger-vps.md +55 -0
  454. package/templates/.agents/skills/zaip-skill-github-actions-setup/references/npm.md +30 -0
  455. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/check-skill.mjs +55 -0
  456. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-cloudflare.mjs +61 -0
  457. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-cloudflare.test.mjs +128 -0
  458. package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-ssh.integration.test.mjs +106 -0
  459. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +42 -76
  460. package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +135 -0
  461. package/templates/.agents/skills/zaip-skill-github-deploy/references/github-release-workflow-template.md +31 -0
  462. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-gate-matrix.md +24 -0
  463. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +44 -0
  464. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-notes.md +134 -0
  465. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +389 -0
  466. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +134 -0
  467. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +25 -2
  468. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness-api.test.mjs +134 -0
  469. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness.mjs +98 -0
  470. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness.test.mjs +25 -0
  471. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/install-github-readiness-workflow.mjs +159 -0
  472. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/install-github-readiness-workflow.test.mjs +160 -0
  473. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +149 -12
  474. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +64 -5
  475. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/release-notes-coverage.test.mjs +126 -0
  476. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/resolve-release-identity.mjs +78 -0
  477. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/resolve-release-identity.test.mjs +51 -0
  478. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/validate-release-notes.mjs +184 -0
  479. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/validate-release-notes.test.mjs +109 -0
  480. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +2 -0
  481. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/SKILL.md +18 -10
  482. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/agents/openai.yaml +3 -4
  483. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/aws-cli-terraform.md +62 -0
  484. package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/guia-iniciante-hostinger-vps.md +183 -0
  485. package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +2 -0
  486. package/templates/.agents/skills/zaip-skill-module-scaffold/SKILL.md +14 -0
  487. package/templates/.agents/skills/zaip-skill-module-scaffold/agents/openai.yaml +4 -0
  488. package/templates/.agents/skills/zaip-skill-module-scaffold/references/scaffold-contract.md +9 -0
  489. package/templates/.agents/skills/zaip-skill-module-scaffold/scripts/helpers.test.mjs +121 -0
  490. package/templates/.agents/skills/zaip-skill-module-scaffold/scripts/scaffold.mjs +169 -0
  491. package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +3 -1
  492. package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +1 -1
  493. package/templates/.agents/skills/zaip-skill-performance-engineering/SKILL.md +14 -0
  494. package/templates/.agents/skills/zaip-skill-performance-engineering/agents/openai.yaml +4 -0
  495. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -1
  496. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +1 -0
  497. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +26 -9
  498. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +39 -13
  499. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +1 -0
  500. package/templates/.agents/skills/zaip-skill-refactor-landing-page/SKILL.md +66 -0
  501. package/templates/.agents/skills/zaip-skill-refactor-landing-page/agents/openai.yaml +4 -0
  502. package/templates/.agents/skills/zaip-skill-refactor-landing-page/references/behavioral-dry-run.md +23 -0
  503. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +38 -1
  504. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +122 -0
  505. package/templates/.agents/skills/zaip-skill-review/SKILL.md +1 -0
  506. package/templates/.agents/skills/zaip-skill-rules/SKILL.md +3 -3
  507. package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +2 -0
  508. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +21 -21
  509. package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +2 -2
  510. package/templates/.agents/skills/zaip-skill-spec/SKILL.md +3 -2
  511. package/templates/.agents/skills/zaip-skill-storage-uploads/SKILL.md +14 -0
  512. package/templates/.agents/skills/zaip-skill-storage-uploads/agents/openai.yaml +4 -0
  513. package/templates/.agents/skills/zaip-skill-systematic-debugging/SKILL.md +14 -0
  514. package/templates/.agents/skills/zaip-skill-systematic-debugging/agents/openai.yaml +4 -0
  515. package/templates/.agents/skills/zaip-skill-task/SKILL.md +16 -7
  516. package/templates/.agents/skills/zaip-skill-task/references/commit-policy.md +25 -0
  517. package/templates/.agents/skills/zaip-skill-test-data/SKILL.md +14 -0
  518. package/templates/.agents/skills/zaip-skill-test-data/agents/openai.yaml +4 -0
  519. package/templates/.agents/skills/zaip-skill-test-data/scripts/generate.mjs +72 -0
  520. package/templates/.agents/skills/zaip-skill-testing-strategy/SKILL.md +15 -0
  521. package/templates/.agents/skills/zaip-skill-testing-strategy/agents/openai.yaml +4 -0
  522. package/templates/.agents/skills/zaip-skill-testing-strategy/references/example-map.md +3 -0
  523. package/templates/.agents/skills/zaip-skill-tool-setup/SKILL.md +2 -0
  524. package/templates/.agents/skills/zaip-skill-website-readiness/SKILL.md +8 -0
  525. package/templates/.agents/zaip-aios/INDEX.md +9 -1
  526. package/templates/.agents/zaip-aios/README.md +23 -2
  527. package/templates/.agents/zaip-aios/VERSION +1 -1
  528. package/templates/.agents/zaip-aios/guides/01-primeiros-passos.md +5 -1
  529. package/templates/.agents/zaip-aios/guides/03-tasks.md +15 -2
  530. package/templates/.agents/zaip-aios/guides/04-specs.md +13 -0
  531. package/templates/.agents/zaip-aios/guides/05-prds.md +13 -0
  532. package/templates/.agents/zaip-aios/guides/06-execucao.md +19 -4
  533. package/templates/.agents/zaip-aios/guides/07-revisao-e-validacao.md +14 -0
  534. package/templates/.agents/zaip-aios/guides/08-contexto-e-tokens.md +4 -3
  535. package/templates/.agents/zaip-aios/guides/09-agentes-e-squads.md +17 -9
  536. package/templates/.agents/zaip-aios/guides/10-seguranca.md +11 -1
  537. package/templates/.agents/zaip-aios/guides/11-observabilidade-e-custos.md +69 -0
  538. package/templates/.agents/zaip-aios/guides/12-instalacao-e-upgrade.md +9 -4
  539. package/templates/.agents/zaip-aios/guides/13-boas-praticas.md +7 -1
  540. package/templates/.agents/zaip-aios/guides/14-troubleshooting.md +18 -0
  541. package/templates/.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md +54 -3
  542. package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +10 -2
  543. package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +186 -5
  544. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +26 -18
  545. package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +18 -2
  546. package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +14 -2
  547. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +190 -489
  548. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +61 -13
  549. package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +18 -0
  550. package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +18 -1
  551. package/templates/scripts/validate-cloud-hostinger-contract.mjs +34 -0
  552. package/templates/template-manifest.json +1229 -329
  553. package/templates/.agents/branding/.gitkeep +0 -0
  554. package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-snUCQYTC.js +0 -1
  555. package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-BPtVUGgs.js +0 -1
  556. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-3Awyaovx.js +0 -3
  557. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-GgzpZ_PY.css +0 -1
  558. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BCvZFMEf.js +0 -1
  559. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-DbaLbU2q.js +0 -68
  560. package/templates/.agents/dashboard/apps/frontend/dist/assets/dashboard-localization-CLJ0lT9v.js +0 -231
  561. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-_MEktQNM.js +0 -2
  562. package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-D9-fqq9M.js +0 -1
  563. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BDe4_Ubl.js +0 -1
  564. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-BWY-80s4.js +0 -1
  565. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js +0 -27
  566. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js +0 -1
  567. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-EwuTh8Zk.js +0 -1
  568. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-DyL61NPT.js +0 -1
  569. package/templates/.agents/growth/.gitkeep +0 -0
  570. package/templates/.agents/marketing/.gitkeep +0 -0
  571. package/templates/.agents/sales/.gitkeep +0 -0
@@ -1,53 +1,47 @@
1
+ import { readdirSync, readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
1
3
  import { describe, expect, it } from "vitest";
2
4
  import { buildHelpDocuments, pricingCopy } from "./dashboard-localization.js";
3
5
 
4
- describe("dashboard localization", () => {
5
- it("uses localized English content for the README and framework guides", () => {
6
- const documents = buildHelpDocuments("en-US", "# ZAIP-AIOS\n\nConteúdo em português.", {
7
- "../../../../zaip-aios/guides/01-primeiros-passos.md":
8
- "# Primeiros passos\n\nLeia a configuração.",
9
- "../../../../zaip-aios/guides/10-seguranca.md": "# Segurança\n\nProteja o projeto.",
10
- });
6
+ const root = resolve(import.meta.dirname, "../../../../..");
7
+ const guidesRoot = resolve(root, ".agents/zaip-aios/guides");
8
+ const sources = Object.fromEntries(
9
+ readdirSync(guidesRoot)
10
+ .filter((file) => file.endsWith(".md"))
11
+ .map((file) => [file, readFileSync(resolve(guidesRoot, file), "utf8")]),
12
+ );
11
13
 
12
- expect(documents.map((document) => document.title)).toEqual([
13
- "README · ZAIP-AIOS",
14
- "Getting started",
15
- "Security with danger-full-access",
16
- ]);
17
- expect(documents[0]?.content).toContain("Git-native operating system");
18
- expect(documents[1]?.content).toContain("Read `.agents/config/project.yaml`");
19
- expect(documents[2]?.content).toContain("Trust model");
20
- expect(documents.map((document) => document.content).join("\n")).not.toContain(
21
- "Conteúdo em português",
22
- );
14
+ describe("dashboard localization", () => {
15
+ it("uses the complete canonical English README instead of a fixed summary", () => {
16
+ const documents = buildHelpDocuments("en-US", "# README PT", sources);
17
+ expect(documents[0]?.content).toBe(readFileSync(resolve(root, "README-ENG.md"), "utf8"));
18
+ expect(documents[0]?.content).toContain("### v3 autonomy presets");
23
19
  });
24
20
 
25
- it("has English content for every guide exposed by the popup", () => {
26
- const guideFiles = [
27
- "01-primeiros-passos.md",
28
- "02-requirements.md",
29
- "03-tasks.md",
30
- "04-specs.md",
31
- "05-prds.md",
32
- "06-execucao.md",
33
- "07-revisao-e-validacao.md",
34
- "08-contexto-e-tokens.md",
35
- "09-agentes-e-squads.md",
36
- "10-seguranca.md",
37
- "11-observabilidade-e-custos.md",
38
- "12-instalacao-e-upgrade.md",
39
- "13-boas-praticas.md",
40
- "14-troubleshooting.md",
41
- "15-tools-e-codex.md",
42
- ];
43
- const sources = Object.fromEntries(
44
- guideFiles.map((file) => [`../../../../zaip-aios/guides/${file}`, `# PT ${file}`]),
45
- );
46
-
47
- const documents = buildHelpDocuments("en-US", "# README PT", sources);
21
+ it.each([
22
+ "pt-BR",
23
+ "en-US",
24
+ ] as const)("preserves every actual guide and its current contract in %s", (locale) => {
25
+ const documents = buildHelpDocuments(locale, "# README PT", sources);
26
+ expect(Object.keys(sources)).toHaveLength(28);
27
+ expect(documents).toHaveLength(29);
28
+ for (const [file, source] of Object.entries(sources)) {
29
+ const document = documents.find((entry) => entry.id === file);
30
+ expect(document?.content.endsWith(source)).toBe(true);
31
+ if (locale === "en-US") {
32
+ expect(document?.content).toContain("Language: Portuguese (pt-BR)");
33
+ expect(document?.content).toContain("an English translation is not available");
34
+ } else expect(document?.content).toBe(source);
35
+ }
36
+ });
48
37
 
49
- expect(documents).toHaveLength(guideFiles.length + 1);
50
- expect(documents.slice(1).every((document) => !document.content.startsWith("# PT"))).toBe(true);
38
+ it("propagates a changed guide instead of masking it with a fixed translation", () => {
39
+ const id = "../../../../zaip-aios/guides/01-primeiros-passos.md";
40
+ const changed = "# Primeiros passos\n\nContrato alterado: preservar o diário da Task.";
41
+ const documents = buildHelpDocuments("en-US", "# README", { [id]: changed });
42
+ expect(documents[1]).toMatchObject({ id, title: "Primeiros passos" });
43
+ expect(documents[1]?.content.endsWith(changed)).toBe(true);
44
+ expect(documents[1]?.content).not.toContain(".agents/rules/zaip/core.md");
51
45
  });
52
46
 
53
47
  it("preserves the source documentation in Portuguese", () => {
@@ -1,3 +1,5 @@
1
+ import englishReadme from "../../../../../README-ENG.md?raw";
2
+
1
3
  export type DashboardLocale = "pt-BR" | "en-US";
2
4
 
3
5
  export interface HelpDocument {
@@ -6,256 +8,6 @@ export interface HelpDocument {
6
8
  content: string;
7
9
  }
8
10
 
9
- const englishReadme = `# ZAIP-AIOS
10
-
11
- ZAIP-AIOS is a Git-native operating system for autonomous software engineering with Codex. It turns a request into structured, traceable work by defining requirements, preparing a plan, coordinating execution, running tests and reviews, and only considering a result complete when verifiable evidence exists.
12
-
13
- ## From conversation to executable work
14
-
15
- Work can start with a **Task**, a **PRD** (Product Requirements Document), or a **SPEC**. A PRD describes the problem, expected outcome, product context, and acceptance criteria. A SPEC turns that intent into a technical scope, solution, acceptance criteria, Changes, and a DAG of executable Tasks.
16
-
17
- ZAIP-AIOS does not require a VPS, a competing runtime, or mandatory API model routing. Codex remains the execution host while ZAIP-AIOS adds method, operational memory, governance, traceability, and observability to the repository.
18
-
19
- ## Six-stage method
20
-
21
- 1. **Definition** — capture PRDs, Requirements, and acceptance criteria.
22
- 2. **Planning** — prepare SPECs, Changes, dependencies, and rollback.
23
- 3. **Ready to execute** — confirm that scoped work is actionable.
24
- 4. **Execution** — implement Tasks and record Runs.
25
- 5. **Verification** — run tests, review the diff, and collect evidence.
26
- 6. **Completion** — close the lifecycle only after acceptance is satisfied.
27
-
28
- Small, independent frontend changes may use a task-first lite flow and begin directly in execution without definition or planning evidence.
29
-
30
- ## Operational dashboard
31
-
32
- The dashboard provides three complementary views:
33
-
34
- - **Operations** follows PRDs, SPECs, Tasks, Changes, Executions, Runs, and conversations.
35
- - **Cost Monitor** aggregates time, tokens, models, providers, and estimated cost.
36
- - **Traceability** connects each delivered result to its requirements, changes, runs, tests, and evidence.
37
-
38
- ## Engineering principles
39
-
40
- - Start from an observable outcome and explicit acceptance criteria.
41
- - Keep domain logic independent from infrastructure and vendors.
42
- - Prefer small, reversible, traceable changes.
43
- - Load only the context required for the active work.
44
- - Preserve unrelated changes in a dirty worktree.
45
- - Treat tests, evidence, observability, and rollback as part of delivery.
46
- - Never infer external authorization from technical capability.
47
-
48
- ## Installation and development
49
-
50
- Use the repository setup command documented for the current release, then run the doctor and integrity checks. The framework source lives in this repository; generated public and consumer artifacts are validated for release parity.
51
-
52
- The main local quality gates cover type checking, focused tests, architecture boundaries, generated text, framework integrity, and release parity. Use focused checks while implementing and the applicable final gates before completion.
53
-
54
- ## Repository structure
55
-
56
- - \`.agents/config/\` — project-owned configuration.
57
- - \`.agents/rules/\` — operational and architectural rules.
58
- - \`.agents/requirements/\` — durable Requirements and acceptance criteria.
59
- - \`.agents/skills/\` — reusable workflows.
60
- - \`.agents/records/\` — lifecycle records addressed by explicit ID.
61
- - \`.agents/records/lifecycle/\` — canonical lifecycle manifests, chunks, indexes, and summaries.
62
- - \`.agents/dashboard/\` — dashboard applications and modules.
63
- - \`.agents/runtime/\` — runtime and CLI distributable.
64
-
65
- Read runtime projections for discovery. Open lifecycle records only when you already have their ID.`;
66
-
67
- const englishGuides: Record<string, string> = {
68
- "01-primeiros-passos.md": `# Getting started
69
-
70
- 1. Read \`.agents/config/project.yaml\` and \`.agents/rules/zaip/core.md\`.
71
- 2. Consult \`.agents/records/lifecycle/\` to discover the current state.
72
- 3. Classify the work as a Task, SPEC, or PRD.
73
- 4. Load only the applicable Rules, Requirements, and skills.
74
- 5. Define verifiable acceptance before editing.
75
- 6. Execute, test, and record evidence in the active lifecycle.
76
-
77
- Do not scan \`.agents/records/\`; open a record only when you have its ID.`,
78
- "02-requirements.md": `# Requirements
79
-
80
- Use a Requirement for a durable, testable obligation.
81
-
82
- 1. Describe the outcome and boundary, not the preferred implementation.
83
- 2. Create observable acceptance criteria.
84
- 3. Record risks, dependencies, and negative cases.
85
- 4. Connect every criterion to a test or evidence.
86
- 5. Version changes without erasing the previous intent.
87
- 6. Promote only after consistency and traceability are validated.
88
-
89
- A good criterion answers unambiguously: did it pass or fail?`,
90
- "03-tasks.md": `# Tasks
91
-
92
- Use a Task for a small, independent delivery with a clear result.
93
-
94
- 1. State the objective, scope, and out-of-scope items.
95
- 2. Link applicable Requirements.
96
- 3. List likely files or components without freezing the solution.
97
- 4. Define checks proportional to risk.
98
- 5. Execute in the associated Run and attach evidence.
99
- 6. Close only when acceptance is satisfied or a blocker is proven.`,
100
- "04-specs.md": `# SPECs
101
-
102
- Use a SPEC when delivery requires multiple Tasks or dependency ordering.
103
-
104
- 1. Turn the desired result into verifiable capabilities.
105
- 2. Resolve the project stack from \`stack.id\` and \`stack.overrides\`.
106
- 3. Record the stack profile, overrides, concise description, exact versions, and workspace-verifiable sources.
107
- 4. Split delivery into small Tasks with their own acceptance.
108
- 5. Model dependencies as a DAG and avoid artificial sequences.
109
- 6. Identify critical paths, risks, and rollback.
110
- 7. Map every Requirement to Tasks and evidence.
111
- 8. Validate the SPEC before execution and block missing or inconsistent stack data.
112
-
113
- A SPEC plans delivery; it does not authorize external changes by itself.`,
114
- "05-prds.md": `# PRDs
115
-
116
- Use a PRD for a product initiative with multiple capabilities or SPECs.
117
-
118
- 1. Record the problem, audience, outcome, and metrics.
119
- 2. Define scope, constraints, and non-goals.
120
- 3. Keep the PRD independent of language, framework, database, infrastructure, and vendor.
121
- 4. Specify functional and non-functional requirements.
122
- 5. Convert capabilities into independent SPECs where the technical stack is resolved.
123
- 6. Cover risks, rollout, observability, and rollback.
124
- 7. Build the DAG and confirm that every acceptance criterion has planned evidence.`,
125
- "06-execucao.md": `# Execution
126
-
127
- 1. Confirm the lifecycle ID and governing acceptance criteria.
128
- 2. Inspect the diff and preserve unrelated changes.
129
- 3. Implement the smallest coherent increment.
130
- 4. Run focused checks after each increment.
131
- 5. Record consequential decisions, evidence, and deviations.
132
- 6. Run final gates and document rollback.
133
-
134
- Do not mark work complete because effort was spent; complete it because the outcome is verifiable.`,
135
- "07-revisao-e-validacao.md": `# Review and validation
136
-
137
- 1. Review Requirements and acceptance criteria.
138
- 2. Examine the diff, architecture boundaries, and error paths.
139
- 3. Run focused tests, then all applicable gates.
140
- 4. Verify security, compatibility, documentation, and rollback.
141
- 5. Rank findings by impact and cite concrete evidence.
142
- 6. Record the result without changing the implementation during a read-only review.`,
143
- "08-contexto-e-tokens.md": `# Context and tokens
144
-
145
- 1. Start with \`project.yaml\`, \`core.md\`, and runtime projections.
146
- 2. Load only the triggered Rule, Requirement, or skill.
147
- 3. Prefer indexes, summaries, and targeted search over full files.
148
- 4. Open records only by a known lifecycle ID.
149
- 5. Summarize stable facts and preserve literal text only when normative.
150
- 6. Remove superseded results and non-actionable detail from context.
151
-
152
- For tools, read \`catalog.yaml\`, choose an ID, and open only its manifest.`,
153
- "09-agentes-e-squads.md": `# Agents and squads
154
-
155
- 1. Delegate only concrete, independent subtasks.
156
- 2. Give each agent an objective, boundaries, inputs, and output format.
157
- 3. Avoid two agents editing the same files.
158
- 4. Centralize architecture decisions and integration in the responsible agent.
159
- 5. Require evidence, not only completion claims.
160
- 6. Use parallelism only when it shortens the critical path without increasing conflict.`,
161
- "10-seguranca.md": `# Security with danger-full-access
162
-
163
- The security profile treats unrestricted filesystem access as a technical capability, never as blanket authorization. User intent, repository scope, lifecycle write scopes, and explicit approval remain the governing boundaries.
164
-
165
- ## Trust model
166
-
167
- The user controls global opt-in and trusted projects. Repository instructions may narrow authority but cannot silently expand it. Missing or ambiguous authorization fails closed for destructive, external, credential-related, or irreversible operations.
168
-
169
- ## Security layers
170
-
171
- 1. **Global opt-in and trusted project** — unrestricted execution is enabled only by explicit user configuration in a trusted workspace.
172
- 2. **No-prompt is not authorization** — suppressing approval prompts does not grant new scope.
173
- 3. **Fail-closed hooks** — pre-tool controls reject operations that cannot be classified safely.
174
- 4. **Filesystem boundary** — writes remain inside authorized workspace roots and lifecycle scopes.
175
- 5. **Secrets protection** — credentials, tokens, environment files, and private keys are not exposed or committed.
176
- 6. **Inline execution controls** — evasive shell composition and hidden payload execution are blocked.
177
- 7. **Allowlisted egress** — external access is limited to required, trusted destinations.
178
- 8. **Destructive operations** — recursive deletion, destructive Git commands, and irreversible mutations require explicit authority.
179
- 9. **Codex forbidden rules** — known dangerous command patterns are denied before execution.
180
- 10. **Bounded GitHub deployment** — setup never implies push, and deployment is limited to the requested repository and branch.
181
- 11. **Apps, MCPs, and external tools** — integrations follow least privilege, read-only defaults, and explicit activation.
182
- 12. **Lifecycle and traceability** — Tasks, Changes, Executions, Runs, write scopes, tests, and evidence make mutations auditable.
183
- 13. **Autonomous runtime opt-in** — autonomous execution requires explicit project configuration and isolated worktrees.
184
- 14. **Integrity and regression tests** — managed files, adapters, configuration, and security rules are validated continuously.
185
-
186
- ## Residual limits
187
-
188
- No policy can eliminate risk from compromised dependencies, trusted binaries, operating-system vulnerabilities, or a user intentionally authorizing a dangerous operation. Least privilege, backups, reviewable diffs, isolated credentials, and reversible rollout remain necessary.
189
-
190
- ## Safe operation
191
-
192
- - Inspect the target and resolved path before recursive file operations.
193
- - Keep credentials outside tracked files.
194
- - Prefer focused, reversible commands.
195
- - Review diffs before commit or deployment.
196
- - Run doctor, integrity, and security checks after configuration changes.
197
- - Stop when required authority or a safe rollback path is missing.
198
-
199
- ## Rollout and rollback
200
-
201
- Roll out security changes in stages, validate on representative repositories, and preserve the previous known-good configuration. Rollback means restoring the prior managed policy, rebuilding adapters, rerunning integrity checks, and confirming that the workspace remains within its intended trust boundary.`,
202
- "11-observabilidade-e-custos.md": `# Observability and costs
203
-
204
- 1. Select the Run by ID.
205
- 2. Check duration, tokens, cost, retries, and rework.
206
- 3. Compare planned acceptance with produced evidence.
207
- 4. Identify slow gates, excessive context, and repeated calls.
208
- 5. Aggregate trends without exposing sensitive prompts or secrets.
209
- 6. Turn recurring findings into a Rule, Requirement, or skill improvement.`,
210
- "12-instalacao-e-upgrade.md": `# Installation and upgrade
211
-
212
- 1. Check the current version and whether local changes are clean or intentionally preserved.
213
- 2. Run doctor and integrity checks before changing anything.
214
- 3. Run a dry-run of installation, migration, or upgrade.
215
- 4. Review managed, public, and preserved files.
216
- 5. Apply the change, validate adapters, and run gates.
217
- 6. Test rollback and confirm the final version.
218
-
219
- \`framework.lock.yaml\` is relevant to this flow; do not load it during ordinary work.`,
220
- "13-boas-praticas.md": `# Best practices
221
-
222
- - Start from the outcome and acceptance criteria, not the tool.
223
- - Keep the domain independent from infrastructure.
224
- - Make changes small, reversible, and traceable.
225
- - Validate early with deterministic, focused tests.
226
- - Prefer explicit configuration over hidden conventions.
227
- - Load context on demand and preserve the token budget.
228
- - Treat documentation, observability, and rollback as part of delivery.`,
229
- "14-troubleshooting.md": `# Troubleshooting
230
-
231
- 1. Reproduce the problem with the smallest possible command.
232
- 2. Read the complete message and identify the first causal error.
233
- 3. Run doctor, focused validators, and \`git diff --check\`.
234
- 4. Check versions, paths, encoding, variables, and managed files.
235
- 5. Compare against runtime projections without scanning records.
236
- 6. Fix the cause, repeat the reproduction, and then run the full applicable gates.
237
-
238
- For installation or integrity problems, consult \`framework.lock.yaml\`.`,
239
- "15-tools-e-codex.md": `# Tools and Codex setup
240
-
241
- 1. Ask the agent to list or activate a tool; it uses the tool-setup skill.
242
- 2. The skill reads only the applicable catalog and manifest.
243
- 3. A trusted MCP is registered disabled and validated before activation.
244
- 4. An API without a trusted MCP uses the API-to-MCP workflow to generate a secure adapter.
245
- 5. Secrets are never pasted into chat; names belong in \`.agents/.env.example\` and values in ignored local storage.
246
- 6. Configuration changes must be reversible and preserve existing preferences.
247
-
248
- Enable public, read-only, unauthenticated integrations by default, such as official documentation. Browser automation must be an explicit development-profile choice because it starts processes and expands the operational surface.
249
-
250
- ## Local MCP generated from an API
251
-
252
- Model an \`adapter.yaml\` from official documentation, scaffold the local MCP, run its doctor, test read-only calls, generate a Codex preview, and apply only after review. The generated server uses STDIO, does not open a port, and blocks writes without explicit approval.
253
-
254
- ## OpenAI documentation
255
-
256
- The default profile enables official OpenAI developer documentation without credentials and in read-only mode. Questions about OpenAI APIs, models, SDKs, Codex, or MCP should use the OpenAI docs skill and cite the consulted page.`,
257
- };
258
-
259
11
  export function buildHelpDocuments(
260
12
  locale: DashboardLocale,
261
13
  readme: string,
@@ -264,7 +16,13 @@ export function buildHelpDocuments(
264
16
  const guides = Object.entries(guideSources)
265
17
  .map(([path, source]) => {
266
18
  const fileName = path.split("/").at(-1) ?? path;
267
- const content = locale === "en-US" ? (englishGuides[fileName] ?? source) : source;
19
+ // Guides currently have one canonical Portuguese source. Never substitute
20
+ // independently maintained summaries that can conceal changed contracts.
21
+ const content =
22
+ locale === "en-US"
23
+ ? "> Language: Portuguese (pt-BR). Current canonical guide; an English translation is not available.\n\n" +
24
+ source
25
+ : source;
268
26
  return { id: path, title: documentTitle(content, fileName), content };
269
27
  })
270
28
  .sort((a, b) => a.title.localeCompare(b.title, locale));
@@ -1,7 +1,12 @@
1
1
  export interface ProjectOverview {
2
2
  framework_version: string | null;
3
+ installation?: ProjectInstallationSummary;
4
+ installation_profile?: "full" | "dev-lite" | "lite" | "custom";
5
+ health?: { state: "healthy" | "degraded" | "unknown"; scope: "settings_runtime" };
6
+ dependencies?: ProjectInstallationDimension & { installed: number | null };
7
+ documentation?: ProjectInstallationDimension & { available: number | null };
3
8
  metrics: Array<{
4
- id: "agents" | "squads" | "skills" | "rules" | "hooks" | "database";
9
+ id: "agents" | "squads" | "skills" | "rules" | "hooks";
5
10
  label: string;
6
11
  value: number | string;
7
12
  }>;
@@ -23,6 +28,34 @@ export interface ProjectOverview {
23
28
  | "sales_playbook";
24
29
  label: string;
25
30
  artifact: string;
26
- available: boolean;
31
+ available: boolean | null;
27
32
  }>;
28
33
  }
34
+
35
+ export type ProjectInstallationState =
36
+ | "complete"
37
+ | "incomplete"
38
+ | "unknown"
39
+ | "unavailable"
40
+ | "not_applicable";
41
+
42
+ export interface ProjectInstallationDimension {
43
+ applicable: number | null;
44
+ missing: number | null;
45
+ unknown: number | null;
46
+ not_applicable: number | null;
47
+ percent: number | null;
48
+ state?: ProjectInstallationState;
49
+ }
50
+
51
+ /** New fields are optional while older dashboard runtimes are still supported. */
52
+ export interface ProjectInstallationSummary {
53
+ /** @deprecated Legacy aggregate; it must never be interpreted as dependency health. */
54
+ completed?: number;
55
+ /** @deprecated Legacy aggregate; it must never be interpreted as dependency health. */
56
+ total?: number;
57
+ /** @deprecated Legacy aggregate; it must never be interpreted as dependency health. */
58
+ percent?: number;
59
+ /** @deprecated Legacy aggregate; it must never be interpreted as dependency health. */
60
+ state?: "complete" | "incomplete";
61
+ }
@@ -0,0 +1,17 @@
1
+ export function retryDashboardLoad(
2
+ failedArea: string | null,
3
+ selectedTraceTaskId: string | null,
4
+ operations: unknown,
5
+ loadCostSummary: () => Promise<unknown>,
6
+ openTrace: (id: string) => Promise<unknown>,
7
+ loadOperationsDetails: () => Promise<unknown>,
8
+ refresh: () => Promise<unknown>,
9
+ setError: (error: string | null) => void,
10
+ ): void {
11
+ setError(null);
12
+ if (failedArea === "costs") void loadCostSummary();
13
+ else if (failedArea === "traceability" && selectedTraceTaskId)
14
+ void openTrace(selectedTraceTaskId);
15
+ else if (failedArea === "operations" && operations !== null) void loadOperationsDetails();
16
+ else void refresh();
17
+ }
@@ -0,0 +1,29 @@
1
+ import { renderAppSetupRoute } from "./AppSetupRoutes.js";
2
+
3
+ type SetupInput = Parameters<typeof renderAppSetupRoute>[0];
4
+
5
+ export function createDashboardSetupRoute(
6
+ api: SetupInput["api"],
7
+ costLocale: SetupInput["costLocale"],
8
+ fxRate: SetupInput["fxRate"],
9
+ navigate: SetupInput["navigate"],
10
+ pathname: SetupInput["pathname"],
11
+ pricing: SetupInput["pricing"],
12
+ refresh: () => Promise<unknown>,
13
+ setFxRate: SetupInput["setFxRate"],
14
+ setPricing: SetupInput["setPricing"],
15
+ ) {
16
+ return renderAppSetupRoute({
17
+ api,
18
+ costLocale,
19
+ fxRate,
20
+ navigate,
21
+ pathname,
22
+ pricing,
23
+ refresh: async () => {
24
+ await refresh();
25
+ },
26
+ setFxRate,
27
+ setPricing,
28
+ });
29
+ }
@@ -0,0 +1,51 @@
1
+ import { afterEach, expect, it, vi } from "vitest";
2
+ import { createDashboardViewSelector } from "./dashboard-view-actions.js";
3
+
4
+ afterEach(() => vi.unstubAllGlobals());
5
+
6
+ function fixture(controller: AbortController | null) {
7
+ vi.stubGlobal("window", { scrollTo: vi.fn() });
8
+ const input: Parameters<typeof createDashboardViewSelector>[0] = {
9
+ setDashboardView: vi.fn(),
10
+ costsLoadedRef: { current: false },
11
+ currency: "BRL",
12
+ costs: null,
13
+ loadCostSummary: vi.fn(async () => undefined),
14
+ costSummaryAbortRef: { current: controller },
15
+ traceTasks: [],
16
+ boardRequestVersionRef: { current: 0 },
17
+ loadMoreTraceTasks: vi.fn(async () => []),
18
+ setTraceTasks: vi.fn(),
19
+ setSelectedTraceTaskId: vi.fn(),
20
+ openTrace: vi.fn(async () => undefined),
21
+ setTrace: vi.fn(),
22
+ setTraceLoadingTaskId: vi.fn(),
23
+ };
24
+ return input;
25
+ }
26
+
27
+ it("joins the active summary when navigation and the automatic load coincide", async () => {
28
+ const controller = new AbortController();
29
+ const input = fixture(controller);
30
+ await createDashboardViewSelector(input)("cost-monitor");
31
+ expect(input.loadCostSummary).not.toHaveBeenCalled();
32
+ expect(controller.signal.aborted).toBe(false);
33
+ expect(input.setDashboardView).toHaveBeenCalledWith("cost-monitor");
34
+ });
35
+
36
+ it("permits a retry after failure cleanup and an explicitly aborted prior request", async () => {
37
+ const input = fixture(null);
38
+ await createDashboardViewSelector(input)("cost-monitor");
39
+ expect(input.loadCostSummary).toHaveBeenCalledTimes(1);
40
+ const controller = new AbortController();
41
+ controller.abort();
42
+ input.costSummaryAbortRef.current = controller;
43
+ await createDashboardViewSelector(input)("cost-monitor");
44
+ expect(input.loadCostSummary).toHaveBeenCalledTimes(2);
45
+ });
46
+
47
+ it("still aborts the request when leaving Cost Monitor", async () => {
48
+ const controller = new AbortController();
49
+ await createDashboardViewSelector(fixture(controller))("operations");
50
+ expect(controller.signal.aborted).toBe(true);
51
+ });
@@ -0,0 +1,68 @@
1
+ import { shouldLoadCostSummary } from "./AppRequestGuards.js";
2
+ import type { DashboardView } from "./DashboardCapabilityNav.js";
3
+
4
+ type TraceTask = {
5
+ id: string;
6
+ status: string;
7
+ finished_at: string | null;
8
+ updated_at: string;
9
+ };
10
+
11
+ type DashboardViewActions<T extends TraceTask> = {
12
+ setDashboardView: (view: DashboardView) => void;
13
+ costsLoadedRef: { current: boolean };
14
+ currency: "BRL" | "USD";
15
+ costs: { currency: string } | null;
16
+ loadCostSummary: () => Promise<unknown>;
17
+ costSummaryAbortRef: { current: AbortController | null };
18
+ traceTasks: T[];
19
+ boardRequestVersionRef: { current: number };
20
+ loadMoreTraceTasks: (append: boolean, includeCompleted: boolean) => Promise<T[]>;
21
+ setTraceTasks: (tasks: T[]) => void;
22
+ setSelectedTraceTaskId: (id: string) => void;
23
+ openTrace: (id: string) => Promise<unknown>;
24
+ setTrace: (value: null) => void;
25
+ setTraceLoadingTaskId: (id: null) => void;
26
+ };
27
+
28
+ export function createDashboardViewSelector<T extends TraceTask>(input: DashboardViewActions<T>) {
29
+ return async (nextView: DashboardView) => {
30
+ input.setDashboardView(nextView);
31
+ window.scrollTo({ left: 0, top: 0 });
32
+ if (nextView === "cost-monitor") {
33
+ if (
34
+ shouldLoadCostSummary({
35
+ costsLoaded: input.costsLoadedRef.current,
36
+ currency: input.currency,
37
+ snapshotCurrency: input.costs?.currency,
38
+ }) &&
39
+ (input.costSummaryAbortRef.current === null ||
40
+ input.costSummaryAbortRef.current.signal.aborted)
41
+ )
42
+ void input.loadCostSummary();
43
+ } else {
44
+ input.costSummaryAbortRef.current?.abort();
45
+ }
46
+ if (nextView === "traceability") {
47
+ let candidates = input.traceTasks;
48
+ if (candidates.length === 0) {
49
+ const requestVersion = input.boardRequestVersionRef.current;
50
+ candidates = await input.loadMoreTraceTasks(false, true);
51
+ if (requestVersion !== input.boardRequestVersionRef.current) return;
52
+ input.setTraceTasks(candidates);
53
+ }
54
+ const ordered = candidates.toSorted(
55
+ (a, b) =>
56
+ Date.parse(b.finished_at ?? b.updated_at) - Date.parse(a.finished_at ?? a.updated_at),
57
+ );
58
+ const latest = ordered.find((task) => task.status === "completed") ?? ordered[0];
59
+ if (latest) {
60
+ input.setSelectedTraceTaskId(latest.id);
61
+ void input.openTrace(latest.id);
62
+ }
63
+ return;
64
+ }
65
+ input.setTrace(null);
66
+ input.setTraceLoadingTaskId(null);
67
+ };
68
+ }
@@ -4,6 +4,7 @@ import { OperationsPage } from "@zaip-ai/dashboard-operations/react";
4
4
  import { createElement } from "react";
5
5
  import { renderToStaticMarkup } from "react-dom/server";
6
6
  import { describe, expect, it, vi } from "vitest";
7
+ import { readAppCompositionSource } from "./__tests__/app-composition-support.js";
7
8
  import { PeriodTransitionOverlay, PeriodTransitionShell } from "./App.js";
8
9
 
9
10
  const data = {
@@ -42,6 +43,41 @@ function renderPeriod(preset: "today" | "yesterday", loading = false) {
42
43
  }
43
44
 
44
45
  describe("App-owned Operations period render", () => {
46
+ it("renders factual All Time dates while a bounded selection ignores arriving coverage", () => {
47
+ const render = (preset: "all" | "this-month", firstDay: string) =>
48
+ renderToStaticMarkup(
49
+ createElement(OperationsPage, {
50
+ capabilityNavigation: createElement("span"),
51
+ data,
52
+ datePreset: preset,
53
+ dateRange: { start: "2026-09-01", end: "2026-09-10" },
54
+ loading: false,
55
+ currency: "BRL",
56
+ locale: "pt-BR",
57
+ onDateChange: vi.fn(),
58
+ onLocaleChange: vi.fn(),
59
+ onOpenDocument: vi.fn(),
60
+ onOpenTask: vi.fn(async () => false),
61
+ onPriorityChange: vi.fn(async () => undefined),
62
+ onRefresh: vi.fn(),
63
+ factualCostPeriods: {
64
+ day: [firstDay, "2026-09-10"].map((key) => ({
65
+ key,
66
+ estimated_usd: null,
67
+ estimated_brl: 0,
68
+ duration_ms: null,
69
+ })),
70
+ },
71
+ }),
72
+ );
73
+ expect(render("all", "2026-06-02")).toContain('value="2026-06-02"');
74
+ expect(render("all", "2026-07-04")).toContain('value="2026-07-04"');
75
+ const bounded = render("this-month", "2026-06-02");
76
+ expect(bounded).toContain('value="2026-09-01"');
77
+ expect(bounded).not.toContain('value="2026-06-02"');
78
+ expect(bounded).toContain('option value="this-month" selected=""');
79
+ });
80
+
45
81
  it("renders Today then Yesterday while loading omits duplicated period controls", () => {
46
82
  const today = renderPeriod("today");
47
83
  const yesterdayLoading = renderPeriod("yesterday", true);
@@ -95,8 +131,8 @@ describe("App-owned Operations period render", () => {
95
131
  });
96
132
 
97
133
  it("reserves the global gate for a period replacement, not secondary pages", () => {
98
- const app = readFileSync(new URL("./App.tsx", import.meta.url), "utf8");
99
- expect(app).toContain("const globalLoadingPending =");
134
+ const app = readAppCompositionSource();
135
+ expect(app).toContain("globalLoadingPending:");
100
136
  expect(app).toContain("periodTransitionPending ||");
101
137
  expect(app).not.toContain("entityPage.loading ||");
102
138
  expect(app).not.toContain("Object.values(boardStates).some((state) => state.loading)");