@zaip-ai/cli 1.0.7 → 1.3.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 (444) hide show
  1. package/README.md +6 -4
  2. package/dist/services/adapters.d.ts +1 -1
  3. package/dist/services/adapters.d.ts.map +1 -1
  4. package/dist/services/adapters.js +15 -5
  5. package/dist/services/adapters.js.map +1 -1
  6. package/dist/services/adapters.test.js +1 -1
  7. package/dist/services/agent-adapters.d.ts +9 -0
  8. package/dist/services/agent-adapters.d.ts.map +1 -1
  9. package/dist/services/agent-adapters.js +39 -4
  10. package/dist/services/agent-adapters.js.map +1 -1
  11. package/dist/services/agent-adapters.test.js +13 -1
  12. package/dist/services/agent-adapters.test.js.map +1 -1
  13. package/dist/services/codex-config-template.d.ts +2 -1
  14. package/dist/services/codex-config-template.d.ts.map +1 -1
  15. package/dist/services/codex-config-template.js +13 -2
  16. package/dist/services/codex-config-template.js.map +1 -1
  17. package/dist/services/codex-rules.d.ts +1 -1
  18. package/dist/services/codex-rules.d.ts.map +1 -1
  19. package/dist/services/codex-rules.js +31 -7
  20. package/dist/services/codex-rules.js.map +1 -1
  21. package/dist/services/codex-subagent-hook-template.d.ts +1 -1
  22. package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
  23. package/dist/services/codex-subagent-hook-template.js +4 -1
  24. package/dist/services/codex-subagent-hook-template.js.map +1 -1
  25. package/dist/services/doctor.d.ts.map +1 -1
  26. package/dist/services/doctor.js +3 -1
  27. package/dist/services/doctor.js.map +1 -1
  28. package/dist/services/global-codex-config.d.ts +6 -3
  29. package/dist/services/global-codex-config.d.ts.map +1 -1
  30. package/dist/services/global-codex-config.js +82 -13
  31. package/dist/services/global-codex-config.js.map +1 -1
  32. package/dist/services/global-codex-config.test.js +57 -10
  33. package/dist/services/global-codex-config.test.js.map +1 -1
  34. package/dist/services/install-agents-template.d.ts.map +1 -1
  35. package/dist/services/install-agents-template.js +15 -2
  36. package/dist/services/install-agents-template.js.map +1 -1
  37. package/dist/services/logger.js +1 -1
  38. package/dist/services/logger.js.map +1 -1
  39. package/dist/services/logger.test.js +3 -3
  40. package/dist/services/logger.test.js.map +1 -1
  41. package/dist/services/runtime-template.test.js +21 -5
  42. package/dist/services/runtime-template.test.js.map +1 -1
  43. package/dist/services/template-manifest.d.ts.map +1 -1
  44. package/dist/services/template-manifest.js +7 -0
  45. package/dist/services/template-manifest.js.map +1 -1
  46. package/package.json +1 -1
  47. package/templates/.agents/architecture/software-architecture.md +131 -0
  48. package/templates/.agents/branding/brandbook.docx +0 -0
  49. package/templates/.agents/branding/brandbook.md +60 -0
  50. package/templates/.agents/config/agents/catalog.yaml +310 -10
  51. package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +30 -0
  52. package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +5 -5
  53. package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
  54. package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +30 -0
  55. package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +30 -0
  56. package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +30 -0
  57. package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +8 -8
  58. package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +5 -3
  59. package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +30 -0
  60. package/templates/.agents/config/project.yaml +1 -1
  61. package/templates/.agents/dashboard/.tmp-run-list.json +254 -0
  62. package/templates/.agents/dashboard/.zaip-managed.json +775 -163
  63. package/templates/.agents/dashboard/DATA-DICTIONARY.md +2227 -0
  64. package/templates/.agents/dashboard/README.md +48 -97
  65. package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-DxR_pgSV.js +1 -0
  66. package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-4jZLTWE_.js +2156 -0
  67. package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-CKcsqb-r.js +1 -0
  68. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BomxqCBU.css +1 -0
  69. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-DmmJD2Th.js +3 -0
  70. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BwtitWa_.js +1 -0
  71. package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-CaKwQP43.css +1 -0
  72. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-BZ5WdaMN.css +1 -0
  73. package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-N5Csr0RP.js +68 -0
  74. package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-C98LGC-Q.js → dashboard-localization-CLJ0lT9v.js} +1 -1
  75. package/templates/.agents/dashboard/apps/frontend/dist/assets/icons-vendor-C0fj2uU9.js +1 -0
  76. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-C4aIB1PV.js +2 -0
  77. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DK_enB5Z.css +1 -0
  78. package/templates/.agents/dashboard/apps/frontend/dist/assets/react-vendor-BEsJ-FYH.js +9 -0
  79. package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-D9-fqq9M.js +1 -0
  80. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-B6y6Gw12.js +1 -0
  81. package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-DFY7ZDlu.css +1 -0
  82. package/templates/.agents/dashboard/apps/frontend/dist/index.html +9 -2
  83. package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
  84. package/templates/.agents/dashboard/apps/frontend/src/App.tsx +1129 -600
  85. package/templates/.agents/dashboard/apps/frontend/src/AppLoadingBoundary.tsx +48 -0
  86. package/templates/.agents/dashboard/apps/frontend/src/AppLoadingPanels.tsx +2 -0
  87. package/templates/.agents/dashboard/apps/frontend/src/AppOverlays.tsx +247 -0
  88. package/templates/.agents/dashboard/apps/frontend/src/AppRequestGuards.tsx +95 -0
  89. package/templates/.agents/dashboard/apps/frontend/src/AppSetupRoutes.tsx +87 -0
  90. package/templates/.agents/dashboard/apps/frontend/src/CostCalculationGuidePage.tsx +641 -0
  91. package/templates/.agents/dashboard/apps/frontend/src/DashboardAlternateContent.tsx +159 -0
  92. package/templates/.agents/dashboard/apps/frontend/src/DashboardCapabilityNav.tsx +13 -13
  93. package/templates/.agents/dashboard/apps/frontend/src/DashboardGlobalSettings.tsx +56 -0
  94. package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +266 -315
  95. package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +151 -0
  96. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +37 -0
  97. package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +114 -12
  98. package/templates/.agents/dashboard/apps/frontend/src/app-preferences.ts +15 -0
  99. package/templates/.agents/dashboard/apps/frontend/src/app-session-token.ts +20 -0
  100. package/templates/.agents/dashboard/apps/frontend/src/cost-calculation-guide.css +267 -0
  101. package/templates/.agents/dashboard/apps/frontend/src/cost-calculation-guide.test.ts +69 -0
  102. package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +85 -0
  103. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +133 -0
  104. package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +453 -13
  105. package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.ts +1 -1
  106. package/templates/.agents/dashboard/apps/frontend/src/main.tsx +1 -0
  107. package/templates/.agents/dashboard/apps/frontend/src/operations-detail-hydration.test.ts +55 -0
  108. package/templates/.agents/dashboard/apps/frontend/src/operations-detail-hydration.ts +36 -0
  109. package/templates/.agents/dashboard/apps/frontend/src/operations-entity-page-projection.test.ts +126 -0
  110. package/templates/.agents/dashboard/apps/frontend/src/operations-entity-page-projection.ts +181 -0
  111. package/templates/.agents/dashboard/apps/frontend/src/operations-period-contract.test.ts +138 -0
  112. package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +105 -0
  113. package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +6 -3
  114. package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +9 -5
  115. package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +26 -0
  116. package/templates/.agents/dashboard/apps/frontend/src/period-transition-overlay.css +44 -0
  117. package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +121 -62
  118. package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +482 -3
  119. package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +84 -17
  120. package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +78 -0
  121. package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +234 -39
  122. package/templates/.agents/dashboard/apps/frontend/src/snapshot-notice.ts +15 -0
  123. package/templates/.agents/dashboard/apps/frontend/src/sqlite-cost-adapters.ts +26 -0
  124. package/templates/.agents/dashboard/apps/frontend/src/styles.css +14 -2
  125. package/templates/.agents/dashboard/apps/frontend/src/traceability-workspace.css +38 -2
  126. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +253 -0
  127. package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +380 -0
  128. package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +175 -0
  129. package/templates/.agents/dashboard/apps/frontend/src/use-app-operations-pages.ts +395 -0
  130. package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +141 -0
  131. package/templates/.agents/dashboard/apps/frontend/src/use-idle-cost-prefetch.ts +45 -0
  132. package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.test.ts +46 -0
  133. package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.ts +36 -0
  134. package/templates/.agents/dashboard/apps/frontend/vite.config.ts +58 -5
  135. package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
  136. package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +47 -6
  137. package/templates/.agents/dashboard/modules/cost-monitor/src/duration-estimate.ts +13 -0
  138. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +134 -0
  139. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +290 -0
  140. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +133 -19
  141. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +134 -43
  142. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +137 -19
  143. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.test.ts +2 -0
  144. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.tsx +13 -10
  145. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +328 -0
  146. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +302 -6
  147. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +627 -400
  148. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostSummary.tsx +5 -13
  149. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +370 -72
  150. package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +467 -326
  151. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +17 -0
  152. package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +25 -6
  153. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-copy.ts +0 -2
  154. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-helpers.ts +17 -0
  155. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-responsive.css +6 -3
  156. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-row-filters.ts +123 -0
  157. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +8 -3
  158. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-views.ts +32 -0
  159. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor.css +55 -14
  160. package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-presentation.ts +121 -0
  161. package/templates/.agents/dashboard/modules/cost-monitor/src/react/index.ts +3 -0
  162. package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.test.ts +68 -0
  163. package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +33 -5
  164. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +119 -0
  165. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.test.ts +12 -0
  166. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +146 -0
  167. package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +118 -0
  168. package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.test.ts +2 -2
  169. package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.ts +5 -3
  170. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-pricing-fallback.test.ts +53 -0
  171. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.basics.test.ts +34 -0
  172. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +168 -161
  173. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +188 -29
  174. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +757 -0
  175. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +784 -0
  176. package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-terminal-day.test.ts +100 -0
  177. package/templates/.agents/dashboard/modules/cost-monitor/src/server/index.ts +1 -0
  178. package/templates/.agents/dashboard/modules/cost-monitor/src/server/refactor-map-xr9l.json +61 -0
  179. package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-monitor-projection-agents.test.ts +31 -0
  180. package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-summary-projection-duration.test.ts +414 -0
  181. package/templates/.agents/dashboard/modules/cost-monitor/src/task-cost-groups.test.ts +41 -0
  182. package/templates/.agents/dashboard/modules/cost-monitor/src/task-cost-groups.ts +55 -11
  183. package/templates/.agents/dashboard/modules/operations/package.json +2 -1
  184. package/templates/.agents/dashboard/modules/operations/src/contracts.ts +185 -0
  185. package/templates/.agents/dashboard/modules/operations/src/duration-population.test.ts +63 -1
  186. package/templates/.agents/dashboard/modules/operations/src/duration-population.ts +60 -5
  187. package/templates/.agents/dashboard/modules/operations/src/react/EntityDetailsDialog.tsx +14 -3
  188. package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.test.ts +44 -1
  189. package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +345 -18
  190. package/templates/.agents/dashboard/modules/operations/src/react/MacroPlanningDialog.tsx +1 -0
  191. package/templates/.agents/dashboard/modules/operations/src/react/OperationDateFilters.test.ts +9 -5
  192. package/templates/.agents/dashboard/modules/operations/src/react/OperationDateFilters.tsx +2 -2
  193. package/templates/.agents/dashboard/modules/operations/src/react/OperationsMainContent.tsx +168 -0
  194. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +95 -6
  195. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +367 -14
  196. package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +562 -131
  197. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +353 -355
  198. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageNavigation.tsx +65 -0
  199. package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +169 -0
  200. package/templates/.agents/dashboard/modules/operations/src/react/PeriodSummaryTable.tsx +73 -8
  201. package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.test.tsx +32 -0
  202. package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.tsx +62 -6
  203. package/templates/.agents/dashboard/modules/operations/src/react/TaskBoard.test.ts +55 -0
  204. package/templates/.agents/dashboard/modules/operations/src/react/TaskBoard.tsx +27 -19
  205. package/templates/.agents/dashboard/modules/operations/src/react/TaskDetailsDialog.tsx +105 -42
  206. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.priority.test.ts +19 -0
  207. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.tsx +265 -36
  208. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +171 -8
  209. package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +98 -68
  210. package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.test.ts +72 -1
  211. package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.ts +78 -17
  212. package/templates/.agents/dashboard/modules/operations/src/react/execution-metrics.ts +6 -4
  213. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +431 -1
  214. package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +574 -20
  215. package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +42 -4
  216. package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +248 -0
  217. package/templates/.agents/dashboard/modules/operations/src/react/macro-planning-dialog-content.css +49 -0
  218. package/templates/.agents/dashboard/modules/operations/src/react/macro-planning-dialog.css +93 -50
  219. package/templates/.agents/dashboard/modules/operations/src/react/manual-work-priority.test.ts +82 -0
  220. package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.test.ts +29 -2
  221. package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.ts +22 -1
  222. package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.test.ts +77 -4
  223. package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.ts +67 -5
  224. package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +54 -0
  225. package/templates/.agents/dashboard/modules/operations/src/react/operations-global-filters.test.ts +22 -0
  226. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +149 -12
  227. package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +27 -0
  228. package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +176 -0
  229. package/templates/.agents/dashboard/modules/operations/src/react/operations-period-scope.test.ts +160 -0
  230. package/templates/.agents/dashboard/modules/operations/src/react/operations-period-scope.ts +47 -0
  231. package/templates/.agents/dashboard/modules/operations/src/react/operations-query.ts +10 -0
  232. package/templates/.agents/dashboard/modules/operations/src/react/operations-responsive.css +3 -0
  233. package/templates/.agents/dashboard/modules/operations/src/react/operations-view-labels.ts +28 -0
  234. package/templates/.agents/dashboard/modules/operations/src/react/operations-view-order.test.ts +21 -7
  235. package/templates/.agents/dashboard/modules/operations/src/react/operations.css +42 -0
  236. package/templates/.agents/dashboard/modules/operations/src/react/period-summary-population.test.ts +54 -0
  237. package/templates/.agents/dashboard/modules/operations/src/react/period-summary-population.ts +32 -0
  238. package/templates/.agents/dashboard/modules/operations/src/react/period-summary.test.ts +241 -6
  239. package/templates/.agents/dashboard/modules/operations/src/react/period-summary.ts +148 -6
  240. package/templates/.agents/dashboard/modules/operations/src/react/popup-localization.test.ts +1 -1
  241. package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.css +132 -0
  242. package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.css.test.ts +13 -0
  243. package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.header.test.ts +16 -0
  244. package/templates/.agents/dashboard/modules/operations/src/react/use-infinite-column.ts +11 -5
  245. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +7 -4
  246. package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +5 -84
  247. package/templates/.agents/dashboard/modules/operations/src/server/build-operations-projection.test.ts +291 -15
  248. package/templates/.agents/dashboard/modules/operations/src/server/build-operations-projection.ts +182 -472
  249. package/templates/.agents/dashboard/modules/operations/src/server/canonical-compat.test.ts +40 -0
  250. package/templates/.agents/dashboard/modules/operations/src/server/canonical-compat.ts +19 -6
  251. package/templates/.agents/dashboard/modules/operations/src/server/canonical-run-projection.ts +31 -6
  252. package/templates/.agents/dashboard/modules/operations/src/server/daily-duration-projection.ts +220 -0
  253. package/templates/.agents/dashboard/modules/operations/src/server/execution-duration-projection.ts +28 -0
  254. package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.test.ts +39 -2
  255. package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.ts +25 -13
  256. package/templates/.agents/dashboard/modules/operations/src/server/filter.test.ts +3 -3
  257. package/templates/.agents/dashboard/modules/operations/src/server/filter.ts +7 -2
  258. package/templates/.agents/dashboard/modules/operations/src/server/index.ts +3 -0
  259. package/templates/.agents/dashboard/modules/operations/src/server/macro.ts +3 -12
  260. package/templates/.agents/dashboard/modules/operations/src/server/manifest-usage.ts +65 -0
  261. package/templates/.agents/dashboard/modules/operations/src/server/operations-projection-aggregates.ts +297 -0
  262. package/templates/.agents/dashboard/modules/operations/src/server/quick-daily-operations-projection.ts +330 -0
  263. package/templates/.agents/dashboard/modules/operations/src/server/quick-operations-projection.test.ts +505 -0
  264. package/templates/.agents/dashboard/modules/operations/src/server/quick-operations-projection.ts +609 -0
  265. package/templates/.agents/dashboard/modules/operations/src/server/runs.ts +18 -19
  266. package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +76 -0
  267. package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
  268. package/templates/.agents/dashboard/modules/traceability/src/server/build-task-trace.ts +3 -1
  269. package/templates/.agents/dashboard/packages/branding/package.json +1 -1
  270. package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
  271. package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
  272. package/templates/.agents/dashboard/packages/contracts/src/index.ts +2 -0
  273. package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
  274. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1759 -0
  275. package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs.metafile.json +7333 -0
  276. package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1611 -0
  277. package/templates/.agents/dashboard/packages/local-runtime/package.json +8 -3
  278. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs +20 -0
  279. package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +114 -0
  280. package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +31 -0
  281. package/templates/.agents/dashboard/packages/local-runtime/scripts/source-size-runtime-scripts/sqlite-read-model-fixture.mjs +397 -0
  282. package/templates/.agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs +589 -0
  283. package/templates/.agents/dashboard/packages/local-runtime/scripts/test-unix-launchers.mjs +53 -0
  284. package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +203 -0
  285. package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1646 -107
  286. package/templates/.agents/dashboard/packages/local-runtime/src/agent-adapter-sync.ts +30 -0
  287. package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.test.ts +3 -2
  288. package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.ts +5 -0
  289. package/templates/.agents/dashboard/packages/local-runtime/src/manifest-runs.ts +72 -33
  290. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +339 -4
  291. package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +392 -1
  292. package/templates/.agents/dashboard/packages/local-runtime/src/runtime.mjs +5 -5
  293. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +110 -0
  294. package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +189 -0
  295. package/templates/.agents/dashboard/packages/local-runtime/src/server-cross-layer-parity.test.ts +245 -0
  296. package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models-route.ts +64 -0
  297. package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models.test.ts +204 -0
  298. package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models.ts +194 -0
  299. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +163 -0
  300. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +354 -0
  301. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.test.ts +74 -0
  302. package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +113 -0
  303. package/templates/.agents/dashboard/packages/local-runtime/src/server-overview.test.ts +68 -0
  304. package/templates/.agents/dashboard/packages/local-runtime/src/server-period.ts +47 -0
  305. package/templates/.agents/dashboard/packages/local-runtime/src/server-projections.ts +483 -0
  306. package/templates/.agents/dashboard/packages/local-runtime/src/server-settings.test.ts +5 -2
  307. package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +178 -84
  308. package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +149 -0
  309. package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +675 -267
  310. package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +1212 -309
  311. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.test.ts +53 -0
  312. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.ts +722 -0
  313. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +3743 -0
  314. package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +7017 -0
  315. package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +33 -0
  316. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +41 -0
  317. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +210 -0
  318. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +514 -190
  319. package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +324 -24
  320. package/templates/.agents/dashboard/packages/ui/package.json +1 -1
  321. package/templates/.agents/dashboard/packages/windows-launcher/LauncherVerificationBehaviorTests.cs +206 -0
  322. package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +95 -8
  323. package/templates/.agents/dashboard/packages/windows-launcher/build-dashboard-launcher.ps1 +2 -2
  324. package/templates/.agents/dashboard/packages/windows-launcher/run-launcher-verification-tests.ps1 +22 -0
  325. package/templates/.agents/dashboard/read-model.dbml +2201 -0
  326. package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
  327. package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +1 -1
  328. package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +216 -41
  329. package/templates/.agents/dashboard/work-priority.json +34 -0
  330. package/templates/.agents/dashboard/zaip-dashboard-linux.sh +45 -0
  331. package/templates/.agents/dashboard/zaip-dashboard-mac.command +3 -0
  332. package/templates/.agents/dashboard/zaip-dashboard-windows.exe +0 -0
  333. package/templates/.agents/design/.zaip-managed.json +3 -3
  334. package/templates/.agents/design/apps/catalog/package.json +1 -1
  335. package/templates/.agents/design/packages/local-runtime/package.json +1 -1
  336. package/templates/.agents/growth/estrategia-bootstrap-90-dias.md +169 -0
  337. package/templates/.agents/growth/strategy.md +27 -0
  338. package/templates/.agents/marketing/estrategia-marketing-zaip-90-dias.md +197 -0
  339. package/templates/.agents/marketing/strategy.md +29 -0
  340. package/templates/.agents/requirements/autonomous-assurance.md +1 -1
  341. package/templates/.agents/requirements/comparative-audit.md +1 -1
  342. package/templates/.agents/requirements/context-engine.md +1 -1
  343. package/templates/.agents/requirements/cost-observability.md +1 -1
  344. package/templates/.agents/requirements/dashboard-launch.md +24 -0
  345. package/templates/.agents/requirements/data-export.md +1 -1
  346. package/templates/.agents/requirements/design-system.md +1 -1
  347. package/templates/.agents/requirements/execution-engine.md +1 -1
  348. package/templates/.agents/requirements/kanban-dashboard.md +4 -3
  349. package/templates/.agents/requirements/model-orchestration.md +1 -1
  350. package/templates/.agents/requirements/public-distribution.md +9 -6
  351. package/templates/.agents/requirements/software-architecture.md +1 -1
  352. package/templates/.agents/requirements/strategic-improvements.md +1 -1
  353. package/templates/.agents/requirements/work-lifecycle.md +9 -3
  354. package/templates/.agents/requirements/zaip-strategic-95.md +4 -4
  355. package/templates/.agents/rules/autonomy-decision.md +15 -0
  356. package/templates/.agents/rules/core.md +1 -1
  357. package/templates/.agents/rules/run-lifecycle-closure.md +1 -1
  358. package/templates/.agents/rules/specialist-routing.md +19 -0
  359. package/templates/.agents/rules/workflow.md +1 -1
  360. package/templates/.agents/runtime/VERSION +1 -1
  361. package/templates/.agents/runtime/bin/zaip.mjs +118 -67
  362. package/templates/.agents/runtime/checksums.sha256 +6 -4
  363. package/templates/.agents/runtime/manifest.json +3 -1
  364. package/templates/.agents/runtime/pnpm-lock.sha256 +1 -0
  365. package/templates/.agents/runtime/provenance.json +11 -0
  366. package/templates/.agents/runtime/sbom.cdx.json +1929 -39
  367. package/templates/.agents/sales/playbook.md +32 -0
  368. package/templates/.agents/sales/roteiro-comercial-zaip.md +252 -0
  369. package/templates/.agents/skills/zaip-aios/SKILL.md +1 -1
  370. package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +22 -0
  371. package/templates/.agents/skills/zaip-skill-brand-governance/agents/openai.yaml +4 -0
  372. package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-framework.md +39 -0
  373. package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-standards.md +30 -0
  374. package/templates/.agents/skills/zaip-skill-dashboard-sqlite/SKILL.md +25 -0
  375. package/templates/.agents/skills/zaip-skill-dashboard-sqlite/agents/openai.yaml +4 -0
  376. package/templates/.agents/skills/zaip-skill-enforce-architecture/SKILL.md +2 -0
  377. package/templates/.agents/skills/zaip-skill-executar-fila-pronta/SKILL.md +18 -0
  378. package/templates/.agents/skills/zaip-skill-executar-fila-pronta/agents/openai.yaml +6 -0
  379. package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.mjs +71 -0
  380. package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.test.mjs +60 -0
  381. package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/scheduled-ready-queue-contract.test.mjs +111 -0
  382. package/templates/.agents/skills/zaip-skill-execution/SKILL.md +2 -2
  383. package/templates/.agents/skills/zaip-skill-frontend-launcher/references/launcher-contract.md +3 -1
  384. package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +12 -0
  385. package/templates/.agents/skills/zaip-skill-general-operations/agents/openai.yaml +4 -0
  386. package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +9 -7
  387. package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +2 -2
  388. package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +11 -38
  389. package/templates/.agents/skills/zaip-skill-governance-compliance/SKILL.md +12 -0
  390. package/templates/.agents/skills/zaip-skill-governance-compliance/agents/openai.yaml +4 -0
  391. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +21 -0
  392. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/agents/openai.yaml +4 -0
  393. package/templates/.agents/skills/zaip-skill-growth-strategy-revops/references/growth-revops-framework.md +25 -0
  394. package/templates/.agents/skills/zaip-skill-instalar-agendamento/SKILL.md +17 -0
  395. package/templates/.agents/skills/zaip-skill-instalar-agendamento/agents/openai.yaml +6 -0
  396. package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +9 -3
  397. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +99 -93
  398. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +132 -23
  399. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +149 -1
  400. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +76 -19
  401. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +217 -7
  402. package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/source-size-telemetry/model-identity-reconciliation.mjs +77 -0
  403. package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +20 -0
  404. package/templates/.agents/skills/zaip-skill-sales-methodology/agents/openai.yaml +4 -0
  405. package/templates/.agents/skills/zaip-skill-sales-methodology/references/sales-process-framework.md +77 -0
  406. package/templates/.agents/skills/zaip-skill-setup/SKILL.md +5 -0
  407. package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +96 -0
  408. package/templates/.agents/skills/zaip-skill-sqlite-read-model/agents/openai.yaml +4 -0
  409. package/templates/.agents/skills/zaip-skill-sqlite-read-model/scripts/ensure-node.mjs +41 -0
  410. package/templates/.agents/zaip-aios/INDEX.md +11 -0
  411. package/templates/.agents/zaip-aios/README.md +38 -8
  412. package/templates/.agents/zaip-aios/VERSION +1 -1
  413. package/templates/.agents/zaip-aios/guides/09-agentes-e-squads.md +43 -6
  414. package/templates/.agents/zaip-aios/guides/10-seguranca.md +21 -7
  415. package/templates/.agents/zaip-aios/guides/17-como-o-custo-e-calculado.md +32 -0
  416. package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +76 -0
  417. package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +72 -0
  418. package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +330 -0
  419. package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +52 -0
  420. package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +69 -0
  421. package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +483 -0
  422. package/templates/.agents/zaip-aios/guides/24-calculo-de-custos-openai.md +85 -0
  423. package/templates/.agents/zaip-aios/guides/25-fontes-de-precos-openai.md +18 -0
  424. package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +44 -0
  425. package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +167 -0
  426. package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +144 -0
  427. package/templates/.agents/zaip-aios/guides/assets/diagrams/lifecycles-task-spec-prd.png +0 -0
  428. package/templates/.agents/zaip-aios/guides/assets/diagrams/prd-lifecycle.png +0 -0
  429. package/templates/.agents/zaip-aios/guides/assets/diagrams/spec-lifecycle.png +0 -0
  430. package/templates/.agents/zaip-aios/guides/assets/diagrams/task-lifecycle.png +0 -0
  431. package/templates/template-manifest.json +1082 -215
  432. package/templates/.agents/dashboard/apps/frontend/dist/assets/AgentCatalogSettingsPage-CLYIi7Vo.js +0 -1
  433. package/templates/.agents/dashboard/apps/frontend/dist/assets/AgentCatalogSettingsPage-DTDNVQGX.css +0 -1
  434. package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-Cv-JcoxP.js +0 -1320
  435. package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-CzEggcRb.js +0 -1
  436. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-05YKn6Z4.js +0 -3
  437. package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-YO3yqtgV.css +0 -1
  438. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-8AzCnl3a.js +0 -77
  439. package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DdBYQ_8D.css +0 -1
  440. package/templates/.agents/dashboard/apps/frontend/src/AgentCatalogSettingsPage.tsx +0 -617
  441. package/templates/.agents/dashboard/apps/frontend/src/agent-catalog-settings-page.css +0 -660
  442. package/templates/.agents/dashboard/apps/frontend/src/agent-catalog-settings.test.ts +0 -249
  443. package/templates/.agents/dashboard/dashboard.config.json +0 -4
  444. package/templates/.agents/dashboard/zaip-dashboard.exe +0 -0
