@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
@@ -0,0 +1,98 @@
1
+ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
2
+ import { join, resolve } from "node:path";
3
+ import { expect, it } from "vitest";
4
+ import { createDashboardApp } from "./server.js";
5
+ import { rebuildSqliteReadModel, SqliteReadModelFileSystem } from "./sqlite-read-model.js";
6
+
7
+ it("serves risk counts over the same non-draft population as total and statuses", async () => {
8
+ const parent = resolve(import.meta.dirname, "../../../../../../.local/sqlite/tests");
9
+ await mkdir(parent, { recursive: true });
10
+ const root = await mkdtemp(join(parent, "risk-population-"));
11
+ let filesystem: SqliteReadModelFileSystem | undefined;
12
+ try {
13
+ const records = join(root, ".agents/records/tasks/2026/09");
14
+ await mkdir(records, { recursive: true });
15
+ await mkdir(join(root, ".agents/config"), { recursive: true });
16
+ await writeFile(
17
+ join(root, ".agents/config/project.yaml"),
18
+ "schema_version: 1\nzaip:\n enabled: true\nproject:\n id: sqlite-test\n name: sqlite-test\n timezone: UTC\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",
19
+ );
20
+ await writeFile(
21
+ join(root, ".agents/config/framework.lock.yaml"),
22
+ "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",
23
+ );
24
+ for (const [id, status, risk] of [
25
+ ["TASK-DRAFT", "draft", "critical"],
26
+ ["TASK-PLANNED", "planned", "lite"],
27
+ ["TASK-SECOND", "planned", "lite"],
28
+ ["TASK-COMPLETED", "completed", "standard"],
29
+ ]) {
30
+ await writeFile(
31
+ join(records, `${id}.md`),
32
+ `---\nid: ${id}\ntitle: ${id}\nstatus: ${status}\nrisk: ${risk}\ncreated_at: 2026-09-${id === "TASK-COMPLETED" ? "02" : "01"}T12:00:00.000Z\n---\n`,
33
+ "utf8",
34
+ );
35
+ }
36
+ await rebuildSqliteReadModel(root);
37
+ filesystem = new SqliteReadModelFileSystem(root);
38
+ expect(filesystem.firstFoldViewportAllTime().task_risk_counts).toEqual({
39
+ lite: 2,
40
+ standard: 1,
41
+ });
42
+ expect(filesystem.firstFoldAllTime().task_risk_counts).toEqual({ lite: 2, standard: 1 });
43
+ for (const view of [
44
+ "cost_monitor_daily",
45
+ "cost_monitor_monthly",
46
+ "cost_monitor_annual",
47
+ ] as const) {
48
+ const page = filesystem.viewPage(view, { limit: 10 });
49
+ const daily = view === "cost_monitor_daily";
50
+ expect(page.rows).toHaveLength(daily ? 2 : 1);
51
+ expect(page.totals).toMatchObject({ task_count: 3 });
52
+ expect(page).toMatchObject({ period_averages: { BRL: { tasks: daily ? 1.5 : 3 } } });
53
+ }
54
+ const first = filesystem.viewPage("cost_monitor_daily", { limit: 1, offset: 0 });
55
+ const second = filesystem.viewPage("cost_monitor_daily", { limit: 1, offset: 1 });
56
+ expect(first.rows[0]).toMatchObject({ task_count: 1 });
57
+ expect(second.rows[0]).toMatchObject({ task_count: 2 });
58
+ expect(first.period_averages).toEqual(second.period_averages);
59
+ expect(first).toMatchObject({
60
+ period_averages: { BRL: { tasks: 1.5, cost: null, tokens: null } },
61
+ });
62
+ expect(
63
+ filesystem.viewPage("cost_monitor_daily", { limit: 1, query: "2026-09-01" }),
64
+ ).toMatchObject({ total_count: 1, period_averages: { BRL: { tasks: 2 } } });
65
+ const app = createDashboardApp(root, "fixture-only", undefined, {
66
+ filesystem,
67
+ watchSources: false,
68
+ });
69
+ for (const scope of ["quick", "overview"]) {
70
+ const response = await app.request(`/api/v2/operations?scope=${scope}`, {
71
+ headers: { "x-zaip-session": "fixture-only" },
72
+ });
73
+ expect(response.status, await response.clone().text()).toBe(200);
74
+ const data = (await response.json()) as {
75
+ summary: {
76
+ overview_metrics: {
77
+ task_count: number;
78
+ task_status_counts: Record<string, number>;
79
+ task_risk_counts: Record<string, number>;
80
+ };
81
+ };
82
+ };
83
+ const metric = data.summary.overview_metrics;
84
+ expect(metric.task_count).toBe(3);
85
+ expect(metric.task_status_counts).toEqual({ planned: 2, completed: 1 });
86
+ expect(metric.task_risk_counts).toEqual({ lite: 2, standard: 1 });
87
+ expect(
88
+ Object.values(metric.task_risk_counts).reduce<number>(
89
+ (sum, count) => sum + Number(count),
90
+ 0,
91
+ ),
92
+ ).toBe(metric.task_count);
93
+ }
94
+ } finally {
95
+ filesystem?.close();
96
+ await rm(root, { recursive: true, force: true });
97
+ }
98
+ });
@@ -0,0 +1,390 @@
1
+ import { costInvocationProjectionSelect } from "./sqlite-cost-invocation-projection.js";
2
+ export const baseViewSql = `
3
+ CREATE INDEX zaip_activities_agent_run ON zaip_aios_activities(activity_source_kind, agent_run_id, occurred_day_sp, occurred_at DESC);
4
+ CREATE INDEX zaip_activities_relationships ON zaip_aios_activities(task_id, spec_id, prd_id, execution_id, conversation_id);
5
+ CREATE INDEX zaip_activities_task_day ON zaip_aios_activities(payload_type, task_id, occurred_day_sp) WHERE task_id IS NOT NULL;
6
+ CREATE INDEX zaip_activities_spec_day ON zaip_aios_activities(payload_type, spec_id, occurred_day_sp) WHERE spec_id IS NOT NULL;
7
+ CREATE INDEX zaip_activities_prd_day ON zaip_aios_activities(payload_type, prd_id, occurred_day_sp) WHERE prd_id IS NOT NULL;
8
+ CREATE INDEX zaip_activities_agent ON zaip_aios_activities(zaip_agent, zaip_agent_persona, zaip_agent_job, provider, model);
9
+ CREATE UNIQUE INDEX zaip_activities_run_id ON zaip_aios_activities(run_id) WHERE payload_type IS NULL;
10
+ CREATE INDEX zaip_activities_run_hierarchy ON zaip_aios_activities(root_run_id, parent_run_id, run_role);
11
+ CREATE INDEX zaip_activities_period ON zaip_aios_activities(occurred_day_sp, occurred_at DESC);
12
+ -- Dimension residuals first restrict the visible period, then group
13
+ -- usage by invocation. This composite index avoids a temporary
14
+ -- grouping B-tree on Models/Providers filtered reads.
15
+ CREATE INDEX zaip_activities_period_invocation ON zaip_aios_activities(occurred_day_sp, agent_invocation_id)
16
+ WHERE agent_invocation_id IS NOT NULL;
17
+ CREATE INDEX zaip_activities_status ON zaip_aios_activities(activity_source_kind, status, phase);
18
+ CREATE INDEX IF NOT EXISTS zaip_activities_payload ON zaip_aios_activities(payload_type, activity_key);
19
+ -- File lookups must not parse every JSON payload (including its full
20
+ -- content) on each read. The file view uses this path-only index for
21
+ -- binary equality and cheap LIKE scans without changing their semantics.
22
+ CREATE INDEX zaip_activities_file_path ON zaip_aios_activities(json_extract(payload_json, '$.path')) WHERE payload_type='file';
23
+ CREATE INDEX zaip_activities_work_item_identity ON zaip_aios_activities(json_extract(payload_json, '$.entity_kind'), json_extract(payload_json, '$.id')) WHERE payload_type='work_item';
24
+ CREATE VIEW files AS SELECT json_extract(payload_json, '$.path') AS path, json_extract(payload_json, '$.content') AS content, json_extract(payload_json, '$.mtime_ms') AS mtime_ms, json_extract(payload_json, '$.size_bytes') AS size_bytes, json_extract(payload_json, '$.content_sha256') AS content_sha256, json_extract(payload_json, '$.artifact_kind') AS artifact_kind, json_extract(payload_json, '$.artifact_id') AS artifact_id, json_extract(payload_json, '$.artifact_occurred_at') AS artifact_occurred_at, json_extract(payload_json, '$.artifact_occurred_day_sp') AS artifact_occurred_day_sp, json_extract(payload_json, '$.artifact_task_id') AS artifact_task_id, json_extract(payload_json, '$.artifact_change_id') AS artifact_change_id, json_extract(payload_json, '$.artifact_run_id') AS artifact_run_id FROM zaip_aios_activities INDEXED BY zaip_activities_file_path WHERE payload_type='file';
25
+ CREATE VIEW read_model_source_state AS SELECT json_extract(payload_json, '$.source_path') AS source_path, json_extract(payload_json, '$.source_hash') AS source_hash, json_extract(payload_json, '$.mtime_ms') AS mtime_ms, json_extract(payload_json, '$.ctime_ms') AS ctime_ms, json_extract(payload_json, '$.size_bytes') AS size_bytes, json_extract(payload_json, '$.file_identity') AS file_identity, json_extract(payload_json, '$.source_kind') AS source_kind, json_extract(payload_json, '$.last_processed_at') AS last_processed_at FROM zaip_aios_activities WHERE payload_type='source_state';
26
+ CREATE VIEW read_model_metadata AS SELECT json_extract(payload_json, '$.key') AS key, json_extract(payload_json, '$.value') AS value FROM zaip_aios_activities WHERE payload_type='metadata';
27
+ CREATE VIEW canonical_work_items AS SELECT json_extract(payload_json, '$.entity_kind') AS entity_kind, json_extract(payload_json, '$.id') AS id, json_extract(payload_json, '$.title') AS title, json_extract(payload_json, '$.status') AS status, json_extract(payload_json, '$.stage') AS stage, json_extract(payload_json, '$.risk') AS risk, json_extract(payload_json, '$.spec_id') AS spec_id, json_extract(payload_json, '$.change_id') AS change_id, json_extract(payload_json, '$.creation_run_id') AS creation_run_id, json_extract(payload_json, '$.completed_run_id') AS completed_run_id, json_extract(payload_json, '$.occurred_at') AS occurred_at, json_extract(payload_json, '$.occurred_day_sp') AS occurred_day_sp FROM zaip_aios_activities WHERE payload_type='work_item';
28
+ CREATE VIEW canonical_executions AS SELECT json_extract(payload_json, '$.id') AS id, json_extract(payload_json, '$.status') AS status, json_extract(payload_json, '$.kind') AS kind, json_extract(payload_json, '$.origin_type') AS origin_type, json_extract(payload_json, '$.origin_id') AS origin_id, json_extract(payload_json, '$.created_at') AS created_at, json_extract(payload_json, '$.occurred_day_sp') AS occurred_day_sp, json_extract(payload_json, '$.finished_at') AS finished_at, json_extract(payload_json, '$.source_path') AS source_path FROM zaip_aios_activities WHERE payload_type='execution';
29
+ CREATE VIEW canonical_changes AS SELECT json_extract(payload_json, '$.id') AS id, json_extract(payload_json, '$.title') AS title, json_extract(payload_json, '$.status') AS status, json_extract(payload_json, '$.risk') AS risk, json_extract(payload_json, '$.source_type') AS source_type, json_extract(payload_json, '$.source_id') AS source_id, json_extract(payload_json, '$.source_spec_id') AS source_spec_id, json_extract(payload_json, '$.source_prd_id') AS source_prd_id, json_extract(payload_json, '$.requirement_ids_json') AS requirement_ids_json, json_extract(payload_json, '$.acceptance_ids_json') AS acceptance_ids_json, json_extract(payload_json, '$.task_ids_json') AS task_ids_json, json_extract(payload_json, '$.result') AS result, json_extract(payload_json, '$.created_at') AS created_at, json_extract(payload_json, '$.occurred_day_sp') AS occurred_day_sp, json_extract(payload_json, '$.source_path') AS source_path FROM zaip_aios_activities WHERE payload_type='change';
30
+ CREATE VIEW canonical_decisions AS SELECT json_extract(payload_json, '$.id') AS id, json_extract(payload_json, '$.title') AS title, json_extract(payload_json, '$.origin') AS origin, json_extract(payload_json, '$.scope_type') AS scope_type, json_extract(payload_json, '$.scope_id') AS scope_id, json_extract(payload_json, '$.created_at') AS created_at, json_extract(payload_json, '$.occurred_day_sp') AS occurred_day_sp, json_extract(payload_json, '$.source_path') AS source_path FROM zaip_aios_activities WHERE payload_type='decision';
31
+ CREATE VIEW canonical_run_index AS SELECT json_extract(payload_json, '$.run_id') AS run_id, json_extract(payload_json, '$.occurred_at') AS occurred_at, json_extract(payload_json, '$.occurred_day_sp') AS occurred_day_sp, json_extract(payload_json, '$.task_id') AS task_id, json_extract(payload_json, '$.phase') AS phase, json_extract(payload_json, '$.run_role') AS run_role, json_extract(payload_json, '$.duration_ms') AS duration_ms, json_extract(payload_json, '$.source_event_count') AS source_event_count, json_extract(payload_json, '$.zaip_agent') AS zaip_agent, json_extract(payload_json, '$.provider') AS provider, json_extract(payload_json, '$.model') AS model, json_extract(payload_json, '$.status') AS status FROM zaip_aios_activities WHERE payload_type='run_index';
32
+ CREATE VIEW invocation_usage_segments AS SELECT json_extract(payload_json, '$.agent_invocation_id') AS agent_invocation_id, json_extract(payload_json, '$.provider') AS provider, json_extract(payload_json, '$.model') AS model, json_extract(payload_json, '$.service_tier') AS service_tier, json_extract(payload_json, '$.reasoning_effort') AS reasoning_effort, json_extract(payload_json, '$.input_tokens') AS input_tokens, json_extract(payload_json, '$.cached_input_tokens') AS cached_input_tokens, json_extract(payload_json, '$.uncached_input_tokens') AS uncached_input_tokens, json_extract(payload_json, '$.output_tokens') AS output_tokens, json_extract(payload_json, '$.reasoning_tokens') AS reasoning_tokens, json_extract(payload_json, '$.visible_output_tokens') AS visible_output_tokens, json_extract(payload_json, '$.total_tokens') AS total_tokens, json_extract(payload_json, '$.input_rate_usd_per_million') AS input_rate_usd_per_million, json_extract(payload_json, '$.cached_input_rate_usd_per_million') AS cached_input_rate_usd_per_million, json_extract(payload_json, '$.output_rate_usd_per_million') AS output_rate_usd_per_million, json_extract(payload_json, '$.reasoning_rate_usd_per_million') AS reasoning_rate_usd_per_million, json_extract(payload_json, '$.context_input_multiplier') AS context_input_multiplier, json_extract(payload_json, '$.context_output_multiplier') AS context_output_multiplier, json_extract(payload_json, '$.speed_cost_multiplier') AS speed_cost_multiplier, json_extract(payload_json, '$.pricing_scenario') AS pricing_scenario, json_extract(payload_json, '$.standard_cost_usd') AS standard_cost_usd, json_extract(payload_json, '$.speed_uplift_usd') AS speed_uplift_usd, json_extract(payload_json, '$.input_cost_usd') AS input_cost_usd, json_extract(payload_json, '$.cached_input_cost_usd') AS cached_input_cost_usd, json_extract(payload_json, '$.output_cost_usd') AS output_cost_usd, json_extract(payload_json, '$.reasoning_cost_usd') AS reasoning_cost_usd, json_extract(payload_json, '$.calculated_cost_usd') AS calculated_cost_usd, json_extract(payload_json, '$.recorded_cost_usd') AS recorded_cost_usd, json_extract(payload_json, '$.cost_variance_usd') AS cost_variance_usd, json_extract(payload_json, '$.cost_usd') AS cost_usd, json_extract(payload_json, '$.cost_brl') AS cost_brl, json_extract(payload_json, '$.cost_method') AS cost_method, json_extract(payload_json, '$.pricing_model') AS pricing_model, json_extract(payload_json, '$.pricing_source') AS pricing_source, json_extract(payload_json, '$.fx_rate') AS fx_rate FROM zaip_aios_activities WHERE payload_type='usage_segment';
33
+ CREATE VIEW attributed_token_active_facts AS SELECT json_extract(payload_json, '$.activity_row_id') AS activity_row_id, json_extract(payload_json, '$.occurred_day_sp') AS occurred_day_sp, json_extract(payload_json, '$.attributed_token_active_ms') AS attributed_token_active_ms FROM zaip_aios_activities WHERE payload_type='duration_allocation';
34
+ CREATE VIEW canonical_artifacts AS SELECT artifact_kind, artifact_id, artifact_occurred_at AS occurred_at, artifact_occurred_day_sp AS occurred_day_sp, artifact_task_id AS task_id, artifact_change_id AS change_id, artifact_run_id AS run_id, path AS source_path FROM files WHERE artifact_kind IS NOT NULL AND artifact_occurred_at IS NOT NULL;
35
+ CREATE VIEW activities AS
36
+ SELECT a.*, f.attributed_token_active_ms
37
+ FROM zaip_aios_activities a
38
+ LEFT JOIN (
39
+ SELECT activity_row_id, SUM(attributed_token_active_ms) AS attributed_token_active_ms
40
+ FROM attributed_token_active_facts GROUP BY activity_row_id
41
+ ) f USING(activity_row_id)
42
+ WHERE a.payload_type IS NULL;
43
+ -- Macro-only allocations are persisted as technical payloads to keep
44
+ -- the global Run population unique. SPEC summaries opt into this
45
+ -- projection explicitly; all other activity and cost views do not.
46
+ CREATE VIEW shared_creation_allocations AS
47
+ SELECT a.*, NULL AS attributed_token_active_ms
48
+ FROM zaip_aios_activities a WHERE payload_type='shared_creation_allocation';
49
+ CREATE VIEW macro_spec_activities AS
50
+ SELECT a.* FROM activities a WHERE a.spec_id IS NOT NULL
51
+ AND NOT EXISTS (
52
+ SELECT 1 FROM shared_creation_allocations allocation
53
+ WHERE allocation.spec_id=a.spec_id AND allocation.run_id=a.run_id
54
+ )
55
+ UNION ALL SELECT * FROM shared_creation_allocations;
56
+ CREATE VIEW attributed_token_active AS
57
+ SELECT f.activity_row_id, f.occurred_day_sp, f.attributed_token_active_ms,
58
+ a.run_id, a.execution_id, a.task_id, a.spec_id, a.prd_id, a.conversation_id,
59
+ a.zaip_agent, a.provider, a.model, a.phase, a.status
60
+ FROM attributed_token_active_facts f JOIN zaip_aios_activities a USING(activity_row_id);
61
+ CREATE VIEW agent_runs AS SELECT * FROM activities WHERE activity_source_kind = 'agent_run';
62
+ CREATE VIEW root_runs AS SELECT * FROM activities WHERE run_role = 'root';
63
+ CREATE VIEW sub_runs AS SELECT * FROM activities WHERE run_role = 'subrun';
64
+ CREATE VIEW invocations AS SELECT activity_row_id, activity_key, version_activity_id, source_occurred_at, root_agent_run_id AS root_agent_invocation_id, parent_agent_run_id AS parent_agent_invocation_id, execution_id, task_id, spec_id, prd_id, change_id, conversation_id, run_id, occurred_at, occurred_day_sp, invocation_kind, delegation_depth, zaip_agent, zaip_agent_persona, zaip_agent_job, zaip_agent_role, client, provider, model, phase, purpose, status, source_started_at, source_finished_at, attributed_token_active_ms, attributed_token_active_ms AS duration_ms, CASE WHEN attributed_token_active_ms IS NOT NULL THEN 'observed' ELSE 'unavailable' END AS duration_provenance, CASE WHEN attributed_token_active_ms IS NOT NULL THEN 'attributed_token_active' ELSE NULL END AS duration_fact_provenance, input_tokens, cached_input_tokens, output_tokens, reasoning_tokens, total_tokens, token_source, cost_usd, cost_brl, cost_method, pricing_model, pricing_source, fx_rate, service_tier, reasoning_effort, source_event_count, usage_event_count, llm_call_count, agent_run_id AS agent_invocation_id FROM agent_runs;
65
+ CREATE VIEW invocation_usage AS SELECT agent_invocation_id, agent_invocation_id AS usage_index, provider, model, service_tier, reasoning_effort, input_tokens, cached_input_tokens, uncached_input_tokens, output_tokens, reasoning_tokens, visible_output_tokens, total_tokens, input_rate_usd_per_million, cached_input_rate_usd_per_million, output_rate_usd_per_million, reasoning_rate_usd_per_million, context_input_multiplier, context_output_multiplier, speed_cost_multiplier, pricing_scenario, standard_cost_usd, speed_uplift_usd, input_cost_usd, cached_input_cost_usd, output_cost_usd, reasoning_cost_usd, calculated_cost_usd, recorded_cost_usd, cost_variance_usd, cost_usd, cost_brl, cost_method, pricing_model, pricing_source, fx_rate FROM invocation_usage_segments;
66
+ CREATE VIEW work_items AS SELECT entity_kind, id, title, status, risk, occurred_at, occurred_day_sp FROM canonical_work_items UNION ALL SELECT 'task', task_id, COALESCE(MAX(title), task_id), MAX(work_item_status), MAX(risk), MIN(occurred_at), MIN(occurred_day_sp) FROM activities WHERE task_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM canonical_work_items c WHERE c.entity_kind='task' AND c.id=activities.task_id) GROUP BY task_id UNION ALL SELECT 'spec', spec_id, COALESCE(MAX(title), spec_id), MAX(work_item_status), MAX(risk), MIN(occurred_at), MIN(occurred_day_sp) FROM activities WHERE spec_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM canonical_work_items c WHERE c.entity_kind='spec' AND c.id=activities.spec_id) GROUP BY spec_id UNION ALL SELECT 'prd', prd_id, COALESCE(MAX(title), prd_id), MAX(work_item_status), MAX(risk), MIN(occurred_at), MIN(occurred_day_sp) FROM activities WHERE prd_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM canonical_work_items c WHERE c.entity_kind='prd' AND c.id=activities.prd_id) GROUP BY prd_id;
67
+ CREATE VIEW tasks AS SELECT id, title, status, risk, occurred_at, occurred_day_sp FROM work_items WHERE entity_kind = 'task';
68
+ CREATE VIEW specs AS SELECT id, title, status, risk, occurred_at, occurred_day_sp FROM work_items WHERE entity_kind = 'spec';
69
+ CREATE VIEW prds AS SELECT id, title, status, risk, occurred_at, occurred_day_sp FROM work_items WHERE entity_kind = 'prd';
70
+ CREATE VIEW executions AS
71
+ SELECT id, status, created_at AS occurred_at, occurred_day_sp FROM canonical_executions
72
+ UNION ALL
73
+ SELECT execution_id, MAX(status), MIN(occurred_at), MIN(occurred_day_sp)
74
+ FROM activities
75
+ WHERE execution_id IS NOT NULL
76
+ AND NOT EXISTS (SELECT 1 FROM canonical_executions c WHERE c.id=activities.execution_id)
77
+ GROUP BY execution_id;
78
+ CREATE VIEW conversations AS
79
+ SELECT origin_id AS id, MAX(status) AS status, MIN(created_at) AS occurred_at, MIN(occurred_day_sp) AS occurred_day_sp
80
+ FROM canonical_executions WHERE origin_type='interaction' AND origin_id IS NOT NULL GROUP BY origin_id
81
+ UNION ALL
82
+ SELECT conversation_id, MAX(status), MIN(occurred_at), MIN(occurred_day_sp)
83
+ FROM activities
84
+ WHERE conversation_id IS NOT NULL
85
+ AND NOT EXISTS (SELECT 1 FROM canonical_executions c WHERE c.origin_type='interaction' AND c.origin_id=activities.conversation_id)
86
+ GROUP BY conversation_id;
87
+ CREATE VIEW decisions AS SELECT id, title, origin, scope_type, scope_id, NULL AS status, NULL AS risk, created_at AS occurred_at, occurred_day_sp, source_path FROM canonical_decisions;
88
+ CREATE VIEW changes AS SELECT id, title, status, risk, source_type, source_id, requirement_ids_json, acceptance_ids_json, task_ids_json, result, created_at AS occurred_at, occurred_day_sp, source_path FROM canonical_changes;
89
+ CREATE VIEW dimensions AS SELECT 'zaip_agent' AS dimension, zaip_agent AS value FROM agent_runs WHERE zaip_agent IS NOT NULL UNION SELECT 'provider', provider FROM agent_runs WHERE provider IS NOT NULL UNION SELECT 'model', model FROM agent_runs WHERE model IS NOT NULL UNION SELECT 'status', status FROM zaip_aios_activities WHERE status IS NOT NULL;
90
+ CREATE VIEW daily_aggregate_cache AS
91
+ WITH RECURSIVE raw_intervals AS (
92
+ SELECT
93
+ (julianday(COALESCE(source_started_at, occurred_at)) - 2440587.5) * 86400000.0 AS start_ms,
94
+ (julianday(COALESCE(source_finished_at, occurred_at)) - 2440587.5) * 86400000.0 AS source_end_ms,
95
+ duration_ms
96
+ FROM invocations
97
+ WHERE total_tokens IS NOT NULL AND duration_ms IS NOT NULL AND duration_ms > 0
98
+ ), measurable_intervals AS (
99
+ SELECT start_ms,
100
+ CASE WHEN source_end_ms > start_ms THEN source_end_ms ELSE start_ms + duration_ms END AS end_ms
101
+ FROM raw_intervals
102
+ ), split_intervals(day, start_ms, end_ms, segment_end_ms) AS (
103
+ -- America/Sao_Paulo has used UTC-03:00 throughout the canonical
104
+ -- dashboard period. Split before unioning so a day cannot exceed
105
+ -- its local 24-hour boundary even when Runs span midnight.
106
+ SELECT date(start_ms / 1000.0, 'unixepoch', '-3 hours'), start_ms, end_ms,
107
+ MIN(end_ms, strftime('%s', date(start_ms / 1000.0, 'unixepoch', '-3 hours', '+1 day') || ' 03:00:00') * 1000.0)
108
+ FROM measurable_intervals
109
+ UNION ALL
110
+ SELECT date(segment_end_ms / 1000.0, 'unixepoch', '-3 hours'), segment_end_ms, end_ms,
111
+ MIN(end_ms, strftime('%s', date(segment_end_ms / 1000.0, 'unixepoch', '-3 hours', '+1 day') || ' 03:00:00') * 1000.0)
112
+ FROM split_intervals WHERE segment_end_ms < end_ms
113
+ ), intervals AS (
114
+ SELECT day, start_ms, segment_end_ms AS end_ms FROM split_intervals
115
+ ), ordered AS (
116
+ SELECT *, MAX(end_ms) OVER (PARTITION BY day ORDER BY start_ms, end_ms ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS prior_end_ms
117
+ FROM intervals
118
+ ), grouped AS (
119
+ SELECT *, SUM(CASE WHEN prior_end_ms IS NULL OR start_ms > prior_end_ms THEN 1 ELSE 0 END)
120
+ OVER (PARTITION BY day ORDER BY start_ms, end_ms) AS interval_group
121
+ FROM ordered
122
+ ), merged AS (
123
+ SELECT day, interval_group, MIN(start_ms) AS start_ms, MAX(end_ms) AS end_ms
124
+ FROM grouped GROUP BY day, interval_group
125
+ ), operations_daily_duration AS (
126
+ SELECT occurred_day_sp AS day, SUM(attributed_token_active_ms) AS total_duration
127
+ FROM attributed_token_active_facts GROUP BY occurred_day_sp
128
+ ), work_item_days AS (
129
+ SELECT entity_kind AS kind, id, occurred_day_sp AS day FROM canonical_work_items
130
+ WHERE entity_kind <> 'task' OR COALESCE(status, 'draft') <> 'draft'
131
+ UNION ALL SELECT 'task', task_id, MIN(occurred_day_sp) FROM activities WHERE task_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM canonical_work_items c WHERE c.entity_kind='task' AND c.id=activities.task_id) GROUP BY task_id HAVING COALESCE(MAX(work_item_status), 'draft') <> 'draft'
132
+ UNION ALL SELECT 'spec', spec_id, MIN(occurred_day_sp) FROM activities WHERE spec_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM canonical_work_items c WHERE c.entity_kind='spec' AND c.id=activities.spec_id) GROUP BY spec_id
133
+ UNION ALL SELECT 'prd', prd_id, MIN(occurred_day_sp) FROM activities WHERE prd_id IS NOT NULL AND NOT EXISTS (SELECT 1 FROM canonical_work_items c WHERE c.entity_kind='prd' AND c.id=activities.prd_id) GROUP BY prd_id
134
+ ), work_item_daily AS (
135
+ SELECT day,
136
+ SUM(CASE WHEN kind='prd' THEN 1 ELSE 0 END) AS prd_count,
137
+ SUM(CASE WHEN kind='spec' THEN 1 ELSE 0 END) AS spec_count,
138
+ SUM(CASE WHEN kind='task' THEN 1 ELSE 0 END) AS task_count
139
+ FROM work_item_days GROUP BY day
140
+ ), artifact_daily AS (
141
+ SELECT occurred_day_sp AS day,
142
+ SUM(CASE WHEN artifact_kind='validation' THEN 1 ELSE 0 END) AS validation_count,
143
+ SUM(CASE WHEN artifact_kind='evidence' THEN 1 ELSE 0 END) AS evidence_count
144
+ FROM canonical_artifacts GROUP BY occurred_day_sp
145
+ ), activity_daily AS (
146
+ SELECT date(COALESCE(source_started_at, source_occurred_at, occurred_at), '-3 hours') AS day,
147
+ COUNT(*) AS activity_count,
148
+ SUM(CASE WHEN activity_source_kind='agent_run' THEN 1 ELSE 0 END) AS invocation_count,
149
+ SUM(llm_call_count) AS llm_call_count,
150
+ SUM(root_run_duration) AS total_root_run_duration,
151
+ SUM(sub_run_duration) AS total_sub_run_duration,
152
+ SUM(total_tokens) AS total_tokens,
153
+ SUM(cost_usd) AS total_cost_usd,
154
+ SUM(cost_brl) AS total_cost_brl,
155
+ COUNT(total_tokens) AS token_known_runs,
156
+ COUNT(cost_usd) AS usd_known_runs,
157
+ COUNT(cost_brl) AS brl_known_runs
158
+ FROM activities
159
+ GROUP BY date(COALESCE(source_started_at, source_occurred_at, occurred_at), '-3 hours')
160
+ ), cost_monitor_financial_daily AS (
161
+ -- Cost Monitor retains every canonical activity with a financial
162
+ -- observation. Historical telemetry can predate
163
+ -- agent_invocation_id, so restricting this population to
164
+ -- invocations would silently discard those facts.
165
+ SELECT date(COALESCE(source_started_at, source_occurred_at, occurred_at), '-3 hours') AS day,
166
+ COUNT(*) AS invocation_count,
167
+ SUM(total_tokens) AS total_tokens,
168
+ SUM(cost_usd) AS total_cost_usd,
169
+ SUM(cost_brl) AS total_cost_brl
170
+ FROM activities
171
+ WHERE total_tokens IS NOT NULL OR cost_usd IS NOT NULL OR cost_brl IS NOT NULL
172
+ GROUP BY date(COALESCE(source_started_at, source_occurred_at, occurred_at), '-3 hours')
173
+ ), cost_monitor_raw_intervals AS (
174
+ -- Only complete source intervals from the Cost Monitor financial
175
+ -- population are factual. Run duration and token estimates never
176
+ -- fill this measure.
177
+ SELECT activity_row_id AS activity_id,
178
+ (julianday(source_started_at) - 2440587.5) * 86400000.0 AS start_ms,
179
+ (julianday(source_finished_at) - 2440587.5) * 86400000.0 AS end_ms
180
+ FROM activities
181
+ WHERE (total_tokens IS NOT NULL OR cost_usd IS NOT NULL OR cost_brl IS NOT NULL)
182
+ AND source_started_at IS NOT NULL
183
+ AND source_finished_at IS NOT NULL
184
+ AND julianday(source_finished_at) > julianday(source_started_at)
185
+ ), cost_monitor_split_intervals AS (
186
+ -- Split at America/Sao_Paulo day boundaries before unioning. This
187
+ -- makes the factual daily measure bounded by one local day.
188
+ SELECT date(start_ms / 1000.0, 'unixepoch', '-3 hours') AS day,
189
+ activity_id, start_ms, end_ms,
190
+ MIN(end_ms, strftime('%s', date(start_ms / 1000.0, 'unixepoch', '-3 hours', '+1 day') || ' 03:00:00') * 1000.0) AS segment_end_ms
191
+ FROM cost_monitor_raw_intervals
192
+ UNION ALL
193
+ SELECT date(segment_end_ms / 1000.0, 'unixepoch', '-3 hours'),
194
+ activity_id, segment_end_ms, end_ms,
195
+ MIN(end_ms, strftime('%s', date(segment_end_ms / 1000.0, 'unixepoch', '-3 hours', '+1 day') || ' 03:00:00') * 1000.0)
196
+ FROM cost_monitor_split_intervals WHERE segment_end_ms < end_ms
197
+ ), cost_monitor_ordered_intervals AS (
198
+ SELECT day, start_ms, segment_end_ms AS end_ms,
199
+ MAX(segment_end_ms) OVER (PARTITION BY day ORDER BY start_ms, segment_end_ms ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS prior_end_ms
200
+ FROM cost_monitor_split_intervals
201
+ ), cost_monitor_grouped_intervals AS (
202
+ SELECT *, SUM(CASE WHEN prior_end_ms IS NULL OR start_ms > prior_end_ms THEN 1 ELSE 0 END)
203
+ OVER (PARTITION BY day ORDER BY start_ms, end_ms) AS interval_group
204
+ FROM cost_monitor_ordered_intervals
205
+ ), cost_monitor_merged_intervals AS (
206
+ SELECT day, interval_group, MIN(start_ms) AS start_ms, MAX(end_ms) AS end_ms
207
+ FROM cost_monitor_grouped_intervals GROUP BY day, interval_group
208
+ ), cost_monitor_daily_duration AS (
209
+ -- Tempo is the shared attributed activity fact. Financial
210
+ -- coverage is reported independently below; an incomplete price
211
+ -- record must never erase an observed temporal fact.
212
+ SELECT occurred_day_sp AS day, SUM(attributed_token_active_ms) AS total_duration
213
+ FROM attributed_token_active_facts GROUP BY occurred_day_sp
214
+ ), cost_monitor_duration_coverage AS (
215
+ SELECT day, COUNT(DISTINCT activity_id) AS eligible_runs,
216
+ COUNT(DISTINCT activity_id) AS known_runs
217
+ FROM cost_monitor_split_intervals GROUP BY day
218
+ UNION ALL
219
+ SELECT date(COALESCE(source_started_at, source_occurred_at, occurred_at), '-3 hours'),
220
+ COUNT(DISTINCT activity_row_id), 0
221
+ FROM activities
222
+ WHERE (total_tokens IS NOT NULL OR cost_usd IS NOT NULL OR cost_brl IS NOT NULL)
223
+ AND NOT (
224
+ source_started_at IS NOT NULL
225
+ AND source_finished_at IS NOT NULL
226
+ AND julianday(source_finished_at) > julianday(source_started_at)
227
+ )
228
+ GROUP BY date(COALESCE(source_started_at, source_occurred_at, occurred_at), '-3 hours')
229
+ ), cost_monitor_daily_coverage AS (
230
+ SELECT day, SUM(eligible_runs) AS eligible_runs, SUM(known_runs) AS known_runs
231
+ FROM cost_monitor_duration_coverage GROUP BY day
232
+ ), run_daily AS (
233
+ SELECT occurred_day_sp AS day,
234
+ SUM(CASE WHEN run_role='root' THEN 1 ELSE 0 END) AS root_run_count,
235
+ SUM(CASE WHEN run_role='subrun' THEN 1 ELSE 0 END) AS sub_run_count,
236
+ COUNT(*) AS total_run_count,
237
+ SUM(source_event_count) AS source_event_count
238
+ FROM canonical_run_index GROUP BY occurred_day_sp
239
+ ), days AS (
240
+ SELECT day FROM work_item_daily UNION SELECT day FROM artifact_daily
241
+ UNION SELECT day FROM activity_daily UNION SELECT day FROM cost_monitor_financial_daily
242
+ UNION SELECT day FROM cost_monitor_daily_duration UNION SELECT day FROM cost_monitor_daily_coverage UNION SELECT day FROM run_daily
243
+ UNION SELECT day FROM operations_daily_duration
244
+ )
245
+ SELECT d.day,
246
+ COALESCE(w.prd_count, 0) AS prd_count,
247
+ COALESCE(w.spec_count, 0) AS spec_count,
248
+ COALESCE(w.task_count, 0) AS task_count,
249
+ COALESCE(a.validation_count, 0) AS validation_count,
250
+ COALESCE(a.evidence_count, 0) AS evidence_count,
251
+ COALESCE(i.activity_count, 0) AS activity_count,
252
+ COALESCE(r.root_run_count, 0) AS root_run_count,
253
+ COALESCE(r.sub_run_count, 0) AS sub_run_count,
254
+ COALESCE(r.total_run_count, 0) AS total_run_count,
255
+ COALESCE(i.invocation_count, 0) AS invocation_count,
256
+ COALESCE(f.invocation_count, 0) AS cost_monitor_invocation_count,
257
+ i.llm_call_count,
258
+ COALESCE(r.source_event_count, 0) AS source_event_count,
259
+ i.total_root_run_duration,
260
+ i.total_sub_run_duration,
261
+ o.total_duration AS operations_total_duration,
262
+ COALESCE(dcm.total_duration, o.total_duration) AS cost_monitor_total_duration,
263
+ coverage.eligible_runs AS cost_monitor_duration_eligible_runs,
264
+ coverage.known_runs AS cost_monitor_duration_known_runs,
265
+ o.total_duration AS total_duration,
266
+ f.total_tokens,
267
+ f.total_cost_usd,
268
+ f.total_cost_brl,
269
+ i.token_known_runs,
270
+ i.usd_known_runs,
271
+ i.brl_known_runs
272
+ FROM days d
273
+ LEFT JOIN work_item_daily w USING(day)
274
+ LEFT JOIN artifact_daily a USING(day)
275
+ LEFT JOIN activity_daily i USING(day)
276
+ LEFT JOIN cost_monitor_financial_daily f USING(day)
277
+ LEFT JOIN cost_monitor_daily_duration dcm USING(day)
278
+ LEFT JOIN cost_monitor_daily_coverage coverage USING(day)
279
+ LEFT JOIN run_daily r USING(day)
280
+ LEFT JOIN operations_daily_duration o USING(day);
281
+ -- SPEC/PRD rows have the same canonical population as the big
282
+ -- numbers. A macro without direct invocation remains visible with
283
+ -- factual NULL usage/cost/time, never a fabricated zero.
284
+ CREATE VIEW cost_monitor_group_daily_cache AS SELECT occurred_day_sp AS day, 'execution' AS group_kind, execution_id AS group_value, COUNT(*) AS invocation_count, SUM(llm_call_count) AS llm_call_count, SUM(duration_ms) AS total_duration, SUM(input_tokens) AS total_input_tokens, SUM(cached_input_tokens) AS total_cached_input_tokens, SUM(output_tokens) AS total_output_tokens, SUM(reasoning_tokens) AS total_reasoning_tokens, SUM(total_tokens) AS total_tokens, SUM(cost_usd) AS total_cost_usd, SUM(cost_brl) AS total_cost_brl FROM invocations WHERE execution_id IS NOT NULL GROUP BY occurred_day_sp, execution_id UNION ALL SELECT occurred_day_sp, 'zaip_agent', zaip_agent, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE zaip_agent IS NOT NULL GROUP BY occurred_day_sp, zaip_agent UNION ALL SELECT occurred_day_sp, 'provider', provider, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE provider IS NOT NULL GROUP BY occurred_day_sp, provider UNION ALL SELECT occurred_day_sp, 'model', model, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE model IS NOT NULL GROUP BY occurred_day_sp, model UNION ALL SELECT occurred_day_sp, 'task', task_id, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE task_id IS NOT NULL GROUP BY occurred_day_sp, task_id UNION ALL SELECT occurred_day_sp, 'spec', spec_id, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE spec_id IS NOT NULL GROUP BY occurred_day_sp, spec_id UNION ALL SELECT occurred_day_sp, 'prd', prd_id, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE prd_id IS NOT NULL GROUP BY occurred_day_sp, prd_id UNION ALL SELECT occurred_day_sp, 'conversation', conversation_id, COUNT(*), SUM(llm_call_count), SUM(duration_ms), SUM(input_tokens), SUM(cached_input_tokens), SUM(output_tokens), SUM(reasoning_tokens), SUM(total_tokens), SUM(cost_usd), SUM(cost_brl) FROM invocations WHERE conversation_id IS NOT NULL GROUP BY occurred_day_sp, conversation_id;
285
+ CREATE VIEW daily_aggregates AS SELECT * FROM daily_aggregate_cache;
286
+ CREATE VIEW overview AS
287
+ SELECT 'day' AS period_kind, day AS period_key, day AS start_day, day AS end_day, prd_count, spec_count, task_count, validation_count, evidence_count, activity_count, root_run_count, sub_run_count, total_run_count, invocation_count, cost_monitor_invocation_count, llm_call_count, source_event_count, total_root_run_duration, total_sub_run_duration, operations_total_duration, cost_monitor_total_duration, total_duration, total_tokens, total_cost_usd, total_cost_brl FROM daily_aggregates
288
+ UNION ALL
289
+ SELECT 'month', substr(day, 1, 7), MIN(day), MAX(day), SUM(prd_count), SUM(spec_count), SUM(task_count), SUM(validation_count), SUM(evidence_count), SUM(activity_count), SUM(root_run_count), SUM(sub_run_count), SUM(total_run_count), SUM(invocation_count), SUM(cost_monitor_invocation_count), SUM(llm_call_count), SUM(source_event_count), SUM(total_root_run_duration), SUM(total_sub_run_duration), SUM(operations_total_duration), SUM(cost_monitor_total_duration), SUM(total_duration), SUM(total_tokens), SUM(total_cost_usd), SUM(total_cost_brl) FROM daily_aggregates GROUP BY substr(day, 1, 7)
290
+ UNION ALL
291
+ SELECT 'year', substr(day, 1, 4), MIN(day), MAX(day), SUM(prd_count), SUM(spec_count), SUM(task_count), SUM(validation_count), SUM(evidence_count), SUM(activity_count), SUM(root_run_count), SUM(sub_run_count), SUM(total_run_count), SUM(invocation_count), SUM(cost_monitor_invocation_count), SUM(llm_call_count), SUM(source_event_count), SUM(total_root_run_duration), SUM(total_sub_run_duration), SUM(operations_total_duration), SUM(cost_monitor_total_duration), SUM(total_duration), SUM(total_tokens), SUM(total_cost_usd), SUM(total_cost_brl) FROM daily_aggregates GROUP BY substr(day, 1, 4);
292
+ CREATE VIEW overview_daily AS SELECT * FROM overview WHERE period_kind = 'day';
293
+ CREATE VIEW overview_monthly AS SELECT * FROM overview WHERE period_kind = 'month';
294
+ CREATE VIEW overview_annual AS SELECT * FROM overview WHERE period_kind = 'year';
295
+ CREATE VIEW operations_overview AS SELECT period_kind, period_key, start_day, end_day, prd_count, spec_count, task_count, validation_count, evidence_count, total_run_count, invocation_count, llm_call_count, operations_total_duration, total_tokens, total_cost_usd, total_cost_brl FROM overview;
296
+ -- Cost Monitor deliberately projects its measurable invocation
297
+ -- population rather than Operations' broader Run/activity totals.
298
+ CREATE VIEW cost_monitor_overview AS SELECT period_kind, period_key, cost_monitor_invocation_count AS total_run_count, cost_monitor_invocation_count AS invocation_count, llm_call_count, source_event_count, cost_monitor_total_duration, total_tokens, total_cost_usd, total_cost_brl FROM overview;
299
+ CREATE VIEW task_summary AS SELECT t.id, t.title, t.status, t.risk, t.occurred_at, t.occurred_day_sp, COUNT(i.run_id) AS invocation_count, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl FROM tasks t LEFT JOIN activities i ON i.task_id = t.id GROUP BY t.id, t.title, t.status, t.risk, t.occurred_at, t.occurred_day_sp;
300
+ CREATE VIEW spec_summary AS SELECT s.id, s.title, s.status, s.risk, s.occurred_at, s.occurred_day_sp, COUNT(i.run_id) AS invocation_count, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl FROM specs s LEFT JOIN macro_spec_activities i ON i.spec_id = s.id GROUP BY s.id, s.title, s.status, s.risk, s.occurred_at, s.occurred_day_sp;
301
+ CREATE VIEW prd_summary AS SELECT p.id, p.title, p.status, p.risk, p.occurred_at, p.occurred_day_sp, COUNT(i.run_id) AS invocation_count, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl FROM prds p LEFT JOIN activities i ON i.prd_id = p.id GROUP BY p.id, p.title, p.status, p.risk, p.occurred_at, p.occurred_day_sp;
302
+ CREATE VIEW cost_monitor_group_daily AS SELECT * FROM cost_monitor_group_daily_cache;
303
+ CREATE VIEW vw_overview AS SELECT * FROM overview;
304
+ CREATE VIEW vw_overview_daily AS SELECT * FROM overview WHERE period_kind = 'day';
305
+ CREATE VIEW vw_overview_monthly AS SELECT * FROM overview WHERE period_kind = 'month';
306
+ CREATE VIEW vw_overview_annual AS SELECT * FROM overview WHERE period_kind = 'year';
307
+ CREATE VIEW vw_task_summary AS SELECT * FROM task_summary;
308
+ CREATE VIEW vw_spec_summary AS SELECT * FROM spec_summary;
309
+ CREATE VIEW vw_prd_summary AS SELECT * FROM prd_summary;
310
+ CREATE VIEW vw_task_summary_daily AS SELECT occurred_day_sp AS day, COUNT(*) AS task_count, SUM(llm_call_count) AS llm_call_count FROM task_summary GROUP BY occurred_day_sp;
311
+ CREATE VIEW vw_spec_summary_daily AS SELECT occurred_day_sp AS day, COUNT(*) AS spec_count, SUM(llm_call_count) AS llm_call_count FROM spec_summary GROUP BY occurred_day_sp;
312
+ CREATE VIEW vw_prd_summary_daily AS SELECT occurred_day_sp AS day, COUNT(*) AS prd_count, SUM(llm_call_count) AS llm_call_count FROM prd_summary GROUP BY occurred_day_sp;
313
+ CREATE VIEW vw_task_status_daily AS SELECT occurred_day_sp AS day, status, COUNT(*) AS task_count FROM task_summary GROUP BY occurred_day_sp, status;
314
+ CREATE VIEW vw_task_risk_daily AS SELECT occurred_day_sp AS day, risk, COUNT(*) AS task_count FROM task_summary GROUP BY occurred_day_sp, risk;
315
+ -- The Operations work-list export reads this public union directly.
316
+ -- Keep the known aggregate facts from each entity summary so its
317
+ -- snapshot is equivalent to the metrics shown by the work views.
318
+ CREATE VIEW vw_entities AS SELECT 'task' AS entity_kind, id, title, status, risk, occurred_at, occurred_day_sp, invocation_count, total_duration, total_tokens, total_cost_usd, total_cost_brl FROM task_summary UNION ALL SELECT 'spec', id, title, status, risk, occurred_at, occurred_day_sp, invocation_count, total_duration, total_tokens, total_cost_usd, total_cost_brl FROM spec_summary UNION ALL SELECT 'prd', id, title, status, risk, occurred_at, occurred_day_sp, invocation_count, total_duration, total_tokens, total_cost_usd, total_cost_brl FROM prd_summary;
319
+ CREATE VIEW vw_cost_group_daily AS SELECT * FROM cost_monitor_group_daily_cache;
320
+ -- Narrow temporal Cost surfaces. Do not route the visible Cost
321
+ -- tables through the three-grain overview union: it expands every
322
+ -- daily interval pipeline twice and prevents the outer from/to filter
323
+ -- from remaining a simple period predicate. These views expose only
324
+ -- the columns consumed by Daily, Monthly and Annual.
325
+ CREATE VIEW vw_cost_daily AS
326
+ SELECT day AS period_key, day AS start_day, day AS end_day,
327
+ cost_monitor_invocation_count AS total_run_count,
328
+ cost_monitor_invocation_count AS invocation_count,
329
+ llm_call_count, source_event_count,
330
+ cost_monitor_total_duration AS total_duration,
331
+ total_tokens, total_cost_usd, total_cost_brl
332
+ FROM daily_aggregate_cache;
333
+ CREATE VIEW vw_cost_monthly AS
334
+ SELECT substr(day, 1, 7) AS period_key, MIN(day) AS start_day, MAX(day) AS end_day,
335
+ SUM(cost_monitor_invocation_count) AS total_run_count,
336
+ SUM(cost_monitor_invocation_count) AS invocation_count,
337
+ SUM(llm_call_count) AS llm_call_count, SUM(source_event_count) AS source_event_count,
338
+ SUM(cost_monitor_total_duration) AS total_duration,
339
+ SUM(total_tokens) AS total_tokens, SUM(total_cost_usd) AS total_cost_usd, SUM(total_cost_brl) AS total_cost_brl
340
+ FROM daily_aggregate_cache GROUP BY substr(day, 1, 7);
341
+ CREATE VIEW vw_cost_annual AS
342
+ SELECT substr(day, 1, 4) AS period_key, MIN(day) AS start_day, MAX(day) AS end_day,
343
+ SUM(cost_monitor_invocation_count) AS total_run_count,
344
+ SUM(cost_monitor_invocation_count) AS invocation_count,
345
+ SUM(llm_call_count) AS llm_call_count, SUM(source_event_count) AS source_event_count,
346
+ SUM(cost_monitor_total_duration) AS total_duration,
347
+ SUM(total_tokens) AS total_tokens, SUM(total_cost_usd) AS total_cost_usd, SUM(total_cost_brl) AS total_cost_brl
348
+ FROM daily_aggregate_cache GROUP BY substr(day, 1, 4);
349
+ CREATE VIEW vw_cost_overview AS
350
+ -- MATERIALIZED keeps the expensive factual daily interval pipeline
351
+ -- to one evaluation for this three-grain overview response.
352
+ WITH daily AS MATERIALIZED (
353
+ SELECT day, cost_monitor_invocation_count, llm_call_count,
354
+ source_event_count, cost_monitor_total_duration,
355
+ cost_monitor_duration_eligible_runs, cost_monitor_duration_known_runs,
356
+ total_tokens, total_cost_usd, total_cost_brl
357
+ FROM daily_aggregate_cache
358
+ )
359
+ SELECT 'day' AS period_kind, day AS period_key,
360
+ cost_monitor_invocation_count AS total_run_count,
361
+ cost_monitor_invocation_count AS invocation_count,
362
+ llm_call_count, source_event_count,
363
+ cost_monitor_total_duration AS cost_monitor_total_duration,
364
+ total_tokens, total_cost_usd, total_cost_brl, day AS start_day, day AS end_day,
365
+ cost_monitor_total_duration AS total_duration
366
+ FROM daily
367
+ UNION ALL
368
+ SELECT 'month', substr(day, 1, 7), SUM(cost_monitor_invocation_count), SUM(cost_monitor_invocation_count),
369
+ SUM(llm_call_count), SUM(source_event_count),
370
+ SUM(cost_monitor_total_duration),
371
+ SUM(total_tokens), SUM(total_cost_usd), SUM(total_cost_brl), MIN(day), MAX(day),
372
+ SUM(cost_monitor_total_duration)
373
+ FROM daily GROUP BY substr(day, 1, 7)
374
+ UNION ALL
375
+ SELECT 'year', substr(day, 1, 4), SUM(cost_monitor_invocation_count), SUM(cost_monitor_invocation_count),
376
+ SUM(llm_call_count), SUM(source_event_count),
377
+ SUM(cost_monitor_total_duration),
378
+ SUM(total_tokens), SUM(total_cost_usd), SUM(total_cost_brl), MIN(day), MAX(day),
379
+ SUM(cost_monitor_total_duration)
380
+ FROM daily GROUP BY substr(day, 1, 4);
381
+ CREATE VIEW vw_cost_executions AS SELECT i.execution_id, i.execution_id AS title, e.status, NULL AS risk, MIN(i.occurred_at) AS occurred_at, MIN(i.occurred_day_sp) AS occurred_day_sp, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl, COUNT(*) AS invocation_count FROM invocations i LEFT JOIN executions e ON e.id = i.execution_id WHERE i.execution_id IS NOT NULL GROUP BY i.execution_id, e.status;
382
+ CREATE VIEW vw_cost_agent_invocations AS ${costInvocationProjectionSelect};
383
+ CREATE VIEW vw_cost_zaip_agents AS SELECT zaip_agent, SUM(llm_call_count) AS llm_call_count, SUM(total_tokens) AS total_tokens, SUM(cost_usd) AS cost_usd, SUM(cost_brl) AS cost_brl, COUNT(*) AS invocation_count FROM invocations GROUP BY zaip_agent;
384
+ CREATE VIEW vw_cost_models AS WITH usage AS (SELECT model, agent_invocation_id, SUM(total_tokens) AS total_tokens, SUM(cost_usd) AS cost_usd, SUM(cost_brl) AS cost_brl FROM invocation_usage GROUP BY model, agent_invocation_id), calls AS (SELECT i.agent_invocation_id, CASE WHEN (SELECT COUNT(DISTINCT m.model) FROM invocation_usage m WHERE m.agent_invocation_id = i.agent_invocation_id AND m.model IS NOT NULL) = 1 THEN i.llm_call_count END AS llm_call_count FROM invocations i) SELECT u.model, SUM(c.llm_call_count) AS llm_call_count, SUM(u.total_tokens) AS total_tokens, SUM(u.cost_usd) AS cost_usd, SUM(u.cost_brl) AS cost_brl, COUNT(*) AS invocation_count FROM usage u JOIN calls c USING(agent_invocation_id) GROUP BY u.model;
385
+ CREATE VIEW vw_cost_providers AS WITH usage AS (SELECT provider, agent_invocation_id, SUM(total_tokens) AS total_tokens, SUM(cost_usd) AS cost_usd, SUM(cost_brl) AS cost_brl FROM invocation_usage GROUP BY provider, agent_invocation_id), calls AS (SELECT i.agent_invocation_id, CASE WHEN (SELECT COUNT(DISTINCT p.provider) FROM invocation_usage p WHERE p.agent_invocation_id = i.agent_invocation_id AND p.provider IS NOT NULL) = 1 THEN i.llm_call_count END AS llm_call_count FROM invocations i) SELECT u.provider, SUM(c.llm_call_count) AS llm_call_count, SUM(u.total_tokens) AS total_tokens, SUM(u.cost_usd) AS cost_usd, SUM(u.cost_brl) AS cost_brl, COUNT(*) AS invocation_count FROM usage u JOIN calls c USING(agent_invocation_id) GROUP BY u.provider;
386
+ CREATE VIEW vw_cost_tasks AS SELECT i.task_id, COALESCE(MAX(t.title), i.task_id) AS title, MAX(t.status) AS status, MAX(t.risk) AS risk, MIN(i.occurred_at) AS occurred_at, MIN(i.occurred_day_sp) AS occurred_day_sp, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl, COUNT(*) AS invocation_count FROM invocations i LEFT JOIN tasks t ON t.id = i.task_id WHERE i.task_id IS NOT NULL GROUP BY i.task_id;
387
+ CREATE VIEW vw_cost_specs AS SELECT s.id AS spec_id, s.title, s.status, s.risk, COALESCE(MIN(i.occurred_at), s.occurred_at) AS occurred_at, COALESCE(MIN(i.occurred_day_sp), s.occurred_day_sp) AS occurred_day_sp, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl, COUNT(i.run_id) AS invocation_count FROM specs s LEFT JOIN macro_spec_activities i ON i.spec_id = s.id GROUP BY s.id, s.title, s.status, s.risk, s.occurred_at, s.occurred_day_sp;
388
+ CREATE VIEW vw_cost_prds AS SELECT p.id AS prd_id, p.title, p.status, p.risk, COALESCE(MIN(i.occurred_at), p.occurred_at) AS occurred_at, COALESCE(MIN(i.occurred_day_sp), p.occurred_day_sp) AS occurred_day_sp, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl, COUNT(i.agent_invocation_id) AS invocation_count FROM prds p LEFT JOIN invocations i ON i.prd_id = p.id GROUP BY p.id, p.title, p.status, p.risk, p.occurred_at, p.occurred_day_sp;
389
+ CREATE VIEW vw_cost_conversations AS SELECT i.conversation_id, i.conversation_id AS title, MAX(c.status) AS status, NULL AS risk, MIN(i.occurred_at) AS occurred_at, MIN(i.occurred_day_sp) AS occurred_day_sp, SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration, SUM(i.total_tokens) AS total_tokens, SUM(i.cost_usd) AS total_cost_usd, SUM(i.cost_brl) AS total_cost_brl, COUNT(*) AS invocation_count FROM invocations i LEFT JOIN conversations c ON c.id = i.conversation_id WHERE i.conversation_id IS NOT NULL GROUP BY i.conversation_id;
390
+ `;