@zaip-ai/cli 3.3.0 → 3.5.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 +4 -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.test.js +12 -2
  17. package/dist/services/logger.test.js.map +1 -1
  18. package/dist/services/sqlite-bootstrap.d.ts +1 -0
  19. package/dist/services/sqlite-bootstrap.d.ts.map +1 -1
  20. package/dist/services/sqlite-bootstrap.js +10 -1
  21. package/dist/services/sqlite-bootstrap.js.map +1 -1
  22. package/package.json +2 -2
  23. package/templates/.agents/config/agents/discovery.json +1 -1
  24. package/templates/.agents/dashboard/.zaip-managed.json +286 -126
  25. package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-BBFDrn64.js → CostCalculationGuidePage-C5NgEcVh.js} +1 -1
  26. package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-Cd-qo9w7.js → DashboardHelpDialog-CCMVnkkI.js} +1 -1
  27. package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-J7L5m8lk.js → PricingSettingsDialog-CGYcJ5EB.js} +1 -1
  28. package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-B9GWkEyN.css → ProjectSettingsPage-CQMhvzvJ.css} +1 -1
  29. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-D46WWIKr.js +3 -0
  30. package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BzVtGLWS.js → TraceabilityWorkspace-BKBpJyLh.js} +1 -1
  31. package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-PoJA2PI1.css → cost-monitor-BsMfGfQi.css} +1 -1
  32. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-j3aUYH5G.js +68 -0
  33. package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-CWzf_RiP.js → icons-vendor-x8xxL9yW.js} +1 -1
  34. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Bas2TVju.js +2 -0
  35. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-CxrG_wRI.css +1 -0
  36. package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CtHdbZk3.js → react-vendor-CNOXIJHN.js} +1 -1
  37. package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BKrDH2TR.js → traceability-CcpbpT1s.js} +1 -1
  38. package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
  39. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  40. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +12 -1
  41. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsCard.tsx +5 -0
  42. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsField.tsx +21 -0
  43. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +12 -1
  44. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +16 -28
  45. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +25 -4
  46. package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +51 -0
  47. package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +39 -0
  48. package/templates/.agents/dashboard/apps/frontend/src/app-work-board-options.ts +41 -0
  49. package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +25 -0
  50. package/templates/.agents/dashboard/apps/frontend/src/project-settings-copy.ts +13 -4
  51. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +25 -1
  52. package/templates/.agents/dashboard/apps/frontend/src/project-settings-workspace.css +28 -0
  53. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +39 -0
  54. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
  55. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +5 -1
  56. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +140 -0
  57. package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +28 -41
  58. package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +38 -0
  59. package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +20 -0
  60. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  61. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +25 -3
  62. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +17 -19
  63. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +13 -167
  64. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +2 -9
  65. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +8 -8
  66. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +29 -52
  67. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +1 -1
  68. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +2 -2
  69. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +4 -27
  70. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +2 -2
  71. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +4 -3
  72. package/templates/.agents/dashboard/modules/cost-monitor/src/react/agent-model-presentation.test.ts +26 -0
  73. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-embedded.css +7 -0
  74. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +173 -0
  75. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-props.ts +47 -0
  76. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +1 -7
  77. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +3 -9
  78. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +44 -83
  79. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +11 -111
  80. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +47 -181
  81. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +63 -91
  82. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-monitor-unavailable.test.ts +55 -0
  83. package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-duration.test.ts +189 -0
  84. package/templates/.agents/dashboard/modules/operations/package.json +1 -1
  85. package/templates/.agents/dashboard/modules/operations/src/react/OperationsEntityFilters.tsx +82 -0
  86. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +22 -31
  87. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +13 -1
  88. package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +16 -3
  89. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +11 -27
  90. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +44 -193
  91. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +186 -0
  92. package/templates/.agents/dashboard/modules/operations/src/react/export/excel-agent-participations.test.ts +28 -0
  93. package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +2 -1
  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 +395 -341
  105. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +346 -294
  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 +42 -8
  109. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +395 -341
  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/project-settings.test.ts +2 -3
  113. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +1 -1
  114. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +75 -1
  115. package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +10 -0
  116. package/templates/.agents/dashboard/packages/local-runtime/src/server-lifecycle-diagnostics.ts +50 -0
  117. package/templates/.agents/dashboard/packages/local-runtime/src/server-macro-population.test.ts +165 -0
  118. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-page-filters.ts +65 -0
  119. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +111 -0
  120. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +53 -63
  121. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +19 -5
  122. package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +11 -2
  123. package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +16 -9
  124. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +46 -2
  125. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +10 -2
  126. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -3
  127. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +43 -1
  128. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +46 -11
  129. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +188 -0
  130. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.test.ts +85 -0
  131. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.ts +147 -0
  132. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +64 -54
  133. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-macro-classification.test.ts +172 -0
  134. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +1 -1
  135. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +2 -1
  136. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +7 -7
  137. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +2 -1
  138. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +10 -1
  139. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-pricing-provenance.test.ts +39 -0
  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 +20 -47
  151. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +2 -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-multi-provider.test.ts +1 -1
  154. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +47 -22
  155. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +3 -2
  156. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +11 -0
  157. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-rebuild-result.ts +15 -0
  158. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +4 -4
  159. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +15 -56
  160. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-macro-classification.ts +48 -0
  161. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-summary-cursor.ts +15 -0
  162. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-token-active-allocation.ts +46 -0
  163. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-stages.ts +60 -0
  164. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +5 -1
  165. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +7 -1
  166. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +17 -2
  167. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.mjs +65 -0
  168. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.test.mjs +72 -0
  169. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +32 -9
  170. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +39 -45
  171. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -2
  172. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  173. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  174. package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +1 -18
  175. package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.spec.ts +20 -0
  176. package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.ts +20 -0
  177. package/templates/.agents/design/.zaip-managed.json +105 -69
  178. package/templates/.agents/design/apps/catalog/dist/assets/index-0W0Gj_Gs.css +1 -0
  179. package/templates/.agents/design/apps/catalog/dist/assets/index-32GZO95T.js +72 -0
  180. package/templates/.agents/design/apps/catalog/dist/assets/{index-D_lfqoyx.js → index-BP8IxOxt.js} +3 -3
  181. package/templates/.agents/design/apps/catalog/dist/assets/index-D1JaPXfV.css +1 -0
  182. package/templates/.agents/design/apps/catalog/dist/assets/index-D2miO4-O.js +72 -0
  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/assets/{index-CqtYXZfV.js → index-mvD5mwcC.js} +3 -3
  185. package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
  186. package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-BJ8b4xZr.js +1 -0
  187. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-Cm-yJJz_.js → Color-6AOWCN3U-CQLHzznn.js} +1 -1
  188. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-kxWwSKin.js +146 -0
  189. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFilters.stories-Chm_dXV7.js +9 -0
  190. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFiltersSpecimen-9CaCbGIZ.js +1 -0
  191. package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-ED52wFjY.js +1 -0
  192. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-Belk4jRr.js → DocsRenderer-JROSPFPF-BcLgM80v.js} +4 -4
  193. package/templates/.agents/design/apps/catalog/dist/storybook/assets/Primitives-DV6Bpudf.js +1 -0
  194. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-DoPvjkS1.js → WithTooltip-7X4HQR7L-BKNiAz_E.js} +1 -1
  195. package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatus.stories-BL19HGOo.js +17 -0
  196. package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-DQnSS6s9.js +1 -0
  197. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-B1itKXEN.js → chunk-DRQKCCAG-DZBcXL-p.js} +1 -1
  198. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-C-Eb5SPY.js → chunk-W22LQPXL-CF3y2mfo.js} +1 -1
  199. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-DnyKLwhj.js → components-BVjxMRGq.js} +5 -5
  200. package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-Do9sjqiW.js +1 -0
  201. package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +1 -0
  202. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-DcXBsFPz.js → iframe-CTWGZcEe.js} +4 -4
  203. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-CRM89QRf.js → react-18-B9_a4mHb.js} +1 -1
  204. package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-NrUxok8K.js +1 -0
  205. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-B03jQGTF.js → syntaxhighlighter-YFXUGROL-F_p8E2xc.js} +1 -1
  206. package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-4ZyufAga.js → theming-fbSD9ZLF.js} +1 -1
  207. package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +2 -2
  208. package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
  209. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/a11y-2/manager-bundle.js +3 -3
  210. package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +3 -3
  211. package/templates/.agents/design/apps/catalog/package.json +1 -1
  212. package/templates/.agents/design/apps/catalog/src/components/DashboardFiltersSpecimen.tsx +61 -0
  213. package/templates/.agents/design/apps/catalog/src/components/Primitives.tsx +24 -0
  214. package/templates/.agents/design/apps/catalog/src/components/StackVersionFieldSpecimen.tsx +70 -0
  215. package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +42 -0
  216. package/templates/.agents/design/apps/catalog/src/design-contract.test.ts +27 -13
  217. package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +52 -0
  218. package/templates/.agents/design/apps/catalog/src/pages/DesignSystemPage.tsx +15 -1
  219. package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +32 -0
  220. package/templates/.agents/design/apps/catalog/src/stories/DashboardFilters.stories.tsx +7 -0
  221. package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +12 -0
  222. package/templates/.agents/design/apps/catalog/src/styles/components.css +84 -3
  223. package/templates/.agents/design/apps/catalog/src/styles/stack-version-field.css +17 -0
  224. package/templates/.agents/design/apps/catalog/src/styles.css +2 -0
  225. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  226. package/templates/.agents/design/tokens.json +32 -0
  227. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  228. package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
  229. package/templates/.agents/requirements/comparative-audit.md +1 -1
  230. package/templates/.agents/requirements/context-engine.md +1 -1
  231. package/templates/.agents/requirements/cost-observability.md +1 -1
  232. package/templates/.agents/requirements/dashboard-launch.md +1 -1
  233. package/templates/.agents/requirements/data-export.md +1 -1
  234. package/templates/.agents/requirements/design-system.md +1 -1
  235. package/templates/.agents/requirements/execution-engine.md +1 -1
  236. package/templates/.agents/requirements/kanban-dashboard.md +1 -1
  237. package/templates/.agents/requirements/model-orchestration.md +1 -1
  238. package/templates/.agents/requirements/public-distribution.md +9 -3
  239. package/templates/.agents/requirements/software-architecture.md +1 -1
  240. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  241. package/templates/.agents/requirements/work-lifecycle.md +1 -1
  242. package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
  243. package/templates/.agents/rules/autonomy-decision.md +1 -0
  244. package/templates/.agents/rules/workflow.md +2 -2
  245. package/templates/.agents/runtime/VERSION +1 -1
  246. package/templates/.agents/runtime/bin/zaip.mjs +27 -26
  247. package/templates/.agents/runtime/checksums.sha256 +5 -5
  248. package/templates/.agents/runtime/manifest.json +1 -1
  249. package/templates/.agents/runtime/provenance.json +4 -4
  250. package/templates/.agents/runtime/sbom.cdx.json +1 -1
  251. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +13 -0
  252. package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +17 -0
  253. package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +2 -2
  254. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +9 -6
  255. package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +1 -1
  256. package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +11 -9
  257. package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +2 -2
  258. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +1 -2
  259. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +9 -1
  260. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +23 -0
  261. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +2 -6
  262. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +15 -1
  263. package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +4 -0
  264. package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +4 -0
  265. package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -3
  266. package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +11 -8
  267. package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +13 -12
  268. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +17 -2
  269. package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +1 -1
  270. package/templates/.agents/skills/zaip-skill-spec/SKILL.md +2 -2
  271. package/templates/.agents/zaip-aios/VERSION +1 -1
  272. package/templates/template-manifest.json +445 -245
  273. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BpsAFy0g.js +0 -3
  274. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor--iPcnZdx.js +0 -68
  275. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +0 -1
  276. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DfdlGa7c.js +0 -2
  277. package/templates/.agents/design/apps/catalog/dist/assets/index-BEmIE7WE.css +0 -1
  278. package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +0 -72
  279. package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +0 -72
  280. package/templates/.agents/design/apps/catalog/dist/assets/index-CqqYWY2f.js +0 -9
  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
