@zaip-ai/cli 3.2.0 → 3.4.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 (288) hide show
  1. package/dist/services/adapters.d.ts +1 -1
  2. package/dist/services/adapters.d.ts.map +1 -1
  3. package/dist/services/adapters.js +5 -3
  4. package/dist/services/adapters.js.map +1 -1
  5. package/dist/services/agent-catalog-upgrade.d.ts +3 -0
  6. package/dist/services/agent-catalog-upgrade.d.ts.map +1 -0
  7. package/dist/services/agent-catalog-upgrade.js +35 -0
  8. package/dist/services/agent-catalog-upgrade.js.map +1 -0
  9. package/dist/services/install-agents-template.d.ts.map +1 -1
  10. package/dist/services/install-agents-template.js +22 -22
  11. package/dist/services/install-agents-template.js.map +1 -1
  12. package/dist/services/install-template-policy.d.ts +3 -0
  13. package/dist/services/install-template-policy.d.ts.map +1 -0
  14. package/dist/services/install-template-policy.js +21 -0
  15. package/dist/services/install-template-policy.js.map +1 -0
  16. package/dist/services/logger.js +24 -8
  17. package/dist/services/logger.js.map +1 -1
  18. package/dist/services/logger.test.js +33 -6
  19. package/dist/services/logger.test.js.map +1 -1
  20. package/dist/services/sqlite-bootstrap.d.ts +1 -0
  21. package/dist/services/sqlite-bootstrap.d.ts.map +1 -1
  22. package/dist/services/sqlite-bootstrap.js +10 -1
  23. package/dist/services/sqlite-bootstrap.js.map +1 -1
  24. package/package.json +2 -2
  25. package/templates/.agents/README-ENG.md +2 -1
  26. package/templates/.agents/README.md +2 -1
  27. package/templates/.agents/config/agents/catalog.yaml +1 -0
  28. package/templates/.agents/config/agents/discovery.json +2 -2
  29. package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +2 -2
  30. package/templates/.agents/dashboard/.zaip-managed.json +278 -126
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-CEDZjl4V.js → CostCalculationGuidePage-C5NgEcVh.js} +1 -1
  32. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-BzaUTZDx.js → DashboardHelpDialog-CCMVnkkI.js} +4 -3
  33. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-21cCJik-.js → PricingSettingsDialog-CGYcJ5EB.js} +1 -1
  34. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BAvLPAee.js → ProjectSettingsPage-DVCPPV75.js} +1 -1
  35. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-wqW52uCx.js → TraceabilityWorkspace-CqK3Psfy.js} +1 -1
  36. package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-PoJA2PI1.css → cost-monitor-BsMfGfQi.css} +1 -1
  37. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-j3aUYH5G.js +68 -0
  38. package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-BkAm8-h4.js → dashboard-localization-jvdDfNKs.js} +2 -1
  39. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DEmo6Tn2.js → icons-vendor-x8xxL9yW.js} +1 -1
  40. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cl5EWx8R.js +2 -0
  41. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cwylbh_N.css +1 -0
  42. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CadYsm83.js → react-vendor-CNOXIJHN.js} +1 -1
  43. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BzKK8kK3.js → traceability-CcpbpT1s.js} +1 -1
  44. package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
  45. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  46. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +12 -1
  47. package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +33 -0
  48. package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +58 -0
  49. package/templates/.agents/dashboard/apps/frontend/src/app-work-board-options.ts +41 -0
  50. package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +25 -0
  51. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
  52. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +5 -1
  53. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +140 -0
  54. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +28 -41
  55. package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +38 -0
  56. package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +33 -0
  57. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  58. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +25 -3
  59. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +17 -19
  60. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +13 -167
  61. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +2 -9
  62. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +8 -8
  63. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +29 -52
  64. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +1 -1
  65. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +2 -2
  66. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +4 -27
  67. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +2 -2
  68. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +4 -3
  69. package/templates/.agents/dashboard/modules/cost-monitor/src/react/agent-model-presentation.test.ts +26 -0
  70. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-embedded.css +7 -0
  71. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +173 -0
  72. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-props.ts +47 -0
  73. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +1 -7
  74. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +3 -9
  75. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +44 -83
  76. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +11 -111
  77. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +47 -181
  78. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +63 -91
  79. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-monitor-unavailable.test.ts +55 -0
  80. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-duration.test.ts +189 -0
  81. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  82. package/templates/.agents/dashboard/modules/operations/src/react/OperationsEntityFilters.tsx +82 -0
  83. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +4 -1
  84. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +5 -0
  85. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +22 -31
  86. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +13 -1
  87. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +16 -3
  88. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +11 -27
  89. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +44 -193
  90. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +186 -0
  91. package/templates/.agents/dashboard/modules/operations/src/react/export/excel-agent-participations.test.ts +28 -0
  92. package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +2 -1
  93. package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +55 -31
  94. package/templates/.agents/dashboard/modules/operations/src/react/operations-export-duration.ts +13 -0
  95. package/templates/.agents/dashboard/modules/operations/src/react/operations-filter-panel.css +4 -0
  96. package/templates/.agents/dashboard/modules/operations/src/react/use-operation-filter-feedback.ts +18 -0
  97. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +11 -0
  98. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +10 -2
  99. package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +1 -1
  100. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  101. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  102. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  103. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  104. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +406 -332
  105. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +352 -280
  106. package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
  107. package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +2 -1
  108. package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +4 -2
  109. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +406 -332
  110. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +95 -0
  111. package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +102 -12
  112. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +75 -1
  113. package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +10 -0
  114. package/templates/.agents/dashboard/packages/local-runtime/src/server-lifecycle-diagnostics.ts +50 -0
  115. package/templates/.agents/dashboard/packages/local-runtime/src/server-macro-population.test.ts +165 -0
  116. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-page-filters.ts +65 -0
  117. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +111 -0
  118. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +53 -63
  119. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +19 -5
  120. package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.test.ts +19 -0
  121. package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +11 -2
  122. package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +19 -12
  123. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +46 -2
  124. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +10 -2
  125. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -3
  126. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +43 -1
  127. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +46 -11
  128. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +188 -0
  129. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.test.ts +85 -0
  130. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.ts +147 -0
  131. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.test.ts +94 -0
  132. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +96 -55
  133. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +58 -3
  134. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-macro-classification.test.ts +172 -0
  135. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +1 -1
  136. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +4 -1
  137. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +7 -7
  138. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +2 -1
  139. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +10 -1
  140. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +18 -82
  141. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-cached-cost-page.ts +169 -0
  142. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-developer.ts +205 -0
  143. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +13 -4
  144. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +22 -23
  145. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +42 -209
  146. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +18 -4
  147. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +9 -2
  148. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +76 -83
  149. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +25 -161
  150. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +18 -45
  151. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +15 -2
  152. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +16 -16
  153. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +2 -1
  154. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +1 -1
  155. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +47 -22
  156. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +16 -2
  157. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +13 -1
  158. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-rebuild-result.ts +15 -0
  159. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +4 -4
  160. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +19 -42
  161. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-macro-classification.ts +48 -0
  162. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-summary-cursor.ts +15 -0
  163. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-token-active-allocation.ts +46 -0
  164. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-stages.ts +60 -0
  165. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +5 -1
  166. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +7 -1
  167. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +17 -2
  168. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.mjs +65 -0
  169. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.test.mjs +72 -0
  170. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +32 -9
  171. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +39 -45
  172. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -2
  173. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  174. package/templates/.agents/dashboard/scripts/qualify-macro-overview.mjs +50 -0
  175. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  176. package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +1 -18
  177. package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.spec.ts +20 -0
  178. package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.ts +20 -0
  179. package/templates/.agents/design/.zaip-managed.json +82 -74
  180. package/templates/.agents/design/apps/catalog/dist/assets/index-0W0Gj_Gs.css +1 -0
  181. package/templates/.agents/design/apps/catalog/dist/assets/index-32GZO95T.js +72 -0
  182. package/templates/.agents/design/apps/catalog/dist/assets/{index-D_lfqoyx.js → index-BP8IxOxt.js} +3 -3
  183. package/templates/.agents/design/apps/catalog/dist/assets/{index-BOjCcUaU.js → index-QJsgr9Ht.js} +3 -3
  184. package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
  185. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-CvaciY0C.js +1 -0
  186. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-Cm-yJJz_.js → Color-6AOWCN3U-DwBV1A1Y.js} +1 -1
  187. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-3dqK5g3e.js +142 -0
  188. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-2OCgtT0I.js +1 -0
  189. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-Belk4jRr.js → DocsRenderer-JROSPFPF-CODg0rSl.js} +4 -4
  190. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Primitives-BmeKjJW4.js +1 -0
  191. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-DoPvjkS1.js → WithTooltip-7X4HQR7L-C5MI-3uZ.js} +1 -1
  192. package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatus.stories-Tb_iQqVK.js +17 -0
  193. package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-CD54pw0-.js +1 -0
  194. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-B1itKXEN.js → chunk-DRQKCCAG-KSn75jcy.js} +1 -1
  195. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-C-Eb5SPY.js → chunk-W22LQPXL-C4LS1Thf.js} +1 -1
  196. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-DnyKLwhj.js → components-DV1BRgMY.js} +5 -5
  197. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-BU_68im1.js +1 -0
  198. package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +1 -0
  199. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-DcXBsFPz.js → iframe-CBbPFx5G.js} +4 -4
  200. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-CRM89QRf.js → react-18-C9IPGXtb.js} +1 -1
  201. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-CEv2qkJT.js +1 -0
  202. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-B03jQGTF.js → syntaxhighlighter-YFXUGROL-ZgDQjyWI.js} +1 -1
  203. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-4ZyufAga.js → theming-Cx9-gH6l.js} +1 -1
  204. package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +2 -2
  205. package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
  206. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/a11y-2/manager-bundle.js +3 -3
  207. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/docs-1/manager-bundle.js +4 -4
  208. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +60 -60
  209. package/templates/.agents/design/apps/catalog/package.json +1 -1
  210. package/templates/.agents/design/apps/catalog/src/components/DashboardFiltersSpecimen.tsx +61 -0
  211. package/templates/.agents/design/apps/catalog/src/components/Primitives.tsx +24 -0
  212. package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +26 -0
  213. package/templates/.agents/design/apps/catalog/src/design-contract.test.ts +27 -13
  214. package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +38 -0
  215. package/templates/.agents/design/apps/catalog/src/pages/DesignSystemPage.tsx +15 -1
  216. package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +18 -0
  217. package/templates/.agents/design/apps/catalog/src/stories/DashboardFilters.stories.tsx +7 -0
  218. package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +9 -0
  219. package/templates/.agents/design/apps/catalog/src/styles/components.css +83 -2
  220. package/templates/.agents/design/apps/catalog/src/styles.css +2 -0
  221. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  222. package/templates/.agents/design/tokens.json +32 -0
  223. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  224. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  225. package/templates/.agents/requirements/comparative-audit.md +1 -1
  226. package/templates/.agents/requirements/context-engine.md +1 -1
  227. package/templates/.agents/requirements/cost-observability.md +1 -1
  228. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  229. package/templates/.agents/requirements/data-export.md +1 -1
  230. package/templates/.agents/requirements/design-system.md +1 -1
  231. package/templates/.agents/requirements/execution-engine.md +1 -1
  232. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  233. package/templates/.agents/requirements/model-orchestration.md +1 -1
  234. package/templates/.agents/requirements/public-distribution.md +18 -4
  235. package/templates/.agents/requirements/software-architecture.md +1 -1
  236. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  237. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  238. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  239. package/templates/.agents/rules/autonomy-decision.md +1 -0
  240. package/templates/.agents/rules/workflow.md +1 -1
  241. package/templates/.agents/runtime/VERSION +1 -1
  242. package/templates/.agents/runtime/bin/zaip.mjs +28 -26
  243. package/templates/.agents/runtime/checksums.sha256 +5 -5
  244. package/templates/.agents/runtime/manifest.json +1 -1
  245. package/templates/.agents/runtime/provenance.json +4 -4
  246. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  247. package/templates/.agents/skills/zaip-aios/SKILL.md +0 -1
  248. package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +1 -0
  249. package/templates/.agents/skills/zaip-skill-config/SKILL.md +1 -1
  250. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +13 -0
  251. package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +17 -0
  252. package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +2 -2
  253. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +4 -2
  254. package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +4 -2
  255. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +2 -2
  256. package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +2 -2
  257. package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +4 -0
  258. package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +4 -0
  259. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -3
  260. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +15 -8
  261. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +13 -12
  262. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +50 -13
  263. package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +2 -2
  264. package/templates/.agents/skills/zaip-skill-spec/SKILL.md +2 -2
  265. package/templates/.agents/skills/zaip-skill-update-version-doc/SKILL.md +39 -0
  266. package/templates/.agents/skills/zaip-skill-update-version-doc/agents/openai.yaml +4 -0
  267. package/templates/.agents/skills/zaip-skill-update-version-doc/scripts/update-version-doc.mjs +21 -0
  268. package/templates/.agents/skills/zaip-skill-update-version-doc/scripts/update-version-doc.test.mjs +32 -0
  269. package/templates/.agents/zaip-aios/README.md +2 -1
  270. package/templates/.agents/zaip-aios/VERSION +1 -1
  271. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +7 -3
  272. package/templates/template-manifest.json +436 -256
  273. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-06__WZco.js +0 -68
  274. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +0 -1
  275. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DqZKJS8y.js +0 -2
  276. package/templates/.agents/design/apps/catalog/dist/assets/index-BEmIE7WE.css +0 -1
  277. package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +0 -72
  278. package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +0 -72
  279. package/templates/.agents/design/apps/catalog/dist/assets/index-CqqYWY2f.js +0 -9
  280. package/templates/.agents/design/apps/catalog/dist/assets/index-CqtYXZfV.js +0 -72
  281. package/templates/.agents/design/apps/catalog/dist/assets/index-D9pj7Jlf.js +0 -9
  282. package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +0 -9
  283. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +0 -1
  284. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +0 -137
  285. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +0 -1
  286. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +0 -1
  287. package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-BEmIE7WE.css +0 -1
  288. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +0 -1
