@zaip-ai/cli 1.0.7 → 1.0.8
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 +38 -3
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-adapters.test.js +8 -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 +2 -0
- package/dist/services/template-manifest.js.map +1 -1
- package/package.json +1 -1
- 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 +1 -1
- 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/.zaip-managed.json +659 -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-Z60df2r-.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-Cv-JcoxP.js → DashboardHelpDialog-Cs6dzDmW.js} +294 -109
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-Coc6pA-1.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-QE1k9yZB.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-_Pf5DA_A.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BVlz3DLZ.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-Cf9ctPVt.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-DFBuc_qp.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-8A4DcNXM.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-CCQOHdVI.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-DFY7ZDlu.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-pC2_0J8x.js +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 +952 -595
- 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 +257 -313
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +149 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +35 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +111 -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 +70 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +111 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +432 -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 +24 -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 +471 -2
- 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 +44 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +196 -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 +187 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +190 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +121 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-operations-pages.ts +398 -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 +37 -0
- package/templates/.agents/dashboard/apps/frontend/vite.config.ts +55 -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 +64 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +275 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +100 -15
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +131 -40
- 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 +303 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +226 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +479 -402
- 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 +312 -72
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +373 -321
- 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 +52 -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 +32 -5
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +108 -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 +60 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +106 -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 -137
- 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 +956 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +775 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-terminal-day.test.ts +95 -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/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 +182 -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 +325 -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 +365 -14
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +532 -131
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +314 -358
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageNavigation.tsx +68 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +169 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PeriodSummaryTable.tsx +51 -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 +99 -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 +255 -34
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +163 -8
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +101 -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 -16
- 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 +50 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +143 -9
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +29 -4
- 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 +65 -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 +19 -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 +136 -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 +24 -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 +165 -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 +5 -3
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +4 -83
- 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 +27 -2
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.ts +22 -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 +324 -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 +1 -0
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1756 -0
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1608 -0
- package/templates/.agents/dashboard/packages/local-runtime/package.json +8 -3
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs +12 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +83 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +28 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs +262 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-unix-launchers.mjs +41 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +105 -0
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1643 -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 +335 -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 +71 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +179 -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 +163 -84
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +145 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +551 -266
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +1145 -308
- 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 +708 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +2232 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +6151 -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 +437 -190
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +299 -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 +214 -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/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 +114 -64
- 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/skills/zaip-aios/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/agents/openai.yaml +4 -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-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 +15 -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 +3 -3
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +76 -27
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +128 -24
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +122 -4
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +66 -19
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +193 -7
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +14 -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 +18 -0
- package/templates/.agents/zaip-aios/INDEX.md +1 -0
- package/templates/.agents/zaip-aios/README.md +37 -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/template-manifest.json +945 -214
- 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/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,24 +1,27 @@
|
|
|
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";
|
|
3
7
|
import {
|
|
4
8
|
buildProjectSettingsPayload,
|
|
5
9
|
defaultAutonomousExecution,
|
|
6
|
-
defaultModelOrchestration,
|
|
7
|
-
type LanguagesDraft,
|
|
8
10
|
lineList,
|
|
9
|
-
modelOrchestrationForMode,
|
|
10
11
|
projectSettingsDraft,
|
|
12
|
+
shortFrameworkVersion,
|
|
13
|
+
type StackComponentsDraft,
|
|
14
|
+
withDetectedStackVersions,
|
|
11
15
|
} from "./project-settings-model.js";
|
|
16
|
+
import { StackComponentEditor, StackVersions } from "./ProjectStackEditor.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.",
|
|
24
|
+
intro: "Edite o arquivo central do projeto com validação do schema antes da gravação.",
|
|
22
25
|
loading: "Carregando configurações do projeto…",
|
|
23
26
|
back: "Voltar ao dashboard",
|
|
24
27
|
save: "Salvar configurações",
|
|
@@ -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) {
|
|
@@ -114,11 +192,14 @@ export function ProjectSettingsPage({
|
|
|
114
192
|
if (config === null) {
|
|
115
193
|
return (
|
|
116
194
|
<main className="project-settings-state">
|
|
117
|
-
<
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
{text.
|
|
121
|
-
|
|
195
|
+
<div className="project-settings-state-card">
|
|
196
|
+
<span aria-hidden="true" className="project-settings-loader" />
|
|
197
|
+
<p>{text.eyebrow}</p>
|
|
198
|
+
<h1>{error ?? text.loading}</h1>
|
|
199
|
+
<button onClick={onClose} type="button">
|
|
200
|
+
← {text.back}
|
|
201
|
+
</button>
|
|
202
|
+
</div>
|
|
122
203
|
</main>
|
|
123
204
|
);
|
|
124
205
|
}
|
|
@@ -146,7 +227,10 @@ export function ProjectSettingsPage({
|
|
|
146
227
|
|
|
147
228
|
<section className="project-settings-feature">
|
|
148
229
|
<div>
|
|
149
|
-
<h2>
|
|
230
|
+
<h2>
|
|
231
|
+
{text.framework}
|
|
232
|
+
{shortFrameworkVersion(overview?.framework_version) ? ` - ${shortFrameworkVersion(overview?.framework_version)}` : ""}
|
|
233
|
+
</h2>
|
|
150
234
|
<p>{text.frameworkHint}</p>
|
|
151
235
|
</div>
|
|
152
236
|
<Toggle
|
|
@@ -156,8 +240,33 @@ export function ProjectSettingsPage({
|
|
|
156
240
|
/>
|
|
157
241
|
</section>
|
|
158
242
|
|
|
243
|
+
<section className="project-settings-summary" aria-label={text.overview}>
|
|
244
|
+
{overview?.metrics.map((metric) => (
|
|
245
|
+
<div className="project-settings-metric" key={metric.id}>
|
|
246
|
+
<strong>{metric.value}</strong>
|
|
247
|
+
<span>{metric.label}</span>
|
|
248
|
+
</div>
|
|
249
|
+
))}
|
|
250
|
+
</section>
|
|
251
|
+
|
|
252
|
+
<SettingsCard className="is-wide" title={text.overview}>
|
|
253
|
+
<div className="project-overview" aria-live="polite">
|
|
254
|
+
{overview?.areas.map((area) => (
|
|
255
|
+
<div className="project-overview-item" key={area.id}>
|
|
256
|
+
<div>
|
|
257
|
+
<strong>{area.label}</strong>
|
|
258
|
+
<code>{area.artifact}</code>
|
|
259
|
+
</div>
|
|
260
|
+
<span className={area.available ? "is-available" : "is-unavailable"}>
|
|
261
|
+
{area.available ? text.available : text.unavailable}
|
|
262
|
+
</span>
|
|
263
|
+
</div>
|
|
264
|
+
))}
|
|
265
|
+
</div>
|
|
266
|
+
</SettingsCard>
|
|
267
|
+
|
|
159
268
|
<div className="project-settings-grid">
|
|
160
|
-
<SettingsCard title={text.identity}>
|
|
269
|
+
<SettingsCard className="is-wide project-identity-card" title={text.identity}>
|
|
161
270
|
<Field label="Schema">
|
|
162
271
|
<input readOnly value={config.schema_version} />
|
|
163
272
|
</Field>
|
|
@@ -200,135 +309,36 @@ export function ProjectSettingsPage({
|
|
|
200
309
|
</SettingsCard>
|
|
201
310
|
|
|
202
311
|
<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)}
|
|
312
|
+
<p className="project-stack-guide">{text.componentGuide}</p>
|
|
313
|
+
{stackComponents ? (
|
|
314
|
+
<StackComponentEditor
|
|
315
|
+
components={stackComponents}
|
|
316
|
+
locale={locale}
|
|
317
|
+
onChange={setStackComponents}
|
|
318
|
+
referenceHint={text.referenceHint}
|
|
319
|
+
versionHint={text.versionHint}
|
|
250
320
|
/>
|
|
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
321
|
) : null}
|
|
322
|
+
<StackVersions components={overview?.stack_components ?? []} text={text} />
|
|
323
|
+
<details className="project-settings-advanced">
|
|
324
|
+
<summary>{text.overrides}</summary>
|
|
325
|
+
<Field
|
|
326
|
+
hint={text.overridesHint}
|
|
327
|
+
label={locale === "pt-BR" ? "Overrides" : "Overrides"}
|
|
328
|
+
>
|
|
329
|
+
<textarea
|
|
330
|
+
rows={7}
|
|
331
|
+
value={otherOverrides}
|
|
332
|
+
onChange={(event) => setOtherOverrides(event.target.value)}
|
|
333
|
+
/>
|
|
334
|
+
</Field>
|
|
335
|
+
</details>
|
|
327
336
|
</SettingsCard>
|
|
328
337
|
|
|
329
338
|
<SettingsCard title={text.execution}>
|
|
330
339
|
<OptionalSectionToggle
|
|
331
340
|
checked={config.execution !== undefined}
|
|
341
|
+
hint={text.executionToggleHint}
|
|
332
342
|
label={
|
|
333
343
|
locale === "pt-BR"
|
|
334
344
|
? "Incluir configuração de execução"
|
|
@@ -343,7 +353,7 @@ export function ProjectSettingsPage({
|
|
|
343
353
|
/>
|
|
344
354
|
{config.execution ? (
|
|
345
355
|
<>
|
|
346
|
-
<Field label="Runtime">
|
|
356
|
+
<Field hint={text.runtimeHint} label="Runtime">
|
|
347
357
|
<select
|
|
348
358
|
value={config.execution.runtime}
|
|
349
359
|
onChange={(event) =>
|
|
@@ -361,7 +371,7 @@ export function ProjectSettingsPage({
|
|
|
361
371
|
</select>
|
|
362
372
|
</Field>
|
|
363
373
|
{config.execution.runtime === "autonomous" ? (
|
|
364
|
-
<AutonomousExecutionFields config={config} setConfig={setConfig} />
|
|
374
|
+
<AutonomousExecutionFields config={config} setConfig={setConfig} text={text} />
|
|
365
375
|
) : null}
|
|
366
376
|
</>
|
|
367
377
|
) : null}
|
|
@@ -370,6 +380,7 @@ export function ProjectSettingsPage({
|
|
|
370
380
|
<SettingsCard title={text.assurance}>
|
|
371
381
|
<OptionalSectionToggle
|
|
372
382
|
checked={config.assurance !== undefined}
|
|
383
|
+
hint={text.assuranceToggleHint}
|
|
373
384
|
label={locale === "pt-BR" ? "Incluir assurance" : "Include assurance"}
|
|
374
385
|
onChange={(checked) =>
|
|
375
386
|
setConfig({
|
|
@@ -382,10 +393,16 @@ export function ProjectSettingsPage({
|
|
|
382
393
|
/>
|
|
383
394
|
{config.assurance ? (
|
|
384
395
|
<>
|
|
385
|
-
<Field
|
|
396
|
+
<Field
|
|
397
|
+
hint={text.assuranceVersionHint}
|
|
398
|
+
label={locale === "pt-BR" ? "Versão" : "Version"}
|
|
399
|
+
>
|
|
386
400
|
<input readOnly value={config.assurance.version} />
|
|
387
401
|
</Field>
|
|
388
|
-
<Field
|
|
402
|
+
<Field
|
|
403
|
+
hint={text.assuranceDepthHint}
|
|
404
|
+
label={locale === "pt-BR" ? "Profundidade padrão" : "Standard depth"}
|
|
405
|
+
>
|
|
389
406
|
<select
|
|
390
407
|
value={config.assurance.standard_depth}
|
|
391
408
|
onChange={(event) =>
|
|
@@ -409,7 +426,8 @@ export function ProjectSettingsPage({
|
|
|
409
426
|
</Field>
|
|
410
427
|
<Toggle
|
|
411
428
|
checked={config.assurance.require_final_commit}
|
|
412
|
-
|
|
429
|
+
hint={text.finalCommitHint}
|
|
430
|
+
label={locale === "pt-BR" ? "Exigir commit final" : "Require final commit"}
|
|
413
431
|
onChange={(require_final_commit) =>
|
|
414
432
|
setConfig({
|
|
415
433
|
...config,
|
|
@@ -442,51 +460,69 @@ export function ProjectSettingsPage({
|
|
|
442
460
|
}
|
|
443
461
|
/>
|
|
444
462
|
{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
|
-
})
|
|
463
|
+
<>
|
|
464
|
+
<div className="project-settings-guidance">
|
|
465
|
+
<p>{text.contextGuide}</p>
|
|
466
|
+
<p>{text.contextDomains}</p>
|
|
467
|
+
</div>
|
|
468
|
+
<div className="project-settings-fields two-columns">
|
|
469
|
+
<Field
|
|
470
|
+
hint={
|
|
471
|
+
locale === "pt-BR"
|
|
472
|
+
? "Uma pasta por linha. Estas são as fontes principais do projeto."
|
|
473
|
+
: "One folder per line. These are the project's primary sources."
|
|
465
474
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
canonical_roots:
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
475
|
+
label={locale === "pt-BR" ? "Fontes canônicas" : "Canonical sources"}
|
|
476
|
+
>
|
|
477
|
+
<textarea
|
|
478
|
+
required
|
|
479
|
+
rows={5}
|
|
480
|
+
value={config.context.canonical_roots.join("\n")}
|
|
481
|
+
onChange={(event) =>
|
|
482
|
+
setConfig({
|
|
483
|
+
...config,
|
|
484
|
+
context: {
|
|
485
|
+
...(config.context ?? {
|
|
486
|
+
canonical_roots: ["packages"],
|
|
487
|
+
projection_roots: [],
|
|
488
|
+
}),
|
|
489
|
+
canonical_roots: lineList(event.target.value),
|
|
490
|
+
},
|
|
491
|
+
})
|
|
492
|
+
}
|
|
493
|
+
/>
|
|
494
|
+
</Field>
|
|
495
|
+
<Field
|
|
496
|
+
hint={
|
|
497
|
+
locale === "pt-BR"
|
|
498
|
+
? "Uma pasta por linha. São saídas geradas, não fontes de contexto normal."
|
|
499
|
+
: "One folder per line. These are generated outputs, not normal context sources."
|
|
486
500
|
}
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
501
|
+
label={
|
|
502
|
+
locale === "pt-BR"
|
|
503
|
+
? "Saídas geradas/publicadas"
|
|
504
|
+
: "Generated/published outputs"
|
|
505
|
+
}
|
|
506
|
+
>
|
|
507
|
+
<textarea
|
|
508
|
+
rows={5}
|
|
509
|
+
value={config.context.projection_roots.join("\n")}
|
|
510
|
+
onChange={(event) =>
|
|
511
|
+
setConfig({
|
|
512
|
+
...config,
|
|
513
|
+
context: {
|
|
514
|
+
...(config.context ?? {
|
|
515
|
+
canonical_roots: ["packages"],
|
|
516
|
+
projection_roots: [],
|
|
517
|
+
}),
|
|
518
|
+
projection_roots: lineList(event.target.value),
|
|
519
|
+
},
|
|
520
|
+
})
|
|
521
|
+
}
|
|
522
|
+
/>
|
|
523
|
+
</Field>
|
|
524
|
+
</div>
|
|
525
|
+
</>
|
|
490
526
|
) : null}
|
|
491
527
|
</SettingsCard>
|
|
492
528
|
</div>
|
|
@@ -531,23 +567,28 @@ function Field({ children, hint, label }: { children: ReactNode; hint?: string;
|
|
|
531
567
|
|
|
532
568
|
function Toggle({
|
|
533
569
|
checked,
|
|
570
|
+
hint,
|
|
534
571
|
label,
|
|
535
572
|
onChange,
|
|
536
573
|
}: {
|
|
537
574
|
checked: boolean;
|
|
575
|
+
hint?: string;
|
|
538
576
|
label: string;
|
|
539
577
|
onChange: (checked: boolean) => void;
|
|
540
578
|
}) {
|
|
541
579
|
return (
|
|
542
|
-
<
|
|
543
|
-
<
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
580
|
+
<div className="project-settings-toggle-field">
|
|
581
|
+
<label className="project-settings-toggle">
|
|
582
|
+
<input
|
|
583
|
+
checked={checked}
|
|
584
|
+
onChange={(event) => onChange(event.target.checked)}
|
|
585
|
+
type="checkbox"
|
|
586
|
+
/>
|
|
587
|
+
<span aria-hidden="true" />
|
|
588
|
+
<strong>{label}</strong>
|
|
589
|
+
</label>
|
|
590
|
+
{hint ? <small>{hint}</small> : null}
|
|
591
|
+
</div>
|
|
551
592
|
);
|
|
552
593
|
}
|
|
553
594
|
|
|
@@ -555,111 +596,14 @@ function OptionalSectionToggle(props: Parameters<typeof Toggle>[0]) {
|
|
|
555
596
|
return <Toggle {...props} />;
|
|
556
597
|
}
|
|
557
598
|
|
|
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
599
|
function AutonomousExecutionFields({
|
|
658
600
|
config,
|
|
659
601
|
setConfig,
|
|
602
|
+
text,
|
|
660
603
|
}: {
|
|
661
604
|
config: ProjectConfigSettings;
|
|
662
605
|
setConfig: (config: ProjectConfigSettings) => void;
|
|
606
|
+
text: (typeof copy)[Locale];
|
|
663
607
|
}) {
|
|
664
608
|
const execution =
|
|
665
609
|
config.execution?.runtime === "autonomous" ? config.execution : defaultAutonomousExecution();
|
|
@@ -667,7 +611,7 @@ function AutonomousExecutionFields({
|
|
|
667
611
|
setConfig({ ...config, execution: { runtime: "autonomous", autonomous } });
|
|
668
612
|
return (
|
|
669
613
|
<>
|
|
670
|
-
<Field label="Provider">
|
|
614
|
+
<Field hint={text.providerHint} label="Provider">
|
|
671
615
|
<select
|
|
672
616
|
value={execution.autonomous.provider}
|
|
673
617
|
onChange={(event) =>
|
|
@@ -681,14 +625,14 @@ function AutonomousExecutionFields({
|
|
|
681
625
|
<option value="claude">claude</option>
|
|
682
626
|
</select>
|
|
683
627
|
</Field>
|
|
684
|
-
<Field label="Model">
|
|
628
|
+
<Field hint={text.executionModelHint} label="Model">
|
|
685
629
|
<input
|
|
686
630
|
required
|
|
687
631
|
value={execution.autonomous.model}
|
|
688
632
|
onChange={(event) => update({ ...execution.autonomous, model: event.target.value })}
|
|
689
633
|
/>
|
|
690
634
|
</Field>
|
|
691
|
-
<Field label="Max parallelism">
|
|
635
|
+
<Field hint={text.parallelismHint} label="Max parallelism">
|
|
692
636
|
<input
|
|
693
637
|
max={8}
|
|
694
638
|
min={1}
|
|
@@ -702,7 +646,7 @@ function AutonomousExecutionFields({
|
|
|
702
646
|
}
|
|
703
647
|
/>
|
|
704
648
|
</Field>
|
|
705
|
-
<Field label="Lease (ms)">
|
|
649
|
+
<Field hint={text.leaseHint} label="Lease (ms)">
|
|
706
650
|
<input
|
|
707
651
|
max={3_600_000}
|
|
708
652
|
min={5_000}
|