@zaip-ai/cli 1.0.7 → 1.3.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 +6 -4
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +15 -5
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/adapters.test.js +1 -1
- package/dist/services/agent-adapters.d.ts +9 -0
- package/dist/services/agent-adapters.d.ts.map +1 -1
- package/dist/services/agent-adapters.js +39 -4
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-adapters.test.js +13 -1
- package/dist/services/agent-adapters.test.js.map +1 -1
- package/dist/services/codex-config-template.d.ts +2 -1
- package/dist/services/codex-config-template.d.ts.map +1 -1
- package/dist/services/codex-config-template.js +13 -2
- package/dist/services/codex-config-template.js.map +1 -1
- package/dist/services/codex-rules.d.ts +1 -1
- package/dist/services/codex-rules.d.ts.map +1 -1
- package/dist/services/codex-rules.js +31 -7
- package/dist/services/codex-rules.js.map +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
- package/dist/services/codex-subagent-hook-template.js +4 -1
- package/dist/services/codex-subagent-hook-template.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +3 -1
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/global-codex-config.d.ts +6 -3
- package/dist/services/global-codex-config.d.ts.map +1 -1
- package/dist/services/global-codex-config.js +82 -13
- package/dist/services/global-codex-config.js.map +1 -1
- package/dist/services/global-codex-config.test.js +57 -10
- package/dist/services/global-codex-config.test.js.map +1 -1
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +15 -2
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/logger.js +1 -1
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +3 -3
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/runtime-template.test.js +21 -5
- package/dist/services/runtime-template.test.js.map +1 -1
- package/dist/services/template-manifest.d.ts.map +1 -1
- package/dist/services/template-manifest.js +7 -0
- package/dist/services/template-manifest.js.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/architecture/software-architecture.md +131 -0
- package/templates/.agents/branding/brandbook.docx +0 -0
- package/templates/.agents/branding/brandbook.md +60 -0
- package/templates/.agents/config/agents/catalog.yaml +310 -10
- package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +5 -5
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +30 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +8 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +5 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +30 -0
- package/templates/.agents/config/project.yaml +1 -1
- package/templates/.agents/dashboard/.tmp-run-list.json +254 -0
- package/templates/.agents/dashboard/.zaip-managed.json +775 -163
- package/templates/.agents/dashboard/DATA-DICTIONARY.md +2227 -0
- package/templates/.agents/dashboard/README.md +48 -97
- package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-DxR_pgSV.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-4jZLTWE_.js +2156 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-CKcsqb-r.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BomxqCBU.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-DmmJD2Th.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BwtitWa_.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-CaKwQP43.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-BZ5WdaMN.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-N5Csr0RP.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-C98LGC-Q.js → dashboard-localization-CLJ0lT9v.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/icons-vendor-C0fj2uU9.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-C4aIB1PV.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DK_enB5Z.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/react-vendor-BEsJ-FYH.js +9 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/rolldown-runtime-D9-fqq9M.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-B6y6Gw12.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/traceability-DFY7ZDlu.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +9 -2
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +1129 -600
- package/templates/.agents/dashboard/apps/frontend/src/AppLoadingBoundary.tsx +48 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppLoadingPanels.tsx +2 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppOverlays.tsx +247 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppRequestGuards.tsx +95 -0
- package/templates/.agents/dashboard/apps/frontend/src/AppSetupRoutes.tsx +87 -0
- package/templates/.agents/dashboard/apps/frontend/src/CostCalculationGuidePage.tsx +641 -0
- package/templates/.agents/dashboard/apps/frontend/src/DashboardAlternateContent.tsx +159 -0
- package/templates/.agents/dashboard/apps/frontend/src/DashboardCapabilityNav.tsx +13 -13
- package/templates/.agents/dashboard/apps/frontend/src/DashboardGlobalSettings.tsx +56 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +266 -315
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +151 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +37 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +114 -12
- package/templates/.agents/dashboard/apps/frontend/src/app-preferences.ts +15 -0
- package/templates/.agents/dashboard/apps/frontend/src/app-session-token.ts +20 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-calculation-guide.css +267 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-calculation-guide.test.ts +69 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +85 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +133 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +453 -13
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-localization.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/main.tsx +1 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-detail-hydration.test.ts +55 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-detail-hydration.ts +36 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-entity-page-projection.test.ts +126 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-entity-page-projection.ts +181 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-contract.test.ts +138 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +105 -0
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.test.ts +6 -3
- package/templates/.agents/dashboard/apps/frontend/src/operations-period.ts +9 -5
- package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +26 -0
- package/templates/.agents/dashboard/apps/frontend/src/period-transition-overlay.css +44 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +121 -62
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +482 -3
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +84 -17
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +78 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +234 -39
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-notice.ts +15 -0
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-cost-adapters.ts +26 -0
- package/templates/.agents/dashboard/apps/frontend/src/styles.css +14 -2
- package/templates/.agents/dashboard/apps/frontend/src/traceability-workspace.css +38 -2
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +253 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +380 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +175 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-operations-pages.ts +395 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +141 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-idle-cost-prefetch.ts +45 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.test.ts +46 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.ts +36 -0
- package/templates/.agents/dashboard/apps/frontend/vite.config.ts +58 -5
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +47 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/duration-estimate.ts +13 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +134 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +290 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +133 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +134 -43
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +137 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.test.ts +2 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.tsx +13 -10
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +328 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +302 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +627 -400
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostSummary.tsx +5 -13
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +370 -72
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +467 -326
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +17 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +25 -6
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-copy.ts +0 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-helpers.ts +17 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-responsive.css +6 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-row-filters.ts +123 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-summary.ts +8 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-views.ts +32 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor.css +55 -14
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-table-presentation.ts +121 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/index.ts +3 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.test.ts +68 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +33 -5
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +119 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.test.ts +12 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +146 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +118 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/aggregate.ts +5 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-pricing-fallback.test.ts +53 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.basics.test.ts +34 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +168 -161
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +188 -29
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +757 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +784 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-terminal-day.test.ts +100 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/index.ts +1 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/refactor-map-xr9l.json +61 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-monitor-projection-agents.test.ts +31 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/source-size-cost-server/build-cost-summary-projection-duration.test.ts +414 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/task-cost-groups.test.ts +41 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/task-cost-groups.ts +55 -11
- package/templates/.agents/dashboard/modules/operations/package.json +2 -1
- package/templates/.agents/dashboard/modules/operations/src/contracts.ts +185 -0
- package/templates/.agents/dashboard/modules/operations/src/duration-population.test.ts +63 -1
- package/templates/.agents/dashboard/modules/operations/src/duration-population.ts +60 -5
- package/templates/.agents/dashboard/modules/operations/src/react/EntityDetailsDialog.tsx +14 -3
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.test.ts +44 -1
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +345 -18
- package/templates/.agents/dashboard/modules/operations/src/react/MacroPlanningDialog.tsx +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationDateFilters.test.ts +9 -5
- package/templates/.agents/dashboard/modules/operations/src/react/OperationDateFilters.tsx +2 -2
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsMainContent.tsx +168 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +95 -6
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +367 -14
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +562 -131
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +353 -355
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageNavigation.tsx +65 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +169 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PeriodSummaryTable.tsx +73 -8
- package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.test.tsx +32 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PrdDocumentDialog.tsx +62 -6
- package/templates/.agents/dashboard/modules/operations/src/react/TaskBoard.test.ts +55 -0
- package/templates/.agents/dashboard/modules/operations/src/react/TaskBoard.tsx +27 -19
- package/templates/.agents/dashboard/modules/operations/src/react/TaskDetailsDialog.tsx +105 -42
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.priority.test.ts +19 -0
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.tsx +265 -36
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +171 -8
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +98 -68
- package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.test.ts +72 -1
- package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.ts +78 -17
- package/templates/.agents/dashboard/modules/operations/src/react/execution-metrics.ts +6 -4
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +431 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +574 -20
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +42 -4
- package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +248 -0
- package/templates/.agents/dashboard/modules/operations/src/react/macro-planning-dialog-content.css +49 -0
- package/templates/.agents/dashboard/modules/operations/src/react/macro-planning-dialog.css +93 -50
- package/templates/.agents/dashboard/modules/operations/src/react/manual-work-priority.test.ts +82 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.test.ts +29 -2
- package/templates/.agents/dashboard/modules/operations/src/react/operation-date-range.ts +22 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.test.ts +77 -4
- package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.ts +67 -5
- package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +54 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-global-filters.test.ts +22 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +149 -12
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +27 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +176 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-period-scope.test.ts +160 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-period-scope.ts +47 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-query.ts +10 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-responsive.css +3 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-view-labels.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-view-order.test.ts +21 -7
- package/templates/.agents/dashboard/modules/operations/src/react/operations.css +42 -0
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary-population.test.ts +54 -0
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary-population.ts +32 -0
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary.test.ts +241 -6
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary.ts +148 -6
- package/templates/.agents/dashboard/modules/operations/src/react/popup-localization.test.ts +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.css +132 -0
- package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.css.test.ts +13 -0
- package/templates/.agents/dashboard/modules/operations/src/react/unified-work-board.header.test.ts +16 -0
- package/templates/.agents/dashboard/modules/operations/src/react/use-infinite-column.ts +11 -5
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +7 -4
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +5 -84
- package/templates/.agents/dashboard/modules/operations/src/server/build-operations-projection.test.ts +291 -15
- package/templates/.agents/dashboard/modules/operations/src/server/build-operations-projection.ts +182 -472
- package/templates/.agents/dashboard/modules/operations/src/server/canonical-compat.test.ts +40 -0
- package/templates/.agents/dashboard/modules/operations/src/server/canonical-compat.ts +19 -6
- package/templates/.agents/dashboard/modules/operations/src/server/canonical-run-projection.ts +31 -6
- package/templates/.agents/dashboard/modules/operations/src/server/daily-duration-projection.ts +220 -0
- package/templates/.agents/dashboard/modules/operations/src/server/execution-duration-projection.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.test.ts +39 -2
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.ts +25 -13
- package/templates/.agents/dashboard/modules/operations/src/server/filter.test.ts +3 -3
- package/templates/.agents/dashboard/modules/operations/src/server/filter.ts +7 -2
- package/templates/.agents/dashboard/modules/operations/src/server/index.ts +3 -0
- package/templates/.agents/dashboard/modules/operations/src/server/macro.ts +3 -12
- package/templates/.agents/dashboard/modules/operations/src/server/manifest-usage.ts +65 -0
- package/templates/.agents/dashboard/modules/operations/src/server/operations-projection-aggregates.ts +297 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-daily-operations-projection.ts +330 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-operations-projection.test.ts +505 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-operations-projection.ts +609 -0
- package/templates/.agents/dashboard/modules/operations/src/server/runs.ts +18 -19
- package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +76 -0
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
- package/templates/.agents/dashboard/modules/traceability/src/server/build-task-trace.ts +3 -1
- package/templates/.agents/dashboard/packages/branding/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
- package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
- package/templates/.agents/dashboard/packages/contracts/src/index.ts +2 -0
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +1759 -0
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs.metafile.json +7333 -0
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +1611 -0
- package/templates/.agents/dashboard/packages/local-runtime/package.json +8 -3
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs +20 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +114 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +31 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/source-size-runtime-scripts/sqlite-read-model-fixture.mjs +397 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs +589 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-unix-launchers.mjs +53 -0
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +203 -0
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +1646 -107
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-adapter-sync.ts +30 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.test.ts +3 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/agent-catalog-settings.ts +5 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/manifest-runs.ts +72 -33
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +339 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +392 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/runtime.mjs +5 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +110 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +189 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-cross-layer-parity.test.ts +245 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models-route.ts +64 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models.test.ts +204 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-daily-read-models.ts +194 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +163 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +354 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.test.ts +74 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +113 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-overview.test.ts +68 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period.ts +47 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-projections.ts +483 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-settings.test.ts +5 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +178 -84
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +149 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +675 -267
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +1212 -309
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.test.ts +53 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.ts +722 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +3743 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +7017 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +33 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +41 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +210 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +514 -190
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +324 -24
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/packages/windows-launcher/LauncherVerificationBehaviorTests.cs +206 -0
- package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +95 -8
- package/templates/.agents/dashboard/packages/windows-launcher/build-dashboard-launcher.ps1 +2 -2
- package/templates/.agents/dashboard/packages/windows-launcher/run-launcher-verification-tests.ps1 +22 -0
- package/templates/.agents/dashboard/read-model.dbml +2201 -0
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +1 -1
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +216 -41
- package/templates/.agents/dashboard/work-priority.json +34 -0
- package/templates/.agents/dashboard/zaip-dashboard-linux.sh +45 -0
- package/templates/.agents/dashboard/zaip-dashboard-mac.command +3 -0
- package/templates/.agents/dashboard/zaip-dashboard-windows.exe +0 -0
- package/templates/.agents/design/.zaip-managed.json +3 -3
- package/templates/.agents/design/apps/catalog/package.json +1 -1
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/growth/estrategia-bootstrap-90-dias.md +169 -0
- package/templates/.agents/growth/strategy.md +27 -0
- package/templates/.agents/marketing/estrategia-marketing-zaip-90-dias.md +197 -0
- package/templates/.agents/marketing/strategy.md +29 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/comparative-audit.md +1 -1
- package/templates/.agents/requirements/context-engine.md +1 -1
- package/templates/.agents/requirements/cost-observability.md +1 -1
- package/templates/.agents/requirements/dashboard-launch.md +24 -0
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +4 -3
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +9 -6
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +9 -3
- package/templates/.agents/requirements/zaip-strategic-95.md +4 -4
- package/templates/.agents/rules/autonomy-decision.md +15 -0
- package/templates/.agents/rules/core.md +1 -1
- package/templates/.agents/rules/run-lifecycle-closure.md +1 -1
- package/templates/.agents/rules/specialist-routing.md +19 -0
- package/templates/.agents/rules/workflow.md +1 -1
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +118 -67
- package/templates/.agents/runtime/checksums.sha256 +6 -4
- package/templates/.agents/runtime/manifest.json +3 -1
- package/templates/.agents/runtime/pnpm-lock.sha256 +1 -0
- package/templates/.agents/runtime/provenance.json +11 -0
- package/templates/.agents/runtime/sbom.cdx.json +1929 -39
- package/templates/.agents/sales/playbook.md +32 -0
- package/templates/.agents/sales/roteiro-comercial-zaip.md +252 -0
- package/templates/.agents/skills/zaip-aios/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +22 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-framework.md +39 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-standards.md +30 -0
- package/templates/.agents/skills/zaip-skill-dashboard-sqlite/SKILL.md +25 -0
- package/templates/.agents/skills/zaip-skill-dashboard-sqlite/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-enforce-architecture/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/SKILL.md +18 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.mjs +71 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.test.mjs +60 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/scheduled-ready-queue-contract.test.mjs +111 -0
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-frontend-launcher/references/launcher-contract.md +3 -1
- package/templates/.agents/skills/zaip-skill-general-operations/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-general-operations/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +9 -7
- package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +11 -38
- package/templates/.agents/skills/zaip-skill-governance-compliance/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-governance-compliance/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +21 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/references/growth-revops-framework.md +25 -0
- package/templates/.agents/skills/zaip-skill-instalar-agendamento/SKILL.md +17 -0
- package/templates/.agents/skills/zaip-skill-instalar-agendamento/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +9 -3
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +99 -93
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +132 -23
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +149 -1
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +76 -19
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +217 -7
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/source-size-telemetry/model-identity-reconciliation.mjs +77 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +20 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/references/sales-process-framework.md +77 -0
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +5 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +96 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/scripts/ensure-node.mjs +41 -0
- package/templates/.agents/zaip-aios/INDEX.md +11 -0
- package/templates/.agents/zaip-aios/README.md +38 -8
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/09-agentes-e-squads.md +43 -6
- package/templates/.agents/zaip-aios/guides/10-seguranca.md +21 -7
- package/templates/.agents/zaip-aios/guides/17-como-o-custo-e-calculado.md +32 -0
- package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +76 -0
- package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +72 -0
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +330 -0
- package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +52 -0
- package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +69 -0
- package/templates/.agents/zaip-aios/guides/23-orquestracao-de-modelos.md +483 -0
- package/templates/.agents/zaip-aios/guides/24-calculo-de-custos-openai.md +85 -0
- package/templates/.agents/zaip-aios/guides/25-fontes-de-precos-openai.md +18 -0
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +44 -0
- package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +167 -0
- package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +144 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/lifecycles-task-spec-prd.png +0 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/prd-lifecycle.png +0 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/spec-lifecycle.png +0 -0
- package/templates/.agents/zaip-aios/guides/assets/diagrams/task-lifecycle.png +0 -0
- package/templates/template-manifest.json +1082 -215
- package/templates/.agents/dashboard/apps/frontend/dist/assets/AgentCatalogSettingsPage-CLYIi7Vo.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/AgentCatalogSettingsPage-DTDNVQGX.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-Cv-JcoxP.js +0 -1320
- package/templates/.agents/dashboard/apps/frontend/dist/assets/PricingSettingsDialog-CzEggcRb.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-05YKn6Z4.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-YO3yqtgV.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-8AzCnl3a.js +0 -77
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DdBYQ_8D.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/src/AgentCatalogSettingsPage.tsx +0 -617
- package/templates/.agents/dashboard/apps/frontend/src/agent-catalog-settings-page.css +0 -660
- package/templates/.agents/dashboard/apps/frontend/src/agent-catalog-settings.test.ts +0 -249
- package/templates/.agents/dashboard/dashboard.config.json +0 -4
- package/templates/.agents/dashboard/zaip-dashboard.exe +0 -0
|
@@ -18,7 +18,7 @@ export default defineConfig({
|
|
|
18
18
|
},
|
|
19
19
|
projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }],
|
|
20
20
|
webServer: {
|
|
21
|
-
command: "node .agents/dashboard/packages/local-runtime/dist/server.
|
|
21
|
+
command: "node .agents/dashboard/packages/local-runtime/dist/server.cjs",
|
|
22
22
|
cwd: workspaceRoot,
|
|
23
23
|
url: `${baseURL}/api/v2/health`,
|
|
24
24
|
reuseExistingServer: false,
|
|
@@ -85,12 +85,19 @@ test("exports the active Cost Monitor, Operations table, and Kanban view through
|
|
|
85
85
|
.getByRole("textbox", { name: "Busca" });
|
|
86
86
|
await globalSearch.fill("EXEC-");
|
|
87
87
|
await page.getByRole("button", { exact: true, name: "Execuções" }).click();
|
|
88
|
-
|
|
88
|
+
const executionRows = page.locator(".ui-table-row-action");
|
|
89
|
+
if ((await executionRows.count()) === 0) {
|
|
90
|
+
await expect(page.locator(".ui-empty")).toBeVisible();
|
|
91
|
+
} else {
|
|
92
|
+
await expect(page.getByRole("columnheader", { name: /Execução/ })).toBeVisible();
|
|
93
|
+
}
|
|
89
94
|
await expect(page.locator(".export-progress")).toContainText(/\d+%/);
|
|
90
|
-
await
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
if ((await executionRows.count()) > 0) {
|
|
96
|
+
await executionRows.first().click();
|
|
97
|
+
const executionDialog = page.getByRole("dialog", { name: "Detalhes de Execução ZAIP" });
|
|
98
|
+
await expect(executionDialog).toBeVisible();
|
|
99
|
+
await executionDialog.getByRole("button", { name: "Fechar" }).click();
|
|
100
|
+
}
|
|
94
101
|
await page.evaluate(() => {
|
|
95
102
|
(
|
|
96
103
|
window as Window & {
|
|
@@ -229,7 +236,9 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
229
236
|
const period = globalControls.getByRole("combobox", { name: "Período" });
|
|
230
237
|
await expect(startDate).toHaveValue(/^\d{4}-\d{2}-\d{2}$/);
|
|
231
238
|
await expect(endDate).toHaveValue(/^\d{4}-\d{2}-\d{2}$/);
|
|
232
|
-
await expect(period).toHaveValue("
|
|
239
|
+
await expect(period).toHaveValue("all");
|
|
240
|
+
await expect(startDate).toBeDisabled();
|
|
241
|
+
await expect(endDate).toBeDisabled();
|
|
233
242
|
const initialStart = await startDate.inputValue();
|
|
234
243
|
const today = await endDate.inputValue();
|
|
235
244
|
await expect(page.getByLabel("Data inicial nos filtros")).toHaveValue(initialStart);
|
|
@@ -251,9 +260,9 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
251
260
|
await expect(period).toHaveValue("custom");
|
|
252
261
|
await period.selectOption("all");
|
|
253
262
|
await expect(period).toHaveValue("all");
|
|
254
|
-
await expect(startDate).toHaveValue(
|
|
263
|
+
await expect(startDate).toHaveValue(/^\d{4}-\d{2}-\d{2}$/);
|
|
255
264
|
await expect(startDate).toBeDisabled();
|
|
256
|
-
await expect(endDate).toHaveValue(
|
|
265
|
+
await expect(endDate).toHaveValue(/^\d{4}-\d{2}-\d{2}$/);
|
|
257
266
|
await expect(endDate).toBeDisabled();
|
|
258
267
|
|
|
259
268
|
await page.getByLabel("Risco").selectOption("critical");
|
|
@@ -261,17 +270,34 @@ test("renders the modern read-only dashboard and meets accessibility gates", asy
|
|
|
261
270
|
page.locator(".operations-task-card .operations-risk:not(.is-critical)"),
|
|
262
271
|
).toHaveCount(0);
|
|
263
272
|
await expect(page.locator(".operations-risk.is-critical").first()).toBeVisible();
|
|
273
|
+
const filteredTaskTotal = Number(
|
|
274
|
+
await page
|
|
275
|
+
.getByRole("button", { name: /Tarefas:/ })
|
|
276
|
+
.first()
|
|
277
|
+
.locator("strong")
|
|
278
|
+
.textContent(),
|
|
279
|
+
);
|
|
280
|
+
const filteredStatusCounts = (
|
|
281
|
+
await page.locator(".operations-panel-wide .operations-legend-value strong").allTextContents()
|
|
282
|
+
).map(Number);
|
|
283
|
+
const filteredRiskCounts = (
|
|
284
|
+
await page.locator(".operations-panel-risk .operations-legend-value strong").allTextContents()
|
|
285
|
+
).map(Number);
|
|
286
|
+
expect(filteredStatusCounts.reduce((sum, value) => sum + value, 0)).toBe(filteredTaskTotal);
|
|
287
|
+
expect(filteredRiskCounts.reduce((sum, value) => sum + value, 0)).toBe(filteredTaskTotal);
|
|
264
288
|
await page.getByRole("button", { name: "Limpar filtros" }).click();
|
|
265
289
|
await expect(page.getByRole("dialog", { name: "Atualizar dashboard" })).toHaveCount(0);
|
|
266
290
|
await expect(startDate).toHaveValue(initialStart);
|
|
267
|
-
await expect(period).toHaveValue("
|
|
291
|
+
await expect(period).toHaveValue("all");
|
|
292
|
+
await expect(startDate).toBeDisabled();
|
|
293
|
+
await expect(endDate).toBeDisabled();
|
|
268
294
|
await expect(page.getByLabel("Risco")).toHaveValue("");
|
|
269
295
|
|
|
270
296
|
const results = await new AxeBuilder({ page }).analyze();
|
|
271
297
|
expect(results.violations).toEqual([]);
|
|
272
298
|
});
|
|
273
299
|
|
|
274
|
-
test("loads
|
|
300
|
+
test("loads a quick Operations summary and never hydrates full detail on selection", async ({
|
|
275
301
|
page,
|
|
276
302
|
}) => {
|
|
277
303
|
const operationsRequests: string[] = [];
|
|
@@ -282,22 +308,60 @@ test("loads one overview first and one full Operations projection only after sel
|
|
|
282
308
|
});
|
|
283
309
|
|
|
284
310
|
await openDashboard(page);
|
|
285
|
-
expect(operationsRequests).
|
|
286
|
-
expect(operationsRequests
|
|
311
|
+
expect(operationsRequests.some((url) => url.includes("scope=quick"))).toBe(true);
|
|
312
|
+
expect(operationsRequests.some((url) => url.includes("scope=detail"))).toBe(false);
|
|
313
|
+
expect(operationsRequests.some((url) => url.includes("/snapshot"))).toBe(false);
|
|
314
|
+
|
|
315
|
+
const requestsBeforeMacroSelection = operationsRequests.length;
|
|
316
|
+
await page.getByRole("button", { name: /^SPECs:/ }).click();
|
|
317
|
+
await expect(page.getByRole("heading", { name: "Status das SPECs" })).toBeVisible();
|
|
318
|
+
await expect(page.getByRole("heading", { name: "Top 5 SPECs" })).toBeVisible();
|
|
319
|
+
await expect(page.locator(".operations-run-bar")).toHaveCount(5);
|
|
320
|
+
expect(
|
|
321
|
+
(await page.locator(".operations-panel-wide .operations-legend-value strong").allTextContents())
|
|
322
|
+
.map(Number)
|
|
323
|
+
.reduce((sum, value) => sum + value, 0),
|
|
324
|
+
).toBe(32);
|
|
325
|
+
expect(
|
|
326
|
+
(await page.locator(".operations-panel-risk .operations-legend-value strong").allTextContents())
|
|
327
|
+
.map(Number)
|
|
328
|
+
.reduce((sum, value) => sum + value, 0),
|
|
329
|
+
).toBe(32);
|
|
330
|
+
await page.getByRole("button", { name: /^PRDs:/ }).click();
|
|
331
|
+
await expect(page.getByRole("heading", { name: "Status das PRDs" })).toBeVisible();
|
|
332
|
+
await expect(page.getByRole("heading", { name: "Top 5 PRDs" })).toBeVisible();
|
|
333
|
+
await expect(page.locator(".operations-run-bar")).toHaveCount(5);
|
|
334
|
+
expect(
|
|
335
|
+
(await page.locator(".operations-panel-wide .operations-legend-value strong").allTextContents())
|
|
336
|
+
.map(Number)
|
|
337
|
+
.reduce((sum, value) => sum + value, 0),
|
|
338
|
+
).toBe(12);
|
|
339
|
+
expect(
|
|
340
|
+
(await page.locator(".operations-panel-risk .operations-legend-value strong").allTextContents())
|
|
341
|
+
.map(Number)
|
|
342
|
+
.reduce((sum, value) => sum + value, 0),
|
|
343
|
+
).toBe(12);
|
|
344
|
+
expect(operationsRequests).toHaveLength(requestsBeforeMacroSelection);
|
|
287
345
|
|
|
288
346
|
await selectOperations(page);
|
|
289
347
|
await expect(page.getByLabel("Kanban de trabalho")).toBeVisible();
|
|
290
|
-
expect(operationsRequests).
|
|
291
|
-
expect(operationsRequests
|
|
348
|
+
expect(operationsRequests.some((url) => url.includes("scope=detail"))).toBe(false);
|
|
349
|
+
expect(operationsRequests.some((url) => url.includes("/snapshot"))).toBe(false);
|
|
292
350
|
|
|
293
351
|
await page
|
|
294
352
|
.getByRole("navigation", { name: "Áreas do dashboard" })
|
|
295
353
|
.getByRole("button", { name: /Operação/ })
|
|
296
354
|
.click();
|
|
297
|
-
expect(operationsRequests).
|
|
355
|
+
expect(operationsRequests.some((url) => url.includes("scope=detail"))).toBe(false);
|
|
298
356
|
});
|
|
299
357
|
|
|
300
358
|
test("integrates the detailed cost monitor into the main dashboard", async ({ page }) => {
|
|
359
|
+
const costRequests: string[] = [];
|
|
360
|
+
const pageErrors: string[] = [];
|
|
361
|
+
page.on("request", (request) => {
|
|
362
|
+
if (request.url().includes("/api/v2/")) costRequests.push(request.url());
|
|
363
|
+
});
|
|
364
|
+
page.on("pageerror", (error) => pageErrors.push(error.message));
|
|
301
365
|
await openDashboard(page);
|
|
302
366
|
const capabilityNav = page.getByRole("navigation", { name: "Áreas do dashboard" });
|
|
303
367
|
const globalControls = page.locator(".dashboard-global-controls");
|
|
@@ -333,9 +397,9 @@ test("integrates the detailed cost monitor into the main dashboard", async ({ pa
|
|
|
333
397
|
const modelHeader = page.getByRole("columnheader", { name: /Modelo/ });
|
|
334
398
|
if ((await modelHeader.count()) > 0) {
|
|
335
399
|
await expect(modelHeader).toBeVisible();
|
|
336
|
-
await expect(page.getByRole("columnheader", { name:
|
|
337
|
-
await expect(page.getByRole("columnheader", { name:
|
|
338
|
-
await expect(page.getByRole("columnheader", { name:
|
|
400
|
+
await expect(page.getByRole("columnheader", { name: /^Invocações / })).toBeVisible();
|
|
401
|
+
await expect(page.getByRole("columnheader", { name: /^Tokens / })).toBeVisible();
|
|
402
|
+
await expect(page.getByRole("columnheader", { name: /^Custo / })).toBeVisible();
|
|
339
403
|
} else {
|
|
340
404
|
await expect(page.locator(".cost-content-models .ui-empty")).toBeVisible();
|
|
341
405
|
}
|
|
@@ -346,10 +410,39 @@ test("integrates the detailed cost monitor into the main dashboard", async ({ pa
|
|
|
346
410
|
await expect(page.getByRole("button", { name: "Zaip Agentes" })).toBeVisible();
|
|
347
411
|
await expect(page.getByRole("button", { exact: true, name: "Conversas" })).toBeVisible();
|
|
348
412
|
|
|
413
|
+
for (const [tab, kind] of [
|
|
414
|
+
["Execuções", "executions"],
|
|
415
|
+
["Conversas", "conversations"],
|
|
416
|
+
["Tarefas", "tasks"],
|
|
417
|
+
["SPEC", "specs"],
|
|
418
|
+
["PRD", "prds"],
|
|
419
|
+
] as const) {
|
|
420
|
+
const response = page.waitForResponse(
|
|
421
|
+
(candidate) =>
|
|
422
|
+
candidate.url().includes("/api/v2/sqlite-views?") &&
|
|
423
|
+
candidate.url().includes(`view=cost_monitor_${kind}`),
|
|
424
|
+
);
|
|
425
|
+
await page.locator(".cost-tabs").getByRole("button", { exact: true, name: tab }).click();
|
|
426
|
+
expect((await response).status()).toBe(200);
|
|
427
|
+
await expect(
|
|
428
|
+
page.getByRole("columnheader", { name: /Tempo observado/ }).or(page.locator(".ui-empty")),
|
|
429
|
+
).toBeVisible();
|
|
430
|
+
await expect(
|
|
431
|
+
page.getByRole("navigation", { name: "Paginação dos dados agregados" }),
|
|
432
|
+
).toBeVisible();
|
|
433
|
+
expect(pageErrors).toEqual([]);
|
|
434
|
+
await expect(page.locator(".cost-tabs")).toBeVisible();
|
|
435
|
+
}
|
|
436
|
+
expect(costRequests.some((url) => url.includes("scope=detail"))).toBe(false);
|
|
437
|
+
|
|
349
438
|
await capabilityNav.getByRole("button", { name: /Operação/ }).click();
|
|
350
439
|
await page.getByRole("button", { exact: true, name: "Invocações de agentes" }).click();
|
|
351
440
|
await page.getByRole("button", { exact: true, name: "Execuções" }).click();
|
|
352
|
-
await expect(
|
|
441
|
+
await expect(
|
|
442
|
+
page
|
|
443
|
+
.getByRole("columnheader", { name: /Execução/ })
|
|
444
|
+
.or(page.getByRole("status").filter({ hasText: /Aguardando linhas canônicas de execuções/ })),
|
|
445
|
+
).toBeVisible();
|
|
353
446
|
await page.getByRole("button", { exact: true, name: "Invocações de agentes" }).click();
|
|
354
447
|
|
|
355
448
|
await page.getByRole("button", { name: "PT-BR" }).click();
|
|
@@ -362,11 +455,27 @@ test("integrates the detailed cost monitor into the main dashboard", async ({ pa
|
|
|
362
455
|
await expect(runRow).toBeVisible();
|
|
363
456
|
const initialRunCount = await runRows.count();
|
|
364
457
|
const englishStartDate = globalControls.getByLabel("Start date");
|
|
458
|
+
const narrowedResponse = page.waitForResponse(
|
|
459
|
+
(candidate) =>
|
|
460
|
+
candidate.status() === 200 &&
|
|
461
|
+
candidate.url().includes("/api/v2/sqlite-views?") &&
|
|
462
|
+
candidate.url().includes("view=operations_agent_invocations"),
|
|
463
|
+
);
|
|
365
464
|
await englishStartDate.fill(initialEnd);
|
|
465
|
+
await narrowedResponse;
|
|
366
466
|
await expect(englishStartDate).toHaveValue(initialEnd);
|
|
367
467
|
expect(await runRows.count()).toBeLessThanOrEqual(initialRunCount);
|
|
468
|
+
const restoredResponse = page.waitForResponse(
|
|
469
|
+
(candidate) =>
|
|
470
|
+
candidate.status() === 200 &&
|
|
471
|
+
candidate.url().includes("/api/v2/sqlite-views?") &&
|
|
472
|
+
candidate.url().includes("view=operations_agent_invocations"),
|
|
473
|
+
);
|
|
368
474
|
await englishStartDate.fill(initialStart);
|
|
369
|
-
await
|
|
475
|
+
const restoredPage = await restoredResponse;
|
|
476
|
+
expect(((await restoredPage.json()) as { rows: unknown[] }).rows.length).toBeGreaterThan(0);
|
|
477
|
+
await expect(runRows.first()).toBeVisible();
|
|
478
|
+
await runRows.first().click();
|
|
370
479
|
const runDetails = page.getByRole("dialog", { name: "Details for Agent Invocation" });
|
|
371
480
|
await expect(runDetails).toBeVisible();
|
|
372
481
|
await runDetails.getByRole("button", { name: "Close" }).click();
|
|
@@ -406,9 +515,10 @@ test("embeds traceability and keeps global settings and help available", async (
|
|
|
406
515
|
|
|
407
516
|
await page.getByRole("button", { name: "Configurações" }).click();
|
|
408
517
|
await page.getByLabel("Moeda").selectOption("USD");
|
|
409
|
-
await page.getByRole("button", { name: "
|
|
518
|
+
await page.getByRole("button", { name: "Central de Ajuda" }).click();
|
|
410
519
|
await expect(page.getByRole("dialog", { name: "Ajuda do ZAIP-AIOS" })).toBeVisible();
|
|
411
520
|
await expect(page.getByRole("button", { name: "README · ZAIP-AIOS" })).toBeVisible();
|
|
521
|
+
await expect(page.getByRole("button", { name: "Como o custo é calculado" })).toBeVisible();
|
|
412
522
|
await expect(page.getByText("Aprofundar no framework")).toBeVisible();
|
|
413
523
|
const helpDialog = page.getByRole("dialog", { name: "Ajuda do ZAIP-AIOS" });
|
|
414
524
|
await expect(
|
|
@@ -426,6 +536,7 @@ test("groups macro work in All and reveals descendant Tasks only in Tasks", asyn
|
|
|
426
536
|
await openDashboard(page);
|
|
427
537
|
await selectOperations(page);
|
|
428
538
|
const board = page.getByLabel("Kanban de trabalho");
|
|
539
|
+
await expect(board.locator(".operations-task-card").first()).toBeVisible();
|
|
429
540
|
const allItemCount = await boardItemCount(board);
|
|
430
541
|
|
|
431
542
|
await page.getByRole("button", { exact: true, name: "Tarefas" }).click();
|
|
@@ -437,23 +548,79 @@ test("groups macro work in All and reveals descendant Tasks only in Tasks", asyn
|
|
|
437
548
|
.locator(".operations-work-card")
|
|
438
549
|
.filter({ has: page.locator(".operations-work-kind.is-spec") })
|
|
439
550
|
.first();
|
|
440
|
-
await
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
551
|
+
if ((await spec.count()) === 0) {
|
|
552
|
+
await expect(
|
|
553
|
+
page.getByLabel("Kanban de trabalho").locator(".operations-task-card"),
|
|
554
|
+
).toHaveCount(0);
|
|
555
|
+
} else {
|
|
556
|
+
await expect(spec).toBeVisible();
|
|
557
|
+
await expect(spec.locator(".operations-work-card-counts")).toHaveText(/Tasks \d+\/\d+/);
|
|
558
|
+
await spec.locator(".operations-work-card-open").click();
|
|
559
|
+
await expect(page.getByRole("dialog", { name: "Detalhes do SPEC" })).toBeVisible();
|
|
560
|
+
await page.getByRole("button", { name: "Fechar" }).click();
|
|
561
|
+
}
|
|
445
562
|
|
|
446
563
|
await page.getByRole("button", { exact: true, name: "PRDs" }).click();
|
|
447
564
|
const prd = page
|
|
448
565
|
.locator(".operations-work-card")
|
|
449
566
|
.filter({ has: page.locator(".operations-work-kind.is-prd") })
|
|
450
567
|
.first();
|
|
451
|
-
await
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
568
|
+
if ((await prd.count()) === 0) {
|
|
569
|
+
await expect(
|
|
570
|
+
page.getByLabel("Kanban de trabalho").locator(".operations-task-card"),
|
|
571
|
+
).toHaveCount(0);
|
|
572
|
+
} else {
|
|
573
|
+
await expect(prd).toBeVisible();
|
|
574
|
+
await expect(prd.locator(".operations-work-card-counts")).toHaveText(
|
|
575
|
+
/SPECs \d+\/\d+ · Tasks \d+\/\d+/,
|
|
576
|
+
);
|
|
577
|
+
await prd.locator(".operations-work-card-open").click();
|
|
578
|
+
await expect(page.getByRole("dialog", { name: "Detalhes do PRD" })).toBeVisible();
|
|
579
|
+
}
|
|
580
|
+
});
|
|
581
|
+
|
|
582
|
+
test("loads monthly overview quickly and keeps PRD and SPEC chart totals reconciled", async ({
|
|
583
|
+
page,
|
|
584
|
+
}) => {
|
|
585
|
+
const openedAt = Date.now();
|
|
586
|
+
await openDashboard(page);
|
|
587
|
+
expect(Date.now() - openedAt).toBeLessThan(3_000);
|
|
588
|
+
|
|
589
|
+
const period = page.getByRole("combobox", { name: /Per/ }).first();
|
|
590
|
+
for (const preset of ["last-month", "this-month"] as const) {
|
|
591
|
+
const response = page.waitForResponse(
|
|
592
|
+
(candidate) =>
|
|
593
|
+
candidate.status() === 200 &&
|
|
594
|
+
candidate.url().includes("/api/v2/operations") &&
|
|
595
|
+
candidate.url().includes("scope=quick"),
|
|
596
|
+
);
|
|
597
|
+
const selectedAt = Date.now();
|
|
598
|
+
await period.selectOption(preset);
|
|
599
|
+
await response;
|
|
600
|
+
expect(Date.now() - selectedAt).toBeLessThan(3_000);
|
|
601
|
+
|
|
602
|
+
for (const kind of ["SPECs", "PRDs"] as const) {
|
|
603
|
+
const selector = page.locator(".operations-kpi.is-selectable").filter({ hasText: kind });
|
|
604
|
+
const cardCount = Number(await selector.locator("strong").textContent());
|
|
605
|
+
await selector.click();
|
|
606
|
+
|
|
607
|
+
const panels = page.locator(".operations-chart-grid > .operations-panel");
|
|
608
|
+
const donutCount = Number(
|
|
609
|
+
await panels.nth(1).locator(".operations-donut-wrap strong").textContent(),
|
|
610
|
+
);
|
|
611
|
+
const statusCounts = await panels
|
|
612
|
+
.nth(0)
|
|
613
|
+
.locator(".operations-legend-value strong")
|
|
614
|
+
.allTextContents();
|
|
615
|
+
const classificationCounts = await panels
|
|
616
|
+
.nth(1)
|
|
617
|
+
.locator(".operations-legend-value strong")
|
|
618
|
+
.allTextContents();
|
|
619
|
+
expect(donutCount).toBe(cardCount);
|
|
620
|
+
expect(statusCounts.reduce((sum, value) => sum + Number(value), 0)).toBe(cardCount);
|
|
621
|
+
expect(classificationCounts.reduce((sum, value) => sum + Number(value), 0)).toBe(cardCount);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
457
624
|
});
|
|
458
625
|
|
|
459
626
|
async function boardItemCount(board: Locator): Promise<number> {
|
|
@@ -475,7 +642,12 @@ test("opens entity-specific details for changes decisions executions and runs",
|
|
|
475
642
|
|
|
476
643
|
for (const [tab, dialogName, detailLabel] of cases) {
|
|
477
644
|
await page.getByRole("button", { exact: true, name: tab }).click();
|
|
478
|
-
|
|
645
|
+
const rows = page.locator(".ui-table-row-action");
|
|
646
|
+
if ((await rows.count()) === 0) {
|
|
647
|
+
await expect(page.locator(".ui-empty")).toBeVisible();
|
|
648
|
+
continue;
|
|
649
|
+
}
|
|
650
|
+
await rows.first().click();
|
|
479
651
|
const dialog = page.getByRole("dialog", { name: dialogName });
|
|
480
652
|
await expect(dialog).toBeVisible();
|
|
481
653
|
await expect(dialog.getByText(detailLabel, { exact: true })).toBeVisible();
|
|
@@ -484,6 +656,16 @@ test("opens entity-specific details for changes decisions executions and runs",
|
|
|
484
656
|
}
|
|
485
657
|
});
|
|
486
658
|
|
|
659
|
+
test("keeps aggregate KPIs visible without an obsolete coverage overlay", async ({ page }) => {
|
|
660
|
+
await openDashboard(page);
|
|
661
|
+
|
|
662
|
+
await expect(page.getByText(/Agregados do manifesto/)).toHaveCount(0);
|
|
663
|
+
await expect(page.locator(".operations-coverage-toast")).toHaveCount(0);
|
|
664
|
+
await expect(page.getByRole("article", { name: /Tempo total de execu/ })).toBeVisible();
|
|
665
|
+
await expect(page.getByRole("article", { name: /Tokens gastos/ })).toBeVisible();
|
|
666
|
+
await expect(page.getByRole("article", { name: /Custo Estimado/ })).toBeVisible();
|
|
667
|
+
});
|
|
668
|
+
|
|
487
669
|
async function globalThisScrollPosition(page: import("@playwright/test").Page) {
|
|
488
670
|
return page.evaluate("window.scrollY");
|
|
489
671
|
}
|
|
@@ -493,24 +675,17 @@ async function openDashboard(page: import("@playwright/test").Page) {
|
|
|
493
675
|
(response) =>
|
|
494
676
|
response.status() === 200 &&
|
|
495
677
|
response.url().includes("/api/v2/operations") &&
|
|
496
|
-
response.url().includes("scope=
|
|
678
|
+
response.url().includes("scope=quick"),
|
|
497
679
|
);
|
|
498
680
|
await page.goto("/?token=e2e-token");
|
|
499
681
|
await operations;
|
|
500
682
|
}
|
|
501
683
|
|
|
502
684
|
async function selectOperations(page: import("@playwright/test").Page) {
|
|
503
|
-
const operations = page.waitForResponse(
|
|
504
|
-
(response) =>
|
|
505
|
-
response.status() === 200 &&
|
|
506
|
-
response.url().includes("/api/v2/operations") &&
|
|
507
|
-
!response.url().includes("scope=overview"),
|
|
508
|
-
);
|
|
509
685
|
await page
|
|
510
686
|
.getByRole("navigation", { name: "Áreas do dashboard" })
|
|
511
687
|
.getByRole("button", { name: /Operação/ })
|
|
512
688
|
.click();
|
|
513
|
-
await operations;
|
|
514
689
|
}
|
|
515
690
|
|
|
516
691
|
test("protects dashboard reads and rejects mutating methods", async ({ request }) => {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"item_ids": [
|
|
4
|
+
"TASK-2026-07-17-09-15-AUDITORIA-ESTRUTURAL-ZAIP-AIOS-JL7U",
|
|
5
|
+
"TASK-2026-07-17-22-37-INTAKE-OUTCOMES-V3-GA4Q",
|
|
6
|
+
"TASK-2026-07-18-11-54-LIBERAR-ACESSO-TOTAL-CODEX-KKP3",
|
|
7
|
+
"TASK-2026-07-18-12-26-FORMATAR-CUSTOS-CARD-XGRU",
|
|
8
|
+
"TASK-2026-07-18-12-42-REMOVE-OBSOLETE-TASKS-9RBB",
|
|
9
|
+
"TASK-2026-07-18-13-11-ALIGN-CODEX-FULL-ACCESS-A7C5",
|
|
10
|
+
"TASK-2026-07-22-00-26-GLOBAL-CODEX-CONFIG-W7R9",
|
|
11
|
+
"TASK-2026-08-09-11-12-DASHBOARD-FRESH-PORT-HANDOFF-GCAA",
|
|
12
|
+
"TASK-2026-08-09-18-59-REQUALIFICAR-CANDIDATO-ESCOPADO-T8WS",
|
|
13
|
+
"TASK-2026-08-09-20-01-FECHAR-LINT-SHA-LIMPO-RFWB",
|
|
14
|
+
"TASK-2026-08-10-09-42-SINCRONIZAR-EVIDENCIA-HAQ3-2WBT",
|
|
15
|
+
"TASK-2026-08-12-01-15-API-SQLITE-PAGINACAO-6D8V",
|
|
16
|
+
"TASK-2026-08-12-01-15-ASSURANCE-SQLITE-BROWSER-5K9T",
|
|
17
|
+
"TASK-2026-08-12-01-15-CONTRATO-INVENTARIO-SQLITE-METRICAS-9A2R",
|
|
18
|
+
"TASK-2026-08-12-01-15-EXPORTACAO-SQLITE-PARIDADE-7H3S",
|
|
19
|
+
"TASK-2026-08-12-01-15-PROJECAO-SQLITE-SEMANTICA-4C7P",
|
|
20
|
+
"PRD-2026-08-12-01-25-AUDITORIA-INTEGRAL-DASHBOARD-SQLITE-Q7MK",
|
|
21
|
+
"SPEC-2026-08-12-01-15-AUDITORIA-DASHBOARD-SQLITE-METRICAS-N5QK",
|
|
22
|
+
"TASK-2026-08-12-19-43-ADICIONAR-HERMES-README-5V8V",
|
|
23
|
+
"TASK-2026-08-12-22-14-COST-LIFECYCLE-SUBTOTAL-PARITY-LJTE",
|
|
24
|
+
"TASK-2026-08-12-23-43-RECONCILE-OPEN-ITEMS-CURRENT-TELEMETRY-XUH8",
|
|
25
|
+
"TASK-2026-08-12-23-54-RECALIBRAR-OPENCLAW-ECONOMIA-ZRXN",
|
|
26
|
+
"TASK-2026-08-13-00-02-COST-MONITOR-OVERVIEW-RECONCILIATION-T9RX",
|
|
27
|
+
"TASK-2026-08-13-00-15-CORRIGIR-PRIORIDADE-KANBAN-SQLITE-9D72",
|
|
28
|
+
"TASK-2026-08-13-00-17-RECALIBRAR-ZAIP-NOTA-95-GWHV",
|
|
29
|
+
"TASK-2026-08-13-00-28-RECALIBRAR-TRAYCER-HERMES-KDZB",
|
|
30
|
+
"TASK-2026-08-13-00-30-COST-DAILY-DURATION-PARITY-JMBS",
|
|
31
|
+
"TASK-2026-08-13-00-33-PADRONIZAR-METRICAS-LISTA-OPERACIONAL-YSS8"
|
|
32
|
+
],
|
|
33
|
+
"updated_at": "2026-08-13T12:46:29.552Z"
|
|
34
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
# Linux launcher for the local, loopback-only ZAIP SQLite dashboard.
|
|
3
|
+
set -eu
|
|
4
|
+
|
|
5
|
+
launcher_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
6
|
+
workspace_root=$(CDPATH= cd -- "$launcher_dir/../.." && pwd)
|
|
7
|
+
runtime="$workspace_root/.agents/dashboard/packages/local-runtime/start-dashboard.mjs"
|
|
8
|
+
|
|
9
|
+
if [ ! -f "$runtime" ]; then
|
|
10
|
+
printf '%s\n' "Erro: o runtime do ZAIP Dashboard não foi encontrado. Reinstale ou reconstrua o ZAIP-AIOS." >&2
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
node_bin=${ZAIP_NODE:-}
|
|
15
|
+
if [ -n "$node_bin" ]; then
|
|
16
|
+
if [ ! -x "$node_bin" ]; then
|
|
17
|
+
printf '%s\n' "Erro: ZAIP_NODE não aponta para um executável Node.js: $node_bin" >&2
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
elif node_bin=$(command -v node 2>/dev/null); then
|
|
21
|
+
:
|
|
22
|
+
else
|
|
23
|
+
printf '%s\n' "Erro: Node.js 22 ou superior não foi encontrado no PATH. Instale-o e tente novamente." >&2
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
node_major=$("$node_bin" -p "process.versions.node.split('.')[0]" 2>/dev/null || true)
|
|
28
|
+
case "$node_major" in
|
|
29
|
+
''|*[!0-9]*)
|
|
30
|
+
printf '%s\n' "Erro: não foi possível determinar a versão do Node.js em $node_bin." >&2
|
|
31
|
+
exit 1
|
|
32
|
+
;;
|
|
33
|
+
esac
|
|
34
|
+
if [ "$node_major" -lt 22 ]; then
|
|
35
|
+
printf '%s\n' "Erro: o Dashboard SQLite requer Node.js 22 ou superior; encontrado Node.js $node_major." >&2
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
if ! "$node_bin" -e "const { builtinModules } = require('node:module'); process.exit(builtinModules.includes('node:sqlite') ? 0 : 1)" >/dev/null 2>&1; then
|
|
40
|
+
printf '%s\n' "Erro: este Node.js não disponibiliza node:sqlite. Reinstale o Node.js 22 ou superior." >&2
|
|
41
|
+
exit 1
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
cd "$workspace_root"
|
|
45
|
+
exec "$node_bin" "$runtime" "$@"
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"files": [
|
|
5
5
|
{
|
|
6
6
|
"path": "apps/catalog/.storybook/main.ts",
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
},
|
|
221
221
|
{
|
|
222
222
|
"path": "apps/catalog/package.json",
|
|
223
|
-
"sha256": "
|
|
223
|
+
"sha256": "e9ffdce8dcc8ed1fed3888add953e7e789261307b8d037a6001d98a38f644279"
|
|
224
224
|
},
|
|
225
225
|
{
|
|
226
226
|
"path": "apps/catalog/public/logo_novo_azul.png",
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
},
|
|
305
305
|
{
|
|
306
306
|
"path": "packages/local-runtime/package.json",
|
|
307
|
-
"sha256": "
|
|
307
|
+
"sha256": "73bbd424a00481ca49bd3265183e0b505cc313484459d0701361a987f2b89057"
|
|
308
308
|
},
|
|
309
309
|
{
|
|
310
310
|
"path": "packages/local-runtime/runtime.mjs",
|