@@ -93,6 +93,7 @@ import {
93
93
  presentLaunchFailure,
94
94
  writeLauncherStatus,
95
95
  } from "./start-dashboard-lifecycle.mjs";
96
+ import { inspectDashboardOwnership } from "./start-dashboard-ownership.mjs";
96
97
  import { assertDashboardPrerequisites, exists } from "./start-dashboard-prerequisites.mjs";
97
98
  import {
98
99
  isKnownDashboardLauncher,
@@ -132,7 +133,8 @@ export async function readDashboardSession(path = sessionPath) {
132
133
  }
133
134
  }
134
135
  export async function writeDashboardSession(session, path = sessionPath) {
135
- await writeJsonAtomic(path, session);
136
+ const { snapshotState: _obsoleteSnapshotState, ...identity } = session;
137
+ await writeJsonAtomic(path, identity);
136
138
  }
137
139
  export async function claimDashboardLaunch(
138
140
  { launchPort, token },
@@ -193,6 +195,7 @@ export async function claimDashboardLaunch(
193
195
  if (
194
196
  previous?.kind === claim.kind &&
195
197
  previous?.workspaceKey === workspaceKey &&
198
+ previous?.workspace === workspaceRoot &&
196
199
  Number.isInteger(previous?.launcherPid) &&
197
200
  previous.launcherPid > 0 &&
198
201
  previous.launcherPid !== process.pid
@@ -304,11 +307,11 @@ export async function probeDashboardPort(
304
307
  }
305
308
  export async function findReusableDashboardSession({
306
309
  path = sessionPath,
307
- startPort = preferredPort(),
308
310
  fetchImpl = fetch,
309
311
  expectedWorkspaceKey = workspaceKey,
310
312
  expectedBuildSignature = null,
311
313
  expectedSnapshotState = "current",
314
+ inspectOwnership = inspectDashboardOwnership,
312
315
  } = {}) {
313
316
  const session = await readDashboardSession(path);
314
317
  if (
@@ -321,43 +324,19 @@ export async function findReusableDashboardSession({
321
324
  ) {
322
325
  return null;
323
326
  }
324
- // Session metadata is written before the serving process finishes promoting
325
- // a stale seed. Trust a state transition only after the owned server itself
326
- // reports it; never reuse an unknown or still-updating generation as current.
327
- if (expectedSnapshotState !== null && session.snapshotState !== expectedSnapshotState) {
328
- if (!Number.isInteger(session.port)) return null;
329
- try {
330
- const response = await fetchImpl(dashboardHealthUrl(session.port), {
331
- signal: AbortSignal.timeout(500),
332
- });
333
- const payload = await response.json();
334
- if (
335
- !response.ok ||
336
- payload?.kind !== runtimeKind ||
337
- payload?.workspaceKey !== expectedWorkspaceKey ||
338
- payload?.snapshot_state !== expectedSnapshotState
339
- )
340
- return null;
341
- } catch {
342
- return null;
343
- }
344
- }
327
+ const health = await inspectOwnership(session, {
328
+ workspaceRoot,
329
+ workspaceKey: expectedWorkspaceKey,
330
+ fetchImpl,
331
+ host,
332
+ });
345
333
  if (
346
- Number.isInteger(session.port) &&
347
- (await probeDashboardPort(session.port, fetchImpl, expectedWorkspaceKey))
348
- ) {
349
- return session;
350
- }
351
- const ports = Array.from({ length: maxPortAttempts }, (_, index) => startPort + index).filter(
352
- (port) => port <= 65_535 && port !== session.port,
353
- );
354
- const matches = await Promise.all(
355
- ports.map(async (port) =>
356
- (await probeDashboardPort(port, fetchImpl, expectedWorkspaceKey)) ? port : null,
357
- ),
358
- );
359
- const port = matches.find((candidate) => candidate !== null);
360
- return port === undefined ? null : { ...session, port };
334
+ health === null ||
335
+ health.status !== "ok" ||
336
+ (expectedSnapshotState !== null && health.snapshot_state !== expectedSnapshotState)
337
+ )
338
+ return null;
339
+ return session;
361
340
  }
362
341
  export function requestBackgroundProjectionRefresh(session, fetchImpl = fetch) {
363
342
  return fetchImpl(`http://${host}:${session.port}/api/v2/refresh-projection`, {
@@ -423,7 +402,7 @@ export async function withLauncherLock(
423
402
  }
424
403
 
425
404
  export function startDashboardLaunchPage(port) {
426
- return createDashboardLaunchPage({ port, host, runtimeKind, healthPath, delay });
405
+ return createDashboardLaunchPage({ port, host, runtimeKind, healthPath, delay, workspaceRoot });
427
406
  }
428
407
  async function redirectLaunchPage(launchPage, target) {
429
408
  launchPage.setProgress({
@@ -464,6 +443,7 @@ async function stopOwnedDashboard(session) {
464
443
  fetchImpl: fetch,
465
444
  host,
466
445
  packageRoot,
446
+ workspaceRoot,
467
447
  delay,
468
448
  });
469
449
  }
@@ -471,10 +451,12 @@ export async function previousDashboardSessions({
471
451
  sessionPath: candidateSessionPath = sessionPath,
472
452
  registryPath: candidateRegistryPath = portRegistryPath,
473
453
  probe = (port) => probeDashboardPort(port, fetch, workspaceKey, false),
454
+ inspectOwnership = inspectDashboardOwnership,
474
455
  } = {}) {
475
456
  return collectPreviousDashboardSessions({
476
457
  candidateSessionPath,
477
458
  candidateRegistryPath,
459
+ inspectOwnership,
478
460
  probe,
479
461
  readDashboardSession,
480
462
  readPortRegistry,
@@ -642,10 +624,7 @@ async function main() {
642
624
  dbPath,
643
625
  buildSignature,
644
626
  generationId: `${process.pid}-${child.pid}-${port}-${randomBytes(6).toString("hex")}`,
645
- // The serving process owns the stale-seed refresh and promotes it
646
- // into this session, so a later click can reuse the current
647
- // generation after the health state flips.
648
- snapshotState: snapshotCache === "stale_seed" ? "updating" : "current",
627
+ // Snapshot state belongs exclusively to the live health/ready endpoints.
649
628
  createdAt: new Date().toISOString(),
650
629
  };
651
630
  await assertCurrentLaunch();
@@ -719,12 +698,27 @@ async function waitForDashboard(port, child) {
719
698
  try {
720
699
  const response = await fetch(dashboardHealthUrl(port), { signal: AbortSignal.timeout(750) });
721
700
  const payload = await response.json().catch(() => null);
722
- if (response.ok && payload?.kind === runtimeKind && payload?.workspaceKey === workspaceKey) {
701
+ if (
702
+ payload?.kind === runtimeKind &&
703
+ payload?.workspaceKey === workspaceKey &&
704
+ payload?.workspace === workspaceRoot &&
705
+ payload?.server_pid === child.pid &&
706
+ (response.ok || payload.status === "degraded")
707
+ ) {
723
708
  const readiness = await fetch(`http://${host}:${port}/api/v2/ready`, {
724
709
  signal: AbortSignal.timeout(750),
725
710
  cache: "no-store",
726
711
  });
727
- if (readiness.ok) return;
712
+ const readinessPayload = await readiness
713
+ .clone()
714
+ .json()
715
+ .catch(() => null);
716
+ if (
717
+ readiness.ok ||
718
+ (readinessPayload?.status === "degraded" &&
719
+ ["missing", "invalid"].includes(readinessPayload.lifecycle_manifest_state))
720
+ )
721
+ return;
728
722
  if (readiness.status >= 500) {
729
723
  const detail = await readiness.json().catch(() => null);
730
724
  const unavailable = new Error(
@@ -468,11 +468,13 @@ describe("dashboard executable session", () => {
468
468
  const reusable = await findReusableDashboardSession({
469
469
  path,
470
470
  expectedBuildSignature: "compatible-build",
471
+ inspectOwnership: async () => ({ status: "ok", snapshot_state: "current" }),
471
472
  fetchImpl: async () =>
472
473
  new Response(JSON.stringify({ kind: runtimeKind, workspaceKey }), { status: 200 }),
473
474
  });
474
475
 
475
- expect(reusable).toEqual(session);
476
+ const { snapshotState, ...identity } = session;
477
+ expect(reusable).toEqual(identity);
476
478
  expect(reusable).toMatchObject({ port: 4317, serverPid: 5678 });
477
479
  });
478
480
 
@@ -655,6 +657,7 @@ describe("dashboard executable session", () => {
655
657
  sessionPath: join(directory, "missing-session.json"),
656
658
  registryPath: path,
657
659
  probe: async () => true,
660
+ inspectOwnership: async () => ({ status: "ok" }),
658
661
  }),
659
662
  ).resolves.toEqual([expect.objectContaining({ port: 4317, rootPid: 1234, status: "closed" })]);
660
663
  });
@@ -743,7 +746,7 @@ describe("dashboard executable session", () => {
743
746
  expect(buildSignature).toBeGreaterThan(lock);
744
747
  expect(previous).toBeGreaterThan(buildSignature);
745
748
  expect(source).toContain("newestClickWins: true,");
746
- expect(source).toContain(
749
+ expect(source).not.toContain(
747
750
  'snapshotState: snapshotCache === "stale_seed" ? "updating" : "current",',
748
751
  );
749
752
  expect(source).toContain("presentLaunchFailure(launchPage, error, formatLauncherError)");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/dashboard-ui",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,50 @@
1
+ import assert from "node:assert/strict";
2
+ import { spawnSync } from "node:child_process";
3
+ import { existsSync } from "node:fs";
4
+ import { dirname, join, resolve } from "node:path";
5
+
6
+ const root = resolve(import.meta.dirname, "../../..");
7
+ const mode = process.argv[2];
8
+ assert(["test", "check", "integration"].includes(mode), "Expected test|check|integration");
9
+ function run(args, cwd = root) {
10
+ const result = spawnSync(process.execPath, args, {
11
+ cwd,
12
+ windowsHide: true,
13
+ stdio: "inherit",
14
+ timeout: 300_000,
15
+ env: { ...process.env, CI: "true" },
16
+ });
17
+ if (result.error) throw result.error;
18
+ assert.equal(result.status, 0, `Check failed: ${args.join(" ")}`);
19
+ }
20
+
21
+ if (!existsSync(join(root, "node_modules/vitest/vitest.mjs"))) {
22
+ run([
23
+ join(dirname(process.execPath), "node_modules/corepack/dist/pnpm.js"),
24
+ "install",
25
+ "--offline",
26
+ "--frozen-lockfile",
27
+ "--ignore-scripts",
28
+ ]);
29
+ }
30
+ const runtime = ".agents/dashboard/packages/local-runtime";
31
+ const operations = ".agents/dashboard/modules/operations";
32
+ if (mode === "check") {
33
+ for (const directory of [runtime, operations]) {
34
+ run([join(root, "node_modules/typescript/bin/tsc"), "--noEmit"], join(root, directory));
35
+ }
36
+ } else {
37
+ const tests =
38
+ mode === "test"
39
+ ? [
40
+ `${runtime}/src/sqlite-first-fold-cache.test.ts`,
41
+ `${runtime}/src/server-period-macro-metric.test.ts`,
42
+ `${operations}/src/react/OperationsOverview.test.ts`,
43
+ ]
44
+ : [
45
+ `${runtime}/src/sqlite-force-canonical.test.ts`,
46
+ `${runtime}/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts`,
47
+ `${runtime}/src/server-overview.test.ts`,
48
+ ];
49
+ run([join(root, "node_modules/vitest/vitest.mjs"), "run", ...tests]);
50
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/dashboard-e2e",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,4 +1,5 @@
1
1
  import { expect, type Locator, type Page, test } from "@playwright/test";
2
+ import { exportRowIdentity } from "./export-row-identity.js";
2
3
 
3
4
  type Metric = {
4
5
  surface: string;
@@ -710,24 +711,6 @@ function assertCompleteExport(pages: SqlitePage[]) {
710
711
  expect(pages.at(-1)?.has_more).toBe(false);
711
712
  }
712
713
 
713
- function exportRowIdentity(row: Record<string, unknown>): string {
714
- for (const key of [
715
- "agent_invocation_id",
716
- "execution_id",
717
- "conversation_id",
718
- "task_id",
719
- "spec_id",
720
- "prd_id",
721
- "period_key",
722
- "key",
723
- "id",
724
- ]) {
725
- const value = row[key];
726
- if (typeof value === "string" && value.length > 0) return `${key}:${value}`;
727
- }
728
- return JSON.stringify(row);
729
- }
730
-
731
714
  async function exportCloseCount(page: Page): Promise<number> {
732
715
  return page.evaluate(
733
716
  () => (window as Window & { __zaipExportCloseCount?: number }).__zaipExportCloseCount ?? 0,
@@ -0,0 +1,20 @@
1
+ import { expect, test } from "@playwright/test";
2
+ import { exportRowIdentity } from "./export-row-identity.js";
3
+
4
+ test("export identity distinguishes sibling Tasks and still detects actual duplicates", () => {
5
+ const first = { entity_kind: "task", id: "TASK-A", spec_id: "SPEC-SHARED", prd_id: "PRD-SHARED" };
6
+ const second = { ...first, id: "TASK-B" };
7
+ const identities = [first, second].map(exportRowIdentity);
8
+ expect(new Set(identities).size).toBe(2);
9
+ expect(exportRowIdentity({ ...first })).toBe(identities[0]);
10
+ expect(exportRowIdentity({ ...first, entity_kind: "spec" })).not.toBe(identities[0]);
11
+ });
12
+
13
+ test("cost export keeps its own invocation identity ahead of parent references", () => {
14
+ expect(
15
+ exportRowIdentity({ agent_invocation_id: "AINV-A", task_id: "TASK-A", spec_id: "SPEC-A" }),
16
+ ).toBe("agent_invocation_id:AINV-A");
17
+ expect(exportRowIdentity({ execution_id: "EXEC-A", task_id: "TASK-A" })).toBe(
18
+ "execution_id:EXEC-A",
19
+ );
20
+ });
@@ -0,0 +1,20 @@
1
+ export function exportRowIdentity(row: Record<string, unknown>): string {
2
+ if (typeof row.entity_kind === "string" && typeof row.id === "string" && row.id.length > 0) {
3
+ return `${row.entity_kind}:${row.id}`;
4
+ }
5
+ for (const key of [
6
+ "agent_invocation_id",
7
+ "execution_id",
8
+ "conversation_id",
9
+ "task_id",
10
+ "spec_id",
11
+ "prd_id",
12
+ "period_key",
13
+ "key",
14
+ "id",
15
+ ]) {
16
+ const value = row[key];
17
+ if (typeof value === "string" && value.length > 0) return `${key}:${value}`;
18
+ }
19
+ return JSON.stringify(row);
20
+ }