@@ -1,25 +1,28 @@
1
1
  import { type FormEvent, type ReactNode, useEffect, useState } from "react";
2
- import type { DashboardApiClient, ProjectConfigSettings } from "./dashboard-api.js";
2
+ import type {
3
+ DashboardApiClient,
4
+ ProjectConfigSettings,
5
+ ProjectOverview,
6
+ } from "./dashboard-api.js";
7
+ import { StackComponentEditor, StackVersions } from "./ProjectStackEditor.js";
3
8
  import {
4
9
  buildProjectSettingsPayload,
5
10
  defaultAutonomousExecution,
6
- defaultModelOrchestration,
7
- type LanguagesDraft,
8
11
  lineList,
9
- modelOrchestrationForMode,
10
12
  projectSettingsDraft,
13
+ type StackComponentsDraft,
14
+ shortFrameworkVersion,
15
+ withDetectedStackVersions,
11
16
  } from "./project-settings-model.js";
12
17
  import "./project-settings-page.css";
13
18
 
14
19
  type Locale = "pt-BR" | "en-US";
15
-
16
20
  const copy = {
17
21
  "pt-BR": {
18
22
  eyebrow: "Configurações",
19
23
  title: "Configuração do projeto",
20
- intro:
21
- "Edite o arquivo central do projeto com validação do schema antes da gravação. Nenhuma credencial deve ser adicionada aqui.",
22
- loading: "Carregando configurações do projeto…",
24
+ intro: "Edite o arquivo central do projeto com validação do schema antes da gravação.",
25
+ loading: "Carregando…",
23
26
  back: "Voltar ao dashboard",
24
27
  save: "Salvar configurações",
25
28
  saving: "Validando e salvando…",
@@ -28,17 +31,51 @@ const copy = {
28
31
  frameworkHint: "Ativa ou desativa o framework para este projeto.",
29
32
  identity: "Identidade do projeto",
30
33
  stack: "Stack e linguagens",
31
- clients: "Clientes e rastreamento",
32
- models: "Orquestração de modelos",
33
34
  execution: "Execução",
34
35
  assurance: "Assurance",
36
+ executionToggleHint:
37
+ "Grava ou remove o bloco execution. Sem ele, o projeto usa execução manual.",
38
+ runtimeHint:
39
+ "Manual apenas materializa o trabalho; autonomous executa a DAG pelo provider configurado quando as precondições passam.",
40
+ providerHint: "Provider que inicia os agentes da execução autônoma: Codex ou Claude.",
41
+ executionModelHint:
42
+ "Modelo-base do runtime autônomo. A política automática de PRD/SPEC ainda pode selecionar um modelo permitido por agente.",
43
+ parallelismHint:
44
+ "Teto de agentes simultâneos. O valor efetivo é o menor limite entre projeto, DAG, provider e squad.",
45
+ leaseHint:
46
+ "Valor persistido no projeto. O coordenador atual ainda usa internamente um lease fixo de 60 segundos.",
47
+ assuranceToggleHint:
48
+ "Ativa ou remove os gates de evidência, revisão e qualidade do projeto. Recomenda-se manter ativo.",
49
+ assuranceVersionHint: "Versão do contrato de assurance. É fixa e somente leitura.",
50
+ assuranceDepthHint:
51
+ "Auto ajusta o rigor ao escopo; base exige o conjunto padrão; elevated amplia validações para mudanças mais abrangentes.",
52
+ finalCommitHint:
53
+ "Exige que as evidências comprovem o commit final integrado. Sinais de produção ou migração ainda podem exigir isso mesmo quando desativado.",
35
54
  context: "Contexto",
55
+ overview: "Visão geral do projeto",
56
+ available: "Criado",
57
+ unavailable: "Ainda não criado",
58
+ componentGuide:
59
+ "Preencha cada responsabilidade separadamente. A versão fica sem prefixos (^, ~, >=) e a referência identifica o pacote, imagem ou serviço.",
60
+ versionHint: "Versão exata: 22.16.0 ou 17.6. Deixe vazio para serviços sem versão fixada.",
61
+ referenceHint:
62
+ "Ex.: npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase ou provider:cloudflare-pages.",
63
+ overrides: "Opções avançadas (JSON)",
64
+ overridesHint:
65
+ "Use apenas fatos técnicos transversais confirmados. Deixe vazio quando não houver exceções.",
66
+ versions: "Versões verificadas no workspace",
67
+ exact: "Verificada",
68
+ constraint: "Requisito",
69
+ versionUnavailable: "Não encontrada",
70
+ contextGuide:
71
+ "O contexto começa pelas fontes canônicas e inclui somente arquivos relevantes para a tarefa. Saídas geradas são consultadas apenas em setup, release ou checagem de paridade.",
72
+ contextDomains:
73
+ "Branding, Marketing, Growth e Sales são usados sob demanda pelos respectivos especialistas, quando houver uma tarefa e artefatos desses domínios. Não os adicione aqui apenas por existirem como capacidades.",
36
74
  },
37
75
  "en-US": {
38
76
  eyebrow: "Settings",
39
77
  title: "Project settings",
40
- intro:
41
- "Edit the central project file with schema validation before writing. Do not add credentials here.",
78
+ intro: "Edit the central project file with schema validation before writing.",
42
79
  loading: "Loading project settings…",
43
80
  back: "Back to dashboard",
44
81
  save: "Save settings",
@@ -48,11 +85,47 @@ const copy = {
48
85
  frameworkHint: "Enable or disable the framework for this project.",
49
86
  identity: "Project identity",
50
87
  stack: "Stack and languages",
51
- clients: "Clients and tracking",
52
- models: "Model orchestration",
53
88
  execution: "Execution",
54
89
  assurance: "Assurance",
90
+ executionToggleHint:
91
+ "Writes or removes the execution block. Without it, the project uses manual execution.",
92
+ runtimeHint:
93
+ "Manual only materializes work; autonomous runs the DAG through the configured provider after preconditions pass.",
94
+ providerHint: "Provider that starts autonomous execution agents: Codex or Claude.",
95
+ executionModelHint:
96
+ "Base model for the autonomous runtime. PRD/SPEC automatic policy may still select an allowed model per agent.",
97
+ parallelismHint:
98
+ "Maximum simultaneous agents. Effective parallelism is the smallest project, DAG, provider, and squad limit.",
99
+ leaseHint:
100
+ "Value persisted in the project. The current coordinator still uses a fixed internal 60-second lease.",
101
+ assuranceToggleHint:
102
+ "Enables or removes project evidence, review, and quality gates. Keeping it enabled is recommended.",
103
+ assuranceVersionHint: "Assurance contract version. It is fixed and read-only.",
104
+ assuranceDepthHint:
105
+ "Auto adapts rigor to scope; base uses the standard set; elevated expands validation for broader changes.",
106
+ finalCommitHint:
107
+ "Requires evidence for the final integrated commit. Production or migration signals may still require it when disabled.",
55
108
  context: "Context",
109
+ overview: "Project overview",
110
+ available: "Created",
111
+ unavailable: "Not created yet",
112
+ componentGuide:
113
+ "Fill each responsibility separately. Versions have no prefixes (^, ~, >=), and the reference identifies the package, image, or service.",
114
+ versionHint:
115
+ "Exact version: 22.16.0 or 17.6. Leave blank for services without a pinned version.",
116
+ referenceHint:
117
+ "E.g. npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase, or provider:cloudflare-pages.",
118
+ overrides: "Advanced options (JSON)",
119
+ overridesHint:
120
+ "Use only confirmed cross-cutting technical facts. Leave empty when there are no exceptions.",
121
+ versions: "Versions verified in the workspace",
122
+ exact: "Verified",
123
+ constraint: "Requirement",
124
+ versionUnavailable: "Not found",
125
+ contextGuide:
126
+ "Context starts from canonical sources and includes only files relevant to the task. Generated outputs are consulted only for setup, release, or parity checks.",
127
+ contextDomains:
128
+ "Branding, Marketing, Growth, and Sales are used on demand by their respective specialists when there is a task and artifacts in those domains. Do not add them here merely because they exist as capabilities.",
56
129
  },
57
130
  } as const;
58
131
 
@@ -67,23 +140,22 @@ export function ProjectSettingsPage({
67
140
  }) {
68
141
  const text = copy[locale];
69
142
  const [config, setConfig] = useState<ProjectConfigSettings | null>(null);
70
- const [languages, setLanguages] = useState<LanguagesDraft>({
71
- frontend: "",
72
- backend: "",
73
- site: "",
74
- });
143
+ const [overview, setOverview] = useState<ProjectOverview | null>(null);
144
+ const [stackComponents, setStackComponents] = useState<StackComponentsDraft | null>(null);
75
145
  const [otherOverrides, setOtherOverrides] = useState("{}");
76
146
  const [saving, setSaving] = useState(false);
77
147
  const [error, setError] = useState<string | null>(null);
78
148
  const [notice, setNotice] = useState<string | null>(null);
79
149
 
80
150
  useEffect(() => {
81
- void api
82
- .projectSettings()
83
- .then((loaded) => {
151
+ void Promise.all([api.projectSettings(), api.projectOverview()])
152
+ .then(([loaded, projectOverview]) => {
84
153
  const draft = projectSettingsDraft(loaded);
85
154
  setConfig(loaded);
86
- setLanguages(draft.languages);
155
+ setOverview(projectOverview);
156
+ setStackComponents(
157
+ withDetectedStackVersions(draft.components, projectOverview.stack_components),
158
+ );
87
159
  setOtherOverrides(draft.otherOverrides);
88
160
  })
89
161
  .catch((cause) => setError(cause instanceof Error ? cause.message : String(cause)));
@@ -97,11 +169,17 @@ export function ProjectSettingsPage({
97
169
  setNotice(null);
98
170
  try {
99
171
  const saved = await api.saveProjectSettings(
100
- buildProjectSettingsPayload(config, languages, otherOverrides),
172
+ buildProjectSettingsPayload(
173
+ config,
174
+ stackComponents ?? projectSettingsDraft(config).components,
175
+ otherOverrides,
176
+ ),
101
177
  );
178
+ const refreshedOverview = await api.projectOverview();
102
179
  const draft = projectSettingsDraft(saved);
103
180
  setConfig(saved);
104
- setLanguages(draft.languages);
181
+ setOverview(refreshedOverview);
182
+ setStackComponents(draft.components);
105
183
  setOtherOverrides(draft.otherOverrides);
106
184
  setNotice(text.saved);
107
185
  } catch (cause) {
@@ -112,13 +190,21 @@ export function ProjectSettingsPage({
112
190
  }
113
191
 
114
192
  if (config === null) {
193
+ const isLoading = error === null;
115
194
  return (
116
- <main className="project-settings-state">
117
- <p>{text.eyebrow}</p>
118
- <h1>{error ?? text.loading}</h1>
119
- <button onClick={onClose} type="button">
120
- {text.back}
121
- </button>
195
+ <main aria-busy={isLoading} className="project-settings-state">
196
+ <div
197
+ aria-live={isLoading ? "polite" : "assertive"}
198
+ className="project-settings-state-card"
199
+ role={isLoading ? "status" : "alert"}
200
+ >
201
+ {isLoading ? <span aria-hidden="true" className="project-settings-loader" /> : null}
202
+ <p>{text.eyebrow}</p>
203
+ <h1>{error ?? text.loading}</h1>
204
+ <button onClick={onClose} type="button">
205
+ ← {text.back}
206
+ </button>
207
+ </div>
122
208
  </main>
123
209
  );
124
210
  }
@@ -146,7 +232,12 @@ export function ProjectSettingsPage({
146
232
 
147
233
  <section className="project-settings-feature">
148
234
  <div>
149
- <h2>{text.framework}</h2>
235
+ <h2>
236
+ {text.framework}
237
+ {shortFrameworkVersion(overview?.framework_version)
238
+ ? ` - ${shortFrameworkVersion(overview?.framework_version)}`
239
+ : ""}
240
+ </h2>
150
241
  <p>{text.frameworkHint}</p>
151
242
  </div>
152
243
  <Toggle
@@ -156,8 +247,33 @@ export function ProjectSettingsPage({
156
247
  />
157
248
  </section>
158
249
 
250
+ <section className="project-settings-summary" aria-label={text.overview}>
251
+ {overview?.metrics.map((metric) => (
252
+ <div className="project-settings-metric" key={metric.id}>
253
+ <strong>{metric.value}</strong>
254
+ <span>{metric.label}</span>
255
+ </div>
256
+ ))}
257
+ </section>
258
+
259
+ <SettingsCard className="is-wide" title={text.overview}>
260
+ <div className="project-overview" aria-live="polite">
261
+ {overview?.areas.map((area) => (
262
+ <div className="project-overview-item" key={area.id}>
263
+ <div>
264
+ <strong>{area.label}</strong>
265
+ <code>{area.artifact}</code>
266
+ </div>
267
+ <span className={area.available ? "is-available" : "is-unavailable"}>
268
+ {area.available ? text.available : text.unavailable}
269
+ </span>
270
+ </div>
271
+ ))}
272
+ </div>
273
+ </SettingsCard>
274
+
159
275
  <div className="project-settings-grid">
160
- <SettingsCard title={text.identity}>
276
+ <SettingsCard className="is-wide project-identity-card" title={text.identity}>
161
277
  <Field label="Schema">
162
278
  <input readOnly value={config.schema_version} />
163
279
  </Field>
@@ -200,135 +316,36 @@ export function ProjectSettingsPage({
200
316
  </SettingsCard>
201
317
 
202
318
  <SettingsCard className="is-wide" title={text.stack}>
203
- <div className="project-settings-fields two-columns">
204
- <Field label="Stack profile">
205
- <input
206
- required
207
- value={config.stack.profile}
208
- onChange={(event) =>
209
- setConfig({
210
- ...config,
211
- stack: { ...config.stack, profile: event.target.value },
212
- })
213
- }
214
- />
215
- </Field>
216
- <Field label={locale === "pt-BR" ? "Frontend" : "Frontend"}>
217
- <input
218
- placeholder="TypeScript, JavaScript"
219
- value={languages.frontend}
220
- onChange={(event) => setLanguages({ ...languages, frontend: event.target.value })}
221
- />
222
- </Field>
223
- <Field label={locale === "pt-BR" ? "Backend" : "Backend"}>
224
- <input
225
- placeholder="TypeScript, Python"
226
- value={languages.backend}
227
- onChange={(event) => setLanguages({ ...languages, backend: event.target.value })}
228
- />
229
- </Field>
230
- <Field label={locale === "pt-BR" ? "Site" : "Site"}>
231
- <input
232
- placeholder="Astro, TypeScript"
233
- value={languages.site}
234
- onChange={(event) => setLanguages({ ...languages, site: event.target.value })}
235
- />
236
- </Field>
237
- </div>
238
- <Field
239
- hint={
240
- locale === "pt-BR"
241
- ? "Objeto JSON. Chaves existentes são preservadas; linguagens são controladas pelos campos acima."
242
- : "JSON object. Existing keys are preserved; languages are controlled by the fields above."
243
- }
244
- label={locale === "pt-BR" ? "Demais overrides" : "Additional overrides"}
245
- >
246
- <textarea
247
- rows={7}
248
- value={otherOverrides}
249
- onChange={(event) => setOtherOverrides(event.target.value)}
319
+ <p className="project-stack-guide">{text.componentGuide}</p>
320
+ {stackComponents ? (
321
+ <StackComponentEditor
322
+ components={stackComponents}
323
+ locale={locale}
324
+ onChange={setStackComponents}
325
+ referenceHint={text.referenceHint}
326
+ versionHint={text.versionHint}
250
327
  />
251
- </Field>
252
- </SettingsCard>
253
-
254
- <SettingsCard title={text.clients}>
255
- <Toggle
256
- checked={config.clients.codex}
257
- label="Codex"
258
- onChange={(codex) => setConfig({ ...config, clients: { ...config.clients, codex } })}
259
- />
260
- <Toggle
261
- checked={config.clients.claude}
262
- label="Claude"
263
- onChange={(claude) =>
264
- setConfig({ ...config, clients: { ...config.clients, claude } })
265
- }
266
- />
267
- <Toggle
268
- checked={config.tracking.enabled}
269
- label={locale === "pt-BR" ? "Rastreamento ativo" : "Tracking enabled"}
270
- onChange={(enabled) =>
271
- setConfig({ ...config, tracking: { ...config.tracking, enabled } })
272
- }
273
- />
274
- <Field label={locale === "pt-BR" ? "Moeda ISO 4217" : "ISO 4217 currency"}>
275
- <input
276
- maxLength={3}
277
- required
278
- value={config.tracking.currency}
279
- onChange={(event) =>
280
- setConfig({
281
- ...config,
282
- tracking: {
283
- ...config.tracking,
284
- currency: event.target.value.toUpperCase(),
285
- },
286
- })
287
- }
288
- />
289
- </Field>
290
- <Field label="Storage mode">
291
- <select
292
- value={config.tracking.storage_mode}
293
- onChange={(event) =>
294
- setConfig({
295
- ...config,
296
- tracking: {
297
- ...config.tracking,
298
- storage_mode: event.target.value as "tracked_sanitized" | "local_only",
299
- },
300
- })
301
- }
302
- >
303
- <option value="tracked_sanitized">tracked_sanitized</option>
304
- <option value="local_only">local_only</option>
305
- </select>
306
- </Field>
307
- </SettingsCard>
308
-
309
- <SettingsCard className="is-wide" title={text.models}>
310
- <OptionalSectionToggle
311
- checked={config.model_orchestration !== undefined}
312
- label={
313
- locale === "pt-BR"
314
- ? "Incluir configuração de modelos"
315
- : "Include model configuration"
316
- }
317
- onChange={(checked) =>
318
- setConfig({
319
- ...config,
320
- model_orchestration: checked ? defaultModelOrchestration() : undefined,
321
- })
322
- }
323
- />
324
- {config.model_orchestration ? (
325
- <ModelOrchestrationFields config={config} setConfig={setConfig} />
326
328
  ) : null}
329
+ <StackVersions components={overview?.stack_components ?? []} text={text} />
330
+ <details className="project-settings-advanced">
331
+ <summary>{text.overrides}</summary>
332
+ <Field
333
+ hint={text.overridesHint}
334
+ label={locale === "pt-BR" ? "Overrides" : "Overrides"}
335
+ >
336
+ <textarea
337
+ rows={7}
338
+ value={otherOverrides}
339
+ onChange={(event) => setOtherOverrides(event.target.value)}
340
+ />
341
+ </Field>
342
+ </details>
327
343
  </SettingsCard>
328
344
 
329
345
  <SettingsCard title={text.execution}>
330
346
  <OptionalSectionToggle
331
347
  checked={config.execution !== undefined}
348
+ hint={text.executionToggleHint}
332
349
  label={
333
350
  locale === "pt-BR"
334
351
  ? "Incluir configuração de execução"
@@ -343,7 +360,7 @@ export function ProjectSettingsPage({
343
360
  />
344
361
  {config.execution ? (
345
362
  <>
346
- <Field label="Runtime">
363
+ <Field hint={text.runtimeHint} label="Runtime">
347
364
  <select
348
365
  value={config.execution.runtime}
349
366
  onChange={(event) =>
@@ -361,7 +378,7 @@ export function ProjectSettingsPage({
361
378
  </select>
362
379
  </Field>
363
380
  {config.execution.runtime === "autonomous" ? (
364
- <AutonomousExecutionFields config={config} setConfig={setConfig} />
381
+ <AutonomousExecutionFields config={config} setConfig={setConfig} text={text} />
365
382
  ) : null}
366
383
  </>
367
384
  ) : null}
@@ -370,6 +387,7 @@ export function ProjectSettingsPage({
370
387
  <SettingsCard title={text.assurance}>
371
388
  <OptionalSectionToggle
372
389
  checked={config.assurance !== undefined}
390
+ hint={text.assuranceToggleHint}
373
391
  label={locale === "pt-BR" ? "Incluir assurance" : "Include assurance"}
374
392
  onChange={(checked) =>
375
393
  setConfig({
@@ -382,10 +400,16 @@ export function ProjectSettingsPage({
382
400
  />
383
401
  {config.assurance ? (
384
402
  <>
385
- <Field label="Version">
403
+ <Field
404
+ hint={text.assuranceVersionHint}
405
+ label={locale === "pt-BR" ? "Versão" : "Version"}
406
+ >
386
407
  <input readOnly value={config.assurance.version} />
387
408
  </Field>
388
- <Field label="Standard depth">
409
+ <Field
410
+ hint={text.assuranceDepthHint}
411
+ label={locale === "pt-BR" ? "Profundidade padrão" : "Standard depth"}
412
+ >
389
413
  <select
390
414
  value={config.assurance.standard_depth}
391
415
  onChange={(event) =>
@@ -409,7 +433,8 @@ export function ProjectSettingsPage({
409
433
  </Field>
410
434
  <Toggle
411
435
  checked={config.assurance.require_final_commit}
412
- label="Require final commit"
436
+ hint={text.finalCommitHint}
437
+ label={locale === "pt-BR" ? "Exigir commit final" : "Require final commit"}
413
438
  onChange={(require_final_commit) =>
414
439
  setConfig({
415
440
  ...config,
@@ -442,51 +467,69 @@ export function ProjectSettingsPage({
442
467
  }
443
468
  />
444
469
  {config.context ? (
445
- <div className="project-settings-fields two-columns">
446
- <Field
447
- hint={locale === "pt-BR" ? "Uma raiz por linha." : "One root per line."}
448
- label="Canonical roots"
449
- >
450
- <textarea
451
- required
452
- rows={5}
453
- value={config.context.canonical_roots.join("\n")}
454
- onChange={(event) =>
455
- setConfig({
456
- ...config,
457
- context: {
458
- ...(config.context ?? {
459
- canonical_roots: ["packages"],
460
- projection_roots: [],
461
- }),
462
- canonical_roots: lineList(event.target.value),
463
- },
464
- })
470
+ <>
471
+ <div className="project-settings-guidance">
472
+ <p>{text.contextGuide}</p>
473
+ <p>{text.contextDomains}</p>
474
+ </div>
475
+ <div className="project-settings-fields two-columns">
476
+ <Field
477
+ hint={
478
+ locale === "pt-BR"
479
+ ? "Uma pasta por linha. Estas são as fontes principais do projeto."
480
+ : "One folder per line. These are the project's primary sources."
465
481
  }
466
- />
467
- </Field>
468
- <Field
469
- hint={locale === "pt-BR" ? "Uma raiz por linha." : "One root per line."}
470
- label="Projection roots"
471
- >
472
- <textarea
473
- rows={5}
474
- value={config.context.projection_roots.join("\n")}
475
- onChange={(event) =>
476
- setConfig({
477
- ...config,
478
- context: {
479
- ...(config.context ?? {
480
- canonical_roots: ["packages"],
481
- projection_roots: [],
482
- }),
483
- projection_roots: lineList(event.target.value),
484
- },
485
- })
482
+ label={locale === "pt-BR" ? "Fontes canônicas" : "Canonical sources"}
483
+ >
484
+ <textarea
485
+ required
486
+ rows={5}
487
+ value={config.context.canonical_roots.join("\n")}
488
+ onChange={(event) =>
489
+ setConfig({
490
+ ...config,
491
+ context: {
492
+ ...(config.context ?? {
493
+ canonical_roots: ["packages"],
494
+ projection_roots: [],
495
+ }),
496
+ canonical_roots: lineList(event.target.value),
497
+ },
498
+ })
499
+ }
500
+ />
501
+ </Field>
502
+ <Field
503
+ hint={
504
+ locale === "pt-BR"
505
+ ? "Uma pasta por linha. São saídas geradas, não fontes de contexto normal."
506
+ : "One folder per line. These are generated outputs, not normal context sources."
486
507
  }
487
- />
488
- </Field>
489
- </div>
508
+ label={
509
+ locale === "pt-BR"
510
+ ? "Saídas geradas/publicadas"
511
+ : "Generated/published outputs"
512
+ }
513
+ >
514
+ <textarea
515
+ rows={5}
516
+ value={config.context.projection_roots.join("\n")}
517
+ onChange={(event) =>
518
+ setConfig({
519
+ ...config,
520
+ context: {
521
+ ...(config.context ?? {
522
+ canonical_roots: ["packages"],
523
+ projection_roots: [],
524
+ }),
525
+ projection_roots: lineList(event.target.value),
526
+ },
527
+ })
528
+ }
529
+ />
530
+ </Field>
531
+ </div>
532
+ </>
490
533
  ) : null}
491
534
  </SettingsCard>
492
535
  </div>
@@ -531,23 +574,28 @@ function Field({ children, hint, label }: { children: ReactNode; hint?: string;
531
574
 
532
575
  function Toggle({
533
576
  checked,
577
+ hint,
534
578
  label,
535
579
  onChange,
536
580
  }: {
537
581
  checked: boolean;
582
+ hint?: string;
538
583
  label: string;
539
584
  onChange: (checked: boolean) => void;
540
585
  }) {
541
586
  return (
542
- <label className="project-settings-toggle">
543
- <input
544
- checked={checked}
545
- onChange={(event) => onChange(event.target.checked)}
546
- type="checkbox"
547
- />
548
- <span aria-hidden="true" />
549
- <strong>{label}</strong>
550
- </label>
587
+ <div className="project-settings-toggle-field">
588
+ <label className="project-settings-toggle">
589
+ <input
590
+ checked={checked}
591
+ onChange={(event) => onChange(event.target.checked)}
592
+ type="checkbox"
593
+ />
594
+ <span aria-hidden="true" />
595
+ <strong>{label}</strong>
596
+ </label>
597
+ {hint ? <small>{hint}</small> : null}
598
+ </div>
551
599
  );
552
600
  }
553
601
 
@@ -555,111 +603,14 @@ function OptionalSectionToggle(props: Parameters<typeof Toggle>[0]) {
555
603
  return <Toggle {...props} />;
556
604
  }
557
605
 
558
- function ModelOrchestrationFields({
559
- config,
560
- setConfig,
561
- }: {
562
- config: ProjectConfigSettings;
563
- setConfig: (config: ProjectConfigSettings) => void;
564
- }) {
565
- const model = config.model_orchestration ?? modelOrchestrationForMode("auto");
566
- return (
567
- <div className="project-settings-fields two-columns">
568
- <Field label="Mode">
569
- <select
570
- value={model.mode}
571
- onChange={(event) =>
572
- setConfig({
573
- ...config,
574
- model_orchestration: modelOrchestrationForMode(
575
- event.target.value as "manual" | "off" | "auto",
576
- ),
577
- })
578
- }
579
- >
580
- <option value="manual">manual</option>
581
- <option value="off">off</option>
582
- <option value="auto">auto</option>
583
- </select>
584
- </Field>
585
- <Field label="Notice">
586
- <select
587
- value={model.notice}
588
- onChange={(event) =>
589
- setConfig({
590
- ...config,
591
- model_orchestration: {
592
- ...model,
593
- notice: event.target.value as "always" | "mismatch",
594
- },
595
- })
596
- }
597
- >
598
- <option value="mismatch">mismatch</option>
599
- <option value="always">always</option>
600
- </select>
601
- </Field>
602
- {model.mode === "off" ? (
603
- <>
604
- <Field label="Default model">
605
- <input
606
- required
607
- value={model.default_model}
608
- onChange={(event) =>
609
- setConfig({
610
- ...config,
611
- model_orchestration: { ...model, default_model: event.target.value },
612
- })
613
- }
614
- />
615
- </Field>
616
- <Field label="Default effort">
617
- <input
618
- required
619
- value={model.default_effort}
620
- onChange={(event) =>
621
- setConfig({
622
- ...config,
623
- model_orchestration: { ...model, default_effort: event.target.value },
624
- })
625
- }
626
- />
627
- </Field>
628
- <Field label="Default velocity">
629
- <input
630
- required
631
- value={model.default_velocity}
632
- onChange={(event) =>
633
- setConfig({
634
- ...config,
635
- model_orchestration: { ...model, default_velocity: event.target.value },
636
- })
637
- }
638
- />
639
- </Field>
640
- </>
641
- ) : (
642
- <div className="project-settings-fixed">
643
- <strong>
644
- {model.default_model} · {model.default_effort} · {model.default_velocity}
645
- </strong>
646
- {model.mode === "auto" ? (
647
- <span>
648
- {model.allowed_models.join(", ")} · {model.allowed_efforts.join(", ")} · spec, prd
649
- </span>
650
- ) : null}
651
- </div>
652
- )}
653
- </div>
654
- );
655
- }
656
-
657
606
  function AutonomousExecutionFields({
658
607
  config,
659
608
  setConfig,
609
+ text,
660
610
  }: {
661
611
  config: ProjectConfigSettings;
662
612
  setConfig: (config: ProjectConfigSettings) => void;
613
+ text: (typeof copy)[Locale];
663
614
  }) {
664
615
  const execution =
665
616
  config.execution?.runtime === "autonomous" ? config.execution : defaultAutonomousExecution();
@@ -667,7 +618,7 @@ function AutonomousExecutionFields({
667
618
  setConfig({ ...config, execution: { runtime: "autonomous", autonomous } });
668
619
  return (
669
620
  <>
670
- <Field label="Provider">
621
+ <Field hint={text.providerHint} label="Provider">
671
622
  <select
672
623
  value={execution.autonomous.provider}
673
624
  onChange={(event) =>
@@ -681,14 +632,14 @@ function AutonomousExecutionFields({
681
632
  <option value="claude">claude</option>
682
633
  </select>
683
634
  </Field>
684
- <Field label="Model">
635
+ <Field hint={text.executionModelHint} label="Model">
685
636
  <input
686
637
  required
687
638
  value={execution.autonomous.model}
688
639
  onChange={(event) => update({ ...execution.autonomous, model: event.target.value })}
689
640
  />
690
641
  </Field>
691
- <Field label="Max parallelism">
642
+ <Field hint={text.parallelismHint} label="Max parallelism">
692
643
  <input
693
644
  max={8}
694
645
  min={1}
@@ -702,7 +653,7 @@ function AutonomousExecutionFields({
702
653
  }
703
654
  />
704
655
  </Field>
705
- <Field label="Lease (ms)">
656
+ <Field hint={text.leaseHint} label="Lease (ms)">
706
657
  <input
707
658
  max={3_600_000}
708
659
  min={5_000}