@@ -0,0 +1,61 @@
1
+ import { useState } from "react";
2
+ import { Card } from "./Primitives.js";
3
+
4
+ export const dashboardFilterFixtures = [
5
+ { name: "Operação", labels: ["Busca", "Status", "Risco", "Origem"] },
6
+ {
7
+ name: "Custos",
8
+ labels: [
9
+ "Buscar custos",
10
+ "Provider",
11
+ "Agente",
12
+ "Modelo",
13
+ "Status",
14
+ "Prioridade",
15
+ "Risco",
16
+ "Fase",
17
+ "Entrada",
18
+ "Trabalho",
19
+ ],
20
+ },
21
+ ] as const;
22
+ /** Native catalog adapter: business modules keep the query and lifecycle contracts. */
23
+ export function DashboardFiltersSpecimen({
24
+ fixture = dashboardFilterFixtures[0],
25
+ }: {
26
+ fixture?: (typeof dashboardFilterFixtures)[number];
27
+ }) {
28
+ const [values, setValues] = useState<Record<string, string>>({});
29
+ return (
30
+ <Card>
31
+ <h3>{fixture.name}</h3>
32
+ <details open>
33
+ <summary>Filtros de {fixture.name.toLowerCase()}</summary>
34
+ {fixture.labels.map((label) => (
35
+ <label key={label} style={{ display: "block", marginBlock: 8 }}>
36
+ {label}
37
+ {label.startsWith("Busca") ? (
38
+ <input
39
+ aria-label={label}
40
+ value={values[label] ?? ""}
41
+ onChange={(e) => setValues({ ...values, [label]: e.target.value })}
42
+ />
43
+ ) : (
44
+ <select
45
+ aria-label={label}
46
+ value={values[label] ?? ""}
47
+ onChange={(e) => setValues({ ...values, [label]: e.target.value })}
48
+ >
49
+ <option value="">Todos</option>
50
+ <option value="example">{label === "Status" ? "Bloqueado" : "Exemplo"}</option>
51
+ </select>
52
+ )}
53
+ </label>
54
+ ))}
55
+ <button type="button" onClick={() => setValues({})}>
56
+ Limpar filtros
57
+ </button>
58
+ </details>
59
+ </Card>
60
+ );
61
+ }
@@ -34,6 +34,30 @@ export function Card({ children, accent = false }: { children: ReactNode; accent
34
34
  return <article className={accent ? "card card-accent" : "card"}>{children}</article>;
35
35
  }
36
36
 
37
+ export function EditorialHero({
38
+ eyebrow,
39
+ title,
40
+ description,
41
+ children,
42
+ }: {
43
+ eyebrow?: string;
44
+ title: string;
45
+ description: string;
46
+ children?: ReactNode;
47
+ }) {
48
+ return (
49
+ <section className="editorial-hero">
50
+ <div className="editorial-hero-copy">
51
+ {eyebrow ? <p className="eyebrow">{eyebrow}</p> : null}
52
+ <h2>{title}</h2>
53
+ <p>{description}</p>
54
+ {children ? <div className="editorial-hero-actions">{children}</div> : null}
55
+ </div>
56
+ <div aria-hidden="true" className="editorial-hero-orbit" />
57
+ </section>
58
+ );
59
+ }
60
+
37
61
  export function Metric({ label, value, change }: { label: string; value: string; change: string }) {
38
62
  return (
39
63
  <Card>
@@ -0,0 +1,70 @@
1
+ import { Card } from "./Primitives.js";
2
+
3
+ type VersionKind = "exact" | "reference";
4
+
5
+ export type StackVersionFieldFixture = {
6
+ name: string;
7
+ technology: string;
8
+ value: string;
9
+ kind: VersionKind;
10
+ source: string;
11
+ };
12
+
13
+ /** Stable native adapter for the Setup Project version-or-reference input contract. */
14
+ export const stackVersionFieldFixtures: readonly StackVersionFieldFixture[] = [
15
+ {
16
+ name: "Versão exata",
17
+ technology: "TypeScript",
18
+ value: "7.0.2",
19
+ kind: "exact",
20
+ source: "npm:typescript",
21
+ },
22
+ {
23
+ name: "Serviço em nuvem",
24
+ technology: "PostgreSQL via Supabase",
25
+ value: "Serviço em nuvem",
26
+ kind: "reference",
27
+ source: "service:supabase-postgresql",
28
+ },
29
+ {
30
+ name: "Hospedagem em nuvem",
31
+ technology: "Hostinger VPS",
32
+ value: "Serviço em nuvem",
33
+ kind: "reference",
34
+ source: "provider:hostinger-vps",
35
+ },
36
+ ] as const;
37
+
38
+ export function StackVersionFieldSpecimen({
39
+ fixture,
40
+ }: {
41
+ fixture: StackVersionFieldFixture;
42
+ }) {
43
+ const isReference = fixture.kind === "reference";
44
+ const label = isReference ? "Referência descritiva" : "Versão exata";
45
+
46
+ return (
47
+ <Card>
48
+ <div className="stack-version-field-heading">
49
+ <div>
50
+ <p className="metric-label">{label}</p>
51
+ <h3>{fixture.technology}</h3>
52
+ </div>
53
+ <span className={`stack-version-kind is-${fixture.kind}`}>{label}</span>
54
+ </div>
55
+ <label className="stack-version-field">
56
+ <span>{isReference ? "Versão atual ou referência" : "Versão exata"}</span>
57
+ <input
58
+ aria-describedby={`stack-version-source-${fixture.name}`}
59
+ className={isReference ? "is-reference-value" : undefined}
60
+ defaultValue={fixture.value}
61
+ inputMode={isReference ? "text" : "decimal"}
62
+ readOnly
63
+ />
64
+ </label>
65
+ <p className="stack-version-source" id={`stack-version-source-${fixture.name}`}>
66
+ {fixture.source}
67
+ </p>
68
+ </Card>
69
+ );
70
+ }
@@ -0,0 +1,42 @@
1
+ import { Card } from "./Primitives.js";
2
+
3
+ export const workspaceStatusFixtures = [
4
+ { name: "Configuração", kind: "settings", message: "C:/projetos/zaip-growth" },
5
+ { name: "Ausente", kind: "warning", message: "Lifecycle não inicializado" },
6
+ { name: "Inválido", kind: "warning", message: "Manifesto do lifecycle inválido" },
7
+ {
8
+ name: "Indisponível",
9
+ kind: "warning",
10
+ message: "Não foi possível consultar a saúde do Dashboard",
11
+ },
12
+ ] as const;
13
+
14
+ /** Native adapter: the catalog cannot depend on the Dashboard application. */
15
+ export function WorkspaceStatusSpecimen({
16
+ fixture = workspaceStatusFixtures[0],
17
+ }: {
18
+ fixture?: (typeof workspaceStatusFixtures)[number];
19
+ }) {
20
+ if (fixture.kind === "settings") {
21
+ return (
22
+ <Card>
23
+ <h3>{fixture.name}</h3>
24
+ <section aria-label="Configuração do projeto">
25
+ <strong>Caminho do projeto</strong>
26
+ <p>
27
+ <code style={{ overflowWrap: "anywhere" }}>{fixture.message}</code>
28
+ </p>
29
+ </section>
30
+ </Card>
31
+ );
32
+ }
33
+
34
+ return (
35
+ <Card>
36
+ <h3>{fixture.name}</h3>
37
+ <aside aria-label="Saúde do Dashboard" style={{ overflowWrap: "anywhere" }}>
38
+ <p>{fixture.message}</p>
39
+ </aside>
40
+ </Card>
41
+ );
42
+ }
@@ -7,19 +7,28 @@ const designRoot = resolve(import.meta.dirname, "../../..");
7
7
 
8
8
  describe("design contract", () => {
9
9
  it("keeps structured tokens aligned with DESIGN.md frontmatter", async () => {
10
- const [markdown, tokensSource, componentsPage, primitives, stories, app, ...styles] =
11
- await Promise.all([
12
- readFile(resolve(designRoot, "DESIGN.md"), "utf8"),
13
- readFile(resolve(designRoot, "tokens.json"), "utf8"),
14
- readFile(resolve(import.meta.dirname, "pages/ComponentsPage.tsx"), "utf8"),
15
- readFile(resolve(import.meta.dirname, "components/Primitives.tsx"), "utf8"),
16
- readFile(resolve(import.meta.dirname, "stories/Components.stories.tsx"), "utf8"),
17
- readFile(resolve(import.meta.dirname, "App.tsx"), "utf8"),
18
- readFile(resolve(import.meta.dirname, "styles.css"), "utf8"),
19
- readFile(resolve(import.meta.dirname, "styles/catalog.css"), "utf8"),
20
- readFile(resolve(import.meta.dirname, "styles/design-system.css"), "utf8"),
21
- readFile(resolve(import.meta.dirname, "styles/components.css"), "utf8"),
22
- ]);
10
+ const [
11
+ markdown,
12
+ tokensSource,
13
+ designSystemPage,
14
+ componentsPage,
15
+ primitives,
16
+ stories,
17
+ app,
18
+ ...styles
19
+ ] = await Promise.all([
20
+ readFile(resolve(designRoot, "DESIGN.md"), "utf8"),
21
+ readFile(resolve(designRoot, "tokens.json"), "utf8"),
22
+ readFile(resolve(import.meta.dirname, "pages/DesignSystemPage.tsx"), "utf8"),
23
+ readFile(resolve(import.meta.dirname, "pages/ComponentsPage.tsx"), "utf8"),
24
+ readFile(resolve(import.meta.dirname, "components/Primitives.tsx"), "utf8"),
25
+ readFile(resolve(import.meta.dirname, "stories/Components.stories.tsx"), "utf8"),
26
+ readFile(resolve(import.meta.dirname, "App.tsx"), "utf8"),
27
+ readFile(resolve(import.meta.dirname, "styles.css"), "utf8"),
28
+ readFile(resolve(import.meta.dirname, "styles/catalog.css"), "utf8"),
29
+ readFile(resolve(import.meta.dirname, "styles/design-system.css"), "utf8"),
30
+ readFile(resolve(import.meta.dirname, "styles/components.css"), "utf8"),
31
+ ]);
23
32
  const css = styles.join("\n");
24
33
  const match = /^---\n([\s\S]+?)\n---/.exec(markdown);
25
34
  expect(match?.[1]).toBeDefined();
@@ -30,6 +39,7 @@ describe("design contract", () => {
30
39
  expect(tokens.dark).toEqual(design.dark);
31
40
  expect(tokens.effects).toEqual(design.effects);
32
41
  expect(tokens.neutral).toEqual(design.neutral);
42
+ expect(tokens.typography).toEqual(design.typography);
33
43
  expect(tokens.rounded).toEqual(design.rounded);
34
44
  expect(tokens.spacing).toEqual(design.spacing);
35
45
  for (const value of Object.values(tokens.colors as Record<string, string>)) {
@@ -58,5 +68,9 @@ describe("design contract", () => {
58
68
  expect(componentsPage).toContain(`<${specimen}`);
59
69
  expect(stories).toContain(`<${specimen}`);
60
70
  }
71
+ expect(primitives).toContain("function EditorialHero");
72
+ expect(designSystemPage).toContain("<EditorialHero");
73
+ expect(componentsPage).toContain("<EditorialHero");
74
+ expect(stories).toContain("<EditorialHero");
61
75
  });
62
76
  });
@@ -4,6 +4,10 @@ import {
4
4
  CostPopulationSpecimen,
5
5
  costPopulationFixtures,
6
6
  } from "../components/CostPopulationSpecimen.js";
7
+ import {
8
+ DashboardFiltersSpecimen,
9
+ dashboardFilterFixtures,
10
+ } from "../components/DashboardFiltersSpecimen.js";
7
11
  import {
8
12
  EstimatedCostSpecimen,
9
13
  estimatedCostFixtures,
@@ -15,6 +19,7 @@ import {
15
19
  ChartPanel,
16
20
  DataTable,
17
21
  DialogSpecimen,
22
+ EditorialHero,
18
23
  Field,
19
24
  FilterForm,
20
25
  Metric,
@@ -25,6 +30,14 @@ import {
25
30
  ProjectStatusSpecimen,
26
31
  projectStatusFixtures,
27
32
  } from "../components/ProjectStatusSpecimen.js";
33
+ import {
34
+ StackVersionFieldSpecimen,
35
+ stackVersionFieldFixtures,
36
+ } from "../components/StackVersionFieldSpecimen.js";
37
+ import {
38
+ WorkspaceStatusSpecimen,
39
+ workspaceStatusFixtures,
40
+ } from "../components/WorkspaceStatusSpecimen.js";
28
41
 
29
42
  const dashboardFamilies = [
30
43
  ["Dialogs e popups", "TaskDetailsDialog, TraceStageDialog", "Foco, contexto e saída explícita"],
@@ -44,6 +57,35 @@ export function ComponentsPage() {
44
57
  title="Components"
45
58
  description="Famílias reais do dashboard representadas por espécimes compartilhados com o Storybook. O catálogo documenta o contrato; os componentes de negócio continuam em seus módulos."
46
59
  />
60
+ <Section
61
+ title="Filtros do Dashboard"
62
+ description="Operação expõe busca, status, risco e origem no cabeçalho visível. Custos mantém seus filtros dimensionais acessíveis na área integrada; Desenvolvedores usa somente o período. Adaptadores nativos com limpeza e foco de teclado."
63
+ >
64
+ {dashboardFilterFixtures.map((fixture) => (
65
+ <DashboardFiltersSpecimen key={fixture.name} fixture={fixture} />
66
+ ))}
67
+ </Section>
68
+ <Section
69
+ title="Hero editorial"
70
+ description="Componente público para promessa, explicação e até duas ações; a variação de ação secundária permanece legível sobre navy."
71
+ >
72
+ <EditorialHero
73
+ eyebrow="Componente central"
74
+ title="Uma direção pública que chama para a ação."
75
+ description="Use em abertura de páginas de marca; mantenha a prova detalhada e a lógica comercial no conteúdo local."
76
+ >
77
+ <Button>Ação principal</Button>
78
+ <Button variant="secondary">Ação secundária</Button>
79
+ </EditorialHero>
80
+ </Section>
81
+ <Section
82
+ title="Identidade e saúde do Dashboard"
83
+ description="O caminho absoluto fica restrito à Configuração do projeto. A superfície global aparece somente para avisos de saúde; lifecycle ausente ou inválido impede a exibição de zeros como dados válidos."
84
+ >
85
+ {workspaceStatusFixtures.map((fixture) => (
86
+ <WorkspaceStatusSpecimen key={fixture.name} fixture={fixture} />
87
+ ))}
88
+ </Section>
47
89
  <Section
48
90
  title="Dialogs e popups"
49
91
  description="Superfícies focadas com nome acessível, contexto, Escape e ação de fechamento."
@@ -71,6 +113,16 @@ export function ComponentsPage() {
71
113
  </div>
72
114
  ))}
73
115
  </Section>
116
+ <Section
117
+ title="Versões e referências da stack"
118
+ description="No Setup Project, versões exatas usam valor técnico curto. Serviços em nuvem e capacidade de hospedagem usam referência descritiva, identificada por texto e tratamento visual próprio — sem parecer uma versão numérica."
119
+ >
120
+ <div className="stack-version-field-grid">
121
+ {stackVersionFieldFixtures.map((fixture) => (
122
+ <StackVersionFieldSpecimen fixture={fixture} key={fixture.name} />
123
+ ))}
124
+ </div>
125
+ </Section>
74
126
  <Section
75
127
  title="Custo estimado compacto"
76
128
  description="Adaptador nativo: título e taxas compactos; cobertura parcial fica na ajuda acessível. Ausência não vira zero nem média de uma população incompleta."
@@ -1,10 +1,11 @@
1
1
  import { PageIntro, Section } from "../components/CatalogShell.js";
2
- import { Badge, Button, Card, Field } from "../components/Primitives.js";
2
+ import { Badge, Button, Card, EditorialHero, Field } from "../components/Primitives.js";
3
3
 
4
4
  const primaryColors = [
5
5
  ["Primary", "#00B0F0", "Ação, foco e identidade"],
6
6
  ["Primary strong", "#018abb", "Hover e ênfase reforçada"],
7
7
  ["Primary ink", "#006b91", "Texto e ícones sobre fundos claros"],
8
+ ["Primary soft", "#dffcff", "Base breve para badge e ênfase"],
8
9
  ] as const;
9
10
 
10
11
  const secondaryColors = [
@@ -87,6 +88,19 @@ export function DesignSystemPage() {
87
88
  ))}
88
89
  </div>
89
90
  </Section>
91
+ <Section
92
+ title="Hero editorial público"
93
+ description="Hero de alto contraste para comunicar uma promessa verificável, com ações claras e espaço para leitura."
94
+ >
95
+ <EditorialHero
96
+ eyebrow="Direção pública"
97
+ title="Mais contraste para decisões mais claras."
98
+ description="Navy estabelece profundidade; tipografia expressiva e CTAs pill deixam a próxima ação inequívoca."
99
+ >
100
+ <Button>Começar agora</Button>
101
+ <Button variant="secondary">Entender o sistema</Button>
102
+ </EditorialHero>
103
+ </Section>
90
104
  <Section
91
105
  title="Tipografia"
92
106
  description="Hierarquia compacta para produto e escala expressiva para superfícies públicas."
@@ -14,6 +14,7 @@ import {
14
14
  ChartPanel,
15
15
  DataTable,
16
16
  DialogSpecimen,
17
+ EditorialHero,
17
18
  FilterForm,
18
19
  Metric,
19
20
  StateGallery,
@@ -22,6 +23,10 @@ import {
22
23
  ProjectStatusSpecimen,
23
24
  projectStatusFixtures,
24
25
  } from "../components/ProjectStatusSpecimen.js";
26
+ import {
27
+ StackVersionFieldSpecimen,
28
+ stackVersionFieldFixtures,
29
+ } from "../components/StackVersionFieldSpecimen.js";
25
30
  import { ComponentsPage } from "../pages/ComponentsPage.js";
26
31
 
27
32
  const meta = {
@@ -75,6 +80,23 @@ export const DialogsAndPopups: Story = {
75
80
  render: () => <DialogSpecimen />,
76
81
  };
77
82
 
83
+ export const EditorialHeroes: Story = {
84
+ render: () => (
85
+ <EditorialHero
86
+ eyebrow="Componente central"
87
+ title="Contraste e direção para páginas públicas."
88
+ description="Mantenha uma promessa verificável e no máximo duas ações, inclusive em telas estreitas."
89
+ >
90
+ <button className="button button-primary" type="button">
91
+ Ação principal
92
+ </button>
93
+ <button className="button button-secondary" type="button">
94
+ Ação secundária
95
+ </button>
96
+ </EditorialHero>
97
+ ),
98
+ };
99
+
78
100
  export const CardsAndMetrics: Story = {
79
101
  render: () => (
80
102
  <div className="metric-grid">
@@ -95,6 +117,16 @@ export const ProjectInstallationStatus: Story = {
95
117
  ),
96
118
  };
97
119
 
120
+ export const StackVersionsAndReferences: Story = {
121
+ render: () => (
122
+ <div className="stack-version-field-grid">
123
+ {stackVersionFieldFixtures.map((fixture) => (
124
+ <StackVersionFieldSpecimen fixture={fixture} key={fixture.name} />
125
+ ))}
126
+ </div>
127
+ ),
128
+ };
129
+
98
130
  export const Tables: Story = {
99
131
  render: () => <DataTable />,
100
132
  };
@@ -0,0 +1,7 @@
1
+ import {
2
+ DashboardFiltersSpecimen,
3
+ dashboardFilterFixtures,
4
+ } from "../components/DashboardFiltersSpecimen.js";
5
+ export default { title: "Components/Filtros do Dashboard", component: DashboardFiltersSpecimen };
6
+ export const Operations = { args: { fixture: dashboardFilterFixtures[0] } };
7
+ export const Costs = { args: { fixture: dashboardFilterFixtures[1] } };
@@ -0,0 +1,12 @@
1
+ import {
2
+ WorkspaceStatusSpecimen,
3
+ workspaceStatusFixtures,
4
+ } from "../components/WorkspaceStatusSpecimen.js";
5
+ export default {
6
+ title: "Components/Identidade e saúde do Dashboard",
7
+ component: WorkspaceStatusSpecimen,
8
+ };
9
+ export const ProjectSettings = { args: { fixture: workspaceStatusFixtures[0] } };
10
+ export const Missing = { args: { fixture: workspaceStatusFixtures[1] } };
11
+ export const Invalid = { args: { fixture: workspaceStatusFixtures[2] } };
12
+ export const Unavailable = { args: { fixture: workspaceStatusFixtures[3] } };
@@ -1,3 +1,4 @@
1
+ @import "./stack-version-field.css";
1
2
  .card {
2
3
  border: 1px solid var(--border);
3
4
  border-radius: 24px;
@@ -6,7 +7,74 @@
6
7
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
7
8
  }
8
9
  .card-accent {
9
- background: linear-gradient(180deg, #f3feff 0%, #ffffff 100%);
10
+ background: linear-gradient(180deg, var(--primary-soft) 0%, #ffffff 100%);
11
+ }
12
+ .editorial-hero {
13
+ position: relative;
14
+ isolation: isolate;
15
+ display: grid;
16
+ min-height: 380px;
17
+ align-items: center;
18
+ overflow: hidden;
19
+ border: 1px solid rgba(255, 255, 255, 0.12);
20
+ border-radius: 32px;
21
+ padding: clamp(32px, 7vw, 76px);
22
+ background:
23
+ radial-gradient(circle at 82% 20%, rgba(0, 176, 240, 0.24), transparent 24%),
24
+ linear-gradient(135deg, var(--secondary) 0%, var(--secondary-elevated) 100%);
25
+ color: #f1f5f9;
26
+ box-shadow: 0 26px 70px rgba(15, 23, 42, 0.22);
27
+ }
28
+ .editorial-hero-copy {
29
+ position: relative;
30
+ z-index: 1;
31
+ max-width: 720px;
32
+ }
33
+ .editorial-hero .eyebrow {
34
+ color: #72f4fb;
35
+ }
36
+ .editorial-hero h2 {
37
+ max-width: 680px;
38
+ margin: 14px 0 18px;
39
+ font-family: Inter, Poppins, ui-sans-serif, system-ui, sans-serif;
40
+ font-size: clamp(2.5rem, 6vw, 4.25rem);
41
+ font-weight: 650;
42
+ line-height: 1.05;
43
+ letter-spacing: -0.05em;
44
+ }
45
+ .editorial-hero-copy > p:not(.eyebrow) {
46
+ max-width: 620px;
47
+ margin: 0;
48
+ color: #cbd5e1;
49
+ font-size: clamp(1rem, 2vw, 1.2rem);
50
+ line-height: 1.65;
51
+ }
52
+ .editorial-hero-actions {
53
+ display: flex;
54
+ flex-wrap: wrap;
55
+ gap: 12px;
56
+ margin-top: 30px;
57
+ }
58
+ .editorial-hero .button-secondary {
59
+ border-color: rgba(255, 255, 255, 0.3);
60
+ color: #f1f5f9;
61
+ }
62
+ .editorial-hero .button-secondary:hover {
63
+ border-color: var(--primary);
64
+ background: rgba(0, 176, 240, 0.12);
65
+ }
66
+ .editorial-hero-orbit {
67
+ position: absolute;
68
+ z-index: 0;
69
+ width: min(48vw, 540px);
70
+ aspect-ratio: 1;
71
+ right: -12%;
72
+ bottom: -42%;
73
+ border: 1px solid rgba(114, 244, 251, 0.28);
74
+ border-radius: 50%;
75
+ box-shadow:
76
+ 0 0 0 46px rgba(0, 176, 240, 0.05),
77
+ 0 0 0 112px rgba(0, 176, 240, 0.035);
10
78
  }
11
79
  .card h3 {
12
80
  margin: 24px 0 8px;
@@ -201,7 +269,7 @@ tbody tr:last-child td {
201
269
  height: 64px;
202
270
  place-items: center;
203
271
  border-radius: 24px;
204
- background: #dffcff;
272
+ background: var(--primary-soft);
205
273
  color: #006b91;
206
274
  font-size: 2rem;
207
275
  }
@@ -404,6 +472,17 @@ tbody tr:last-child td {
404
472
  }
405
473
 
406
474
  @media (max-width: 560px) {
475
+ .editorial-hero {
476
+ min-height: 0;
477
+ border-radius: 24px;
478
+ }
479
+ .editorial-hero-actions {
480
+ align-items: stretch;
481
+ flex-direction: column;
482
+ }
483
+ .editorial-hero-actions .button {
484
+ width: 100%;
485
+ }
407
486
  .filter-form {
408
487
  grid-template-columns: 1fr;
409
488
  }
@@ -420,8 +499,10 @@ tbody tr:last-child td {
420
499
  width: 100%;
421
500
  }
422
501
  }
423
-
424
502
  @media (prefers-reduced-motion: reduce) {
503
+ .editorial-hero-orbit {
504
+ box-shadow: none;
505
+ }
425
506
  .loading-spinner {
426
507
  animation: none;
427
508
  border-color: var(--primary);
@@ -0,0 +1,17 @@
1
+ .stack-version-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
2
+ .stack-version-field-grid > .card:last-child { grid-column: span 2; }
3
+ .stack-version-field-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
4
+ .stack-version-field-heading h3 { margin: 8px 0 0; font-size: 1.1rem; }
5
+ .stack-version-kind { flex: 0 0 auto; border-radius: 999px; padding: 5px 8px; font-size: 0.72rem; font-weight: 700; }
6
+ .stack-version-kind.is-exact { background: #f0fdf4; color: #166534; }
7
+ .stack-version-kind.is-reference { background: var(--primary-soft); color: var(--primary-ink); }
8
+ .stack-version-field { display: grid; gap: 8px; margin-top: 18px; color: var(--text); font-size: 0.82rem; font-weight: 700; }
9
+ .stack-version-field input { width: 100%; min-height: 44px; border: 1px solid #cbd5e1; border-radius: 10px; padding: 9px 10px; background: var(--surface-muted); color: var(--text); font: inherit; font-size: 0.88rem; overflow: hidden; text-overflow: ellipsis; }
10
+ .stack-version-field input.is-reference-value { border-color: #9edcf2; background: #effaff; color: #075985; font-weight: 650; }
11
+ .stack-version-field input:focus-visible { outline: 3px solid color-mix(in srgb, var(--focus) 38%, transparent); outline-offset: 2px; }
12
+ .stack-version-source { margin: 10px 0 0; color: var(--text-muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.75rem; overflow-wrap: anywhere; }
13
+
14
+ @media (max-width: 720px) {
15
+ .stack-version-field-grid,
16
+ .stack-version-field-grid > .card:last-child { grid-template-columns: 1fr; grid-column: auto; }
17
+ }
@@ -11,7 +11,9 @@
11
11
  --primary: #00b0f0;
12
12
  --primary-strong: #018abb;
13
13
  --primary-ink: #006b91;
14
+ --primary-soft: #dffcff;
14
15
  --secondary: #0a0e17;
16
+ --secondary-elevated: #111827;
15
17
  --surface: #ffffff;
16
18
  --surface-muted: #f5f7fb;
17
19
  --text: #0f172a;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaip-ai/design-local-runtime",
3
- "version": "3.3.0",
3
+ "version": "3.5.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -5,7 +5,9 @@
5
5
  "primary": "#00B0F0",
6
6
  "primary-strong": "#018abb",
7
7
  "primary-ink": "#006b91",
8
+ "primary-soft": "#dffcff",
8
9
  "secondary": "#0a0e17",
10
+ "secondary-elevated": "#111827",
9
11
  "surface": "#ffffff",
10
12
  "surface-muted": "#f5f7fb",
11
13
  "text": "#0f172a",
@@ -43,6 +45,36 @@
43
45
  "canvas": "#f5f7fb",
44
46
  "white": "#ffffff"
45
47
  },
48
+ "typography": {
49
+ "display": {
50
+ "fontFamily": "Inter, Poppins, ui-sans-serif, system-ui, sans-serif",
51
+ "fontSize": "clamp(2.5rem, 6vw, 4.25rem)",
52
+ "fontWeight": "650",
53
+ "lineHeight": "1.05",
54
+ "letterSpacing": "-0.05em"
55
+ },
56
+ "heading": {
57
+ "fontFamily": "Inter, Poppins, ui-sans-serif, system-ui, sans-serif",
58
+ "fontSize": "clamp(1.75rem, 4vw, 2.5rem)",
59
+ "fontWeight": "650",
60
+ "lineHeight": "1.15",
61
+ "letterSpacing": "-0.035em"
62
+ },
63
+ "body": {
64
+ "fontFamily": "Inter, ui-sans-serif, system-ui, sans-serif",
65
+ "fontSize": "1rem",
66
+ "fontWeight": "400",
67
+ "lineHeight": "1.65",
68
+ "letterSpacing": "0"
69
+ },
70
+ "label": {
71
+ "fontFamily": "Inter, ui-sans-serif, system-ui, sans-serif",
72
+ "fontSize": "0.75rem",
73
+ "fontWeight": "700",
74
+ "lineHeight": "1.3",
75
+ "letterSpacing": "0.12em"
76
+ }
77
+ },
46
78
  "rounded": {
47
79
  "sm": "8px",
48
80
  "md": "16px",