@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,4 @@
1
+ interface:
2
+ display_name: "Module Scaffold"
3
+ short_description: "Create a safe minimal module shell"
4
+ default_prompt: "Use $zaip-skill-module-scaffold to create a minimal module for this capability."
@@ -0,0 +1,9 @@
1
+ # Scaffold grammar and output
2
+
3
+ Run `node .agents/skills/zaip-skill-module-scaffold/scripts/scaffold.mjs <module-name> [--root <directory>] [--dry-run]`.
4
+
5
+ The module name is lowercase kebab-case. `--root` defaults to the current directory; `--dry-run` writes nothing. Repeated flags are rejected. The helper requires stack id `zaip-aios-stack`, language `typescript`, and a safe relative `stack.layout.modules` path. It emits schema version, stack id, relative module path, dry-run state, and sorted `created` and `unchanged` paths.
6
+
7
+ The generated shell has a domain type, an application factory, a public index, and a co-located TypeScript behavior check. It deliberately has no database, Hono, Kysely, Supabase, Redis, or BullMQ import.
8
+
9
+ The consumer must provide TypeScript and `@types/node`. Compile with its project `tsconfig` or a portable temporary tsconfig that sets Node types and emits JavaScript, then run `node --test <emitted>/application.test.js`. This generated check is Node-test compatible; it does not promise automatic Vitest discovery.
@@ -0,0 +1,121 @@
1
+ import assert from "node:assert/strict";
2
+ import { execFile } from "node:child_process";
3
+ import { mkdir, mkdtemp, readFile, rm, symlink, writeFile } from "node:fs/promises";
4
+ import os from "node:os";
5
+ import { join, resolve } from "node:path";
6
+ import test from "node:test";
7
+ import { promisify } from "node:util";
8
+
9
+ const run = promisify(execFile);
10
+ const skillRoot = resolve(import.meta.dirname, "..", "..");
11
+ const root = resolve(skillRoot, "..", "..");
12
+ const scaffold = resolve(skillRoot, "zaip-skill-module-scaffold/scripts/scaffold.mjs");
13
+ const inventory = resolve(skillRoot, "zaip-skill-dev-environment/scripts/inventory.mjs");
14
+ const fixture = resolve(skillRoot, "zaip-skill-test-data/scripts/generate.mjs");
15
+
16
+ test("helpers are deterministic and avoid local secret values", async (context) => {
17
+ const directory = await mkdtemp(join(os.tmpdir(), "zaip-skill-helper-"));
18
+ context.after(() => rm(directory, { recursive: true, force: true }));
19
+ await mkdir(join(directory, ".agents", "config"), { recursive: true });
20
+ await writeFile(
21
+ join(directory, ".agents", "config", "project.yaml"),
22
+ "project:\n id: consumer-project\nstack:\n id: zaip-aios-stack\n language: typescript\n layout:\n modules: features\n",
23
+ );
24
+ await writeFile(
25
+ join(directory, "package.json"),
26
+ JSON.stringify({ scripts: { test: "secret-command-value" } }),
27
+ );
28
+ await writeFile(join(directory, ".env"), "VISIBLE_NAME=private-value\n");
29
+ await writeFile(join(directory, ".env.example"), "VISIBLE_NAME=\nMISSING_NAME=\n");
30
+
31
+ const inventoryOutput = JSON.parse((await run(process.execPath, [inventory, directory])).stdout);
32
+ assert.deepEqual(inventoryOutput.package_scripts, ["test"]);
33
+ assert.deepEqual(inventoryOutput.environment_names[".env"], ["VISIBLE_NAME"]);
34
+ assert.equal(JSON.stringify(inventoryOutput).includes("private-value"), false);
35
+ assert.equal(JSON.stringify(inventoryOutput).includes("secret-command-value"), false);
36
+ assert.deepEqual(inventoryOutput.missing_required_environment_names, ["MISSING_NAME"]);
37
+ await assert.rejects(run(process.execPath, [inventory, directory, "extra"]), /Usage/);
38
+
39
+ const first = JSON.parse(
40
+ (await run(process.execPath, [scaffold, "orders", "--root", directory])).stdout,
41
+ );
42
+ assert.deepEqual(first.created, [
43
+ "src/application.test.ts",
44
+ "src/application.ts",
45
+ "src/domain.ts",
46
+ "src/index.ts",
47
+ ]);
48
+ const second = JSON.parse(
49
+ (await run(process.execPath, [scaffold, "orders", "--root", directory])).stdout,
50
+ );
51
+ assert.deepEqual(second.created, []);
52
+ await assert.rejects(
53
+ run(process.execPath, [scaffold, "con", "--root", directory]),
54
+ /reserved name/,
55
+ );
56
+ await assert.rejects(
57
+ run(process.execPath, [scaffold, "../escape", "--root", directory]),
58
+ /module-name/,
59
+ );
60
+ await assert.rejects(
61
+ run(process.execPath, [scaffold, "a--b", "--root", directory]),
62
+ /module-name/,
63
+ );
64
+ await assert.rejects(
65
+ run(process.execPath, [scaffold, "another", "--root", ".", "--root", directory]),
66
+ /Usage/,
67
+ );
68
+ const misleading = await mkdtemp(join(os.tmpdir(), "zaip-scaffold-layout-"));
69
+ context.after(() => rm(misleading, { recursive: true, force: true }));
70
+ await mkdir(join(misleading, ".agents", "config"), { recursive: true });
71
+ await writeFile(
72
+ join(misleading, ".agents", "config", "project.yaml"),
73
+ "project:\n id: consumer\nstack:\n id: zaip-aios-stack\n language: typescript\n layout:\n frontend: apps/frontend\n overrides:\n modules: wrong-owned-tree\n",
74
+ );
75
+ await assert.rejects(
76
+ run(process.execPath, [scaffold, "orders", "--root", misleading]),
77
+ /stack\.layout\.modules/,
78
+ );
79
+ await writeFile(
80
+ join(misleading, ".agents", "config", "project.yaml"),
81
+ "stack:\n id: zaip-aios-stack\n language: typescript\n layout:\n modules: modules\nstack:\n id: zaip-aios-stack\n",
82
+ );
83
+ await assert.rejects(
84
+ run(process.execPath, [scaffold, "orders", "--root", misleading]),
85
+ /duplicate top-level stack/,
86
+ );
87
+ await writeFile(join(directory, "features", "orders", "src", "domain.ts"), "changed\n");
88
+ await assert.rejects(
89
+ run(process.execPath, [scaffold, "orders", "--root", directory]),
90
+ /divergent/,
91
+ );
92
+
93
+ const output = join(directory, "fixture.json");
94
+ const generated = JSON.parse(
95
+ (await run(process.execPath, [fixture, output, "--seed", "same"])).stdout,
96
+ ).fixture;
97
+ const repeated = JSON.parse(
98
+ (await run(process.execPath, [fixture, output, "--seed", "same"])).stdout,
99
+ ).fixture;
100
+ assert.deepEqual(generated, repeated);
101
+ assert.equal((await readFile(output, "utf8")).includes("same"), true);
102
+ await writeFile(output, "{}\n");
103
+ await assert.rejects(run(process.execPath, [fixture, output, "--seed", "same"]), /divergent/);
104
+ await assert.rejects(
105
+ run(process.execPath, [fixture, join(directory, "other.json"), "extra"]),
106
+ /Usage/,
107
+ );
108
+ const outside = await mkdtemp(join(os.tmpdir(), "zaip-test-data-outside-"));
109
+ context.after(() => rm(outside, { recursive: true, force: true }));
110
+ const linked = join(directory, "linked-output");
111
+ try {
112
+ await symlink(outside, linked, process.platform === "win32" ? "junction" : "dir");
113
+ } catch (error) {
114
+ if (error.code !== "EPERM") throw error;
115
+ return;
116
+ }
117
+ await assert.rejects(
118
+ run(process.execPath, [fixture, join(linked, "fixture.json")]),
119
+ /symbolic link or junction/,
120
+ );
121
+ });
@@ -0,0 +1,169 @@
1
+ import { lstat, mkdir, readFile, realpath, writeFile } from "node:fs/promises";
2
+ import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
3
+
4
+ const [name, ...args] = process.argv.slice(2);
5
+ let root = ".";
6
+ let rootSeen = false;
7
+ let dryRun = false;
8
+ for (let index = 0; index < args.length; index += 1) {
9
+ if (args[index] === "--root" && typeof args[index + 1] === "string" && !rootSeen) {
10
+ rootSeen = true;
11
+ root = args[++index];
12
+ continue;
13
+ }
14
+ if (args[index] === "--dry-run" && !dryRun) {
15
+ dryRun = true;
16
+ continue;
17
+ }
18
+ throw new Error("Usage: scaffold.mjs <module-name> [--root <directory>] [--dry-run]");
19
+ }
20
+ if (!/^[a-z](?:[a-z0-9]|-(?=[a-z0-9]))*$/.test(name ?? "") || reserved(name))
21
+ throw new Error("module-name must be lowercase kebab-case and not a Windows reserved name");
22
+ const rootPath = resolve(root);
23
+ const configPath = resolve(rootPath, ".agents/config/project.yaml");
24
+ const config = await readFile(configPath, "utf8").catch(() => {
25
+ throw new Error("missing .agents/config/project.yaml");
26
+ });
27
+ const stack = parseStackSubset(config);
28
+ const stackId = stack.id;
29
+ const language = stack.language;
30
+ if (stackId !== "zaip-aios-stack" || language !== "typescript")
31
+ throw new Error("missing or unsupported stack profile");
32
+ const modules = stack.modules;
33
+ if (!modules || !safeRelative(modules))
34
+ throw new Error("missing or unsupported stack.layout.modules path");
35
+ const modulesRoot = resolve(rootPath, modules);
36
+ if (!inside(rootPath, modulesRoot)) throw new Error("modules path escapes root");
37
+ const canonicalRoot = await realpath(rootPath);
38
+ await ensureNoEscape(canonicalRoot, modulesRoot);
39
+ const target = resolve(modulesRoot, name);
40
+ if (!inside(modulesRoot, target)) throw new Error("module target escapes modules path");
41
+ const collision = await caseCollision(modulesRoot, name);
42
+ if (collision) throw new Error("case-insensitive module collision");
43
+ await ensureNoEscape(canonicalRoot, target);
44
+ const files = generated(name);
45
+ const changes = [];
46
+ let existingCount = 0;
47
+ for (const [path, content] of Object.entries(files)) {
48
+ const absolute = resolve(target, path);
49
+ await ensureNoEscape(canonicalRoot, absolute);
50
+ const existing = await readFile(absolute, "utf8").catch(() => null);
51
+ if (existing === null) changes.push(path);
52
+ else {
53
+ existingCount += 1;
54
+ if (existing !== content) throw new Error(`refusing divergent or partial module file: ${path}`);
55
+ }
56
+ }
57
+ if (existingCount > 0 && changes.length > 0)
58
+ throw new Error("refusing divergent or partial module");
59
+ if (!dryRun)
60
+ for (const [path, content] of Object.entries(files)) {
61
+ const absolute = resolve(target, path);
62
+ await mkdir(dirname(absolute), { recursive: true });
63
+ try {
64
+ await writeFile(absolute, content, { encoding: "utf8", flag: "wx" });
65
+ } catch (error) {
66
+ if (error.code !== "EEXIST" || (await readFile(absolute, "utf8")) !== content) throw error;
67
+ }
68
+ }
69
+ process.stdout.write(
70
+ `${JSON.stringify(
71
+ {
72
+ schema_version: 1,
73
+ stack_id: stackId,
74
+ module: `${modules}/${name}`,
75
+ dry_run: dryRun,
76
+ created: changes.sort(),
77
+ unchanged: Object.keys(files)
78
+ .filter((path) => !changes.includes(path))
79
+ .sort(),
80
+ },
81
+ null,
82
+ 2,
83
+ )}\n`,
84
+ );
85
+ function generated(module) {
86
+ const symbol = module
87
+ .split("-")
88
+ .map((part) => part[0].toUpperCase() + part.slice(1))
89
+ .join("");
90
+ return {
91
+ "src/domain.ts": `export type ${symbol}Id = string;\nexport interface ${symbol} { id: ${symbol}Id; }\n`,
92
+ "src/application.ts": `import type { ${symbol} } from "./domain.js";\nexport function create${symbol}(id: string): ${symbol} { return { id }; }\n`,
93
+ "src/index.ts": `export * from "./application.js";\nexport * from "./domain.js";\n`,
94
+ "src/application.test.ts": `import assert from "node:assert/strict";\nimport test from "node:test";\nimport { create${symbol} } from "./application.js";\ntest("${module} factory", () => assert.equal(create${symbol}("id").id, "id"));\n`,
95
+ };
96
+ }
97
+ function reserved(value) {
98
+ return /^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\..*)?$/i.test(value);
99
+ }
100
+ function safeRelative(value) {
101
+ return (
102
+ !isAbsolute(value) && !value.split(/[\\/]+/).some((part) => part === ".." || part.length === 0)
103
+ );
104
+ }
105
+ function inside(parent, child) {
106
+ const value = relative(parent, child);
107
+ return value === "" || (!value.startsWith(`..${sep}`) && value !== "..");
108
+ }
109
+ async function ensureNoEscape(canonicalRoot, path) {
110
+ let current = canonicalRoot;
111
+ for (const part of relative(canonicalRoot, path).split(/[\\/]+/)) {
112
+ if (!part) continue;
113
+ current = resolve(current, part);
114
+ const stat = await lstat(current).catch(() => null);
115
+ if (!stat) continue;
116
+ const resolved = await realpath(current);
117
+ if (!inside(canonicalRoot, resolved))
118
+ throw new Error("modules path resolves through a junction outside root");
119
+ }
120
+ }
121
+ async function caseCollision(directory, candidate) {
122
+ const { readdir } = await import("node:fs/promises");
123
+ const entries = await readdir(directory).catch(() => []);
124
+ return entries.some(
125
+ (entry) => entry.toLowerCase() === candidate.toLowerCase() && entry !== candidate,
126
+ );
127
+ }
128
+ function parseStackSubset(source) {
129
+ const lines = source.replaceAll("\r\n", "\n").split("\n");
130
+ if (lines.filter((line) => /^stack:\s*(?:#.*)?$/.test(line)).length > 1)
131
+ throw new Error("duplicate top-level stack");
132
+ let inStack = false;
133
+ let inLayout = false;
134
+ const values = {};
135
+ for (const line of lines) {
136
+ if (/\t|[&*][A-Za-z_]/.test(line) && inStack)
137
+ throw new Error("unsupported YAML construct in stack mapping");
138
+ if (!inStack) {
139
+ if (/^stack:\s*(?:#.*)?$/.test(line)) {
140
+ inStack = true;
141
+ continue;
142
+ }
143
+ continue;
144
+ }
145
+ if (/^[^ \t#]/.test(line)) break;
146
+ if (/^ {2}layout:\s*(?:#.*)?$/.test(line)) {
147
+ if (inLayout) throw new Error("duplicate stack.layout");
148
+ inLayout = true;
149
+ continue;
150
+ }
151
+ const direct = line.match(/^ {2}(id|language):\s*([^#\s]+)\s*(?:#.*)?$/);
152
+ if (direct) {
153
+ inLayout = false;
154
+ if (values[direct[1]]) throw new Error(`duplicate stack.${direct[1]}`);
155
+ values[direct[1]] = direct[2];
156
+ continue;
157
+ }
158
+ if (/^ {2}[A-Za-z_][A-Za-z0-9_-]*:/.test(line)) {
159
+ inLayout = false;
160
+ continue;
161
+ }
162
+ const nested = line.match(/^ {4}modules:\s*([^#\s]+)\s*(?:#.*)?$/);
163
+ if (nested && inLayout) {
164
+ if (values.modules) throw new Error("duplicate stack.layout.modules");
165
+ values.modules = nested[1];
166
+ }
167
+ }
168
+ return values;
169
+ }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: zaip-skill-move-prd
3
- description: Explicitly move, cancel, execute, or deliver a ZAIP PRD while keeping child SPECs, Tasks, Changes, and Executions lifecycle-consistent. Use only when a user asks to move a PRD between dashboard columns, execute it, cancel or finalize it, or repair descendants left behind by a PRD status change.
3
+ description: Move, cancel, execute, or deliver a ZAIP PRD only on explicit lifecycle intent; preserve descendant consistency.
4
4
  ---
5
5
 
6
6
  # Mover PRD com descendentes
@@ -35,6 +35,8 @@ Use apenas comandos canônicos ZAIP. Não edite status diretamente no frontmatte
35
35
 
36
36
  ## Verificar
37
37
 
38
+ Na continuação de um PRD preparado, reutilize a Execution de `plan_ref`/PreparedPlan. Para `blocked` ou `paused`, inspecione a causa e use a retomada canônica autorizada antes da captura; não repita `prd execute` contra um macro já materializado. `conversation start --intent continue --prd ID --execution EXEC` deve resolver a mesma Execution e fase `execution`, rejeitando divergências antes de escrever. Para colaboração nativa Codex, siga a seção de DAG nativa da skill de execução; `native-next` prepara envelopes e não substitui o spawn/capture observado nem os gates de entrega.
39
+
38
40
  1. Leia novamente o PRD e liste SPECs com `spec list --prd <PRD-ID> --json`.
39
41
  2. Após `prepare`, confirme que PRD e SPECs continuam `draft`; após `ready`, confirme que apenas as selecionadas ficaram `ready` e que Execution, Changes e Tasks permanecem `planned`.
40
42
  3. Confirme no resultado do cancelamento os arrays `cascade.specs`, `cascade.tasks`, `cascade.changes` e `cascade.executions`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: zaip-skill-move-spec
3
- description: Explicitly move, cancel, execute, or deliver a ZAIP SPEC while keeping descendant Tasks, Changes, and Executions lifecycle-consistent. Use only when a user asks to move a SPEC between dashboard columns, execute it, cancel or finalize it, or repair Tasks left behind by a SPEC status change.
3
+ description: Move, cancel, execute, or deliver a ZAIP SPEC only on explicit lifecycle intent; preserve descendant consistency.
4
4
  ---
5
5
 
6
6
  # Mover SPEC com descendentes
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: zaip-skill-performance-engineering
3
+ description: Measure and improve application latency, throughput, queries, queues, and resource use under stated conditions.
4
+ ---
5
+
6
+ # Engineer performance
7
+
8
+ Use for a demonstrated latency, capacity, query, memory, or queue throughput concern.
9
+
10
+ 1. Define workload, data shape, environment, target metric, baseline, and success threshold before tuning.
11
+ 2. Profile the likely bottleneck across browser, API, database, cache, worker, and network boundaries before changing code.
12
+ 3. Change one justified cause at a time and preserve correctness, tenant isolation, and failure handling.
13
+ 4. Compare before and after under equivalent conditions using k6, autocannon, or a project-supported tool where appropriate.
14
+ 5. Report confidence limits, saturation behavior, and unmeasured production differences.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Performance Engineering"
3
+ short_description: "Measure and improve runtime performance safely"
4
+ default_prompt: "Use $zaip-skill-performance-engineering to measure and improve this performance concern."
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: zaip-skill-prd
3
- description: Create, refine, prepare, and analyze complete ZAIP PRDs with technical SPECs and Task blueprints. Use for explicit requests to create a PRD or to think, develop, improve, or refine one; distinguish conversation from materialized creation and preserve draft until explicit ready or execution intent.
3
+ description: Create, refine, prepare, or analyze a ZAIP PRD on explicit PRD work; keep draft until explicit ready or execute intent.
4
4
  ---
5
5
 
6
6
  # Trabalhar com PRDs
@@ -50,6 +50,8 @@ Durante essa etapa, a Execution universal `interaction` e sua Run raiz continuam
50
50
 
51
51
  ## Handoff e analyze
52
52
 
53
+ Ao receber “execute esse PRD” em outro turno, reutilize o ID canônico e delegue à skill de execução a captura inicial como continuação desse PRD. Não repita o intake `conversation --definition prd,spec` da autoria anterior e não recrie o pacote. Se o documento citado existir apenas como rascunho local, informe essa diferença: a existência de um arquivo de planejamento não comprova PRD canônico nem Run de delivery.
54
+
53
55
  1. Pare em Definição após `prepare`. Somente após pedido explícito de promoção, use `$zaip-skill-move-prd`: `prd ready` deixa PRD/SPECs selecionadas em `ready` e materializa a DAG sem executá-la; cada Task materializada `planned` e nunca iniciada aparece em Pronto para Executar, mesmo vinculada a SPEC. Somente após pedido explícito de execução, delegue a persistência da continuação, ativação e orquestração para `$zaip-skill-execution`.
54
56
  2. Na análise, mostre visão macro por PRD: SPECs, Tasks, Executions, Runs, outcomes, AC/evidência, retrabalho, tokens e custo por fase/total.
55
57
 
@@ -409,6 +409,7 @@ if (apply && deduplicate) {
409
409
  tokens: {
410
410
  input: null,
411
411
  cached_input: null,
412
+ cache_write_input: null,
412
413
  output: null,
413
414
  reasoning: null,
414
415
  total: null,
@@ -102,6 +102,9 @@ export function usageView(record) {
102
102
  reasoning: tokens[3] ?? null,
103
103
  total: tokens[4] ?? null,
104
104
  source: tokens[5] ?? "unavailable",
105
+ // Appended to the compact tuple to retain compatibility with historical
106
+ // records that have only the first six fields.
107
+ cache_write_input: tokens[6] ?? null,
105
108
  },
106
109
  source_segment_key: record[12] ?? null,
107
110
  supersedes_event_id: record[13] ?? null,
@@ -324,6 +327,7 @@ export function exactRemeasurementSegment(
324
327
  ? {
325
328
  input: last.input_tokens,
326
329
  cached_input: last.cached_input_tokens,
330
+ cache_write_input: last.cache_write_input_tokens ?? null,
327
331
  output: last.output_tokens,
328
332
  reasoning: last.reasoning_output_tokens,
329
333
  total: last.total_tokens,
@@ -331,8 +335,8 @@ export function exactRemeasurementSegment(
331
335
  : null;
332
336
  const same = (candidate) =>
333
337
  candidate !== null &&
334
- ["input", "cached_input", "output", "reasoning", "total"].every(
335
- (key) => candidate[key] === sourceTokens[key],
338
+ ["input", "cached_input", "cache_write_input", "output", "reasoning", "total"].every(
339
+ (key) => candidate[key] === (sourceTokens[key] ?? null),
336
340
  );
337
341
  return same(tokens) || same(lastTokens);
338
342
  })
@@ -494,6 +498,7 @@ export function sameTokenSnapshot(left, right) {
494
498
  left !== null &&
495
499
  left.input_tokens === right.input_tokens &&
496
500
  left.cached_input_tokens === right.cached_input_tokens &&
501
+ left.cache_write_input_tokens === right.cache_write_input_tokens &&
497
502
  left.output_tokens === right.output_tokens &&
498
503
  left.reasoning_output_tokens === right.reasoning_output_tokens &&
499
504
  left.total_tokens === right.total_tokens
@@ -522,6 +527,7 @@ export function aggregate(segment) {
522
527
  return {
523
528
  input,
524
529
  cached_input: completeSum("cached_input_tokens"),
530
+ cache_write_input: completeSum("cache_write_input_tokens"),
525
531
  output,
526
532
  reasoning: completeSum("reasoning_output_tokens"),
527
533
  total: reportedTotal ?? (input !== null && output !== null ? input + output : null),
@@ -534,6 +540,7 @@ function tokenSnapshot(value) {
534
540
  return {
535
541
  input_tokens: finite("input_tokens"),
536
542
  cached_input_tokens: finite("cached_input_tokens"),
543
+ cache_write_input_tokens: finite("cache_write_input_tokens"),
537
544
  output_tokens: finite("output_tokens"),
538
545
  reasoning_output_tokens: finite("reasoning_output_tokens"),
539
546
  total_tokens: finite("total_tokens"),
@@ -551,6 +558,7 @@ export function cumulativeSnapshotDelta(previous, current) {
551
558
  return {
552
559
  input_tokens: delta("input_tokens"),
553
560
  cached_input_tokens: delta("cached_input_tokens"),
561
+ cache_write_input_tokens: delta("cache_write_input_tokens"),
554
562
  output_tokens: delta("output_tokens"),
555
563
  reasoning_output_tokens: delta("reasoning_output_tokens"),
556
564
  total_tokens: delta("total_tokens"),
@@ -561,6 +569,7 @@ function hasPositiveTokenDelta(usage) {
561
569
  return [
562
570
  usage.input_tokens,
563
571
  usage.cached_input_tokens,
572
+ usage.cache_write_input_tokens,
564
573
  usage.output_tokens,
565
574
  usage.reasoning_output_tokens,
566
575
  usage.total_tokens,
@@ -593,22 +602,30 @@ export async function pricingFor(workspace, model, tokens) {
593
602
  (item) => matchesIdentity(item.id) || item.aliases?.some(matchesIdentity),
594
603
  ) ?? null;
595
604
  if (!price) return { usd: null, brl: null };
596
- const uncached = Math.max(0, tokens.input - tokens.cached_input);
597
- const reasoning = Math.max(0, tokens.reasoning ?? 0);
598
- const visibleOutput = Math.max(0, tokens.output - reasoning);
605
+ const cacheWriteInput = tokens.cache_write_input ?? null;
606
+ const cacheWriteRate = price.cache_write_input_per_million_usd ?? null;
607
+ if (
608
+ (cacheWriteRate !== null && cacheWriteInput === null) ||
609
+ (cacheWriteInput !== null && cacheWriteInput > tokens.input) ||
610
+ ((cacheWriteInput ?? 0) > 0 && cacheWriteRate === null)
611
+ ) {
612
+ return { usd: null, brl: null };
613
+ }
614
+ const uncached = Math.max(0, tokens.input - tokens.cached_input - (cacheWriteInput ?? 0));
599
615
  const longContext =
600
616
  price.long_context_threshold_tokens !== null &&
601
617
  price.long_context_threshold_tokens !== undefined &&
602
618
  tokens.input > price.long_context_threshold_tokens;
603
619
  const inputMultiplier = longContext ? (price.long_context_input_multiplier ?? 1) : 1;
604
620
  const outputMultiplier = longContext ? (price.long_context_output_multiplier ?? 1) : 1;
621
+ if (tokens.cached_input > 0 && price.cached_input_per_million_usd == null) {
622
+ return { usd: null, brl: null };
623
+ }
605
624
  const usd =
606
625
  (uncached * price.input_per_million_usd * inputMultiplier +
607
626
  tokens.cached_input * (price.cached_input_per_million_usd ?? 0) * inputMultiplier +
608
- visibleOutput * price.output_per_million_usd * outputMultiplier +
609
- reasoning *
610
- (price.reasoning_per_million_usd ?? price.output_per_million_usd) *
611
- outputMultiplier) /
627
+ (cacheWriteInput ?? 0) * (cacheWriteRate ?? 0) * inputMultiplier +
628
+ tokens.output * price.output_per_million_usd * outputMultiplier) /
612
629
  1_000_000;
613
630
  const fxFiles = await filesUnder(join(workspace, ".agents", "config", "pricing", "fx"), ".json");
614
631
  let rate = null;
@@ -72,7 +72,7 @@ test("normalizes compact and object Run records without changing usage totals",
72
72
  "execution",
73
73
  "test",
74
74
  "current_context",
75
- [10, 4, 3, 1, 13, "provider_reported"],
75
+ [10, 4, 3, 1, 13, "provider_reported", 0],
76
76
  [0.1, 0.5],
77
77
  ];
78
78
  const records = jsonLines(
@@ -84,6 +84,7 @@ test("normalizes compact and object Run records without changing usage totals",
84
84
  assert.deepEqual(usageView(records[1]).tokens, {
85
85
  input: 10,
86
86
  cached_input: 4,
87
+ cache_write_input: 0,
87
88
  output: 3,
88
89
  reasoning: 1,
89
90
  total: 13,
@@ -93,12 +94,19 @@ test("normalizes compact and object Run records without changing usage totals",
93
94
  assert.deepEqual(
94
95
  aggregate({
95
96
  usage: [
96
- { input_tokens: 10, cached_input_tokens: 4, output_tokens: 3, reasoning_output_tokens: 1 },
97
+ {
98
+ input_tokens: 10,
99
+ cached_input_tokens: 4,
100
+ cache_write_input_tokens: 0,
101
+ output_tokens: 3,
102
+ reasoning_output_tokens: 1,
103
+ },
97
104
  ],
98
105
  }),
99
106
  {
100
107
  input: 10,
101
108
  cached_input: 4,
109
+ cache_write_input: 0,
102
110
  output: 3,
103
111
  reasoning: 1,
104
112
  total: 13,
@@ -106,25 +114,26 @@ test("normalizes compact and object Run records without changing usage totals",
106
114
  );
107
115
  });
108
116
 
109
- test("deduplicates cumulative snapshots and starts a new epoch after reset", () => {
110
- const snapshot = (input, cached, output, reasoning) => ({
117
+ test("preserves absent, zero, and positive cache-write snapshots through deltas", () => {
118
+ const snapshot = (input, cached, cacheWrite, output, reasoning) => ({
111
119
  input_tokens: input,
112
120
  cached_input_tokens: cached,
121
+ cache_write_input_tokens: cacheWrite,
113
122
  output_tokens: output,
114
123
  reasoning_output_tokens: reasoning,
115
124
  total_tokens: input + output,
116
125
  });
117
126
  assert.deepEqual(
118
- cumulativeSnapshotDelta(snapshot(100, 80, 20, 5), snapshot(100, 80, 20, 5)),
119
- snapshot(0, 0, 0, 0),
127
+ cumulativeSnapshotDelta(snapshot(100, 80, 0, 20, 5), snapshot(100, 80, 0, 20, 5)),
128
+ snapshot(0, 0, 0, 0, 0),
120
129
  );
121
130
  assert.deepEqual(
122
- cumulativeSnapshotDelta(snapshot(100, 80, 20, 5), snapshot(140, 110, 35, 9)),
123
- snapshot(40, 30, 15, 4),
131
+ cumulativeSnapshotDelta(snapshot(100, 80, 0, 20, 5), snapshot(140, 110, 10, 35, 9)),
132
+ snapshot(40, 30, 10, 15, 4),
124
133
  );
125
134
  assert.deepEqual(
126
- cumulativeSnapshotDelta(snapshot(140, 110, 35, 9), snapshot(12, 8, 3, 1)),
127
- snapshot(12, 8, 3, 1),
135
+ cumulativeSnapshotDelta(snapshot(140, 110, 10, 35, 9), snapshot(12, 8, null, 3, 1)),
136
+ snapshot(12, 8, null, 3, 1),
128
137
  );
129
138
  });
130
139
 
@@ -132,11 +141,13 @@ test("deduplicates only consecutive identical last_token_usage fallback snapshot
132
141
  const snapshot = {
133
142
  input_tokens: 10,
134
143
  cached_input_tokens: 2,
144
+ cache_write_input_tokens: 0,
135
145
  output_tokens: 3,
136
146
  reasoning_output_tokens: 1,
137
147
  total_tokens: 13,
138
148
  };
139
149
  assert.equal(sameTokenSnapshot(snapshot, { ...snapshot }), true);
150
+ assert.equal(sameTokenSnapshot(snapshot, { ...snapshot, cache_write_input_tokens: 1 }), false);
140
151
  assert.equal(sameTokenSnapshot(snapshot, { ...snapshot, output_tokens: 4 }), false);
141
152
  assert.equal(sameTokenSnapshot(null, snapshot), false);
142
153
  });
@@ -170,6 +181,7 @@ test("prices only exact or governed model identities", async () => {
170
181
  aliases: ["gpt-test-alias"],
171
182
  input_per_million_usd: 10,
172
183
  cached_input_per_million_usd: 1,
184
+ cache_write_input_per_million_usd: 12.5,
173
185
  output_per_million_usd: 20,
174
186
  reasoning_per_million_usd: 30,
175
187
  long_context_threshold_tokens: null,
@@ -177,9 +189,23 @@ test("prices only exact or governed model identities", async () => {
177
189
  ],
178
190
  }),
179
191
  );
180
- const tokens = { input: 100, cached_input: 40, output: 20, reasoning: 5 };
181
- const expected = (60 * 10 + 40 * 1 + 15 * 20 + 5 * 30) / 1_000_000;
182
- assert.equal((await pricingFor(root, "gpt-test", tokens)).usd, expected);
192
+ const zeroCacheWrite = {
193
+ input: 100,
194
+ cached_input: 40,
195
+ cache_write_input: 0,
196
+ output: 20,
197
+ reasoning: 5,
198
+ };
199
+ assert.equal(
200
+ (await pricingFor(root, "gpt-test", { ...zeroCacheWrite, cache_write_input: null })).usd,
201
+ null,
202
+ );
203
+ assert.equal((await pricingFor(root, "gpt-test", zeroCacheWrite)).usd, 0.00104);
204
+ assert.equal(
205
+ (await pricingFor(root, "gpt-test", { ...zeroCacheWrite, cache_write_input: 10 })).usd,
206
+ 0.001065,
207
+ );
208
+ const tokens = zeroCacheWrite;
183
209
  assert.equal((await pricingFor(root, "unknown", tokens)).usd, null);
184
210
  });
185
211
 
@@ -74,6 +74,7 @@ export const remeasureSelectedRuns = async ({
74
74
  const unchanged =
75
75
  superseded.tokens.input === tokens.input &&
76
76
  superseded.tokens.cached_input === tokens.cached_input &&
77
+ superseded.tokens.cache_write_input === tokens.cache_write_input &&
77
78
  superseded.tokens.output === tokens.output &&
78
79
  superseded.tokens.reasoning === tokens.reasoning &&
79
80
  superseded.tokens.total === tokens.total;