@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.
- package/README.md +6 -4
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +15 -5
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/adapters.test.js +1 -1
- package/dist/services/agent-adapters.d.ts +9 -0
- package/dist/services/agent-adapters.d.ts.map +1 -1
- package/dist/services/agent-adapters.js +39 -4
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-adapters.test.js +13 -1
- package/dist/services/agent-adapters.test.js.map +1 -1
- package/dist/services/codex-config-template.d.ts +2 -1
- package/dist/services/codex-config-template.d.ts.map +1 -1
- package/dist/services/codex-config-template.js +13 -2
- package/dist/services/codex-config-template.js.map +1 -1
- package/dist/services/codex-rules.d.ts +1 -1
- package/dist/services/codex-rules.d.ts.map +1 -1
- package/dist/services/codex-rules.js +31 -7
- package/dist/services/codex-rules.js.map +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
- package/dist/services/codex-subagent-hook-template.js +4 -1
- package/dist/services/codex-subagent-hook-template.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +3 -1
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/global-codex-config.d.ts +6 -3
- package/dist/services/global-codex-config.d.ts.map +1 -1
- package/dist/services/global-codex-config.js +82 -13
- package/dist/services/global-codex-config.js.map +1 -1
- package/dist/services/global-codex-config.test.js +57 -10
- package/dist/services/global-codex-config.test.js.map +1 -1
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +15 -2
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/logger.js +1 -1
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +3 -3
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/runtime-template.test.js +21 -5
- package/dist/services/runtime-template.test.js.map +1 -1
- package/dist/services/template-manifest.d.ts.map +1 -1
- package/dist/services/template-manifest.js +7 -0
- package/dist/services/template-manifest.js.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/architecture/software-architecture.md +131 -0
- package/templates/.agents/branding/brandbook.docx +0 -0
- package/templates/.agents/branding/brandbook.md +60 -0
- package/templates/.agents/config/agents/catalog.yaml +310 -10
- package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +5 -5
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +8 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +5 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +30 -0
- package/templates/.agents/config/project.yaml +1 -1
- package/templates/.agents/dashboard/.tmp-run-list.json +254 -0
- package/templates/.agents/dashboard/.zaip-managed.json +775 -163
- package/templates/.agents/dashboard/DATA-DICTIONARY.md +2227 -0
- package/templates/.agents/dashboard/README.md +48 -97
- package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-DxR_pgSV.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-4jZLTWE_.js +2156 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-CKcsqb-r.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BomxqCBU.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-DmmJD2Th.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BwtitWa_.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-CaKwQP43.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-BZ5WdaMN.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-N5Csr0RP.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-C98LGC-Q.js → dashboard-localization-CLJ0lT9v.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/icons-vendor-C0fj2uU9.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-C4aIB1PV.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DK_enB5Z.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/react-vendor-BEsJ-FYH.js +9 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-D9-fqq9M.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-B6y6Gw12.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-DFY7ZDlu.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +9 -2
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +1129 -600
- package/templates/.agents/dashboard/apps/frontend/src/AppLoadingBoundary.tsx +48 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppLoadingPanels.tsx +2 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppOverlays.tsx +247 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppRequestGuards.tsx +95 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppSetupRoutes.tsx +87 -0
- package/templates/.agents/dashboard/apps/frontend/src/CostCalculationGuidePage.tsx +641 -0
- package/templates/.agents/dashboard/apps/frontend/src/DashboardAlternateContent.tsx +159 -0
- package/templates/.agents/dashboard/apps/frontend/src/DashboardCapabilityNav.tsx +13 -13
- package/templates/.agents/dashboard/apps/frontend/src/DashboardGlobalSettings.tsx +56 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +266 -315
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +151 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +37 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +114 -12
- package/templates/.agents/dashboard/apps/frontend/src/app-preferences.ts +15 -0
- package/templates/.agents/dashboard/apps/frontend/src/app-session-token.ts +20 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-calculation-guide.css +267 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-calculation-guide.test.ts +69 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +85 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +133 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +453 -13
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/main.tsx +1 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-detail-hydration.test.ts +55 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-detail-hydration.ts +36 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-entity-page-projection.test.ts +126 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-entity-page-projection.ts +181 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-contract.test.ts +138 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +105 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +6 -3
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +9 -5
- package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +26 -0
- package/templates/.agents/dashboard/apps/frontend/src/period-transition-overlay.css +44 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +121 -62
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +482 -3
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +84 -17
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +78 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +234 -39
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-notice.ts +15 -0
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-cost-adapters.ts +26 -0
- package/templates/.agents/dashboard/apps/frontend/src/styles.css +14 -2
- package/templates/.agents/dashboard/apps/frontend/src/traceability-workspace.css +38 -2
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +253 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +380 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +175 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-operations-pages.ts +395 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +141 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-idle-cost-prefetch.ts +45 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.test.ts +46 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.ts +36 -0
- package/templates/.agents/dashboard/apps/frontend/vite.config.ts +58 -5
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +47 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/duration-estimate.ts +13 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +134 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +290 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +133 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +134 -43
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +137 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.test.ts +2 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.tsx +13 -10
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +328 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +302 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +627 -400
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostSummary.tsx +5 -13
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +370 -72
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +467 -326
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +17 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +25 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-copy.ts +0 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-helpers.ts +17 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-responsive.css +6 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-row-filters.ts +123 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +8 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-views.ts +32 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor.css +55 -14
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-presentation.ts +121 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/index.ts +3 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.test.ts +68 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +33 -5
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +119 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.test.ts +12 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +146 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +118 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.ts +5 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-pricing-fallback.test.ts +53 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.basics.test.ts +34 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +168 -161
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +188 -29
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +757 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +784 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-terminal-day.test.ts +100 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/index.ts +1 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/refactor-map-xr9l.json +61 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-monitor-projection-agents.test.ts +31 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-summary-projection-duration.test.ts +414 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/task-cost-groups.test.ts +41 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/task-cost-groups.ts +55 -11
- package/templates/.agents/dashboard/modules/operations/package.json +2 -1
- package/templates/.agents/dashboard/modules/operations/src/contracts.ts +185 -0
- package/templates/.agents/dashboard/modules/operations/src/duration-population.test.ts +63 -1
- package/templates/.agents/dashboard/modules/operations/src/duration-population.ts +60 -5
- package/templates/.agents/dashboard/modules/operations/src/react/EntityDetailsDialog.tsx +14 -3
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.test.ts +44 -1
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +345 -18
- package/templates/.agents/dashboard/modules/operations/src/react/MacroPlanningDialog.tsx +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationDateFilters.test.ts +9 -5
- package/templates/.agents/dashboard/modules/operations/src/react/OperationDateFilters.tsx +2 -2
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsMainContent.tsx +168 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +95 -6
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +367 -14
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +562 -131
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +353 -355
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageNavigation.tsx +65 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +169 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PeriodSummaryTable.tsx +73 -8
- package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.test.tsx +32 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.tsx +62 -6
- package/templates/.agents/dashboard/modules/operations/src/react/TaskBoard.test.ts +55 -0
- package/templates/.agents/dashboard/modules/operations/src/react/TaskBoard.tsx +27 -19
- package/templates/.agents/dashboard/modules/operations/src/react/TaskDetailsDialog.tsx +105 -42
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.priority.test.ts +19 -0
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.tsx +265 -36
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +171 -8
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +98 -68
- package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.test.ts +72 -1
- package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.ts +78 -17
- package/templates/.agents/dashboard/modules/operations/src/react/execution-metrics.ts +6 -4
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +431 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +574 -20
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +42 -4
- package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +248 -0
- package/templates/.agents/dashboard/modules/operations/src/react/macro-planning-dialog-content.css +49 -0
- package/templates/.agents/dashboard/modules/operations/src/react/macro-planning-dialog.css +93 -50
- package/templates/.agents/dashboard/modules/operations/src/react/manual-work-priority.test.ts +82 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.test.ts +29 -2
- package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.ts +22 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.test.ts +77 -4
- package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.ts +67 -5
- package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +54 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-global-filters.test.ts +22 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +149 -12
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +27 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +176 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-period-scope.test.ts +160 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-period-scope.ts +47 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-query.ts +10 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-responsive.css +3 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-view-labels.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-view-order.test.ts +21 -7
- package/templates/.agents/dashboard/modules/operations/src/react/operations.css +42 -0
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary-population.test.ts +54 -0
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary-population.ts +32 -0
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary.test.ts +241 -6
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary.ts +148 -6
- package/templates/.agents/dashboard/modules/operations/src/react/popup-localization.test.ts +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.css +132 -0
- package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.css.test.ts +13 -0
- package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.header.test.ts +16 -0
- package/templates/.agents/dashboard/modules/operations/src/react/use-infinite-column.ts +11 -5
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +7 -4
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +5 -84
- package/templates/.agents/dashboard/modules/operations/src/server/build-operations-projection.test.ts +291 -15
- package/templates/.agents/dashboard/modules/operations/src/server/build-operations-projection.ts +182 -472
- package/templates/.agents/dashboard/modules/operations/src/server/canonical-compat.test.ts +40 -0
- package/templates/.agents/dashboard/modules/operations/src/server/canonical-compat.ts +19 -6
- package/templates/.agents/dashboard/modules/operations/src/server/canonical-run-projection.ts +31 -6
- package/templates/.agents/dashboard/modules/operations/src/server/daily-duration-projection.ts +220 -0
- package/templates/.agents/dashboard/modules/operations/src/server/execution-duration-projection.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.test.ts +39 -2
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.ts +25 -13
- package/templates/.agents/dashboard/modules/operations/src/server/filter.test.ts +3 -3
- package/templates/.agents/dashboard/modules/operations/src/server/filter.ts +7 -2
- package/templates/.agents/dashboard/modules/operations/src/server/index.ts +3 -0
- package/templates/.agents/dashboard/modules/operations/src/server/macro.ts +3 -12
- package/templates/.agents/dashboard/modules/operations/src/server/manifest-usage.ts +65 -0
- package/templates/.agents/dashboard/modules/operations/src/server/operations-projection-aggregates.ts +297 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-daily-operations-projection.ts +330 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-operations-projection.test.ts +505 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-operations-projection.ts +609 -0
- package/templates/.agents/dashboard/modules/operations/src/server/runs.ts +18 -19
- package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +76 -0
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
- package/templates/.agents/dashboard/modules/traceability/src/server/build-task-trace.ts +3 -1
- package/templates/.agents/dashboard/packages/branding/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
- package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
- package/templates/.agents/dashboard/packages/contracts/src/index.ts +2 -0
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1759 -0
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs.metafile.json +7333 -0
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1611 -0
- package/templates/.agents/dashboard/packages/local-runtime/package.json +8 -3
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs +20 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +114 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +31 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/source-size-runtime-scripts/sqlite-read-model-fixture.mjs +397 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs +589 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-unix-launchers.mjs +53 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +203 -0
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1646 -107
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-adapter-sync.ts +30 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.test.ts +3 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.ts +5 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/manifest-runs.ts +72 -33
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +339 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +392 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/runtime.mjs +5 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +110 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +189 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-cross-layer-parity.test.ts +245 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models-route.ts +64 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models.test.ts +204 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models.ts +194 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +163 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +354 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.test.ts +74 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +113 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-overview.test.ts +68 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period.ts +47 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-projections.ts +483 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-settings.test.ts +5 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +178 -84
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +149 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +675 -267
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +1212 -309
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.test.ts +53 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.ts +722 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +3743 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +7017 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +33 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +41 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +210 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +514 -190
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +324 -24
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/packages/windows-launcher/LauncherVerificationBehaviorTests.cs +206 -0
- package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +95 -8
- package/templates/.agents/dashboard/packages/windows-launcher/build-dashboard-launcher.ps1 +2 -2
- package/templates/.agents/dashboard/packages/windows-launcher/run-launcher-verification-tests.ps1 +22 -0
- package/templates/.agents/dashboard/read-model.dbml +2201 -0
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +1 -1
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +216 -41
- package/templates/.agents/dashboard/work-priority.json +34 -0
- package/templates/.agents/dashboard/zaip-dashboard-linux.sh +45 -0
- package/templates/.agents/dashboard/zaip-dashboard-mac.command +3 -0
- package/templates/.agents/dashboard/zaip-dashboard-windows.exe +0 -0
- package/templates/.agents/design/.zaip-managed.json +3 -3
- package/templates/.agents/design/apps/catalog/package.json +1 -1
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/growth/estrategia-bootstrap-90-dias.md +169 -0
- package/templates/.agents/growth/strategy.md +27 -0
- package/templates/.agents/marketing/estrategia-marketing-zaip-90-dias.md +197 -0
- package/templates/.agents/marketing/strategy.md +29 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/comparative-audit.md +1 -1
- package/templates/.agents/requirements/context-engine.md +1 -1
- package/templates/.agents/requirements/cost-observability.md +1 -1
- package/templates/.agents/requirements/dashboard-launch.md +24 -0
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +4 -3
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +9 -6
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +9 -3
- package/templates/.agents/requirements/zaip-strategic-95.md +4 -4
- package/templates/.agents/rules/autonomy-decision.md +15 -0
- package/templates/.agents/rules/core.md +1 -1
- package/templates/.agents/rules/run-lifecycle-closure.md +1 -1
- package/templates/.agents/rules/specialist-routing.md +19 -0
- package/templates/.agents/rules/workflow.md +1 -1
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +118 -67
- package/templates/.agents/runtime/checksums.sha256 +6 -4
- package/templates/.agents/runtime/manifest.json +3 -1
- package/templates/.agents/runtime/pnpm-lock.sha256 +1 -0
- package/templates/.agents/runtime/provenance.json +11 -0
- package/templates/.agents/runtime/sbom.cdx.json +1929 -39
- package/templates/.agents/sales/playbook.md +32 -0
- package/templates/.agents/sales/roteiro-comercial-zaip.md +252 -0
- package/templates/.agents/skills/zaip-aios/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +22 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-framework.md +39 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-standards.md +30 -0
- package/templates/.agents/skills/zaip-skill-dashboard-sqlite/SKILL.md +25 -0
- package/templates/.agents/skills/zaip-skill-dashboard-sqlite/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-enforce-architecture/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/SKILL.md +18 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.mjs +71 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.test.mjs +60 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/scheduled-ready-queue-contract.test.mjs +111 -0
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-frontend-launcher/references/launcher-contract.md +3 -1
- package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-general-operations/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +9 -7
- package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +11 -38
- package/templates/.agents/skills/zaip-skill-governance-compliance/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-governance-compliance/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +21 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/references/growth-revops-framework.md +25 -0
- package/templates/.agents/skills/zaip-skill-instalar-agendamento/SKILL.md +17 -0
- package/templates/.agents/skills/zaip-skill-instalar-agendamento/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +9 -3
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +99 -93
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +132 -23
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +149 -1
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +76 -19
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +217 -7
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/source-size-telemetry/model-identity-reconciliation.mjs +77 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +20 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/references/sales-process-framework.md +77 -0
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +5 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +96 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/scripts/ensure-node.mjs +41 -0
- package/templates/.agents/zaip-aios/INDEX.md +11 -0
- package/templates/.agents/zaip-aios/README.md +38 -8
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/09-agentes-e-squads.md +43 -6
- package/templates/.agents/zaip-aios/guides/10-seguranca.md +21 -7
- package/templates/.agents/zaip-aios/guides/17-como-o-custo-e-calculado.md +32 -0
- package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +76 -0
- package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +72 -0
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +330 -0
- package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +52 -0
- package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +69 -0
- package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +483 -0
- package/templates/.agents/zaip-aios/guides/24-calculo-de-custos-openai.md +85 -0
- package/templates/.agents/zaip-aios/guides/25-fontes-de-precos-openai.md +18 -0
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +44 -0
- package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +167 -0
- package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +144 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/lifecycles-task-spec-prd.png +0 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/prd-lifecycle.png +0 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/spec-lifecycle.png +0 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/task-lifecycle.png +0 -0
- package/templates/template-manifest.json +1082 -215
- package/templates/.agents/dashboard/apps/frontend/dist/assets/AgentCatalogSettingsPage-CLYIi7Vo.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/AgentCatalogSettingsPage-DTDNVQGX.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-Cv-JcoxP.js +0 -1320
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-CzEggcRb.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-05YKn6Z4.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-YO3yqtgV.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-8AzCnl3a.js +0 -77
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DdBYQ_8D.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/src/AgentCatalogSettingsPage.tsx +0 -617
- package/templates/.agents/dashboard/apps/frontend/src/agent-catalog-settings-page.css +0 -660
- package/templates/.agents/dashboard/apps/frontend/src/agent-catalog-settings.test.ts +0 -249
- package/templates/.agents/dashboard/dashboard.config.json +0 -4
- 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 {
|
|
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
|
-
|
|
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 [
|
|
71
|
-
|
|
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
|
-
.
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
<
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
{
|
|
121
|
-
|
|
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>
|
|
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
|
-
<
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
446
|
-
<
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
>
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
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
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
canonical_roots:
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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
|
-
|
|
489
|
-
|
|
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
|
-
<
|
|
543
|
-
<
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
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}
|