@zaip-ai/cli 2.2.0 → 3.0.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 +36 -13
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +26 -9
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/agent-adapters.js +37 -18
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-discovery.d.ts +27 -0
- package/dist/services/agent-discovery.d.ts.map +1 -0
- package/dist/services/agent-discovery.js +73 -0
- package/dist/services/agent-discovery.js.map +1 -0
- package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.js +164 -24
- package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.js +146 -72
- package/dist/services/codex-pre-tool-hook-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 +3 -3
- 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 +117 -66
- package/dist/services/codex-subagent-hook-template.js.map +1 -1
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +65 -7
- 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 +22 -1
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/runtime-template.test.js +153 -1
- package/dist/services/runtime-template.test.js.map +1 -1
- package/dist/services/transactional-files.d.ts.map +1 -1
- package/dist/services/transactional-files.js +59 -14
- package/dist/services/transactional-files.js.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/.env.example +9 -3
- package/templates/.agents/README-ENG.md +101 -15
- package/templates/.agents/README.md +102 -17
- package/templates/.agents/architecture/software-architecture.md +1 -59
- package/templates/.agents/branding/brandbook.md +3 -0
- package/templates/.agents/config/agents/catalog.yaml +25 -10
- package/templates/.agents/config/agents/discovery.json +319 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +12 -9
- package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +13 -10
- package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +1 -1
- package/templates/.agents/config/pricing/models.json +9 -5
- package/templates/.agents/config/project.yaml +22 -2
- package/templates/.agents/dashboard/.zaip-managed.json +530 -138
- package/templates/.agents/dashboard/README.md +16 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-CEDZjl4V.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-DaSllaJp.js → DashboardHelpDialog-TnrL1ZyZ.js} +967 -578
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-DjQpBqGU.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B9GWkEyN.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BAvLPAee.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BQZXUnQu.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-06__WZco.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/dashboard-localization-Basaw1NR.js +824 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-TPUT2IUt.js → icons-vendor-DEmo6Tn2.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-BQe3zTvL.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-Ct48XHGL.js → react-vendor-CadYsm83.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-Bh1tDfsg.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BzKK8kK3.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +6 -6
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +3 -1264
- package/templates/.agents/dashboard/apps/frontend/src/AppDashboardContent.tsx +368 -0
- package/templates/.agents/dashboard/apps/frontend/src/AutonomySettings.tsx +82 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +130 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +206 -157
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +3 -1
- package/templates/.agents/dashboard/apps/frontend/src/__tests__/app-composition-support.ts +12 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-monitor-population.test.tsx +149 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +9 -7
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-settings.ts +152 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +19 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +50 -154
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-app-shell.tsx +33 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.test.ts +54 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-cost-facts.ts +48 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.test.ts +37 -43
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.ts +9 -251
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-project-overview.ts +35 -2
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-retry.ts +17 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-setup-route.ts +29 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.test.ts +51 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-view-actions.ts +68 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +38 -2
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +19 -4
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +5 -3
- package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +2 -2
- package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.test.ts +137 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.ts +66 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-copy.ts +181 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +11 -1
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +102 -51
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-state.css +55 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +14 -2
- package/templates/.agents/dashboard/apps/frontend/src/sao-paulo-day-rollover.test.ts +36 -0
- package/templates/.agents/dashboard/apps/frontend/src/sao-paulo-day-rollover.ts +30 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +2 -5
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +31 -20
- package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.ts +1 -2
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +6 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +2 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +9 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +3 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-task-pagination.ts +66 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +397 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-dashboard-app-model.tsx +782 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-snapshot-notice.tsx +49 -0
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/complete-cost-average.test.ts +73 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +9 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/period-averages.ts +60 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperPanelSlot.tsx +16 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +459 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +8 -22
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +27 -17
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +64 -189
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorRunDialog.tsx +20 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostPeriodAverageCards.tsx +32 -8
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-hides-calls-that-have-no-collected.test.ts +80 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +455 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +18 -525
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +32 -508
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-export-sources.ts +74 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-actions.ts +19 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +49 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +3 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-formatters.ts +115 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +1 -42
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +2 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test-fixtures.ts +2 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +3 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +8 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/index.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/src/contracts.ts +4 -0
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTableBadges.tsx +34 -0
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +8 -38
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview-keeps-structure-classes-mutually-exclusive.test.ts +244 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +66 -3
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +98 -276
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +105 -276
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewCharts.tsx +171 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewPanels.tsx +64 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +9 -17
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +3 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OverviewCostKpi.tsx +46 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.test.tsx +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +28 -1
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +11 -4
- package/templates/.agents/dashboard/modules/operations/src/react/index.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/manual-work-priority.test.ts +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +8 -4
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +34 -22
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +3 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +21 -2
- package/templates/.agents/dashboard/modules/operations/src/react/overview-cost-card.test.tsx +89 -0
- package/templates/.agents/dashboard/modules/operations/src/react/overview-metric-format.ts +32 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +3 -3
- package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +2 -1
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -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/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1625 -1613
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1592 -1582
- package/templates/.agents/dashboard/packages/local-runtime/package.json +3 -2
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +22 -28
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1625 -1614
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +25 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/project-installation-summary.test.ts +142 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/project-installation-summary.ts +190 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +118 -8
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +92 -36
- package/templates/.agents/dashboard/packages/local-runtime/src/projection-refresh-diagnostics.ts +35 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.test.ts +91 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.ts +24 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +168 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-dual-reads-manifest-summaries-without-losing.test.ts +344 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-hono-security.test.ts +17 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-http-contracts.ts +31 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +364 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +461 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +78 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-route-context.ts +13 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +94 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +62 -12
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +44 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +22 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +22 -21
- package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.test.ts +97 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +10 -13
- package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-view-allowlist.test.ts +25 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-trace-routes.ts +56 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-traceability-index.test.ts +84 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.test.ts +2 -30
- package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.ts +6 -23
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +2 -330
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +87 -1060
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-dimension-facts.test.ts +12 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-file-index.test.ts +69 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +3 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +3 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +2 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-first-fold.ts +78 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +570 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-runs.ts +600 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +46 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-provider-alias-parity.test.ts +50 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +269 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-context.ts +32 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +244 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +303 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +547 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +360 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +169 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +493 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-temporal-dimension.ts +134 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-timing.ts +299 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +692 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +763 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-does-not-convert-delayed-historical-finalizer.test.ts +706 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +762 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-first-fold-types.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +710 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-marks-token-cost-telemetry-unavailable-when.test.ts +618 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +764 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuilds-disposable-snapshot-serves-zaip-records.test.ts +276 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +193 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.test.ts +54 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +7 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-types.ts +123 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +5 -2806
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +17 -6930
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-risk-population.test.ts +98 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +390 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +413 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +2 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/verify-project-settings.mjs +57 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +4 -3
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-build.mjs +195 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-lifecycle.test.mjs +2 -7
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-logging.mjs +35 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-navigation.mjs +114 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-paths.mjs +90 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +89 -418
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +22 -12
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/scripts/qualify-observability.mjs +130 -0
- package/templates/.agents/dashboard/scripts/verify-autonomy-settings.mjs +175 -0
- package/templates/.agents/dashboard/scripts/verify-observability.mjs +254 -0
- package/templates/.agents/dashboard/scripts/verify-project-setup.mjs +64 -0
- package/templates/.agents/dashboard/tests/e2e/lease-global-setup.ts +37 -0
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +9 -4
- package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-period-transition.spec.ts +22 -1
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +17 -8
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +47 -6
- package/templates/.agents/dashboard/tests/e2e/specs/lease-lifetime.spec.ts +14 -0
- package/templates/.agents/dashboard/tests/observability-fixture.mjs +200 -0
- package/templates/.agents/design/.zaip-managed.json +86 -42
- package/templates/.agents/design/DESIGN.md +2 -186
- package/templates/.agents/design/README.md +12 -2
- package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-BOjCcUaU.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-CqtYXZfV.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-D_lfqoyx.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +9 -0
- package/templates/.agents/design/apps/catalog/dist/index.html +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-B-kAgAjB.js → Color-6AOWCN3U-Cm-yJJz_.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +137 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-BVN7xHtv.js → DocsRenderer-JROSPFPF-Belk4jRr.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-CDHtKYkz.js → WithTooltip-7X4HQR7L-DoPvjkS1.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-D6AsDkMK.js → chunk-DRQKCCAG-B1itKXEN.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-B4m5uloN.js → chunk-W22LQPXL-C-Eb5SPY.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-CN8YyTUg.js → components-DnyKLwhj.js} +5 -5
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-9yZfIsdT.js → iframe-DcXBsFPz.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-BoCSnq6H.js → react-18-CRM89QRf.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-Bnn_nMwJ.js → syntaxhighlighter-YFXUGROL-B03jQGTF.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-DS_ue2sb.js → theming-4ZyufAga.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
- package/templates/.agents/design/apps/catalog/package.json +2 -2
- package/templates/.agents/design/apps/catalog/src/components/AutonomySpecimen.tsx +15 -0
- package/templates/.agents/design/apps/catalog/src/components/CostPopulationSpecimen.test.tsx +19 -0
- package/templates/.agents/design/apps/catalog/src/components/CostPopulationSpecimen.tsx +45 -0
- package/templates/.agents/design/apps/catalog/src/components/EstimatedCostSpecimen.tsx +48 -0
- package/templates/.agents/design/apps/catalog/src/components/ProjectStatusSpecimen.tsx +169 -0
- package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +55 -0
- package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +60 -0
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/growth/strategy.md +3 -0
- package/templates/.agents/marketing/strategy.md +3 -0
- package/templates/.agents/requirements/autonomous-assurance.md +2 -1
- package/templates/.agents/requirements/cloud-hostinger-autonomy.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 +1 -1
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +13 -4
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +1 -1
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +4 -2
- 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 +6 -6
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/architecture.md +2 -0
- package/templates/.agents/rules/astra-diagnostic.md +3 -1
- package/templates/.agents/rules/autonomy-decision.md +12 -2
- package/templates/.agents/rules/cloud-hostinger-autonomy.md +2 -0
- package/templates/.agents/rules/context.md +2 -1
- package/templates/.agents/rules/core.md +15 -4
- package/templates/.agents/rules/design-system-central-contract.md +17 -0
- package/templates/.agents/rules/evolution.md +3 -1
- package/templates/.agents/rules/frontend-lite.md +3 -1
- package/templates/.agents/rules/local-sqlite-storage.md +2 -2
- package/templates/.agents/rules/meta-mcp.md +3 -1
- package/templates/.agents/rules/model-orchestration.md +1 -1
- package/templates/.agents/rules/run-lifecycle-closure.md +11 -7
- package/templates/.agents/rules/security.md +3 -1
- package/templates/.agents/rules/specialist-routing.md +3 -1
- package/templates/.agents/rules/text-writing-utf8.md +1 -1
- package/templates/.agents/rules/workflow.md +7 -5
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +821 -516
- package/templates/.agents/runtime/checksums.sha256 +6 -6
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
- package/templates/.agents/runtime/provenance.json +5 -5
- package/templates/.agents/runtime/sbom.cdx.json +3 -3
- package/templates/.agents/sales/playbook.md +3 -0
- package/templates/.agents/skills/zaip-aios/SKILL.md +5 -3
- package/templates/.agents/skills/zaip-skill-adapt-stack/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-api-contracts/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-api-contracts/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-application-observability/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-application-observability/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-application-observability/references/signal-design.md +3 -0
- package/templates/.agents/skills/zaip-skill-application-readiness/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-application-readiness/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-application-readiness/references/evidence-matrix.md +3 -0
- package/templates/.agents/skills/zaip-skill-architecture-design/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-architecture-design/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-async-jobs/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-async-jobs/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-auth-tenancy/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-auth-tenancy/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-auth-tenancy/references/data-access-paths.md +9 -0
- package/templates/.agents/skills/zaip-skill-auth-tenancy/references/worker-scenario.md +5 -0
- package/templates/.agents/skills/zaip-skill-auth-tenancy/scripts/worker-contract.test.mjs +27 -0
- package/templates/.agents/skills/zaip-skill-author-skills/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-author-skills/references/engineering-skill-index.md +9 -0
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +5 -3
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/author-skill-scripts.test.mjs +27 -0
- package/templates/.agents/skills/zaip-skill-backend/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-backend/references/deployment-environments.md +75 -0
- package/templates/.agents/skills/zaip-skill-backend/references/supabase-migration-contract.md +23 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-cache-strategy/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-cache-strategy/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-change/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-cloud-engineering/SKILL.md +7 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/SKILL.md +37 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workers-static-assets.md +26 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workflow-templates.md +71 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/scripts/cloudflare-github-deploy-contract.test.mjs +77 -0
- package/templates/.agents/skills/zaip-skill-config/SKILL.md +21 -11
- package/templates/.agents/skills/zaip-skill-config/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-container-runtime/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-container-runtime/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-context/SKILL.md +6 -1
- package/templates/.agents/skills/zaip-skill-context/references/prd-spec-task-handoff.md +10 -0
- package/templates/.agents/skills/zaip-skill-context/references/rule-selection.md +20 -0
- package/templates/.agents/skills/zaip-skill-cqrs/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-cybersecurity/SKILL.md +18 -0
- package/templates/.agents/skills/zaip-skill-cybersecurity/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-cybersecurity/references/audit-contract.md +94 -0
- package/templates/.agents/skills/zaip-skill-cybersecurity/scripts/score-audit.mjs +185 -0
- package/templates/.agents/skills/zaip-skill-cybersecurity/scripts/score-audit.test.mjs +101 -0
- package/templates/.agents/skills/zaip-skill-data-modeling/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-data-modeling/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/SKILL.md +20 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/references/manual-mode.md +15 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/references/promotion-example.md +5 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/scripts/export-manual-sql.mjs +145 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/scripts/export-manual-sql.test.mjs +178 -0
- package/templates/.agents/skills/zaip-skill-dependency-upgrade/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-dependency-upgrade/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-deployment-pipeline/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-deployment-pipeline/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-deployment-pipeline/references/runtime-shapes.md +3 -0
- package/templates/.agents/skills/zaip-skill-design-system/SKILL.md +20 -9
- package/templates/.agents/skills/zaip-skill-dev-environment/SKILL.md +16 -0
- package/templates/.agents/skills/zaip-skill-dev-environment/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-dev-environment/references/inventory-contract.md +7 -0
- package/templates/.agents/skills/zaip-skill-dev-environment/scripts/inventory.mjs +77 -0
- package/templates/.agents/skills/zaip-skill-disaster-recovery/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-disaster-recovery/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-disaster-recovery/references/recovery-scope.md +3 -0
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +31 -8
- package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +7 -0
- package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +18 -8
- package/templates/.agents/skills/zaip-skill-external-integrations/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-external-integrations/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-frontend/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-frontend-componentization/SKILL.md +44 -0
- package/templates/.agents/skills/zaip-skill-frontend-componentization/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-frontend-data-flows/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-frontend-data-flows/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/SKILL.md +36 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/references/cloudflare-pages.md +33 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/references/github.md +63 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/references/hostinger-vps.md +55 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/references/npm.md +30 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/check-skill.mjs +55 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-cloudflare.mjs +61 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-cloudflare.test.mjs +128 -0
- package/templates/.agents/skills/zaip-skill-github-actions-setup/scripts/verify-ssh.integration.test.mjs +106 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +42 -76
- package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +135 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/github-release-workflow-template.md +31 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-gate-matrix.md +24 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +44 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-notes.md +134 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +389 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +134 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +25 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness-api.test.mjs +134 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness.mjs +98 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-readiness.test.mjs +25 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/install-github-readiness-workflow.mjs +159 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/install-github-readiness-workflow.test.mjs +160 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +149 -12
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +64 -5
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/release-notes-coverage.test.mjs +126 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/resolve-release-identity.mjs +78 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/resolve-release-identity.test.mjs +51 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/validate-release-notes.mjs +184 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/validate-release-notes.test.mjs +109 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/SKILL.md +18 -10
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/agents/openai.yaml +3 -4
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/aws-cli-terraform.md +62 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/guia-iniciante-hostinger-vps.md +183 -0
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-module-scaffold/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-module-scaffold/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-module-scaffold/references/scaffold-contract.md +9 -0
- package/templates/.agents/skills/zaip-skill-module-scaffold/scripts/helpers.test.mjs +121 -0
- package/templates/.agents/skills/zaip-skill-module-scaffold/scripts/scaffold.mjs +169 -0
- package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +3 -1
- package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-performance-engineering/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -1
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +1 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +26 -9
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +39 -13
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +1 -0
- package/templates/.agents/skills/zaip-skill-refactor-landing-page/SKILL.md +66 -0
- package/templates/.agents/skills/zaip-skill-refactor-landing-page/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-refactor-landing-page/references/behavioral-dry-run.md +23 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +38 -1
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +122 -0
- package/templates/.agents/skills/zaip-skill-review/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-rules/SKILL.md +3 -3
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +21 -21
- package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +3 -2
- package/templates/.agents/skills/zaip-skill-storage-uploads/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-storage-uploads/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-systematic-debugging/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-systematic-debugging/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-task/SKILL.md +16 -7
- package/templates/.agents/skills/zaip-skill-task/references/commit-policy.md +25 -0
- package/templates/.agents/skills/zaip-skill-test-data/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-test-data/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-test-data/scripts/generate.mjs +72 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/SKILL.md +15 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/references/example-map.md +3 -0
- package/templates/.agents/skills/zaip-skill-tool-setup/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/SKILL.md +8 -0
- package/templates/.agents/zaip-aios/INDEX.md +9 -1
- package/templates/.agents/zaip-aios/README.md +23 -2
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/01-primeiros-passos.md +5 -1
- package/templates/.agents/zaip-aios/guides/03-tasks.md +15 -2
- package/templates/.agents/zaip-aios/guides/04-specs.md +13 -0
- package/templates/.agents/zaip-aios/guides/05-prds.md +13 -0
- package/templates/.agents/zaip-aios/guides/06-execucao.md +19 -4
- package/templates/.agents/zaip-aios/guides/07-revisao-e-validacao.md +14 -0
- package/templates/.agents/zaip-aios/guides/08-contexto-e-tokens.md +4 -3
- package/templates/.agents/zaip-aios/guides/09-agentes-e-squads.md +17 -9
- package/templates/.agents/zaip-aios/guides/10-seguranca.md +11 -1
- package/templates/.agents/zaip-aios/guides/11-observabilidade-e-custos.md +69 -0
- package/templates/.agents/zaip-aios/guides/12-instalacao-e-upgrade.md +9 -4
- package/templates/.agents/zaip-aios/guides/13-boas-praticas.md +7 -1
- package/templates/.agents/zaip-aios/guides/14-troubleshooting.md +18 -0
- package/templates/.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md +54 -3
- package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +10 -2
- package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +186 -5
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +26 -18
- package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +18 -2
- package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +14 -2
- package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +190 -489
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +61 -13
- package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +18 -0
- package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +18 -1
- package/templates/scripts/validate-cloud-hostinger-contract.mjs +34 -0
- package/templates/template-manifest.json +1229 -329
- package/templates/.agents/branding/.gitkeep +0 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-snUCQYTC.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-BPtVUGgs.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-3Awyaovx.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-GgzpZ_PY.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BCvZFMEf.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-DbaLbU2q.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/dashboard-localization-CLJ0lT9v.js +0 -231
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-_MEktQNM.js +0 -2
- package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-D9-fqq9M.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BDe4_Ubl.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-BWY-80s4.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-Be2mDUQj.js +0 -27
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DRx9blDs.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-EwuTh8Zk.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-DyL61NPT.js +0 -1
- package/templates/.agents/growth/.gitkeep +0 -0
- package/templates/.agents/marketing/.gitkeep +0 -0
- package/templates/.agents/sales/.gitkeep +0 -0
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { type FormEvent, type ReactNode, useEffect, useState } from "react";
|
|
1
|
+
import { type FormEvent, type ReactNode, useCallback, useEffect, useState } from "react";
|
|
2
2
|
import type {
|
|
3
3
|
DashboardApiClient,
|
|
4
4
|
ProjectConfigSettings,
|
|
5
5
|
ProjectOverview,
|
|
6
6
|
} from "./dashboard-api.js";
|
|
7
7
|
import { StackComponentEditor, StackVersions } from "./ProjectStackEditor.js";
|
|
8
|
+
import {
|
|
9
|
+
type InstallationDimensionStatus,
|
|
10
|
+
projectInstallationStatus,
|
|
11
|
+
projectSettingsSummaryMetrics,
|
|
12
|
+
} from "./project-installation-status.js";
|
|
13
|
+
import {
|
|
14
|
+
projectSettingsCopy as copy,
|
|
15
|
+
type ProjectSettingsLocale as Locale,
|
|
16
|
+
} from "./project-settings-copy.js";
|
|
8
17
|
import {
|
|
9
18
|
buildProjectSettingsPayload,
|
|
10
19
|
defaultAutonomousExecution,
|
|
@@ -16,131 +25,7 @@ import {
|
|
|
16
25
|
} from "./project-settings-model.js";
|
|
17
26
|
import "./project-settings-page.css";
|
|
18
27
|
import "./project-stack-versions.css";
|
|
19
|
-
|
|
20
|
-
type Locale = "pt-BR" | "en-US";
|
|
21
|
-
const copy = {
|
|
22
|
-
"pt-BR": {
|
|
23
|
-
eyebrow: "Configurações",
|
|
24
|
-
title: "Configuração do projeto",
|
|
25
|
-
intro: "Edite o arquivo central do projeto com validação do schema antes da gravação.",
|
|
26
|
-
loading: "Carregando…",
|
|
27
|
-
back: "Voltar ao dashboard",
|
|
28
|
-
save: "Salvar configurações",
|
|
29
|
-
saving: "Validando e salvando…",
|
|
30
|
-
saved: "Configurações salvas e validadas.",
|
|
31
|
-
framework: "Framework ZAIP-AIOS",
|
|
32
|
-
frameworkHint: "Ativa ou desativa o framework para este projeto.",
|
|
33
|
-
identity: "Identidade do projeto",
|
|
34
|
-
stack: "Stack e linguagens",
|
|
35
|
-
execution: "Execução",
|
|
36
|
-
assurance: "Assurance",
|
|
37
|
-
executionToggleHint:
|
|
38
|
-
"Grava ou remove o bloco execution. Sem ele, o projeto usa execução manual.",
|
|
39
|
-
runtimeHint:
|
|
40
|
-
"Manual apenas materializa o trabalho; autonomous executa a DAG pelo provider configurado quando as precondições passam.",
|
|
41
|
-
providerHint: "Provider que inicia os agentes da execução autônoma: Codex ou Claude.",
|
|
42
|
-
executionModelHint:
|
|
43
|
-
"Modelo-base do runtime autônomo. A política automática de PRD/SPEC ainda pode selecionar um modelo permitido por agente.",
|
|
44
|
-
parallelismHint:
|
|
45
|
-
"Teto de agentes simultâneos. O valor efetivo é o menor limite entre projeto, DAG, provider e squad.",
|
|
46
|
-
leaseHint:
|
|
47
|
-
"Valor persistido no projeto. O coordenador atual ainda usa internamente um lease fixo de 60 segundos.",
|
|
48
|
-
assuranceToggleHint:
|
|
49
|
-
"Ativa ou remove os gates de evidência, revisão e qualidade do projeto. Recomenda-se manter ativo.",
|
|
50
|
-
assuranceVersionHint: "Versão do contrato de assurance. É fixa e somente leitura.",
|
|
51
|
-
assuranceDepthHint:
|
|
52
|
-
"Auto ajusta o rigor ao escopo; base exige o conjunto padrão; elevated amplia validações para mudanças mais abrangentes.",
|
|
53
|
-
finalCommitHint:
|
|
54
|
-
"Exige que as evidências comprovem o commit final integrado. Sinais de produção ou migração ainda podem exigir isso mesmo quando desativado.",
|
|
55
|
-
context: "Contexto",
|
|
56
|
-
overview: "Visão geral do projeto",
|
|
57
|
-
available: "Criado",
|
|
58
|
-
unavailable: "Ainda não criado",
|
|
59
|
-
componentGuide:
|
|
60
|
-
"Preencha cada responsabilidade separadamente. A versão fica sem prefixos (^, ~, >=) e a referência identifica o pacote, imagem ou serviço.",
|
|
61
|
-
versionHint: "Versão exata: 22.16.0 ou 17.6. Deixe vazio para serviços sem versão fixada.",
|
|
62
|
-
referenceHint:
|
|
63
|
-
"Ex.: npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase ou provider:cloudflare-pages.",
|
|
64
|
-
overrides: "Opções avançadas (JSON)",
|
|
65
|
-
overridesHint:
|
|
66
|
-
"Use apenas fatos técnicos transversais confirmados. Deixe vazio quando não houver exceções.",
|
|
67
|
-
versions: "Versões detectadas no workspace",
|
|
68
|
-
exact: "Verificada",
|
|
69
|
-
constraint: "Requisito",
|
|
70
|
-
versionUnavailable: "Não encontrada",
|
|
71
|
-
runtime: "Runtime do Dashboard",
|
|
72
|
-
installed: "Instalado no projeto",
|
|
73
|
-
missing: "Ausente no projeto",
|
|
74
|
-
bundled: "Empacotado no Dashboard",
|
|
75
|
-
current: "Atual",
|
|
76
|
-
configured: "Configurado",
|
|
77
|
-
contextGuide:
|
|
78
|
-
"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.",
|
|
79
|
-
contextDomains:
|
|
80
|
-
"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.",
|
|
81
|
-
},
|
|
82
|
-
"en-US": {
|
|
83
|
-
eyebrow: "Settings",
|
|
84
|
-
title: "Project settings",
|
|
85
|
-
intro: "Edit the central project file with schema validation before writing.",
|
|
86
|
-
loading: "Loading project settings…",
|
|
87
|
-
back: "Back to dashboard",
|
|
88
|
-
save: "Save settings",
|
|
89
|
-
saving: "Validating and saving…",
|
|
90
|
-
saved: "Settings saved and validated.",
|
|
91
|
-
framework: "ZAIP-AIOS framework",
|
|
92
|
-
frameworkHint: "Enable or disable the framework for this project.",
|
|
93
|
-
identity: "Project identity",
|
|
94
|
-
stack: "Stack and languages",
|
|
95
|
-
execution: "Execution",
|
|
96
|
-
assurance: "Assurance",
|
|
97
|
-
executionToggleHint:
|
|
98
|
-
"Writes or removes the execution block. Without it, the project uses manual execution.",
|
|
99
|
-
runtimeHint:
|
|
100
|
-
"Manual only materializes work; autonomous runs the DAG through the configured provider after preconditions pass.",
|
|
101
|
-
providerHint: "Provider that starts autonomous execution agents: Codex or Claude.",
|
|
102
|
-
executionModelHint:
|
|
103
|
-
"Base model for the autonomous runtime. PRD/SPEC automatic policy may still select an allowed model per agent.",
|
|
104
|
-
parallelismHint:
|
|
105
|
-
"Maximum simultaneous agents. Effective parallelism is the smallest project, DAG, provider, and squad limit.",
|
|
106
|
-
leaseHint:
|
|
107
|
-
"Value persisted in the project. The current coordinator still uses a fixed internal 60-second lease.",
|
|
108
|
-
assuranceToggleHint:
|
|
109
|
-
"Enables or removes project evidence, review, and quality gates. Keeping it enabled is recommended.",
|
|
110
|
-
assuranceVersionHint: "Assurance contract version. It is fixed and read-only.",
|
|
111
|
-
assuranceDepthHint:
|
|
112
|
-
"Auto adapts rigor to scope; base uses the standard set; elevated expands validation for broader changes.",
|
|
113
|
-
finalCommitHint:
|
|
114
|
-
"Requires evidence for the final integrated commit. Production or migration signals may still require it when disabled.",
|
|
115
|
-
context: "Context",
|
|
116
|
-
overview: "Project overview",
|
|
117
|
-
available: "Created",
|
|
118
|
-
unavailable: "Not created yet",
|
|
119
|
-
componentGuide:
|
|
120
|
-
"Fill each responsibility separately. Versions have no prefixes (^, ~, >=), and the reference identifies the package, image, or service.",
|
|
121
|
-
versionHint:
|
|
122
|
-
"Exact version: 22.16.0 or 17.6. Leave blank for services without a pinned version.",
|
|
123
|
-
referenceHint:
|
|
124
|
-
"E.g. npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase, or provider:cloudflare-pages.",
|
|
125
|
-
overrides: "Advanced options (JSON)",
|
|
126
|
-
overridesHint:
|
|
127
|
-
"Use only confirmed cross-cutting technical facts. Leave empty when there are no exceptions.",
|
|
128
|
-
versions: "Versions detected in the workspace",
|
|
129
|
-
exact: "Verified",
|
|
130
|
-
constraint: "Requirement",
|
|
131
|
-
versionUnavailable: "Not found",
|
|
132
|
-
runtime: "Dashboard runtime",
|
|
133
|
-
installed: "Installed in project",
|
|
134
|
-
missing: "Missing from project",
|
|
135
|
-
bundled: "Bundled in Dashboard",
|
|
136
|
-
current: "Current",
|
|
137
|
-
configured: "Configured",
|
|
138
|
-
contextGuide:
|
|
139
|
-
"Context starts from canonical sources and includes only files relevant to the task. Generated outputs are consulted only for setup, release, or parity checks.",
|
|
140
|
-
contextDomains:
|
|
141
|
-
"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.",
|
|
142
|
-
},
|
|
143
|
-
} as const;
|
|
28
|
+
import { AutonomySettings } from "./AutonomySettings.js";
|
|
144
29
|
|
|
145
30
|
export function ProjectSettingsPage({
|
|
146
31
|
api,
|
|
@@ -157,23 +42,44 @@ export function ProjectSettingsPage({
|
|
|
157
42
|
const [stackComponents, setStackComponents] = useState<StackComponentsDraft | null>(null);
|
|
158
43
|
const [otherOverrides, setOtherOverrides] = useState("{}");
|
|
159
44
|
const [saving, setSaving] = useState(false);
|
|
45
|
+
const [loading, setLoading] = useState(true);
|
|
160
46
|
const [error, setError] = useState<string | null>(null);
|
|
161
47
|
const [notice, setNotice] = useState<string | null>(null);
|
|
48
|
+
const [installationToastVisible, setInstallationToastVisible] = useState(false);
|
|
49
|
+
const installation = overview === null ? null : projectInstallationStatus(overview);
|
|
162
50
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
51
|
+
const loadProjectSettings = useCallback(async () => {
|
|
52
|
+
setLoading(true);
|
|
53
|
+
setError(null);
|
|
54
|
+
try {
|
|
55
|
+
const [loaded, projectOverview] = await Promise.all([
|
|
56
|
+
api.projectSettings(),
|
|
57
|
+
api.projectOverview(),
|
|
58
|
+
]);
|
|
59
|
+
const draft = projectSettingsDraft(loaded);
|
|
60
|
+
setConfig(loaded);
|
|
61
|
+
setOverview(projectOverview);
|
|
62
|
+
setStackComponents(
|
|
63
|
+
withDetectedStackVersions(draft.components, projectOverview.stack_components),
|
|
64
|
+
);
|
|
65
|
+
setOtherOverrides(draft.otherOverrides);
|
|
66
|
+
} catch (cause) {
|
|
67
|
+
setError(cause instanceof Error ? cause.message : String(cause));
|
|
68
|
+
} finally {
|
|
69
|
+
setLoading(false);
|
|
70
|
+
}
|
|
175
71
|
}, [api]);
|
|
176
72
|
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
void loadProjectSettings();
|
|
75
|
+
}, [loadProjectSettings]);
|
|
76
|
+
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
setInstallationToastVisible(
|
|
79
|
+
overview !== null && projectInstallationStatus(overview).hasMissingDependencies,
|
|
80
|
+
);
|
|
81
|
+
}, [overview]);
|
|
82
|
+
|
|
177
83
|
async function submit(event: FormEvent<HTMLFormElement>) {
|
|
178
84
|
event.preventDefault();
|
|
179
85
|
if (config === null) return;
|
|
@@ -203,7 +109,7 @@ export function ProjectSettingsPage({
|
|
|
203
109
|
}
|
|
204
110
|
|
|
205
111
|
if (config === null) {
|
|
206
|
-
const isLoading = error === null;
|
|
112
|
+
const isLoading = loading && error === null;
|
|
207
113
|
return (
|
|
208
114
|
<main aria-busy={isLoading} className="project-settings-state">
|
|
209
115
|
<div
|
|
@@ -213,7 +119,13 @@ export function ProjectSettingsPage({
|
|
|
213
119
|
>
|
|
214
120
|
{isLoading ? <span aria-hidden="true" className="project-settings-loader" /> : null}
|
|
215
121
|
<p>{text.eyebrow}</p>
|
|
216
|
-
<h1>{error
|
|
122
|
+
<h1>{error ? text.loadError : text.loading}</h1>
|
|
123
|
+
{error ? <p className="project-settings-state-error">{error}</p> : null}
|
|
124
|
+
{error ? (
|
|
125
|
+
<button onClick={() => void loadProjectSettings()} type="button">
|
|
126
|
+
{text.retry}
|
|
127
|
+
</button>
|
|
128
|
+
) : null}
|
|
217
129
|
<button onClick={onClose} type="button">
|
|
218
130
|
← {text.back}
|
|
219
131
|
</button>
|
|
@@ -236,7 +148,11 @@ export function ProjectSettingsPage({
|
|
|
236
148
|
</button>
|
|
237
149
|
</header>
|
|
238
150
|
|
|
239
|
-
{error ?
|
|
151
|
+
{error ? (
|
|
152
|
+
<div className="project-settings-message is-error" role="alert">
|
|
153
|
+
{error}
|
|
154
|
+
</div>
|
|
155
|
+
) : null}
|
|
240
156
|
{notice ? (
|
|
241
157
|
<div className="project-settings-message is-success" role="status">
|
|
242
158
|
{notice}
|
|
@@ -261,12 +177,16 @@ export function ProjectSettingsPage({
|
|
|
261
177
|
</section>
|
|
262
178
|
|
|
263
179
|
<section className="project-settings-summary" aria-label={text.overview}>
|
|
264
|
-
{overview
|
|
265
|
-
|
|
266
|
-
<
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
180
|
+
{overview &&
|
|
181
|
+
projectSettingsSummaryMetrics(overview.metrics).map((metric) => (
|
|
182
|
+
<div className="project-settings-metric" key={metric.id}>
|
|
183
|
+
<strong>{metric.value}</strong>
|
|
184
|
+
<span>{text.metricLabels[metric.id]}</span>
|
|
185
|
+
</div>
|
|
186
|
+
))}
|
|
187
|
+
{installation ? (
|
|
188
|
+
<InstallationMetrics installation={installation} locale={locale} />
|
|
189
|
+
) : null}
|
|
270
190
|
</section>
|
|
271
191
|
|
|
272
192
|
<SettingsCard className="is-wide" title={text.overview}>
|
|
@@ -274,17 +194,29 @@ export function ProjectSettingsPage({
|
|
|
274
194
|
{overview?.areas.map((area) => (
|
|
275
195
|
<div className="project-overview-item" key={area.id}>
|
|
276
196
|
<div>
|
|
277
|
-
<strong>{area.
|
|
197
|
+
<strong>{text.areaLabels[area.id]}</strong>
|
|
278
198
|
<code>{area.artifact}</code>
|
|
279
199
|
</div>
|
|
280
200
|
<span className={area.available ? "is-available" : "is-unavailable"}>
|
|
281
|
-
{area.available
|
|
201
|
+
{area.available === true
|
|
202
|
+
? text.available
|
|
203
|
+
: area.available === false
|
|
204
|
+
? text.artifactUnavailable
|
|
205
|
+
: text.unavailable}
|
|
282
206
|
</span>
|
|
283
207
|
</div>
|
|
284
208
|
))}
|
|
285
209
|
</div>
|
|
286
210
|
</SettingsCard>
|
|
287
211
|
|
|
212
|
+
<SettingsCard className="is-wide project-detected-versions" title={text.versions}>
|
|
213
|
+
<StackVersions
|
|
214
|
+
components={overview?.stack_components ?? []}
|
|
215
|
+
text={text}
|
|
216
|
+
showTitle={false}
|
|
217
|
+
/>
|
|
218
|
+
</SettingsCard>
|
|
219
|
+
|
|
288
220
|
<div className="project-settings-grid">
|
|
289
221
|
<SettingsCard className="is-wide project-identity-card" title={text.identity}>
|
|
290
222
|
<Field label="Schema">
|
|
@@ -339,7 +271,6 @@ export function ProjectSettingsPage({
|
|
|
339
271
|
versionHint={text.versionHint}
|
|
340
272
|
/>
|
|
341
273
|
) : null}
|
|
342
|
-
<StackVersions components={overview?.stack_components ?? []} text={text} />
|
|
343
274
|
<details className="project-settings-advanced">
|
|
344
275
|
<summary>{text.overrides}</summary>
|
|
345
276
|
<Field
|
|
@@ -367,7 +298,9 @@ export function ProjectSettingsPage({
|
|
|
367
298
|
onChange={(checked) =>
|
|
368
299
|
setConfig({
|
|
369
300
|
...config,
|
|
370
|
-
execution: checked
|
|
301
|
+
execution: checked
|
|
302
|
+
? { ...defaultAutonomousExecution(), runtime: "managed" }
|
|
303
|
+
: undefined,
|
|
371
304
|
})
|
|
372
305
|
}
|
|
373
306
|
/>
|
|
@@ -376,27 +309,44 @@ export function ProjectSettingsPage({
|
|
|
376
309
|
<Field hint={text.runtimeHint} label="Runtime">
|
|
377
310
|
<select
|
|
378
311
|
value={config.execution.runtime}
|
|
312
|
+
aria-label="Runtime"
|
|
379
313
|
onChange={(event) =>
|
|
380
314
|
setConfig({
|
|
381
315
|
...config,
|
|
382
316
|
execution:
|
|
383
317
|
event.target.value === "manual"
|
|
384
318
|
? { runtime: "manual" }
|
|
385
|
-
:
|
|
319
|
+
: {
|
|
320
|
+
...defaultAutonomousExecution(),
|
|
321
|
+
runtime:
|
|
322
|
+
event.target.value === "managed" ? "managed" : "autonomous",
|
|
323
|
+
},
|
|
386
324
|
})
|
|
387
325
|
}
|
|
388
326
|
>
|
|
389
327
|
<option value="manual">manual</option>
|
|
328
|
+
<option value="managed">managed (PRD/SPEC)</option>
|
|
390
329
|
<option value="autonomous">autonomous</option>
|
|
391
330
|
</select>
|
|
392
331
|
</Field>
|
|
393
|
-
{config.execution.runtime
|
|
332
|
+
{config.execution.runtime !== "manual" ? (
|
|
394
333
|
<AutonomousExecutionFields config={config} setConfig={setConfig} text={text} />
|
|
395
334
|
) : null}
|
|
396
335
|
</>
|
|
397
336
|
) : null}
|
|
398
337
|
</SettingsCard>
|
|
399
338
|
|
|
339
|
+
<SettingsCard
|
|
340
|
+
title={locale === "pt-BR" ? "Autonomia e recuperação" : "Autonomy and recovery"}
|
|
341
|
+
>
|
|
342
|
+
<AutonomySettings
|
|
343
|
+
value={config.autonomy}
|
|
344
|
+
disabled={saving}
|
|
345
|
+
locale={locale}
|
|
346
|
+
onChange={(autonomy) => setConfig({ ...config, autonomy })}
|
|
347
|
+
/>
|
|
348
|
+
</SettingsCard>
|
|
349
|
+
|
|
400
350
|
<SettingsCard title={text.assurance}>
|
|
401
351
|
<OptionalSectionToggle
|
|
402
352
|
checked={config.assurance !== undefined}
|
|
@@ -554,10 +504,101 @@ export function ProjectSettingsPage({
|
|
|
554
504
|
</button>
|
|
555
505
|
</footer>
|
|
556
506
|
</form>
|
|
507
|
+
{installationToastVisible && installation?.hasMissingDependencies ? (
|
|
508
|
+
<div aria-live="assertive" className="project-installation-toast" role="alert">
|
|
509
|
+
<span>{text.incompleteInstallation}</span>
|
|
510
|
+
<button
|
|
511
|
+
aria-label={text.dismiss}
|
|
512
|
+
onClick={() => setInstallationToastVisible(false)}
|
|
513
|
+
type="button"
|
|
514
|
+
>
|
|
515
|
+
×
|
|
516
|
+
</button>
|
|
517
|
+
</div>
|
|
518
|
+
) : null}
|
|
557
519
|
</main>
|
|
558
520
|
);
|
|
559
521
|
}
|
|
560
522
|
|
|
523
|
+
function formatInstallationPercentage(percentage: number, locale: Locale) {
|
|
524
|
+
return `${new Intl.NumberFormat(locale, { maximumFractionDigits: 2 }).format(percentage)}%`;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
function InstallationMetrics({
|
|
528
|
+
installation,
|
|
529
|
+
locale,
|
|
530
|
+
}: {
|
|
531
|
+
installation: ReturnType<typeof projectInstallationStatus>;
|
|
532
|
+
locale: Locale;
|
|
533
|
+
}) {
|
|
534
|
+
const text = copy[locale];
|
|
535
|
+
return (
|
|
536
|
+
<>
|
|
537
|
+
<p className="project-installation-health">
|
|
538
|
+
{text.health}:{" "}
|
|
539
|
+
{installation.health.state === "healthy"
|
|
540
|
+
? locale === "pt-BR"
|
|
541
|
+
? "Saudável"
|
|
542
|
+
: "Healthy"
|
|
543
|
+
: installation.health.state === "degraded"
|
|
544
|
+
? locale === "pt-BR"
|
|
545
|
+
? "Degradada"
|
|
546
|
+
: "Degraded"
|
|
547
|
+
: text.unknown}
|
|
548
|
+
</p>
|
|
549
|
+
<InstallationMetric
|
|
550
|
+
dimension={installation.dependencies}
|
|
551
|
+
label={text.dependencies}
|
|
552
|
+
locale={locale}
|
|
553
|
+
/>
|
|
554
|
+
<InstallationMetric
|
|
555
|
+
dimension={installation.documentation}
|
|
556
|
+
label={text.documentation}
|
|
557
|
+
locale={locale}
|
|
558
|
+
/>
|
|
559
|
+
</>
|
|
560
|
+
);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
function InstallationMetric({
|
|
564
|
+
dimension,
|
|
565
|
+
label,
|
|
566
|
+
locale,
|
|
567
|
+
}: {
|
|
568
|
+
dimension: InstallationDimensionStatus;
|
|
569
|
+
label: string;
|
|
570
|
+
locale: Locale;
|
|
571
|
+
}) {
|
|
572
|
+
const text = copy[locale];
|
|
573
|
+
const detail =
|
|
574
|
+
dimension.state === "not_applicable"
|
|
575
|
+
? text.notApplicable
|
|
576
|
+
: dimension.percentage === null
|
|
577
|
+
? text.unknown
|
|
578
|
+
: formatInstallationPercentage(dimension.percentage, locale);
|
|
579
|
+
const stateLabel = installationStateLabel(dimension.state, locale);
|
|
580
|
+
return (
|
|
581
|
+
<div className={`project-settings-metric installation-metric is-${dimension.state}`}>
|
|
582
|
+
<strong>{detail}</strong>
|
|
583
|
+
<span>
|
|
584
|
+
{dimension.total === null || dimension.completed === null
|
|
585
|
+
? label
|
|
586
|
+
: `${label} · ${dimension.completed}/${dimension.total}`}
|
|
587
|
+
</span>
|
|
588
|
+
<small>{stateLabel}</small>
|
|
589
|
+
</div>
|
|
590
|
+
);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
function installationStateLabel(state: InstallationDimensionStatus["state"], locale: Locale) {
|
|
594
|
+
const text = copy[locale];
|
|
595
|
+
if (state === "complete") return text.complete;
|
|
596
|
+
if (state === "incomplete") return text.incomplete;
|
|
597
|
+
if (state === "not_applicable") return text.notApplicable;
|
|
598
|
+
if (state === "unavailable") return text.unavailable;
|
|
599
|
+
return text.unknown;
|
|
600
|
+
}
|
|
601
|
+
|
|
561
602
|
function SettingsCard({
|
|
562
603
|
children,
|
|
563
604
|
className = "",
|
|
@@ -626,14 +667,20 @@ function AutonomousExecutionFields({
|
|
|
626
667
|
text: (typeof copy)[Locale];
|
|
627
668
|
}) {
|
|
628
669
|
const execution =
|
|
629
|
-
config.execution
|
|
670
|
+
config.execution && config.execution.runtime !== "manual"
|
|
671
|
+
? config.execution
|
|
672
|
+
: defaultAutonomousExecution();
|
|
630
673
|
const update = (autonomous: typeof execution.autonomous) =>
|
|
631
|
-
setConfig({ ...config, execution: { runtime:
|
|
674
|
+
setConfig({ ...config, execution: { runtime: execution.runtime, autonomous } });
|
|
632
675
|
return (
|
|
633
676
|
<>
|
|
634
|
-
<Field
|
|
677
|
+
<Field
|
|
678
|
+
hint={config.autonomy?.version === 1 ? text.autonomyProviderHint : text.providerHint}
|
|
679
|
+
label="Provider"
|
|
680
|
+
>
|
|
635
681
|
<select
|
|
636
682
|
value={execution.autonomous.provider}
|
|
683
|
+
aria-label="Provider"
|
|
637
684
|
onChange={(event) =>
|
|
638
685
|
update({
|
|
639
686
|
...execution.autonomous,
|
|
@@ -642,7 +689,9 @@ function AutonomousExecutionFields({
|
|
|
642
689
|
}
|
|
643
690
|
>
|
|
644
691
|
<option value="codex">codex</option>
|
|
645
|
-
<option value="claude">
|
|
692
|
+
<option value="claude" disabled={config.autonomy?.version === 1}>
|
|
693
|
+
claude
|
|
694
|
+
</option>
|
|
646
695
|
</select>
|
|
647
696
|
</Field>
|
|
648
697
|
<Field hint={text.executionModelHint} label="Model">
|
|
@@ -125,9 +125,11 @@ export function StackComponentEditor({
|
|
|
125
125
|
|
|
126
126
|
export function StackVersions({
|
|
127
127
|
components,
|
|
128
|
+
showTitle = true,
|
|
128
129
|
text,
|
|
129
130
|
}: {
|
|
130
131
|
components: ProjectOverview["stack_components"];
|
|
132
|
+
showTitle?: boolean;
|
|
131
133
|
text: {
|
|
132
134
|
versions: string;
|
|
133
135
|
versionUnavailable: string;
|
|
@@ -144,7 +146,7 @@ export function StackVersions({
|
|
|
144
146
|
if (components.length === 0) return null;
|
|
145
147
|
return (
|
|
146
148
|
<section className="project-stack-versions" aria-label={text.versions}>
|
|
147
|
-
<h3>{text.versions}</h3>
|
|
149
|
+
{showTitle ? <h3>{text.versions}</h3> : null}
|
|
148
150
|
<div>
|
|
149
151
|
{components.map((component) => (
|
|
150
152
|
<article key={component.name}>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
/** Explicit composition owners; moving a boundary must keep its contract checks. */
|
|
3
|
+
export function readAppCompositionSource(): string {
|
|
4
|
+
return [
|
|
5
|
+
"use-dashboard-app-model.tsx",
|
|
6
|
+
"AppDashboardContent.tsx",
|
|
7
|
+
"use-app-work-board.ts",
|
|
8
|
+
"dashboard-cost-facts.ts",
|
|
9
|
+
]
|
|
10
|
+
.map((path) => readFileSync(new URL(`../${path}`, import.meta.url), "utf8"))
|
|
11
|
+
.join("\n");
|
|
12
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import type { ComponentProps } from "react";
|
|
2
|
+
import { renderToStaticMarkup } from "react-dom/server";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { CostMonitorContent } from "../../../modules/cost-monitor/src/react/CostMonitorContent.js";
|
|
5
|
+
import { CostPeriodAverageCards } from "../../../modules/cost-monitor/src/react/CostPeriodAverageCards.js";
|
|
6
|
+
|
|
7
|
+
const metric = {
|
|
8
|
+
events: 0,
|
|
9
|
+
tokens: { input: null, cached_input: null, output: null, reasoning: null, total: null },
|
|
10
|
+
cost: { usd: null, brl: null },
|
|
11
|
+
coverage: { events: 0, tokens: 0, usd: 0, brl: 0 },
|
|
12
|
+
};
|
|
13
|
+
const totals = {
|
|
14
|
+
run_count: 2,
|
|
15
|
+
task_count: 1,
|
|
16
|
+
prd_count: 0,
|
|
17
|
+
spec_count: 0,
|
|
18
|
+
evidence_count: 0,
|
|
19
|
+
test_count: 0,
|
|
20
|
+
event_count: 2,
|
|
21
|
+
total_tokens: 20,
|
|
22
|
+
estimated_usd: 10,
|
|
23
|
+
estimated_brl: 50,
|
|
24
|
+
duration_ms: 2000,
|
|
25
|
+
duration: { known_sum: 2000, unknown: 0, complete: true, coverage_ratio: 1 },
|
|
26
|
+
};
|
|
27
|
+
const row = {
|
|
28
|
+
...totals,
|
|
29
|
+
key: "openai",
|
|
30
|
+
label: "openai",
|
|
31
|
+
latest_started_at: "2026-09-10T12:00:00Z",
|
|
32
|
+
coverage: { events: 2, tokens: 2, usd: 2, brl: 2 },
|
|
33
|
+
};
|
|
34
|
+
function props(): ComponentProps<typeof CostMonitorContent> {
|
|
35
|
+
return {
|
|
36
|
+
canonicalDurationTotal: 2000,
|
|
37
|
+
compactPage: null,
|
|
38
|
+
compactPageError: null,
|
|
39
|
+
compactPageLoading: false,
|
|
40
|
+
compactPageOffset: 0,
|
|
41
|
+
currency: "BRL",
|
|
42
|
+
detailError: null,
|
|
43
|
+
detailLoading: false,
|
|
44
|
+
developerPanel: null,
|
|
45
|
+
dimensionalDetailPending: false,
|
|
46
|
+
dimensionalRows: [],
|
|
47
|
+
groups: {
|
|
48
|
+
agents: [],
|
|
49
|
+
annual: [],
|
|
50
|
+
conversations: [],
|
|
51
|
+
daily: [],
|
|
52
|
+
models: [],
|
|
53
|
+
monthly: [],
|
|
54
|
+
providers: [row],
|
|
55
|
+
tasks: [],
|
|
56
|
+
},
|
|
57
|
+
groupPage: { offset: 0, limit: 10, total_count: 1, has_more: false, totals },
|
|
58
|
+
groupPageLoading: false,
|
|
59
|
+
groupPageOffset: 0,
|
|
60
|
+
locale: "pt-BR",
|
|
61
|
+
macroDetails: undefined,
|
|
62
|
+
onOpenRun: () => {},
|
|
63
|
+
onOpenTrace: () => {},
|
|
64
|
+
pagedRunRows: [],
|
|
65
|
+
retryCompactPage: () => {},
|
|
66
|
+
retryRunPage: () => {},
|
|
67
|
+
rows: [],
|
|
68
|
+
runPageData: null,
|
|
69
|
+
runPageError: null,
|
|
70
|
+
runPageLoading: false,
|
|
71
|
+
runPageOffset: 0,
|
|
72
|
+
serverPagingEligible: true,
|
|
73
|
+
setCompactPageOffset: () => {},
|
|
74
|
+
setGroupPageOffset: () => {},
|
|
75
|
+
setDetailAttempt: () => {},
|
|
76
|
+
setRunPageOffset: () => {},
|
|
77
|
+
summaryUsage: { conversation: metric, planning: metric, execution: metric, total: metric },
|
|
78
|
+
summaryTotals: { ...totals, estimated_brl: 999, estimated_usd: 199 },
|
|
79
|
+
useAggregateGroups: true,
|
|
80
|
+
usingCompactPage: false,
|
|
81
|
+
view: "providers",
|
|
82
|
+
visibleExecutions: [],
|
|
83
|
+
visiblePrds: [],
|
|
84
|
+
visibleSpecs: [],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
describe("Cost monitor rendered populations", () => {
|
|
89
|
+
it("retains temporal query totals instead of overwriting them with unrelated cards", () => {
|
|
90
|
+
const base = props();
|
|
91
|
+
const html = renderToStaticMarkup(
|
|
92
|
+
<CostMonitorContent
|
|
93
|
+
{...base}
|
|
94
|
+
view="daily"
|
|
95
|
+
groups={{ ...base.groups, daily: [{ ...row, key: "2026-09-10", label: "2026-09-10" }] }}
|
|
96
|
+
/>,
|
|
97
|
+
);
|
|
98
|
+
expect(html).toContain("50,00");
|
|
99
|
+
expect(html).not.toContain("999");
|
|
100
|
+
});
|
|
101
|
+
it("renders full-period averages independently of page rows and distinguishes missing metadata", () => {
|
|
102
|
+
const base = props();
|
|
103
|
+
const averages = { tasks: 1.5, specs: 0, prds: 0, durationMs: 1000, tokens: 500, cost: 75 };
|
|
104
|
+
if (base.groupPage === null) throw new Error("Expected fixture page");
|
|
105
|
+
const page = {
|
|
106
|
+
...base.groupPage,
|
|
107
|
+
period_averages: { BRL: averages, USD: { ...averages, cost: 15 } },
|
|
108
|
+
};
|
|
109
|
+
const html = renderToStaticMarkup(
|
|
110
|
+
<CostMonitorContent {...base} view="daily" groupPage={page} />,
|
|
111
|
+
);
|
|
112
|
+
expect(html).toContain("75,00");
|
|
113
|
+
expect(html).toContain("1,5");
|
|
114
|
+
const absent = renderToStaticMarkup(<CostMonitorContent {...base} view="daily" />);
|
|
115
|
+
expect(absent).toContain("Indisponível");
|
|
116
|
+
expect(absent).not.toContain("75,00");
|
|
117
|
+
});
|
|
118
|
+
it.each([
|
|
119
|
+
"BRL",
|
|
120
|
+
"USD",
|
|
121
|
+
] as const)("uses provider query totals, not unrelated global totals (%s)", (currency) => {
|
|
122
|
+
const html = renderToStaticMarkup(<CostMonitorContent {...props()} currency={currency} />);
|
|
123
|
+
expect(html).toContain("openai");
|
|
124
|
+
expect(html).not.toContain("999");
|
|
125
|
+
expect(html).not.toContain("199");
|
|
126
|
+
expect(html).toContain(currency === "BRL" ? "50,00" : "10,00");
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it("shows a loading status rather than zero or stale averages on a pending period", () => {
|
|
130
|
+
const html = renderToStaticMarkup(
|
|
131
|
+
<CostMonitorContent {...props()} view="daily" groupPageLoading />,
|
|
132
|
+
);
|
|
133
|
+
expect(html).toContain("Carregando médias");
|
|
134
|
+
expect(html).not.toContain("Médio por dia");
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it("distinguishes loaded zero from loading, including English", () => {
|
|
138
|
+
const loaded = renderToStaticMarkup(
|
|
139
|
+
<CostPeriodAverageCards currency="BRL" locale="pt-BR" period="daily" rows={[]} />,
|
|
140
|
+
);
|
|
141
|
+
expect(loaded).toContain("Médio por dia");
|
|
142
|
+
expect(loaded).not.toContain("Carregando");
|
|
143
|
+
const loading = renderToStaticMarkup(
|
|
144
|
+
<CostPeriodAverageCards currency="USD" locale="en-US" period="monthly" rows={[]} loading />,
|
|
145
|
+
);
|
|
146
|
+
expect(loading).toContain("Loading averages");
|
|
147
|
+
expect(loading).not.toContain("Monthly average");
|
|
148
|
+
});
|
|
149
|
+
});
|