@zaip-ai/cli 3.2.0 → 3.4.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/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +5 -3
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/agent-catalog-upgrade.d.ts +3 -0
- package/dist/services/agent-catalog-upgrade.d.ts.map +1 -0
- package/dist/services/agent-catalog-upgrade.js +35 -0
- package/dist/services/agent-catalog-upgrade.js.map +1 -0
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +22 -22
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/install-template-policy.d.ts +3 -0
- package/dist/services/install-template-policy.d.ts.map +1 -0
- package/dist/services/install-template-policy.js +21 -0
- package/dist/services/install-template-policy.js.map +1 -0
- package/dist/services/logger.js +24 -8
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +33 -6
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/sqlite-bootstrap.d.ts +1 -0
- package/dist/services/sqlite-bootstrap.d.ts.map +1 -1
- package/dist/services/sqlite-bootstrap.js +10 -1
- package/dist/services/sqlite-bootstrap.js.map +1 -1
- package/package.json +2 -2
- package/templates/.agents/README-ENG.md +2 -1
- package/templates/.agents/README.md +2 -1
- package/templates/.agents/config/agents/catalog.yaml +1 -0
- package/templates/.agents/config/agents/discovery.json +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +2 -2
- package/templates/.agents/dashboard/.zaip-managed.json +278 -126
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-CEDZjl4V.js → CostCalculationGuidePage-C5NgEcVh.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-BzaUTZDx.js → DashboardHelpDialog-CCMVnkkI.js} +4 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-21cCJik-.js → PricingSettingsDialog-CGYcJ5EB.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BAvLPAee.js → ProjectSettingsPage-DVCPPV75.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-wqW52uCx.js → TraceabilityWorkspace-CqK3Psfy.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-PoJA2PI1.css → cost-monitor-BsMfGfQi.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-j3aUYH5G.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-BkAm8-h4.js → dashboard-localization-jvdDfNKs.js} +2 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DEmo6Tn2.js → icons-vendor-x8xxL9yW.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cl5EWx8R.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cwylbh_N.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CadYsm83.js → react-vendor-CNOXIJHN.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BzKK8kK3.js → traceability-CcpbpT1s.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +12 -1
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +33 -0
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +58 -0
- package/templates/.agents/dashboard/apps/frontend/src/app-work-board-options.ts +41 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +25 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +5 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +140 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +28 -41
- package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +38 -0
- package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +33 -0
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +25 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +17 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +13 -167
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +2 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +8 -8
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +29 -52
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +4 -27
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +4 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/agent-model-presentation.test.ts +26 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-embedded.css +7 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +173 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-props.ts +47 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +1 -7
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +3 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +44 -83
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +11 -111
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +47 -181
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +63 -91
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-monitor-unavailable.test.ts +55 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-duration.test.ts +189 -0
- package/templates/.agents/dashboard/modules/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsEntityFilters.tsx +82 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +4 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +5 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +22 -31
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +13 -1
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +16 -3
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +11 -27
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +44 -193
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +186 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/excel-agent-participations.test.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +55 -31
- package/templates/.agents/dashboard/modules/operations/src/react/operations-export-duration.ts +13 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-filter-panel.css +4 -0
- package/templates/.agents/dashboard/modules/operations/src/react/use-operation-filter-feedback.ts +18 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +11 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +10 -2
- package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +1 -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 +406 -332
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +352 -280
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +4 -2
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +406 -332
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +95 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +102 -12
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +75 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +10 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-lifecycle-diagnostics.ts +50 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-macro-population.test.ts +165 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-page-filters.ts +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +111 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +53 -63
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +19 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.test.ts +19 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +11 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +19 -12
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +46 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +10 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +43 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +46 -11
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +188 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.test.ts +85 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.ts +147 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.test.ts +94 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +96 -55
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +58 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-macro-classification.test.ts +172 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +4 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +7 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +10 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +18 -82
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-cached-cost-page.ts +169 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-developer.ts +205 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +13 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +22 -23
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +42 -209
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +18 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +9 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +76 -83
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +25 -161
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +18 -45
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +15 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +16 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +47 -22
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +16 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +13 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-rebuild-result.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +4 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +19 -42
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-macro-classification.ts +48 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-summary-cursor.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-token-active-allocation.ts +46 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-stages.ts +60 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +5 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +7 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +17 -2
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.mjs +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.test.mjs +72 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +32 -9
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +39 -45
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -2
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/scripts/qualify-macro-overview.mjs +50 -0
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +1 -18
- package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.spec.ts +20 -0
- package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.ts +20 -0
- package/templates/.agents/design/.zaip-managed.json +82 -74
- package/templates/.agents/design/apps/catalog/dist/assets/index-0W0Gj_Gs.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-32GZO95T.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/{index-D_lfqoyx.js → index-BP8IxOxt.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/assets/{index-BOjCcUaU.js → index-QJsgr9Ht.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-CvaciY0C.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-Cm-yJJz_.js → Color-6AOWCN3U-DwBV1A1Y.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-3dqK5g3e.js +142 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-2OCgtT0I.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-Belk4jRr.js → DocsRenderer-JROSPFPF-CODg0rSl.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Primitives-BmeKjJW4.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-DoPvjkS1.js → WithTooltip-7X4HQR7L-C5MI-3uZ.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatus.stories-Tb_iQqVK.js +17 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-CD54pw0-.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-B1itKXEN.js → chunk-DRQKCCAG-KSn75jcy.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-C-Eb5SPY.js → chunk-W22LQPXL-C4LS1Thf.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-DnyKLwhj.js → components-DV1BRgMY.js} +5 -5
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-BU_68im1.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-DcXBsFPz.js → iframe-CBbPFx5G.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-CRM89QRf.js → react-18-C9IPGXtb.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-CEv2qkJT.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-B03jQGTF.js → syntaxhighlighter-YFXUGROL-ZgDQjyWI.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-4ZyufAga.js → theming-Cx9-gH6l.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/a11y-2/manager-bundle.js +3 -3
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/docs-1/manager-bundle.js +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +60 -60
- package/templates/.agents/design/apps/catalog/package.json +1 -1
- package/templates/.agents/design/apps/catalog/src/components/DashboardFiltersSpecimen.tsx +61 -0
- package/templates/.agents/design/apps/catalog/src/components/Primitives.tsx +24 -0
- package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +26 -0
- package/templates/.agents/design/apps/catalog/src/design-contract.test.ts +27 -13
- package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +38 -0
- package/templates/.agents/design/apps/catalog/src/pages/DesignSystemPage.tsx +15 -1
- package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +18 -0
- package/templates/.agents/design/apps/catalog/src/stories/DashboardFilters.stories.tsx +7 -0
- package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +9 -0
- package/templates/.agents/design/apps/catalog/src/styles/components.css +83 -2
- package/templates/.agents/design/apps/catalog/src/styles.css +2 -0
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/design/tokens.json +32 -0
- 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 +18 -4
- 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 +1 -1
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/autonomy-decision.md +1 -0
- package/templates/.agents/rules/workflow.md +1 -1
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +28 -26
- package/templates/.agents/runtime/checksums.sha256 +5 -5
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/provenance.json +4 -4
- package/templates/.agents/runtime/sbom.cdx.json +1 -1
- package/templates/.agents/skills/zaip-aios/SKILL.md +0 -1
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +1 -0
- package/templates/.agents/skills/zaip-skill-config/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +13 -0
- package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +17 -0
- package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +4 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +4 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +2 -2
- package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -3
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +15 -8
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +13 -12
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +50 -13
- package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-update-version-doc/SKILL.md +39 -0
- package/templates/.agents/skills/zaip-skill-update-version-doc/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-update-version-doc/scripts/update-version-doc.mjs +21 -0
- package/templates/.agents/skills/zaip-skill-update-version-doc/scripts/update-version-doc.test.mjs +32 -0
- package/templates/.agents/zaip-aios/README.md +2 -1
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +7 -3
- package/templates/template-manifest.json +436 -256
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-06__WZco.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DqZKJS8y.js +0 -2
- package/templates/.agents/design/apps/catalog/dist/assets/index-BEmIE7WE.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-CqqYWY2f.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/assets/index-CqtYXZfV.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-D9pj7Jlf.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +0 -137
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-BEmIE7WE.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +0 -1
|
@@ -93,6 +93,7 @@ import {
|
|
|
93
93
|
presentLaunchFailure,
|
|
94
94
|
writeLauncherStatus,
|
|
95
95
|
} from "./start-dashboard-lifecycle.mjs";
|
|
96
|
+
import { inspectDashboardOwnership } from "./start-dashboard-ownership.mjs";
|
|
96
97
|
import { assertDashboardPrerequisites, exists } from "./start-dashboard-prerequisites.mjs";
|
|
97
98
|
import {
|
|
98
99
|
isKnownDashboardLauncher,
|
|
@@ -132,7 +133,8 @@ export async function readDashboardSession(path = sessionPath) {
|
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
export async function writeDashboardSession(session, path = sessionPath) {
|
|
135
|
-
|
|
136
|
+
const { snapshotState: _obsoleteSnapshotState, ...identity } = session;
|
|
137
|
+
await writeJsonAtomic(path, identity);
|
|
136
138
|
}
|
|
137
139
|
export async function claimDashboardLaunch(
|
|
138
140
|
{ launchPort, token },
|
|
@@ -193,6 +195,7 @@ export async function claimDashboardLaunch(
|
|
|
193
195
|
if (
|
|
194
196
|
previous?.kind === claim.kind &&
|
|
195
197
|
previous?.workspaceKey === workspaceKey &&
|
|
198
|
+
previous?.workspace === workspaceRoot &&
|
|
196
199
|
Number.isInteger(previous?.launcherPid) &&
|
|
197
200
|
previous.launcherPid > 0 &&
|
|
198
201
|
previous.launcherPid !== process.pid
|
|
@@ -304,11 +307,11 @@ export async function probeDashboardPort(
|
|
|
304
307
|
}
|
|
305
308
|
export async function findReusableDashboardSession({
|
|
306
309
|
path = sessionPath,
|
|
307
|
-
startPort = preferredPort(),
|
|
308
310
|
fetchImpl = fetch,
|
|
309
311
|
expectedWorkspaceKey = workspaceKey,
|
|
310
312
|
expectedBuildSignature = null,
|
|
311
313
|
expectedSnapshotState = "current",
|
|
314
|
+
inspectOwnership = inspectDashboardOwnership,
|
|
312
315
|
} = {}) {
|
|
313
316
|
const session = await readDashboardSession(path);
|
|
314
317
|
if (
|
|
@@ -321,43 +324,19 @@ export async function findReusableDashboardSession({
|
|
|
321
324
|
) {
|
|
322
325
|
return null;
|
|
323
326
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
const response = await fetchImpl(dashboardHealthUrl(session.port), {
|
|
331
|
-
signal: AbortSignal.timeout(500),
|
|
332
|
-
});
|
|
333
|
-
const payload = await response.json();
|
|
334
|
-
if (
|
|
335
|
-
!response.ok ||
|
|
336
|
-
payload?.kind !== runtimeKind ||
|
|
337
|
-
payload?.workspaceKey !== expectedWorkspaceKey ||
|
|
338
|
-
payload?.snapshot_state !== expectedSnapshotState
|
|
339
|
-
)
|
|
340
|
-
return null;
|
|
341
|
-
} catch {
|
|
342
|
-
return null;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
327
|
+
const health = await inspectOwnership(session, {
|
|
328
|
+
workspaceRoot,
|
|
329
|
+
workspaceKey: expectedWorkspaceKey,
|
|
330
|
+
fetchImpl,
|
|
331
|
+
host,
|
|
332
|
+
});
|
|
345
333
|
if (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
(port) => port <= 65_535 && port !== session.port,
|
|
353
|
-
);
|
|
354
|
-
const matches = await Promise.all(
|
|
355
|
-
ports.map(async (port) =>
|
|
356
|
-
(await probeDashboardPort(port, fetchImpl, expectedWorkspaceKey)) ? port : null,
|
|
357
|
-
),
|
|
358
|
-
);
|
|
359
|
-
const port = matches.find((candidate) => candidate !== null);
|
|
360
|
-
return port === undefined ? null : { ...session, port };
|
|
334
|
+
health === null ||
|
|
335
|
+
health.status !== "ok" ||
|
|
336
|
+
(expectedSnapshotState !== null && health.snapshot_state !== expectedSnapshotState)
|
|
337
|
+
)
|
|
338
|
+
return null;
|
|
339
|
+
return session;
|
|
361
340
|
}
|
|
362
341
|
export function requestBackgroundProjectionRefresh(session, fetchImpl = fetch) {
|
|
363
342
|
return fetchImpl(`http://${host}:${session.port}/api/v2/refresh-projection`, {
|
|
@@ -423,7 +402,7 @@ export async function withLauncherLock(
|
|
|
423
402
|
}
|
|
424
403
|
|
|
425
404
|
export function startDashboardLaunchPage(port) {
|
|
426
|
-
return createDashboardLaunchPage({ port, host, runtimeKind, healthPath, delay });
|
|
405
|
+
return createDashboardLaunchPage({ port, host, runtimeKind, healthPath, delay, workspaceRoot });
|
|
427
406
|
}
|
|
428
407
|
async function redirectLaunchPage(launchPage, target) {
|
|
429
408
|
launchPage.setProgress({
|
|
@@ -464,6 +443,7 @@ async function stopOwnedDashboard(session) {
|
|
|
464
443
|
fetchImpl: fetch,
|
|
465
444
|
host,
|
|
466
445
|
packageRoot,
|
|
446
|
+
workspaceRoot,
|
|
467
447
|
delay,
|
|
468
448
|
});
|
|
469
449
|
}
|
|
@@ -471,10 +451,12 @@ export async function previousDashboardSessions({
|
|
|
471
451
|
sessionPath: candidateSessionPath = sessionPath,
|
|
472
452
|
registryPath: candidateRegistryPath = portRegistryPath,
|
|
473
453
|
probe = (port) => probeDashboardPort(port, fetch, workspaceKey, false),
|
|
454
|
+
inspectOwnership = inspectDashboardOwnership,
|
|
474
455
|
} = {}) {
|
|
475
456
|
return collectPreviousDashboardSessions({
|
|
476
457
|
candidateSessionPath,
|
|
477
458
|
candidateRegistryPath,
|
|
459
|
+
inspectOwnership,
|
|
478
460
|
probe,
|
|
479
461
|
readDashboardSession,
|
|
480
462
|
readPortRegistry,
|
|
@@ -642,10 +624,7 @@ async function main() {
|
|
|
642
624
|
dbPath,
|
|
643
625
|
buildSignature,
|
|
644
626
|
generationId: `${process.pid}-${child.pid}-${port}-${randomBytes(6).toString("hex")}`,
|
|
645
|
-
//
|
|
646
|
-
// into this session, so a later click can reuse the current
|
|
647
|
-
// generation after the health state flips.
|
|
648
|
-
snapshotState: snapshotCache === "stale_seed" ? "updating" : "current",
|
|
627
|
+
// Snapshot state belongs exclusively to the live health/ready endpoints.
|
|
649
628
|
createdAt: new Date().toISOString(),
|
|
650
629
|
};
|
|
651
630
|
await assertCurrentLaunch();
|
|
@@ -719,12 +698,27 @@ async function waitForDashboard(port, child) {
|
|
|
719
698
|
try {
|
|
720
699
|
const response = await fetch(dashboardHealthUrl(port), { signal: AbortSignal.timeout(750) });
|
|
721
700
|
const payload = await response.json().catch(() => null);
|
|
722
|
-
if (
|
|
701
|
+
if (
|
|
702
|
+
payload?.kind === runtimeKind &&
|
|
703
|
+
payload?.workspaceKey === workspaceKey &&
|
|
704
|
+
payload?.workspace === workspaceRoot &&
|
|
705
|
+
payload?.server_pid === child.pid &&
|
|
706
|
+
(response.ok || payload.status === "degraded")
|
|
707
|
+
) {
|
|
723
708
|
const readiness = await fetch(`http://${host}:${port}/api/v2/ready`, {
|
|
724
709
|
signal: AbortSignal.timeout(750),
|
|
725
710
|
cache: "no-store",
|
|
726
711
|
});
|
|
727
|
-
|
|
712
|
+
const readinessPayload = await readiness
|
|
713
|
+
.clone()
|
|
714
|
+
.json()
|
|
715
|
+
.catch(() => null);
|
|
716
|
+
if (
|
|
717
|
+
readiness.ok ||
|
|
718
|
+
(readinessPayload?.status === "degraded" &&
|
|
719
|
+
["missing", "invalid"].includes(readinessPayload.lifecycle_manifest_state))
|
|
720
|
+
)
|
|
721
|
+
return;
|
|
728
722
|
if (readiness.status >= 500) {
|
|
729
723
|
const detail = await readiness.json().catch(() => null);
|
|
730
724
|
const unavailable = new Error(
|
|
@@ -468,11 +468,13 @@ describe("dashboard executable session", () => {
|
|
|
468
468
|
const reusable = await findReusableDashboardSession({
|
|
469
469
|
path,
|
|
470
470
|
expectedBuildSignature: "compatible-build",
|
|
471
|
+
inspectOwnership: async () => ({ status: "ok", snapshot_state: "current" }),
|
|
471
472
|
fetchImpl: async () =>
|
|
472
473
|
new Response(JSON.stringify({ kind: runtimeKind, workspaceKey }), { status: 200 }),
|
|
473
474
|
});
|
|
474
475
|
|
|
475
|
-
|
|
476
|
+
const { snapshotState, ...identity } = session;
|
|
477
|
+
expect(reusable).toEqual(identity);
|
|
476
478
|
expect(reusable).toMatchObject({ port: 4317, serverPid: 5678 });
|
|
477
479
|
});
|
|
478
480
|
|
|
@@ -655,6 +657,7 @@ describe("dashboard executable session", () => {
|
|
|
655
657
|
sessionPath: join(directory, "missing-session.json"),
|
|
656
658
|
registryPath: path,
|
|
657
659
|
probe: async () => true,
|
|
660
|
+
inspectOwnership: async () => ({ status: "ok" }),
|
|
658
661
|
}),
|
|
659
662
|
).resolves.toEqual([expect.objectContaining({ port: 4317, rootPid: 1234, status: "closed" })]);
|
|
660
663
|
});
|
|
@@ -743,7 +746,7 @@ describe("dashboard executable session", () => {
|
|
|
743
746
|
expect(buildSignature).toBeGreaterThan(lock);
|
|
744
747
|
expect(previous).toBeGreaterThan(buildSignature);
|
|
745
748
|
expect(source).toContain("newestClickWins: true,");
|
|
746
|
-
expect(source).toContain(
|
|
749
|
+
expect(source).not.toContain(
|
|
747
750
|
'snapshotState: snapshotCache === "stale_seed" ? "updating" : "current",',
|
|
748
751
|
);
|
|
749
752
|
expect(source).toContain("presentLaunchFailure(launchPage, error, formatLauncherError)");
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { dirname, join, resolve } from "node:path";
|
|
5
|
+
|
|
6
|
+
const root = resolve(import.meta.dirname, "../../..");
|
|
7
|
+
const mode = process.argv[2];
|
|
8
|
+
assert(["test", "check", "integration"].includes(mode), "Expected test|check|integration");
|
|
9
|
+
function run(args, cwd = root) {
|
|
10
|
+
const result = spawnSync(process.execPath, args, {
|
|
11
|
+
cwd,
|
|
12
|
+
windowsHide: true,
|
|
13
|
+
stdio: "inherit",
|
|
14
|
+
timeout: 300_000,
|
|
15
|
+
env: { ...process.env, CI: "true" },
|
|
16
|
+
});
|
|
17
|
+
if (result.error) throw result.error;
|
|
18
|
+
assert.equal(result.status, 0, `Check failed: ${args.join(" ")}`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!existsSync(join(root, "node_modules/vitest/vitest.mjs"))) {
|
|
22
|
+
run([
|
|
23
|
+
join(dirname(process.execPath), "node_modules/corepack/dist/pnpm.js"),
|
|
24
|
+
"install",
|
|
25
|
+
"--offline",
|
|
26
|
+
"--frozen-lockfile",
|
|
27
|
+
"--ignore-scripts",
|
|
28
|
+
]);
|
|
29
|
+
}
|
|
30
|
+
const runtime = ".agents/dashboard/packages/local-runtime";
|
|
31
|
+
const operations = ".agents/dashboard/modules/operations";
|
|
32
|
+
if (mode === "check") {
|
|
33
|
+
for (const directory of [runtime, operations]) {
|
|
34
|
+
run([join(root, "node_modules/typescript/bin/tsc"), "--noEmit"], join(root, directory));
|
|
35
|
+
}
|
|
36
|
+
} else {
|
|
37
|
+
const tests =
|
|
38
|
+
mode === "test"
|
|
39
|
+
? [
|
|
40
|
+
`${runtime}/src/sqlite-first-fold-cache.test.ts`,
|
|
41
|
+
`${runtime}/src/server-period-macro-metric.test.ts`,
|
|
42
|
+
`${operations}/src/react/OperationsOverview.test.ts`,
|
|
43
|
+
]
|
|
44
|
+
: [
|
|
45
|
+
`${runtime}/src/sqlite-force-canonical.test.ts`,
|
|
46
|
+
`${runtime}/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts`,
|
|
47
|
+
`${runtime}/src/server-overview.test.ts`,
|
|
48
|
+
];
|
|
49
|
+
run([join(root, "node_modules/vitest/vitest.mjs"), "run", ...tests]);
|
|
50
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { expect, type Locator, type Page, test } from "@playwright/test";
|
|
2
|
+
import { exportRowIdentity } from "./export-row-identity.js";
|
|
2
3
|
|
|
3
4
|
type Metric = {
|
|
4
5
|
surface: string;
|
|
@@ -710,24 +711,6 @@ function assertCompleteExport(pages: SqlitePage[]) {
|
|
|
710
711
|
expect(pages.at(-1)?.has_more).toBe(false);
|
|
711
712
|
}
|
|
712
713
|
|
|
713
|
-
function exportRowIdentity(row: Record<string, unknown>): string {
|
|
714
|
-
for (const key of [
|
|
715
|
-
"agent_invocation_id",
|
|
716
|
-
"execution_id",
|
|
717
|
-
"conversation_id",
|
|
718
|
-
"task_id",
|
|
719
|
-
"spec_id",
|
|
720
|
-
"prd_id",
|
|
721
|
-
"period_key",
|
|
722
|
-
"key",
|
|
723
|
-
"id",
|
|
724
|
-
]) {
|
|
725
|
-
const value = row[key];
|
|
726
|
-
if (typeof value === "string" && value.length > 0) return `${key}:${value}`;
|
|
727
|
-
}
|
|
728
|
-
return JSON.stringify(row);
|
|
729
|
-
}
|
|
730
|
-
|
|
731
714
|
async function exportCloseCount(page: Page): Promise<number> {
|
|
732
715
|
return page.evaluate(
|
|
733
716
|
() => (window as Window & { __zaipExportCloseCount?: number }).__zaipExportCloseCount ?? 0,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { expect, test } from "@playwright/test";
|
|
2
|
+
import { exportRowIdentity } from "./export-row-identity.js";
|
|
3
|
+
|
|
4
|
+
test("export identity distinguishes sibling Tasks and still detects actual duplicates", () => {
|
|
5
|
+
const first = { entity_kind: "task", id: "TASK-A", spec_id: "SPEC-SHARED", prd_id: "PRD-SHARED" };
|
|
6
|
+
const second = { ...first, id: "TASK-B" };
|
|
7
|
+
const identities = [first, second].map(exportRowIdentity);
|
|
8
|
+
expect(new Set(identities).size).toBe(2);
|
|
9
|
+
expect(exportRowIdentity({ ...first })).toBe(identities[0]);
|
|
10
|
+
expect(exportRowIdentity({ ...first, entity_kind: "spec" })).not.toBe(identities[0]);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
test("cost export keeps its own invocation identity ahead of parent references", () => {
|
|
14
|
+
expect(
|
|
15
|
+
exportRowIdentity({ agent_invocation_id: "AINV-A", task_id: "TASK-A", spec_id: "SPEC-A" }),
|
|
16
|
+
).toBe("agent_invocation_id:AINV-A");
|
|
17
|
+
expect(exportRowIdentity({ execution_id: "EXEC-A", task_id: "TASK-A" })).toBe(
|
|
18
|
+
"execution_id:EXEC-A",
|
|
19
|
+
);
|
|
20
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function exportRowIdentity(row: Record<string, unknown>): string {
|
|
2
|
+
if (typeof row.entity_kind === "string" && typeof row.id === "string" && row.id.length > 0) {
|
|
3
|
+
return `${row.entity_kind}:${row.id}`;
|
|
4
|
+
}
|
|
5
|
+
for (const key of [
|
|
6
|
+
"agent_invocation_id",
|
|
7
|
+
"execution_id",
|
|
8
|
+
"conversation_id",
|
|
9
|
+
"task_id",
|
|
10
|
+
"spec_id",
|
|
11
|
+
"prd_id",
|
|
12
|
+
"period_key",
|
|
13
|
+
"key",
|
|
14
|
+
"id",
|
|
15
|
+
]) {
|
|
16
|
+
const value = row[key];
|
|
17
|
+
if (typeof value === "string" && value.length > 0) return `${key}:${value}`;
|
|
18
|
+
}
|
|
19
|
+
return JSON.stringify(row);
|
|
20
|
+
}
|