@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
package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
export const dashboardViewSql = ` CREATE VIEW vw_operations_work_list AS SELECT * FROM vw_entities;
|
|
2
|
+
-- Full work summary retains historical activity coverage for internal
|
|
3
|
+
-- entity summaries. It is not the Kanban population.
|
|
4
|
+
CREATE VIEW vw_operations_work_summary AS
|
|
5
|
+
WITH task_lineage AS (
|
|
6
|
+
SELECT DISTINCT
|
|
7
|
+
CAST(task.value AS TEXT) AS task_id,
|
|
8
|
+
COALESCE(c.source_spec_id, CASE WHEN c.source_type='spec' THEN c.source_id END) AS spec_id,
|
|
9
|
+
COALESCE(c.source_prd_id, CASE WHEN c.source_type='prd' THEN c.source_id END) AS prd_id
|
|
10
|
+
FROM canonical_changes c, json_each(c.task_ids_json) AS task
|
|
11
|
+
), lineage_cardinality AS (
|
|
12
|
+
-- Parent creation Runs are not observed Task Runs. They can be
|
|
13
|
+
-- displayed on a child only when exactly one canonical Task owns
|
|
14
|
+
-- that lineage, preventing a shared macro total from being copied
|
|
15
|
+
-- into sibling cards.
|
|
16
|
+
SELECT spec_id, prd_id, COUNT(*) AS task_count
|
|
17
|
+
FROM task_lineage
|
|
18
|
+
GROUP BY spec_id, prd_id
|
|
19
|
+
), entity_activity AS (
|
|
20
|
+
SELECT 'task' AS entity_kind, task_id AS entity_id, * FROM activities WHERE task_id IS NOT NULL
|
|
21
|
+
UNION ALL SELECT 'spec', spec_id, * FROM macro_spec_activities
|
|
22
|
+
UNION ALL SELECT 'prd', prd_id, * FROM activities WHERE prd_id IS NOT NULL
|
|
23
|
+
UNION ALL
|
|
24
|
+
SELECT 'task', l.task_id, a.*
|
|
25
|
+
FROM task_lineage l
|
|
26
|
+
JOIN lineage_cardinality cardinality
|
|
27
|
+
ON cardinality.spec_id IS l.spec_id AND cardinality.prd_id IS l.prd_id
|
|
28
|
+
JOIN activities a
|
|
29
|
+
ON a.task_id IS NULL
|
|
30
|
+
AND (
|
|
31
|
+
(l.spec_id IS NOT NULL AND a.spec_id = l.spec_id)
|
|
32
|
+
OR (
|
|
33
|
+
l.spec_id IS NULL
|
|
34
|
+
AND l.prd_id IS NOT NULL
|
|
35
|
+
AND a.spec_id IS NULL
|
|
36
|
+
AND a.prd_id = l.prd_id
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
WHERE cardinality.task_count = 1
|
|
40
|
+
AND NOT EXISTS (SELECT 1 FROM activities direct WHERE direct.task_id = l.task_id)
|
|
41
|
+
), financial AS (
|
|
42
|
+
SELECT entity_kind, entity_id,
|
|
43
|
+
COUNT(*) AS invocation_count,
|
|
44
|
+
SUM(llm_call_count) AS llm_call_count,
|
|
45
|
+
SUM(total_tokens) AS total_tokens,
|
|
46
|
+
SUM(cost_usd) AS total_cost_usd,
|
|
47
|
+
SUM(cost_brl) AS total_cost_brl
|
|
48
|
+
FROM entity_activity GROUP BY entity_kind, entity_id
|
|
49
|
+
), durations AS (
|
|
50
|
+
SELECT entity_kind, entity_id, ROUND(SUM(duration_ms)) AS total_duration
|
|
51
|
+
FROM entity_activity GROUP BY entity_kind, entity_id
|
|
52
|
+
)
|
|
53
|
+
SELECT w.entity_kind, w.id, w.title, w.status, w.risk, w.occurred_at, w.occurred_day_sp,
|
|
54
|
+
f.invocation_count, f.llm_call_count, d.total_duration,
|
|
55
|
+
f.total_tokens, f.total_cost_usd, f.total_cost_brl
|
|
56
|
+
FROM work_items w
|
|
57
|
+
LEFT JOIN financial f ON f.entity_kind=w.entity_kind AND f.entity_id=w.id
|
|
58
|
+
LEFT JOIN durations d ON d.entity_kind=w.entity_kind AND d.entity_id=w.id;
|
|
59
|
+
-- Kanban is a lifecycle surface: it lists only canonical records.
|
|
60
|
+
-- Telemetry-only identifiers remain Cost Monitor facts but cannot
|
|
61
|
+
-- create a synthetic operational card.
|
|
62
|
+
CREATE VIEW vw_operations_work_kanban AS
|
|
63
|
+
SELECT summary.*
|
|
64
|
+
FROM canonical_work_items canonical
|
|
65
|
+
JOIN vw_operations_work_summary summary
|
|
66
|
+
ON summary.entity_kind=canonical.entity_kind AND summary.id=canonical.id;
|
|
67
|
+
CREATE VIEW vw_operations_executions AS
|
|
68
|
+
WITH metrics AS (
|
|
69
|
+
SELECT i.execution_id,
|
|
70
|
+
CASE COUNT(DISTINCT t.risk) WHEN 0 THEN NULL WHEN 1 THEN MIN(t.risk) ELSE 'mixed' END AS risk,
|
|
71
|
+
MIN(i.occurred_at) AS telemetry_started_at,
|
|
72
|
+
SUM(i.llm_call_count) AS llm_call_count,
|
|
73
|
+
SUM(i.duration_ms) AS duration_ms,
|
|
74
|
+
CASE WHEN COUNT(i.duration_ms) > 0 THEN 'observed' ELSE 'unavailable' END AS duration_provenance,
|
|
75
|
+
SUM(i.total_tokens) AS total_tokens,
|
|
76
|
+
SUM(i.cost_brl) AS total_cost_brl,
|
|
77
|
+
COUNT(*) AS invocation_count
|
|
78
|
+
FROM invocations i LEFT JOIN tasks t ON t.id=i.task_id
|
|
79
|
+
WHERE i.execution_id IS NOT NULL GROUP BY i.execution_id
|
|
80
|
+
)
|
|
81
|
+
SELECT c.id AS execution_id, c.status, m.risk,
|
|
82
|
+
c.created_at AS started_at, c.finished_at,
|
|
83
|
+
c.kind AS execution_kind, c.origin_type,
|
|
84
|
+
CASE WHEN c.origin_type='task' THEN c.origin_id END AS task_id,
|
|
85
|
+
CASE WHEN c.origin_type='interaction' THEN c.origin_id END AS conversation_id,
|
|
86
|
+
m.llm_call_count, m.duration_ms, COALESCE(m.duration_provenance, 'unavailable') AS duration_provenance,
|
|
87
|
+
CASE WHEN c.status IN ('completed', 'failed', 'cancelled') AND c.finished_at IS NOT NULL THEN MAX(0, CAST((julianday(c.finished_at) - julianday(c.created_at)) * 86400000 AS INTEGER)) ELSE NULL END AS lifecycle_elapsed_ms,
|
|
88
|
+
m.total_tokens, m.total_cost_brl,
|
|
89
|
+
COALESCE(m.invocation_count, 0) AS invocation_count,
|
|
90
|
+
c.source_path
|
|
91
|
+
FROM canonical_executions c LEFT JOIN metrics m ON m.execution_id=c.id
|
|
92
|
+
UNION ALL
|
|
93
|
+
SELECT i.execution_id, MAX(i.status),
|
|
94
|
+
CASE COUNT(DISTINCT t.risk) WHEN 0 THEN NULL WHEN 1 THEN MIN(t.risk) ELSE 'mixed' END,
|
|
95
|
+
MIN(i.occurred_at), MAX(i.occurred_at), NULL, NULL, MAX(i.task_id), MAX(i.conversation_id),
|
|
96
|
+
SUM(i.llm_call_count), SUM(i.duration_ms), CASE WHEN COUNT(i.duration_ms) > 0 THEN 'observed' ELSE 'unavailable' END, NULL, SUM(i.total_tokens), SUM(i.cost_brl), COUNT(*), NULL
|
|
97
|
+
FROM invocations i LEFT JOIN tasks t ON t.id=i.task_id
|
|
98
|
+
WHERE i.execution_id IS NOT NULL
|
|
99
|
+
AND NOT EXISTS (SELECT 1 FROM canonical_executions c WHERE c.id=i.execution_id)
|
|
100
|
+
GROUP BY i.execution_id;
|
|
101
|
+
CREATE VIEW vw_operations_agent_invocations AS
|
|
102
|
+
SELECT c.*,
|
|
103
|
+
date(COALESCE(c.source_started_at, c.source_occurred_at, c.occurred_at), '-3 hours') AS source_day_sp,
|
|
104
|
+
t.risk
|
|
105
|
+
FROM vw_cost_agent_invocations c LEFT JOIN tasks t ON t.id=c.task_id;
|
|
106
|
+
CREATE VIEW vw_operations_conversations AS
|
|
107
|
+
SELECT i.conversation_id, c.status,
|
|
108
|
+
CASE COUNT(DISTINCT t.risk) WHEN 0 THEN NULL WHEN 1 THEN MIN(t.risk) ELSE 'mixed' END AS risk,
|
|
109
|
+
MIN(i.occurred_at) AS started_at, MAX(i.occurred_at) AS finished_at,
|
|
110
|
+
SUM(i.llm_call_count) AS llm_call_count, SUM(i.duration_ms) AS total_duration,
|
|
111
|
+
CASE WHEN COUNT(i.duration_ms) > 0 THEN 'observed' ELSE 'unavailable' END AS duration_provenance,
|
|
112
|
+
SUM(i.total_tokens) AS total_tokens, SUM(i.cost_brl) AS total_cost_brl,
|
|
113
|
+
GROUP_CONCAT(DISTINCT CASE WHEN i.model IS NULL OR trim(i.model) = '' OR lower(i.model) = 'unknown' THEN NULL ELSE i.model END) AS model,
|
|
114
|
+
GROUP_CONCAT(DISTINCT CASE WHEN i.reasoning_effort IS NULL OR trim(i.reasoning_effort) = '' OR lower(i.reasoning_effort) = 'unknown' THEN NULL ELSE i.reasoning_effort END) AS reasoning_effort,
|
|
115
|
+
COUNT(*) AS invocation_count
|
|
116
|
+
FROM invocations i LEFT JOIN conversations c ON c.id=i.conversation_id LEFT JOIN tasks t ON t.id=i.task_id
|
|
117
|
+
WHERE i.conversation_id IS NOT NULL GROUP BY i.conversation_id, c.status
|
|
118
|
+
UNION ALL
|
|
119
|
+
SELECT c.id, c.status, NULL, c.occurred_at, NULL, NULL, NULL, 'unavailable', NULL, NULL, NULL, NULL, 0
|
|
120
|
+
FROM conversations c
|
|
121
|
+
WHERE NOT EXISTS (SELECT 1 FROM invocations i WHERE i.conversation_id=c.id);
|
|
122
|
+
CREATE VIEW vw_operations_decisions AS SELECT * FROM decisions;
|
|
123
|
+
CREATE VIEW vw_operations_changes AS SELECT * FROM changes;
|
|
124
|
+
CREATE VIEW vw_operations_daily AS SELECT period_key AS day, * FROM operations_overview WHERE period_kind = 'day';
|
|
125
|
+
CREATE VIEW vw_operations_monthly AS SELECT * FROM operations_overview WHERE period_kind = 'month';
|
|
126
|
+
CREATE VIEW vw_operations_annual AS SELECT * FROM operations_overview WHERE period_kind = 'year';
|
|
127
|
+
CREATE VIEW vw_first_fold_overview AS SELECT * FROM vw_overview_daily;
|
|
128
|
+
CREATE VIEW vw_first_fold_task_status AS SELECT * FROM vw_task_status_daily;
|
|
129
|
+
CREATE VIEW vw_first_fold_task_risk AS SELECT * FROM vw_task_risk_daily;
|
|
130
|
+
CREATE VIEW vw_first_fold_top_tasks AS SELECT t.*, c.total_duration, c.total_tokens, c.total_cost_usd, c.total_cost_brl FROM task_summary t LEFT JOIN (SELECT task_id, SUM(llm_call_count) AS llm_call_count, SUM(duration_ms) AS total_duration, SUM(total_tokens) AS total_tokens, SUM(cost_usd) AS total_cost_usd, SUM(cost_brl) AS total_cost_brl FROM invocations GROUP BY task_id) c ON c.task_id = t.id ORDER BY c.total_duration DESC;
|
|
131
|
+
CREATE VIEW vw_first_fold_overview_all_time AS
|
|
132
|
+
WITH totals AS (
|
|
133
|
+
SELECT MIN(day) AS start_day, MAX(day) AS end_day,
|
|
134
|
+
SUM(total_run_count) AS total_run_count,
|
|
135
|
+
SUM(invocation_count) AS agent_invocation_count,
|
|
136
|
+
SUM(llm_call_count) AS llm_call_count,
|
|
137
|
+
ROUND(SUM(total_duration)) AS total_duration_ms,
|
|
138
|
+
SUM(total_tokens) AS total_tokens,
|
|
139
|
+
SUM(total_cost_usd) AS total_cost_usd,
|
|
140
|
+
SUM(total_cost_brl) AS total_cost_brl,
|
|
141
|
+
SUM(CASE WHEN total_duration IS NOT NULL THEN 1 ELSE 0 END) AS execution_day_count
|
|
142
|
+
FROM daily_aggregates
|
|
143
|
+
), task_totals AS (
|
|
144
|
+
SELECT COUNT(*) AS task_count,
|
|
145
|
+
SUM(CASE WHEN status='completed' THEN 1 ELSE 0 END) AS completed_task_count,
|
|
146
|
+
MAX(occurred_at) AS latest_task_created_at
|
|
147
|
+
FROM task_summary
|
|
148
|
+
), spec_totals AS (
|
|
149
|
+
SELECT COUNT(*) AS spec_count,
|
|
150
|
+
SUM(CASE WHEN status IN ('completed','delivered') THEN 1 ELSE 0 END) AS completed_spec_count
|
|
151
|
+
FROM spec_summary
|
|
152
|
+
), prd_totals AS (
|
|
153
|
+
SELECT COUNT(*) AS prd_count,
|
|
154
|
+
SUM(CASE WHEN status IN ('completed','delivered') THEN 1 ELSE 0 END) AS completed_prd_count
|
|
155
|
+
FROM prd_summary
|
|
156
|
+
)
|
|
157
|
+
SELECT 'all' AS period_key, totals.start_day, totals.end_day,
|
|
158
|
+
task_totals.task_count, task_totals.completed_task_count,
|
|
159
|
+
spec_totals.spec_count, spec_totals.completed_spec_count,
|
|
160
|
+
prd_totals.prd_count, prd_totals.completed_prd_count,
|
|
161
|
+
totals.total_run_count, totals.agent_invocation_count, totals.llm_call_count,
|
|
162
|
+
totals.total_duration_ms, totals.total_tokens,
|
|
163
|
+
totals.total_cost_usd, totals.total_cost_brl, totals.execution_day_count,
|
|
164
|
+
task_totals.latest_task_created_at
|
|
165
|
+
FROM totals CROSS JOIN task_totals CROSS JOIN spec_totals CROSS JOIN prd_totals;
|
|
166
|
+
CREATE VIEW vw_first_fold_task_status_all_time AS
|
|
167
|
+
WITH counts AS (
|
|
168
|
+
SELECT COALESCE(status, 'draft') AS status, COUNT(*) AS task_count
|
|
169
|
+
FROM task_summary GROUP BY COALESCE(status, 'draft')
|
|
170
|
+
), total AS (SELECT SUM(task_count) AS task_count FROM counts)
|
|
171
|
+
SELECT counts.status, counts.task_count,
|
|
172
|
+
CASE WHEN total.task_count = 0 THEN 0.0 ELSE CAST(counts.task_count AS REAL) / total.task_count END AS task_percentage
|
|
173
|
+
FROM counts CROSS JOIN total;
|
|
174
|
+
CREATE VIEW vw_first_fold_task_risk_all_time AS
|
|
175
|
+
WITH counts AS (
|
|
176
|
+
SELECT COALESCE(risk, 'standard') AS risk, COUNT(*) AS task_count
|
|
177
|
+
FROM task_summary WHERE COALESCE(status, 'draft') <> 'draft'
|
|
178
|
+
GROUP BY COALESCE(risk, 'standard')
|
|
179
|
+
), total AS (SELECT SUM(task_count) AS task_count FROM counts)
|
|
180
|
+
SELECT counts.risk, counts.task_count,
|
|
181
|
+
CASE WHEN total.task_count = 0 THEN 0.0 ELSE CAST(counts.task_count AS REAL) / total.task_count END AS task_percentage
|
|
182
|
+
FROM counts CROSS JOIN total;
|
|
183
|
+
CREATE VIEW vw_first_fold_task_metrics_all_time AS
|
|
184
|
+
SELECT overview.task_count,
|
|
185
|
+
CASE WHEN overview.task_count = 0 OR overview.total_duration_ms IS NULL THEN NULL ELSE overview.total_duration_ms / overview.task_count END AS average_duration_ms_per_task,
|
|
186
|
+
CASE WHEN overview.task_count = 0 OR overview.total_tokens IS NULL THEN NULL ELSE overview.total_tokens / overview.task_count END AS average_tokens_per_task,
|
|
187
|
+
CASE WHEN overview.task_count = 0 OR overview.total_cost_usd IS NULL THEN NULL ELSE overview.total_cost_usd / overview.task_count END AS average_cost_usd_per_task,
|
|
188
|
+
CASE WHEN overview.task_count = 0 OR overview.total_cost_brl IS NULL THEN NULL ELSE overview.total_cost_brl / overview.task_count END AS average_cost_brl_per_task,
|
|
189
|
+
overview.latest_task_created_at
|
|
190
|
+
FROM vw_first_fold_overview_all_time overview;
|
|
191
|
+
CREATE VIEW vw_first_fold_spec_status_all_time AS
|
|
192
|
+
WITH counts AS (
|
|
193
|
+
SELECT CASE
|
|
194
|
+
WHEN status='cancelled' THEN 'cancelled'
|
|
195
|
+
WHEN status='failed' THEN 'failed'
|
|
196
|
+
WHEN status='blocked' THEN 'blocked'
|
|
197
|
+
WHEN status IN ('delivered','completed') THEN 'completed'
|
|
198
|
+
WHEN status='ready' THEN 'ready'
|
|
199
|
+
WHEN status='draft' THEN 'planning'
|
|
200
|
+
WHEN status='verifying' THEN 'verifying'
|
|
201
|
+
WHEN status IN ('active','executing') THEN 'executing'
|
|
202
|
+
ELSE 'planning'
|
|
203
|
+
END AS stage, COUNT(*) AS entity_count
|
|
204
|
+
FROM spec_summary GROUP BY stage
|
|
205
|
+
), total AS (SELECT SUM(entity_count) AS entity_count FROM counts)
|
|
206
|
+
SELECT counts.stage, counts.entity_count,
|
|
207
|
+
CASE WHEN total.entity_count=0 THEN 0.0 ELSE CAST(counts.entity_count AS REAL)/total.entity_count END AS entity_percentage
|
|
208
|
+
FROM counts CROSS JOIN total;
|
|
209
|
+
CREATE VIEW vw_first_fold_prd_status_all_time AS
|
|
210
|
+
WITH counts AS (
|
|
211
|
+
SELECT CASE
|
|
212
|
+
WHEN status='cancelled' THEN 'cancelled'
|
|
213
|
+
WHEN status='failed' THEN 'failed'
|
|
214
|
+
WHEN status='blocked' THEN 'blocked'
|
|
215
|
+
WHEN status IN ('delivered','completed') THEN 'completed'
|
|
216
|
+
WHEN status='ready' THEN 'ready'
|
|
217
|
+
WHEN status='draft' THEN 'definition'
|
|
218
|
+
WHEN status='verifying' THEN 'verifying'
|
|
219
|
+
WHEN status IN ('active','executing') THEN 'executing'
|
|
220
|
+
ELSE 'definition'
|
|
221
|
+
END AS stage, COUNT(*) AS entity_count
|
|
222
|
+
FROM prd_summary GROUP BY stage
|
|
223
|
+
), total AS (SELECT SUM(entity_count) AS entity_count FROM counts)
|
|
224
|
+
SELECT counts.stage, counts.entity_count,
|
|
225
|
+
CASE WHEN total.entity_count=0 THEN 0.0 ELSE CAST(counts.entity_count AS REAL)/total.entity_count END AS entity_percentage
|
|
226
|
+
FROM counts CROSS JOIN total;
|
|
227
|
+
CREATE VIEW vw_first_fold_spec_classification_all_time AS
|
|
228
|
+
WITH rollup AS (
|
|
229
|
+
SELECT s.id, COUNT(DISTINCT a.task_id) AS task_count,
|
|
230
|
+
SUM(CASE WHEN a.work_type='rework' AND a.run_role='root' THEN 1 ELSE 0 END) AS rework_run_count
|
|
231
|
+
FROM spec_summary s LEFT JOIN activities a ON a.spec_id=s.id GROUP BY s.id
|
|
232
|
+
), counts AS (
|
|
233
|
+
SELECT CASE WHEN rework_run_count>0 THEN 'rework' WHEN task_count>0 THEN 'structured' ELSE 'empty' END AS classification,
|
|
234
|
+
COUNT(*) AS entity_count
|
|
235
|
+
FROM rollup GROUP BY classification
|
|
236
|
+
), total AS (SELECT SUM(entity_count) AS entity_count FROM counts)
|
|
237
|
+
SELECT counts.classification, counts.entity_count,
|
|
238
|
+
CASE WHEN total.entity_count=0 THEN 0.0 ELSE CAST(counts.entity_count AS REAL)/total.entity_count END AS entity_percentage
|
|
239
|
+
FROM counts CROSS JOIN total;
|
|
240
|
+
CREATE VIEW vw_first_fold_prd_classification_all_time AS
|
|
241
|
+
WITH rollup AS (
|
|
242
|
+
SELECT p.id, COUNT(DISTINCT a.task_id) AS task_count,
|
|
243
|
+
SUM(CASE WHEN a.work_type='rework' AND a.run_role='root' THEN 1 ELSE 0 END) AS rework_run_count
|
|
244
|
+
FROM prd_summary p LEFT JOIN activities a ON a.prd_id=p.id GROUP BY p.id
|
|
245
|
+
), counts AS (
|
|
246
|
+
SELECT CASE WHEN rework_run_count>0 THEN 'rework' WHEN task_count>0 THEN 'structured' ELSE 'empty' END AS classification,
|
|
247
|
+
COUNT(*) AS entity_count
|
|
248
|
+
FROM rollup GROUP BY classification
|
|
249
|
+
), total AS (SELECT SUM(entity_count) AS entity_count FROM counts)
|
|
250
|
+
SELECT counts.classification, counts.entity_count,
|
|
251
|
+
CASE WHEN total.entity_count=0 THEN 0.0 ELSE CAST(counts.entity_count AS REAL)/total.entity_count END AS entity_percentage
|
|
252
|
+
FROM counts CROSS JOIN total;
|
|
253
|
+
CREATE VIEW vw_first_fold_spec_metrics_all_time AS
|
|
254
|
+
WITH usage AS (
|
|
255
|
+
SELECT spec_id,
|
|
256
|
+
COUNT(*) AS total_run_count,
|
|
257
|
+
ROUND(SUM(duration_ms)) AS total_duration_ms,
|
|
258
|
+
SUM(total_tokens) AS total_tokens,
|
|
259
|
+
SUM(cost_usd) AS total_cost_usd,
|
|
260
|
+
SUM(cost_brl) AS total_cost_brl
|
|
261
|
+
FROM macro_spec_activities GROUP BY spec_id
|
|
262
|
+
)
|
|
263
|
+
SELECT COUNT(*) AS entity_count,
|
|
264
|
+
SUM(usage.total_run_count) AS total_run_count,
|
|
265
|
+
SUM(usage.total_duration_ms) AS total_duration_ms,
|
|
266
|
+
SUM(usage.total_tokens) AS total_tokens,
|
|
267
|
+
SUM(usage.total_cost_usd) AS total_cost_usd,
|
|
268
|
+
SUM(usage.total_cost_brl) AS total_cost_brl,
|
|
269
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_duration_ms)/COUNT(*) END AS average_duration_ms,
|
|
270
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_tokens)/COUNT(*) END AS average_tokens,
|
|
271
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_cost_usd)/COUNT(*) END AS average_cost_usd,
|
|
272
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_cost_brl)/COUNT(*) END AS average_cost_brl,
|
|
273
|
+
MAX(s.occurred_at) AS latest_created_at
|
|
274
|
+
FROM spec_summary s LEFT JOIN usage ON usage.spec_id=s.id;
|
|
275
|
+
CREATE VIEW vw_first_fold_prd_metrics_all_time AS
|
|
276
|
+
WITH usage AS (
|
|
277
|
+
SELECT prd_id,
|
|
278
|
+
COUNT(*) AS total_run_count,
|
|
279
|
+
ROUND(SUM(duration_ms)) AS total_duration_ms,
|
|
280
|
+
SUM(total_tokens) AS total_tokens,
|
|
281
|
+
SUM(cost_usd) AS total_cost_usd,
|
|
282
|
+
SUM(cost_brl) AS total_cost_brl
|
|
283
|
+
FROM activities WHERE prd_id IS NOT NULL GROUP BY prd_id
|
|
284
|
+
)
|
|
285
|
+
SELECT COUNT(*) AS entity_count,
|
|
286
|
+
SUM(usage.total_run_count) AS total_run_count,
|
|
287
|
+
SUM(usage.total_duration_ms) AS total_duration_ms,
|
|
288
|
+
SUM(usage.total_tokens) AS total_tokens,
|
|
289
|
+
SUM(usage.total_cost_usd) AS total_cost_usd,
|
|
290
|
+
SUM(usage.total_cost_brl) AS total_cost_brl,
|
|
291
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_duration_ms)/COUNT(*) END AS average_duration_ms,
|
|
292
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_tokens)/COUNT(*) END AS average_tokens,
|
|
293
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_cost_usd)/COUNT(*) END AS average_cost_usd,
|
|
294
|
+
CASE WHEN COUNT(*)=0 THEN NULL ELSE SUM(usage.total_cost_brl)/COUNT(*) END AS average_cost_brl,
|
|
295
|
+
MAX(p.occurred_at) AS latest_created_at
|
|
296
|
+
FROM prd_summary p LEFT JOIN usage ON usage.prd_id=p.id;
|
|
297
|
+
CREATE VIEW vw_first_fold_top_specs_all_time AS
|
|
298
|
+
WITH usage AS (
|
|
299
|
+
SELECT spec_id,
|
|
300
|
+
COUNT(*) AS total_run_count,
|
|
301
|
+
SUM(llm_call_count) AS llm_call_count,
|
|
302
|
+
ROUND(SUM(duration_ms)) AS total_duration_ms,
|
|
303
|
+
SUM(total_tokens) AS total_tokens,
|
|
304
|
+
SUM(cost_usd) AS total_cost_usd,
|
|
305
|
+
SUM(cost_brl) AS total_cost_brl
|
|
306
|
+
FROM macro_spec_activities GROUP BY spec_id
|
|
307
|
+
), ranked AS (
|
|
308
|
+
SELECT s.id AS entity_id, s.title, s.status, usage.total_run_count, usage.llm_call_count,
|
|
309
|
+
usage.total_duration_ms, usage.total_tokens, usage.total_cost_usd, usage.total_cost_brl,
|
|
310
|
+
ROW_NUMBER() OVER (ORDER BY usage.total_duration_ms IS NOT NULL DESC, usage.total_duration_ms DESC, usage.total_run_count DESC, s.id) AS rank
|
|
311
|
+
FROM spec_summary s LEFT JOIN usage ON usage.spec_id=s.id
|
|
312
|
+
), total AS (SELECT SUM(total_duration_ms) AS total_duration_ms FROM ranked)
|
|
313
|
+
SELECT ranked.rank, ranked.entity_id, ranked.title, ranked.status,
|
|
314
|
+
COALESCE(ranked.total_run_count,0) AS total_run_count, ranked.llm_call_count,
|
|
315
|
+
ranked.total_duration_ms, ranked.total_tokens, ranked.total_cost_usd, ranked.total_cost_brl,
|
|
316
|
+
CASE WHEN total.total_duration_ms IS NULL OR total.total_duration_ms=0 OR ranked.total_duration_ms IS NULL THEN 0.0 ELSE ranked.total_duration_ms/total.total_duration_ms END AS duration_share
|
|
317
|
+
FROM ranked CROSS JOIN total WHERE ranked.rank<=5 ORDER BY ranked.rank;
|
|
318
|
+
CREATE VIEW vw_first_fold_top_prds_all_time AS
|
|
319
|
+
WITH usage AS (
|
|
320
|
+
SELECT prd_id,
|
|
321
|
+
COUNT(*) AS total_run_count,
|
|
322
|
+
SUM(llm_call_count) AS llm_call_count,
|
|
323
|
+
ROUND(SUM(duration_ms)) AS total_duration_ms,
|
|
324
|
+
SUM(total_tokens) AS total_tokens,
|
|
325
|
+
SUM(cost_usd) AS total_cost_usd,
|
|
326
|
+
SUM(cost_brl) AS total_cost_brl
|
|
327
|
+
FROM activities WHERE prd_id IS NOT NULL GROUP BY prd_id
|
|
328
|
+
), ranked AS (
|
|
329
|
+
SELECT p.id AS entity_id, p.title, p.status, usage.total_run_count, usage.llm_call_count,
|
|
330
|
+
usage.total_duration_ms, usage.total_tokens, usage.total_cost_usd, usage.total_cost_brl,
|
|
331
|
+
ROW_NUMBER() OVER (ORDER BY usage.total_duration_ms IS NOT NULL DESC, usage.total_duration_ms DESC, usage.total_run_count DESC, p.id) AS rank
|
|
332
|
+
FROM prd_summary p LEFT JOIN usage ON usage.prd_id=p.id
|
|
333
|
+
), total AS (SELECT SUM(total_duration_ms) AS total_duration_ms FROM ranked)
|
|
334
|
+
SELECT ranked.rank, ranked.entity_id, ranked.title, ranked.status,
|
|
335
|
+
COALESCE(ranked.total_run_count,0) AS total_run_count, ranked.llm_call_count,
|
|
336
|
+
ranked.total_duration_ms, ranked.total_tokens, ranked.total_cost_usd, ranked.total_cost_brl,
|
|
337
|
+
CASE WHEN total.total_duration_ms IS NULL OR total.total_duration_ms=0 OR ranked.total_duration_ms IS NULL THEN 0.0 ELSE ranked.total_duration_ms/total.total_duration_ms END AS duration_share
|
|
338
|
+
FROM ranked CROSS JOIN total WHERE ranked.rank<=5 ORDER BY ranked.rank;
|
|
339
|
+
CREATE VIEW vw_first_fold_top_tasks_all_time AS
|
|
340
|
+
WITH duration AS (
|
|
341
|
+
SELECT a.task_id, ROUND(SUM(f.attributed_token_active_ms)) AS total_duration_ms
|
|
342
|
+
FROM attributed_token_active_facts f JOIN zaip_aios_activities a USING(activity_row_id)
|
|
343
|
+
WHERE a.task_id IS NOT NULL AND a.phase='execution' GROUP BY a.task_id
|
|
344
|
+
), usage AS (
|
|
345
|
+
SELECT task_id, COUNT(*) AS total_run_count, SUM(llm_call_count) AS llm_call_count,
|
|
346
|
+
SUM(total_tokens) AS total_tokens, SUM(cost_usd) AS total_cost_usd, SUM(cost_brl) AS total_cost_brl
|
|
347
|
+
FROM activities WHERE task_id IS NOT NULL AND phase='execution' GROUP BY task_id
|
|
348
|
+
), ranked AS (
|
|
349
|
+
SELECT t.id AS task_id, t.title, t.status, t.risk,
|
|
350
|
+
usage.total_run_count, usage.llm_call_count, duration.total_duration_ms,
|
|
351
|
+
usage.total_tokens, usage.total_cost_usd, usage.total_cost_brl,
|
|
352
|
+
ROW_NUMBER() OVER (ORDER BY duration.total_duration_ms DESC, t.id) AS rank
|
|
353
|
+
FROM duration JOIN task_summary t ON t.id=duration.task_id
|
|
354
|
+
LEFT JOIN usage ON usage.task_id=duration.task_id
|
|
355
|
+
), total AS (SELECT SUM(total_duration_ms) AS total_duration_ms FROM ranked)
|
|
356
|
+
SELECT ranked.rank, ranked.task_id, ranked.title, ranked.status, ranked.risk,
|
|
357
|
+
ranked.total_run_count, ranked.llm_call_count, ranked.total_duration_ms,
|
|
358
|
+
ranked.total_tokens, ranked.total_cost_usd, ranked.total_cost_brl,
|
|
359
|
+
CASE WHEN total.total_duration_ms IS NULL OR total.total_duration_ms = 0 THEN 0.0 ELSE ranked.total_duration_ms / total.total_duration_ms END AS duration_share
|
|
360
|
+
FROM ranked CROSS JOIN total WHERE ranked.rank <= 5 ORDER BY ranked.rank;
|
|
361
|
+
CREATE VIEW vw_first_fold_task_summary AS SELECT * FROM vw_task_summary;
|
|
362
|
+
CREATE VIEW vw_first_fold_spec_summary AS SELECT * FROM vw_spec_summary;
|
|
363
|
+
CREATE VIEW vw_first_fold_prd_summary AS SELECT * FROM vw_prd_summary;
|
|
364
|
+
CREATE VIEW cost_monitor_daily AS SELECT * FROM vw_cost_daily;
|
|
365
|
+
CREATE VIEW cost_monitor_monthly AS SELECT * FROM vw_cost_monthly;
|
|
366
|
+
CREATE VIEW cost_monitor_annual AS SELECT * FROM vw_cost_annual;
|
|
367
|
+
CREATE VIEW cost_monitor_overview_view AS SELECT * FROM vw_cost_overview;
|
|
368
|
+
CREATE VIEW cost_monitor_executions AS SELECT * FROM vw_cost_executions;
|
|
369
|
+
CREATE VIEW cost_monitor_agent_invocations AS SELECT * FROM vw_cost_agent_invocations;
|
|
370
|
+
CREATE VIEW cost_monitor_zaip_agents AS SELECT * FROM vw_cost_zaip_agents;
|
|
371
|
+
CREATE VIEW cost_monitor_models AS SELECT * FROM vw_cost_models;
|
|
372
|
+
CREATE VIEW cost_monitor_providers AS SELECT * FROM vw_cost_providers;
|
|
373
|
+
CREATE VIEW cost_monitor_tasks AS SELECT * FROM vw_cost_tasks;
|
|
374
|
+
CREATE VIEW cost_monitor_specs AS SELECT * FROM vw_cost_specs;
|
|
375
|
+
CREATE VIEW cost_monitor_prds AS SELECT * FROM vw_cost_prds;
|
|
376
|
+
CREATE VIEW cost_monitor_conversations AS SELECT * FROM vw_cost_conversations;
|
|
377
|
+
CREATE VIEW operations_work_list AS SELECT * FROM vw_operations_work_list;
|
|
378
|
+
CREATE VIEW operations_work_summary AS SELECT * FROM vw_operations_work_summary;
|
|
379
|
+
CREATE VIEW operations_work_kanban AS SELECT * FROM vw_operations_work_kanban;
|
|
380
|
+
CREATE VIEW operations_executions AS SELECT * FROM vw_operations_executions;
|
|
381
|
+
CREATE VIEW operations_agent_invocations AS SELECT * FROM vw_operations_agent_invocations;
|
|
382
|
+
CREATE VIEW operations_conversations AS SELECT * FROM vw_operations_conversations;
|
|
383
|
+
CREATE VIEW operations_decisions AS SELECT * FROM vw_operations_decisions;
|
|
384
|
+
CREATE VIEW operations_changes AS SELECT * FROM vw_operations_changes;
|
|
385
|
+
CREATE VIEW operations_daily AS SELECT * FROM vw_operations_daily;
|
|
386
|
+
CREATE VIEW operations_monthly AS SELECT * FROM vw_operations_monthly;
|
|
387
|
+
CREATE VIEW operations_annual AS SELECT * FROM vw_operations_annual;
|
|
388
|
+
CREATE VIEW first_fold_overview AS SELECT * FROM vw_first_fold_overview;
|
|
389
|
+
CREATE VIEW first_fold_task_status AS SELECT * FROM vw_first_fold_task_status;
|
|
390
|
+
CREATE VIEW first_fold_task_risk AS SELECT * FROM vw_first_fold_task_risk;
|
|
391
|
+
CREATE VIEW first_fold_top_tasks AS SELECT * FROM vw_first_fold_top_tasks;
|
|
392
|
+
CREATE VIEW first_fold_overview_all_time AS SELECT * FROM vw_first_fold_overview_all_time;
|
|
393
|
+
CREATE VIEW first_fold_task_status_all_time AS SELECT * FROM vw_first_fold_task_status_all_time;
|
|
394
|
+
CREATE VIEW first_fold_task_risk_all_time AS SELECT * FROM vw_first_fold_task_risk_all_time;
|
|
395
|
+
CREATE VIEW first_fold_task_metrics_all_time AS SELECT * FROM vw_first_fold_task_metrics_all_time;
|
|
396
|
+
CREATE VIEW first_fold_top_tasks_all_time AS SELECT * FROM vw_first_fold_top_tasks_all_time;
|
|
397
|
+
CREATE VIEW first_fold_spec_status_all_time AS SELECT * FROM vw_first_fold_spec_status_all_time;
|
|
398
|
+
CREATE VIEW first_fold_spec_classification_all_time AS SELECT * FROM vw_first_fold_spec_classification_all_time;
|
|
399
|
+
CREATE VIEW first_fold_spec_metrics_all_time AS SELECT * FROM vw_first_fold_spec_metrics_all_time;
|
|
400
|
+
CREATE VIEW first_fold_top_specs_all_time AS SELECT * FROM vw_first_fold_top_specs_all_time;
|
|
401
|
+
CREATE VIEW first_fold_prd_status_all_time AS SELECT * FROM vw_first_fold_prd_status_all_time;
|
|
402
|
+
CREATE VIEW first_fold_prd_classification_all_time AS SELECT * FROM vw_first_fold_prd_classification_all_time;
|
|
403
|
+
CREATE VIEW first_fold_prd_metrics_all_time AS SELECT * FROM vw_first_fold_prd_metrics_all_time;
|
|
404
|
+
CREATE VIEW first_fold_top_prds_all_time AS SELECT * FROM vw_first_fold_top_prds_all_time;
|
|
405
|
+
CREATE VIEW first_fold_task AS SELECT * FROM vw_first_fold_task_summary;
|
|
406
|
+
CREATE VIEW first_fold_spec AS SELECT * FROM vw_first_fold_spec_summary;
|
|
407
|
+
CREATE VIEW first_fold_prd AS SELECT * FROM vw_first_fold_prd_summary;
|
|
408
|
+
CREATE VIEW task_summary_daily AS SELECT * FROM vw_task_summary_daily;
|
|
409
|
+
CREATE VIEW spec_summary_daily AS SELECT * FROM vw_spec_summary_daily;
|
|
410
|
+
CREATE VIEW prd_summary_daily AS SELECT * FROM vw_prd_summary_daily;
|
|
411
|
+
CREATE VIEW task_status_daily AS SELECT * FROM vw_task_status_daily;
|
|
412
|
+
CREATE VIEW task_risk_daily AS SELECT * FROM vw_task_risk_daily;
|
|
413
|
+
`;
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
const roots: string[] = [];
|
|
14
14
|
|
|
15
15
|
afterEach(async () => {
|
|
16
|
+
vi.restoreAllMocks();
|
|
16
17
|
await Promise.all(roots.splice(0).map((root) => rm(root, { recursive: true, force: true })));
|
|
17
18
|
});
|
|
18
19
|
|
|
@@ -60,6 +61,7 @@ describe("SQLite snapshot seed publication", () => {
|
|
|
60
61
|
await mkdir(join(root, ".agents", "config"), { recursive: true });
|
|
61
62
|
await writeFile(join(root, ".agents", "config", "project.yaml"), "zaip:\n enabled: true\n");
|
|
62
63
|
const destination = join(root, ".local", "dashboard-sqlite", "read-model.sqlite");
|
|
64
|
+
vi.spyOn(Date, "now").mockReturnValue(Date.now() + 5_000);
|
|
63
65
|
vi.stubEnv("ZAIP_SQLITE_DB_PATH", destination);
|
|
64
66
|
try {
|
|
65
67
|
await expect(rebuildSqliteReadModel(root)).resolves.toMatchObject({ cache: "rebuilt" });
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { stripVTControlCharacters } from "node:util";
|
|
6
|
+
|
|
7
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const root = resolve(here, "../../../../..");
|
|
9
|
+
const prefix = ".agents/dashboard/packages/local-runtime/src/";
|
|
10
|
+
const mode = process.argv[2];
|
|
11
|
+
if (!["test", "integration", "check"].includes(mode))
|
|
12
|
+
throw new Error("Expected test|integration|check");
|
|
13
|
+
if (!existsSync(resolve(root, "node_modules/vitest/vitest.mjs"))) {
|
|
14
|
+
if (spawnSync("git", ["symbolic-ref", "-q", "HEAD"], { cwd: root }).status !== 1)
|
|
15
|
+
throw new Error("Prepare dependencies in the Task checkout first");
|
|
16
|
+
const pnpm = resolve(dirname(process.execPath), "node_modules/corepack/dist/pnpm.js");
|
|
17
|
+
execute([pnpm, "install", "--offline", "--frozen-lockfile", "--ignore-scripts"], 300_000);
|
|
18
|
+
}
|
|
19
|
+
function execute(args, timeout = 120_000) {
|
|
20
|
+
const result = spawnSync(process.execPath, args, {
|
|
21
|
+
cwd: root,
|
|
22
|
+
encoding: "utf8",
|
|
23
|
+
windowsHide: true,
|
|
24
|
+
timeout,
|
|
25
|
+
maxBuffer: 4_000_000,
|
|
26
|
+
});
|
|
27
|
+
const output = stripVTControlCharacters((result.stdout ?? "") + "\n" + (result.stderr ?? ""));
|
|
28
|
+
if (result.status !== 0) {
|
|
29
|
+
process.stderr.write(output);
|
|
30
|
+
throw new Error("Settings validation failed: " + (result.error?.message ?? result.status));
|
|
31
|
+
}
|
|
32
|
+
return output;
|
|
33
|
+
}
|
|
34
|
+
if (mode === "check") {
|
|
35
|
+
execute([
|
|
36
|
+
"node_modules/typescript/bin/tsc",
|
|
37
|
+
"--noEmit",
|
|
38
|
+
"--project",
|
|
39
|
+
".agents/dashboard/packages/local-runtime/tsconfig.json",
|
|
40
|
+
]);
|
|
41
|
+
console.log(JSON.stringify({ kind: "settings_typecheck", passed: true, mode }));
|
|
42
|
+
} else {
|
|
43
|
+
const file =
|
|
44
|
+
mode === "test" ? "project-installation-summary.test.ts" : "project-settings.test.ts";
|
|
45
|
+
const output = execute([
|
|
46
|
+
"node_modules/vitest/vitest.mjs",
|
|
47
|
+
"run",
|
|
48
|
+
prefix + file,
|
|
49
|
+
"--maxWorkers=1",
|
|
50
|
+
]);
|
|
51
|
+
const tests = output
|
|
52
|
+
.split("\n")
|
|
53
|
+
.find((line) => /^\s*Tests\s/.test(line))
|
|
54
|
+
?.trim();
|
|
55
|
+
if (!tests || !/\b[1-9]\d* passed\b/.test(tests)) throw new Error("No settings tests executed");
|
|
56
|
+
console.log(JSON.stringify({ kind: "settings_" + mode, passed: true, mode, tests, output }));
|
|
57
|
+
}
|
package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts
CHANGED
|
@@ -15,9 +15,10 @@ describe("work priority API contract", () => {
|
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it("writes priority without building a projection, while reads discard stale IDs", () => {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const routes = readFileSync(new URL("server-operations-routes.ts", import.meta.url), "utf8");
|
|
19
|
+
const route = routes.slice(
|
|
20
|
+
routes.indexOf("app.put(`${API_PREFIX}/work-priority`"),
|
|
21
|
+
routes.indexOf('app.on(["GET", "HEAD"], `${API_PREFIX}/board`'),
|
|
21
22
|
);
|
|
22
23
|
expect(route).not.toContain("buildCanonicalOperationsProjection");
|
|
23
24
|
expect(route).not.toContain("knownWorkIds(");
|