@zaip-ai/cli 2.6.0 → 3.1.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 +5 -2
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/agent-adapters.js +12 -9
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.js +32 -21
- package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
- package/dist/services/install-agents-template.js +9 -1
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/runtime-template.test.js +25 -2
- 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/README-ENG.md +75 -10
- package/templates/.agents/README.md +76 -10
- package/templates/.agents/config/agents/catalog.yaml +3 -0
- package/templates/.agents/config/agents/discovery.json +2 -2
- 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 +1 -1
- 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 +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +1 -1
- 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 +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +1 -1
- 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 +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +1 -1
- package/templates/.agents/config/project.yaml +10 -1
- package/templates/.agents/dashboard/.zaip-managed.json +274 -138
- package/templates/.agents/dashboard/README.md +16 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-CGxeQak4.js → CostCalculationGuidePage-CEDZjl4V.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-tzS7YxYB.js → DashboardHelpDialog-DIWDmvAS.js} +930 -550
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-DEbCi1gP.js → PricingSettingsDialog-BBRBKaHa.js} +1 -1
- 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-t1Om0Abw.js → TraceabilityWorkspace-C9dDhj34.js} +1 -1
- 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-CoAVMZN6.js +828 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DiGC-dsJ.js → icons-vendor-DEmo6Tn2.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-BVzw_Wux.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-kPO6yNed.js → react-vendor-CadYsm83.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-BzKK8kK3.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +5 -5
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/AppDashboardContent.tsx +10 -5
- package/templates/.agents/dashboard/apps/frontend/src/AutonomySettings.tsx +82 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +38 -7
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +164 -171
- package/templates/.agents/dashboard/apps/frontend/src/__tests__/app-composition-support.ts +6 -1
- package/templates/.agents/dashboard/apps/frontend/src/cost-monitor-population.test.tsx +149 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-settings.ts +2 -1
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +19 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +22 -1
- 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 +20 -2
- 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 +34 -7
- 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 +3 -1
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +35 -0
- 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/project-installation-status.test.ts +112 -23
- package/templates/.agents/dashboard/apps/frontend/src/project-installation-status.ts +49 -12
- 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 +34 -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 +12 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
- 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-trace-documents.ts +3 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-task-pagination.ts +4 -15
- package/templates/.agents/dashboard/apps/frontend/src/use-dashboard-app-model.tsx +2 -2
- 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/CostMonitorContent.tsx +8 -22
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +2 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostPeriodAverageCards.tsx +32 -8
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +3 -2
- 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.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/react/OperationsOverview-keeps-structure-classes-mutually-exclusive.test.ts +4 -3
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +66 -3
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +71 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +36 -30
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +5 -14
- 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/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/operations-coverage-toast.test.ts +2 -2
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +28 -8
- package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +19 -2
- package/templates/.agents/dashboard/modules/operations/src/react/overview-cost-card.test.tsx +89 -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/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 +279 -245
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +247 -215
- package/templates/.agents/dashboard/packages/local-runtime/package.json +2 -2
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +15 -25
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +279 -245
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.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 +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +67 -66
- 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-hono-security.test.ts +17 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +21 -2
- 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 +26 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -1
- 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-trace-routes.ts +2 -10
- package/templates/.agents/dashboard/packages/local-runtime/src/server-traceability-index.test.ts +84 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +15 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-calendar.ts +17 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cold-parse.test.ts +78 -0
- 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-cost-group-projection.test.ts +94 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-projection.ts +5 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-duration-lookup.test.ts +59 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-entity-label-views.test.ts +72 -0
- 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-projections.ts +9 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-runs.ts +4 -5
- 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-entity-group.test.ts +171 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +36 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +13 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +25 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-temporal-dimension.ts +2 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical-parsing.ts +7 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +5 -15
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +34 -10
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +17 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +11 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +5 -4
- 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.test.ts +4 -1
- 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 +29 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +2 -1
- 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/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 +5 -3
- 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 +84 -40
- 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/requirements/autonomous-assurance.md +1 -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 +1 -1
- 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 +1 -1
- 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 +5 -5
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/astra-diagnostic.md +3 -1
- package/templates/.agents/rules/autonomy-decision.md +10 -2
- package/templates/.agents/rules/core.md +12 -1
- package/templates/.agents/rules/run-lifecycle-closure.md +8 -6
- package/templates/.agents/rules/workflow.md +2 -2
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +383 -350
- 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/skills/zaip-skill-dev-environment/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +28 -5
- package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +17 -3
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +8 -9
- package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +10 -6
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +17 -12
- package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +21 -23
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +37 -13
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-tool-setup/SKILL.md +2 -0
- package/templates/.agents/zaip-aios/INDEX.md +9 -1
- package/templates/.agents/zaip-aios/README.md +24 -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 +9 -0
- 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 +21 -15
- 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 +72 -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/template-manifest.json +454 -274
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-1L7Qw-Gq.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-EInWr641.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-B6aZfo5f.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-DgTmNHN5.js +0 -2
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-DQpKX9c1.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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import {
|
|
3
3
|
defaultOperationsPeriod,
|
|
4
|
-
|
|
4
|
+
isSameOperationsRequestPeriod,
|
|
5
5
|
requestPeriodForOperations,
|
|
6
6
|
} from "./operations-period.js";
|
|
7
7
|
|
|
@@ -20,17 +20,32 @@ describe("dashboard default Operations period", () => {
|
|
|
20
20
|
).toEqual({ from: "2026-07-01", to: "2026-07-31" });
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
it("
|
|
23
|
+
it("keeps All Time unbounded while distinguishing a bounded selection", () => {
|
|
24
24
|
const allTime = { preset: "all" as const, range: { start: "2026-08-01", end: "2026-09-01" } };
|
|
25
25
|
|
|
26
26
|
expect(
|
|
27
|
-
|
|
27
|
+
isSameOperationsRequestPeriod(allTime, {
|
|
28
28
|
preset: "all",
|
|
29
29
|
range: { start: "2026-06-02", end: "2026-09-01" },
|
|
30
30
|
}),
|
|
31
31
|
).toBe(true);
|
|
32
32
|
expect(
|
|
33
|
-
|
|
33
|
+
isSameOperationsRequestPeriod({ preset: "this-month", range: allTime.range }, allTime),
|
|
34
|
+
).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("does not invalidate a repeated or equivalent bounded period", () => {
|
|
38
|
+
const current = {
|
|
39
|
+
preset: "this-month" as const,
|
|
40
|
+
range: { start: "2026-09-01", end: "2026-09-10" },
|
|
41
|
+
};
|
|
42
|
+
expect(isSameOperationsRequestPeriod(current, structuredClone(current))).toBe(true);
|
|
43
|
+
expect(isSameOperationsRequestPeriod(current, { ...current, preset: "custom" })).toBe(true);
|
|
44
|
+
expect(
|
|
45
|
+
isSameOperationsRequestPeriod(current, {
|
|
46
|
+
...current,
|
|
47
|
+
range: { ...current.range, end: "2026-09-11" },
|
|
48
|
+
}),
|
|
34
49
|
).toBe(false);
|
|
35
50
|
});
|
|
36
51
|
});
|
|
@@ -26,10 +26,12 @@ export function requestPeriodForOperations(period: OperationsPeriodState): {
|
|
|
26
26
|
: { from: period.range.start, to: period.range.end };
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
/**
|
|
30
|
-
export function
|
|
29
|
+
/** A presentation-only change must not start a gate without a replacement request. */
|
|
30
|
+
export function isSameOperationsRequestPeriod(
|
|
31
31
|
current: OperationsPeriodState,
|
|
32
32
|
next: OperationsPeriodState,
|
|
33
33
|
): boolean {
|
|
34
|
-
|
|
34
|
+
const before = requestPeriodForOperations(current);
|
|
35
|
+
const after = requestPeriodForOperations(next);
|
|
36
|
+
return before.from === after.from && before.to === after.to;
|
|
35
37
|
}
|
|
@@ -1,39 +1,130 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
PROJECT_INSTALLATION_AREA_REQUIREMENTS,
|
|
4
|
+
PROJECT_INSTALLATION_STACK_REQUIREMENTS,
|
|
5
|
+
summarizeProjectStatus,
|
|
6
|
+
} from "../../../packages/local-runtime/src/project-installation-summary.js";
|
|
2
7
|
import type { ProjectOverview } from "./dashboard-api.js";
|
|
3
8
|
import {
|
|
4
|
-
PROJECT_INSTALLATION_TOTAL,
|
|
5
9
|
projectInstallationStatus,
|
|
6
10
|
projectSettingsSummaryMetrics,
|
|
7
11
|
} from "./project-installation-status.js";
|
|
8
12
|
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
const stack: Parameters<typeof summarizeProjectStatus>[1] =
|
|
14
|
+
PROJECT_INSTALLATION_STACK_REQUIREMENTS.map((name) => ({
|
|
15
|
+
name,
|
|
16
|
+
version: "1.0.0",
|
|
17
|
+
configured_version: null,
|
|
18
|
+
source: "synthetic",
|
|
19
|
+
verification: "exact",
|
|
20
|
+
installation: "installed",
|
|
21
|
+
probe: "verified",
|
|
22
|
+
}));
|
|
23
|
+
const areas: Parameters<typeof summarizeProjectStatus>[2] =
|
|
24
|
+
PROJECT_INSTALLATION_AREA_REQUIREMENTS.map((id) => ({
|
|
25
|
+
id,
|
|
26
|
+
label: id,
|
|
27
|
+
artifact: ".agents/" + id + ".md",
|
|
28
|
+
available: false,
|
|
29
|
+
}));
|
|
30
|
+
|
|
31
|
+
describe("projectInstallationStatus consumes the actual runtime contract", () => {
|
|
32
|
+
it("keeps 10/10 dependencies at 100% when real runtime output has 0/6 documents", () => {
|
|
33
|
+
const runtime = summarizeProjectStatus("full", stack, areas, "healthy");
|
|
34
|
+
expect(projectInstallationStatus(runtime)).toMatchObject({
|
|
35
|
+
profile: "full",
|
|
36
|
+
health: { state: "healthy" },
|
|
37
|
+
dependencies: { completed: 10, total: 10, percentage: 100, state: "complete" },
|
|
38
|
+
documentation: { completed: 0, total: 6, percentage: 0, state: "incomplete" },
|
|
39
|
+
hasMissingDependencies: false,
|
|
20
40
|
});
|
|
21
41
|
});
|
|
22
42
|
|
|
23
|
-
it("
|
|
24
|
-
|
|
43
|
+
it("uses the real lite and dev-lite applicability, not the legacy sixteen items", () => {
|
|
44
|
+
expect(projectInstallationStatus(summarizeProjectStatus("lite", stack, areas))).toMatchObject({
|
|
45
|
+
profile: "lite",
|
|
46
|
+
dependencies: { completed: 2, total: 2, percentage: 100 },
|
|
47
|
+
});
|
|
48
|
+
expect(
|
|
49
|
+
projectInstallationStatus(summarizeProjectStatus("dev-lite", stack, areas)),
|
|
50
|
+
).toMatchObject({
|
|
51
|
+
profile: "dev-lite",
|
|
52
|
+
dependencies: { completed: 9, total: 9, percentage: 100 },
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("preserves custom unknown, unavailable probes and known missing dependencies separately", () => {
|
|
57
|
+
expect(projectInstallationStatus(summarizeProjectStatus("custom", stack, areas))).toMatchObject(
|
|
58
|
+
{
|
|
59
|
+
profile: "custom",
|
|
60
|
+
dependencies: { percentage: null, total: null, state: "unknown" },
|
|
61
|
+
hasMissingDependencies: false,
|
|
62
|
+
},
|
|
63
|
+
);
|
|
64
|
+
const partial = stack.map((item, index) =>
|
|
65
|
+
index === 0
|
|
66
|
+
? { ...item, version: null, probe: "missing" as const }
|
|
67
|
+
: index === 1
|
|
68
|
+
? { ...item, version: null, probe: "unknown" as const }
|
|
69
|
+
: item,
|
|
70
|
+
);
|
|
71
|
+
expect(projectInstallationStatus(summarizeProjectStatus("full", partial, areas))).toMatchObject(
|
|
72
|
+
{
|
|
73
|
+
dependencies: { percentage: null, state: "unknown" },
|
|
74
|
+
hasMissingDependencies: true,
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("does not infer dependency status from legacy payloads", () => {
|
|
80
|
+
const legacy: Pick<ProjectOverview, "installation"> = {
|
|
25
81
|
installation: { completed: 15, total: 16, percent: 93.75, state: "incomplete" },
|
|
26
82
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
completed:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
complete: false,
|
|
83
|
+
expect(projectInstallationStatus(legacy)).toMatchObject({
|
|
84
|
+
health: { state: "unknown" },
|
|
85
|
+
dependencies: { completed: null, total: null, percentage: null, state: "unknown" },
|
|
86
|
+
documentation: { percentage: null, state: "unknown" },
|
|
87
|
+
hasMissingDependencies: false,
|
|
33
88
|
});
|
|
34
89
|
});
|
|
35
90
|
|
|
36
|
-
it("keeps
|
|
91
|
+
it("keeps explicit not-applicable distinct from unknown and zero", () => {
|
|
92
|
+
const runtime = summarizeProjectStatus("full", stack, areas);
|
|
93
|
+
expect(
|
|
94
|
+
projectInstallationStatus({
|
|
95
|
+
...runtime,
|
|
96
|
+
documentation: {
|
|
97
|
+
available: 0,
|
|
98
|
+
applicable: 0,
|
|
99
|
+
missing: 0,
|
|
100
|
+
unknown: 0,
|
|
101
|
+
not_applicable: 6,
|
|
102
|
+
percent: null,
|
|
103
|
+
state: "not_applicable",
|
|
104
|
+
},
|
|
105
|
+
}),
|
|
106
|
+
).toMatchObject({ documentation: { percentage: null, state: "not_applicable" } });
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it("does not render nonfinite or unknown percentages as known values", () => {
|
|
110
|
+
const runtime = summarizeProjectStatus("full", stack, areas);
|
|
111
|
+
for (const percent of [Number.NaN, Infinity, -1, 101]) {
|
|
112
|
+
expect(
|
|
113
|
+
projectInstallationStatus({
|
|
114
|
+
...runtime,
|
|
115
|
+
dependencies: { ...runtime.dependencies, percent },
|
|
116
|
+
}).dependencies.percentage,
|
|
117
|
+
).toBeNull();
|
|
118
|
+
}
|
|
119
|
+
expect(
|
|
120
|
+
projectInstallationStatus({
|
|
121
|
+
...runtime,
|
|
122
|
+
dependencies: { ...runtime.dependencies, state: "unknown", percent: 0 },
|
|
123
|
+
}).dependencies.percentage,
|
|
124
|
+
).toBeNull();
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it("keeps regular metrics distinct from both installation dimensions", () => {
|
|
37
128
|
const metrics: ProjectOverview["metrics"] = [
|
|
38
129
|
{ id: "agents", label: "Agentes", value: 23 },
|
|
39
130
|
{ id: "squads", label: "Squads", value: 6 },
|
|
@@ -41,8 +132,6 @@ describe("projectInstallationStatus", () => {
|
|
|
41
132
|
{ id: "rules", label: "Rules", value: 18 },
|
|
42
133
|
{ id: "hooks", label: "Hooks", value: 4 },
|
|
43
134
|
];
|
|
44
|
-
|
|
45
135
|
expect(projectSettingsSummaryMetrics(metrics)).toHaveLength(5);
|
|
46
|
-
expect(projectSettingsSummaryMetrics(metrics).length + 1).toBe(6);
|
|
47
136
|
});
|
|
48
137
|
});
|
|
@@ -1,28 +1,65 @@
|
|
|
1
1
|
import type { ProjectOverview } from "./dashboard-api.js";
|
|
2
|
+
import type { ProjectInstallationDimension } from "./dashboard-project-overview.js";
|
|
2
3
|
|
|
3
|
-
export
|
|
4
|
+
export type InstallationState =
|
|
5
|
+
| "complete"
|
|
6
|
+
| "incomplete"
|
|
7
|
+
| "unknown"
|
|
8
|
+
| "unavailable"
|
|
9
|
+
| "not_applicable";
|
|
10
|
+
|
|
11
|
+
export type InstallationDimensionStatus = {
|
|
12
|
+
completed: number | null;
|
|
13
|
+
total: number | null;
|
|
14
|
+
percentage: number | null;
|
|
15
|
+
state: InstallationState;
|
|
16
|
+
};
|
|
4
17
|
|
|
5
18
|
export type ProjectInstallationStatus = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
health: NonNullable<ProjectOverview["health"]>;
|
|
20
|
+
dependencies: InstallationDimensionStatus;
|
|
21
|
+
documentation: InstallationDimensionStatus;
|
|
22
|
+
profile: ProjectOverview["installation_profile"] | null;
|
|
23
|
+
hasMissingDependencies: boolean;
|
|
10
24
|
};
|
|
11
25
|
|
|
12
|
-
/**
|
|
26
|
+
/** Converts only the new itemized runtime contract; legacy aggregates remain unknown. */
|
|
13
27
|
export function projectInstallationStatus(
|
|
14
|
-
overview: Pick<
|
|
28
|
+
overview: Pick<
|
|
29
|
+
ProjectOverview,
|
|
30
|
+
"installation" | "health" | "dependencies" | "documentation" | "installation_profile"
|
|
31
|
+
>,
|
|
15
32
|
): ProjectInstallationStatus {
|
|
16
|
-
|
|
33
|
+
return {
|
|
34
|
+
health: overview.health ?? { state: "unknown", scope: "settings_runtime" },
|
|
35
|
+
dependencies: dimensionStatus(overview.dependencies, overview.dependencies?.installed),
|
|
36
|
+
documentation: dimensionStatus(overview.documentation, overview.documentation?.available),
|
|
37
|
+
profile: overview.installation_profile ?? null,
|
|
38
|
+
hasMissingDependencies: (nonnegative(overview.dependencies?.missing) ?? 0) > 0,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
17
41
|
|
|
42
|
+
export function dimensionStatus(
|
|
43
|
+
dimension: ProjectInstallationDimension | undefined,
|
|
44
|
+
completed?: number | null,
|
|
45
|
+
): InstallationDimensionStatus {
|
|
46
|
+
const state = dimension?.state ?? "unknown";
|
|
47
|
+
const percentage = nonnegative(dimension?.percent);
|
|
18
48
|
return {
|
|
19
|
-
completed,
|
|
20
|
-
total,
|
|
21
|
-
percentage
|
|
22
|
-
|
|
49
|
+
completed: nonnegative(completed),
|
|
50
|
+
total: nonnegative(dimension?.applicable),
|
|
51
|
+
percentage:
|
|
52
|
+
(state === "complete" || state === "incomplete") && percentage !== null && percentage <= 100
|
|
53
|
+
? percentage
|
|
54
|
+
: null,
|
|
55
|
+
state,
|
|
23
56
|
};
|
|
24
57
|
}
|
|
25
58
|
|
|
59
|
+
function nonnegative(value: number | null | undefined): number | null {
|
|
60
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
|
|
61
|
+
}
|
|
62
|
+
|
|
26
63
|
export function projectSettingsSummaryMetrics(metrics: ProjectOverview["metrics"]) {
|
|
27
64
|
// Ignore transitional API payloads so the dedicated installation card remains unique.
|
|
28
65
|
return metrics.filter((metric) => !["database", "installation"].includes(metric.id as string));
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
export type ProjectSettingsLocale = "pt-BR" | "en-US";
|
|
2
|
+
|
|
3
|
+
export const projectSettingsCopy = {
|
|
4
|
+
"pt-BR": {
|
|
5
|
+
eyebrow: "Configurações",
|
|
6
|
+
title: "Configuração do projeto",
|
|
7
|
+
intro: "Edite o arquivo central do projeto com validação do schema antes da gravação.",
|
|
8
|
+
loading: "Carregando…",
|
|
9
|
+
loadError: "Não foi possível carregar as configurações do projeto.",
|
|
10
|
+
retry: "Tentar novamente",
|
|
11
|
+
back: "Voltar ao dashboard",
|
|
12
|
+
save: "Salvar configurações",
|
|
13
|
+
saving: "Validando e salvando…",
|
|
14
|
+
saved: "Configurações salvas e validadas.",
|
|
15
|
+
framework: "Framework ZAIP-AIOS",
|
|
16
|
+
frameworkHint: "Ativa ou desativa o framework para este projeto.",
|
|
17
|
+
identity: "Identidade do projeto",
|
|
18
|
+
stack: "Stack e linguagens",
|
|
19
|
+
execution: "Execução",
|
|
20
|
+
assurance: "Assurance",
|
|
21
|
+
executionToggleHint:
|
|
22
|
+
"Grava ou remove o bloco execution. Sem ele, o projeto usa execução manual.",
|
|
23
|
+
runtimeHint:
|
|
24
|
+
"Managed gerencia PRDs/SPECs e mantém avulsas diretas. Manual não inicia provider; autonomous permite execução gerenciada também para Task avulsa por comando explícito.",
|
|
25
|
+
providerHint: "Provider que inicia os agentes da execução autônoma: Codex ou Claude.",
|
|
26
|
+
autonomyProviderHint:
|
|
27
|
+
"Autonomy-v1 exige Codex para execução gerenciada. Claude continua disponível em conversas diretas ou no protocolo legado.",
|
|
28
|
+
executionModelHint:
|
|
29
|
+
"Modelo-base do runtime autônomo. A política automática de PRD/SPEC ainda pode selecionar um modelo permitido por agente.",
|
|
30
|
+
parallelismHint:
|
|
31
|
+
"Teto de agentes simultâneos. O valor efetivo é o menor limite entre projeto, DAG, provider e squad.",
|
|
32
|
+
leaseHint: "Tempo de lease configurado para o coordenador autônomo.",
|
|
33
|
+
assuranceToggleHint:
|
|
34
|
+
"Ativa ou remove os gates de evidência, revisão e qualidade do projeto. Recomenda-se manter ativo.",
|
|
35
|
+
assuranceVersionHint: "Versão do contrato de assurance. É fixa e somente leitura.",
|
|
36
|
+
assuranceDepthHint:
|
|
37
|
+
"Auto ajusta o rigor ao escopo; base exige o conjunto padrão; elevated amplia validações para mudanças mais abrangentes.",
|
|
38
|
+
finalCommitHint:
|
|
39
|
+
"Exige que as evidências comprovem o commit final integrado. Sinais de produção ou migração ainda podem exigir isso mesmo quando desativado.",
|
|
40
|
+
context: "Contexto",
|
|
41
|
+
overview: "Visão geral do projeto",
|
|
42
|
+
metricLabels: {
|
|
43
|
+
agents: "Agentes",
|
|
44
|
+
squads: "Squads",
|
|
45
|
+
skills: "Skills",
|
|
46
|
+
rules: "Rules",
|
|
47
|
+
hooks: "Hooks",
|
|
48
|
+
},
|
|
49
|
+
areaLabels: {
|
|
50
|
+
brandbook: "Brandbook",
|
|
51
|
+
design_system: "Design System",
|
|
52
|
+
software_architecture: "Arquitetura de Software",
|
|
53
|
+
growth_strategy: "Estratégia de Growth",
|
|
54
|
+
marketing_strategy: "Estratégia de Marketing",
|
|
55
|
+
sales_playbook: "Playbook de Sales",
|
|
56
|
+
},
|
|
57
|
+
available: "Criado",
|
|
58
|
+
artifactUnavailable: "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
|
+
health: "Saúde",
|
|
78
|
+
dependencies: "Dependências técnicas",
|
|
79
|
+
documentation: "Documentação",
|
|
80
|
+
unknown: "Desconhecido",
|
|
81
|
+
unavailable: "Indisponível",
|
|
82
|
+
notApplicable: "Não aplicável",
|
|
83
|
+
complete: "Completo",
|
|
84
|
+
incomplete: "Incompleto",
|
|
85
|
+
incompleteInstallation: "Há dependências técnicas locais ausentes neste computador.",
|
|
86
|
+
dismiss: "Fechar aviso",
|
|
87
|
+
contextGuide:
|
|
88
|
+
"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.",
|
|
89
|
+
contextDomains:
|
|
90
|
+
"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.",
|
|
91
|
+
},
|
|
92
|
+
"en-US": {
|
|
93
|
+
eyebrow: "Settings",
|
|
94
|
+
title: "Project settings",
|
|
95
|
+
intro: "Edit the central project file with schema validation before writing.",
|
|
96
|
+
loading: "Loading…",
|
|
97
|
+
loadError: "Project settings could not be loaded.",
|
|
98
|
+
retry: "Try again",
|
|
99
|
+
back: "Back to dashboard",
|
|
100
|
+
save: "Save settings",
|
|
101
|
+
saving: "Validating and saving…",
|
|
102
|
+
saved: "Settings saved and validated.",
|
|
103
|
+
framework: "ZAIP-AIOS framework",
|
|
104
|
+
frameworkHint: "Enable or disable the framework for this project.",
|
|
105
|
+
identity: "Project identity",
|
|
106
|
+
stack: "Stack and languages",
|
|
107
|
+
execution: "Execution",
|
|
108
|
+
assurance: "Assurance",
|
|
109
|
+
executionToggleHint:
|
|
110
|
+
"Writes or removes the execution block. Without it, the project uses manual execution.",
|
|
111
|
+
runtimeHint:
|
|
112
|
+
"Managed runs PRDs/SPECs while standalone Tasks stay direct. Manual never starts a provider; autonomous also permits explicitly commanded managed standalone execution.",
|
|
113
|
+
providerHint: "Provider that starts autonomous execution agents: Codex or Claude.",
|
|
114
|
+
autonomyProviderHint:
|
|
115
|
+
"Autonomy-v1 requires Codex for managed execution. Claude remains available for direct conversations or the legacy protocol.",
|
|
116
|
+
executionModelHint:
|
|
117
|
+
"Base model for the autonomous runtime. PRD/SPEC automatic policy may still select an allowed model per agent.",
|
|
118
|
+
parallelismHint:
|
|
119
|
+
"Maximum simultaneous agents. Effective parallelism is the smallest project, DAG, provider, and squad limit.",
|
|
120
|
+
leaseHint: "Lease duration configured for the autonomous coordinator.",
|
|
121
|
+
assuranceToggleHint:
|
|
122
|
+
"Enables or removes project evidence, review, and quality gates. Keeping it enabled is recommended.",
|
|
123
|
+
assuranceVersionHint: "Assurance contract version. It is fixed and read-only.",
|
|
124
|
+
assuranceDepthHint:
|
|
125
|
+
"Auto adapts rigor to scope; base uses the standard set; elevated expands validation for broader changes.",
|
|
126
|
+
finalCommitHint:
|
|
127
|
+
"Requires evidence for the final integrated commit. Production or migration signals may still require it when disabled.",
|
|
128
|
+
context: "Context",
|
|
129
|
+
overview: "Project overview",
|
|
130
|
+
metricLabels: {
|
|
131
|
+
agents: "Agents",
|
|
132
|
+
squads: "Squads",
|
|
133
|
+
skills: "Skills",
|
|
134
|
+
rules: "Rules",
|
|
135
|
+
hooks: "Hooks",
|
|
136
|
+
},
|
|
137
|
+
areaLabels: {
|
|
138
|
+
brandbook: "Brandbook",
|
|
139
|
+
design_system: "Design System",
|
|
140
|
+
software_architecture: "Software Architecture",
|
|
141
|
+
growth_strategy: "Growth Strategy",
|
|
142
|
+
marketing_strategy: "Marketing Strategy",
|
|
143
|
+
sales_playbook: "Sales Playbook",
|
|
144
|
+
},
|
|
145
|
+
available: "Created",
|
|
146
|
+
artifactUnavailable: "Not created yet",
|
|
147
|
+
componentGuide:
|
|
148
|
+
"Fill each responsibility separately. Versions have no prefixes (^, ~, >=), and the reference identifies the package, image, or service.",
|
|
149
|
+
versionHint:
|
|
150
|
+
"Exact version: 22.16.0 or 17.6. Leave blank for services without a pinned version.",
|
|
151
|
+
referenceHint:
|
|
152
|
+
"E.g. npm:hono, docker:node:22.16.0-bookworm-slim, service:supabase, or provider:cloudflare-pages.",
|
|
153
|
+
overrides: "Advanced options (JSON)",
|
|
154
|
+
overridesHint:
|
|
155
|
+
"Use only confirmed cross-cutting technical facts. Leave empty when there are no exceptions.",
|
|
156
|
+
versions: "Versions detected in the workspace",
|
|
157
|
+
exact: "Verified",
|
|
158
|
+
constraint: "Requirement",
|
|
159
|
+
versionUnavailable: "Not found",
|
|
160
|
+
runtime: "Dashboard runtime",
|
|
161
|
+
installed: "Installed in project",
|
|
162
|
+
missing: "Missing from project",
|
|
163
|
+
bundled: "Bundled in Dashboard",
|
|
164
|
+
current: "Current",
|
|
165
|
+
configured: "Configured",
|
|
166
|
+
health: "Health",
|
|
167
|
+
dependencies: "Technical dependencies",
|
|
168
|
+
documentation: "Documentation",
|
|
169
|
+
unknown: "Unknown",
|
|
170
|
+
unavailable: "Unavailable",
|
|
171
|
+
notApplicable: "Not applicable",
|
|
172
|
+
complete: "Complete",
|
|
173
|
+
incomplete: "Incomplete",
|
|
174
|
+
incompleteInstallation: "Some local technical dependencies are missing on this computer.",
|
|
175
|
+
dismiss: "Dismiss notification",
|
|
176
|
+
contextGuide:
|
|
177
|
+
"Context starts from canonical sources and includes only files relevant to the task. Generated outputs are consulted only for setup, release, or parity checks.",
|
|
178
|
+
contextDomains:
|
|
179
|
+
"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.",
|
|
180
|
+
},
|
|
181
|
+
} as const;
|
|
@@ -91,6 +91,16 @@ export function buildProjectSettingsPayload(
|
|
|
91
91
|
components: StackComponentsDraft,
|
|
92
92
|
otherOverridesSource: string,
|
|
93
93
|
): ProjectConfigSettings {
|
|
94
|
+
if (
|
|
95
|
+
config.autonomy?.version === 1 &&
|
|
96
|
+
config.execution &&
|
|
97
|
+
config.execution.runtime !== "manual" &&
|
|
98
|
+
config.execution.autonomous.provider !== "codex"
|
|
99
|
+
) {
|
|
100
|
+
throw new Error(
|
|
101
|
+
"Autonomy-v1 exige Codex na execução gerenciada / requires Codex for managed execution. Selecione Codex; conversas diretas continuam disponíveis.",
|
|
102
|
+
);
|
|
103
|
+
}
|
|
94
104
|
const parsed = JSON.parse(otherOverridesSource) as unknown;
|
|
95
105
|
if (!isRecord(parsed)) throw new Error("Demais overrides deve ser um objeto JSON.");
|
|
96
106
|
const {
|
|
@@ -149,7 +159,7 @@ export function lineList(value: string): string[] {
|
|
|
149
159
|
|
|
150
160
|
export function defaultAutonomousExecution(): Extract<
|
|
151
161
|
NonNullable<ProjectConfigSettings["execution"]>,
|
|
152
|
-
{ runtime: "autonomous" }
|
|
162
|
+
{ runtime: "autonomous" | "managed" }
|
|
153
163
|
> {
|
|
154
164
|
return {
|
|
155
165
|
runtime: "autonomous",
|
|
@@ -1,54 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
.project-settings-state {
|
|
3
|
-
color-scheme: light;
|
|
4
|
-
min-height: 100vh;
|
|
5
|
-
padding: clamp(20px, 4vw, 48px);
|
|
6
|
-
background: #f5f7fb;
|
|
7
|
-
color: #0f172a;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.project-settings-page form,
|
|
11
|
-
.project-settings-state-card {
|
|
12
|
-
width: min(1440px, 100%);
|
|
13
|
-
margin-inline: auto;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.project-settings-state {
|
|
17
|
-
display: grid;
|
|
18
|
-
place-items: center;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.project-settings-state-card {
|
|
22
|
-
display: grid;
|
|
23
|
-
gap: 12px;
|
|
24
|
-
justify-items: center;
|
|
25
|
-
max-width: 420px;
|
|
26
|
-
border: 1px solid #dbe4ef;
|
|
27
|
-
border-radius: 24px;
|
|
28
|
-
padding: clamp(32px, 6vw, 48px);
|
|
29
|
-
background: #fff;
|
|
30
|
-
box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
|
|
31
|
-
text-align: center;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.project-settings-loader {
|
|
35
|
-
width: 32px;
|
|
36
|
-
height: 32px;
|
|
37
|
-
border: 3px solid rgba(0, 176, 240, 0.18);
|
|
38
|
-
border-top-color: #00b0f0;
|
|
39
|
-
border-radius: 50%;
|
|
40
|
-
animation: project-settings-spin 0.8s linear infinite;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.project-settings-state-card h1 {
|
|
44
|
-
max-width: 18ch;
|
|
45
|
-
font-size: clamp(1.75rem, 5vw, 2.25rem);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.project-settings-state-card button {
|
|
49
|
-
width: auto;
|
|
50
|
-
margin-top: 12px;
|
|
51
|
-
}
|
|
1
|
+
@import "./project-settings-state.css";
|
|
52
2
|
|
|
53
3
|
.project-settings-header {
|
|
54
4
|
display: flex;
|
|
@@ -159,8 +109,18 @@
|
|
|
159
109
|
margin-bottom: 20px;
|
|
160
110
|
}
|
|
161
111
|
|
|
112
|
+
.project-installation-health {
|
|
113
|
+
grid-column: 1 / -1;
|
|
114
|
+
margin: 0;
|
|
115
|
+
color: #526176;
|
|
116
|
+
font-size: 0.82rem;
|
|
117
|
+
font-weight: 700;
|
|
118
|
+
}
|
|
119
|
+
|
|
162
120
|
.project-settings-metric {
|
|
163
121
|
display: grid;
|
|
122
|
+
min-width: 0;
|
|
123
|
+
overflow-wrap: anywhere;
|
|
164
124
|
gap: 4px;
|
|
165
125
|
min-height: 94px;
|
|
166
126
|
align-content: center;
|
|
@@ -199,6 +159,24 @@
|
|
|
199
159
|
color: #b91c1c;
|
|
200
160
|
}
|
|
201
161
|
|
|
162
|
+
.project-settings-metric.installation-metric.is-unknown,
|
|
163
|
+
.project-settings-metric.installation-metric.is-unavailable,
|
|
164
|
+
.project-settings-metric.installation-metric.is-not_applicable {
|
|
165
|
+
background: #f8fafc;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.installation-metric.is-unknown strong,
|
|
169
|
+
.installation-metric.is-unavailable strong,
|
|
170
|
+
.installation-metric.is-not_applicable strong {
|
|
171
|
+
font-size: 1.125rem;
|
|
172
|
+
line-height: 1.35;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.project-settings-metric small {
|
|
176
|
+
color: #64748b;
|
|
177
|
+
font-size: 0.72rem;
|
|
178
|
+
}
|
|
179
|
+
|
|
202
180
|
.project-settings-feature p {
|
|
203
181
|
margin-top: 5px;
|
|
204
182
|
color: #526176;
|
|
@@ -703,6 +681,11 @@
|
|
|
703
681
|
}
|
|
704
682
|
|
|
705
683
|
@media (max-width: 820px) {
|
|
684
|
+
/* A stacked sticky footer can cover settings and policy warnings on phones. */
|
|
685
|
+
.project-settings-footer {
|
|
686
|
+
position: static;
|
|
687
|
+
}
|
|
688
|
+
|
|
706
689
|
.project-settings-header,
|
|
707
690
|
.project-settings-feature,
|
|
708
691
|
.project-settings-footer {
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.project-settings-page,
|
|
2
|
+
.project-settings-state {
|
|
3
|
+
color-scheme: light;
|
|
4
|
+
min-height: 100vh;
|
|
5
|
+
padding: clamp(20px, 4vw, 48px);
|
|
6
|
+
background: #f5f7fb;
|
|
7
|
+
color: #0f172a;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.project-settings-page form,
|
|
11
|
+
.project-settings-state-card {
|
|
12
|
+
width: min(1440px, 100%);
|
|
13
|
+
margin-inline: auto;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.project-settings-state {
|
|
17
|
+
display: grid;
|
|
18
|
+
place-items: center;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.project-settings-state-card {
|
|
22
|
+
display: grid;
|
|
23
|
+
gap: 12px;
|
|
24
|
+
justify-items: center;
|
|
25
|
+
max-width: 420px;
|
|
26
|
+
border: 1px solid #dbe4ef;
|
|
27
|
+
border-radius: 24px;
|
|
28
|
+
padding: clamp(32px, 6vw, 48px);
|
|
29
|
+
background: #fff;
|
|
30
|
+
box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
|
|
31
|
+
text-align: center;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.project-settings-loader {
|
|
35
|
+
width: 32px;
|
|
36
|
+
height: 32px;
|
|
37
|
+
border: 3px solid rgba(0, 176, 240, 0.18);
|
|
38
|
+
border-top-color: #00b0f0;
|
|
39
|
+
border-radius: 50%;
|
|
40
|
+
animation: project-settings-spin 0.8s linear infinite;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.project-settings-state-card h1 {
|
|
44
|
+
max-width: 18ch;
|
|
45
|
+
font-size: clamp(1.75rem, 5vw, 2.25rem);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.project-settings-state-error {
|
|
49
|
+
color: #b91c1c;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.project-settings-state-card button {
|
|
53
|
+
width: auto;
|
|
54
|
+
margin-top: 12px;
|
|
55
|
+
}
|