@zaip-ai/cli 1.0.8 → 1.3.1
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 +1 -1
- package/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.js +1 -1
- package/dist/services/agent-adapters.js +3 -3
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-adapters.test.js +7 -1
- package/dist/services/agent-adapters.test.js.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.js +89 -7
- package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
- package/dist/services/codex-rules.d.ts +1 -1
- package/dist/services/codex-rules.d.ts.map +1 -1
- package/dist/services/codex-rules.js +7 -0
- package/dist/services/codex-rules.js.map +1 -1
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +1 -0
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/logger.test.js +2 -2
- package/dist/services/runtime-template.test.js +31 -7
- 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 +12 -3
- 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 +7 -7
- package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +2 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +8 -8
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +1 -1
- package/templates/.agents/dashboard/.tmp-run-list.json +254 -0
- package/templates/.agents/dashboard/.zaip-managed.json +457 -173
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-Z60df2r-.js → CostCalculationGuidePage-ovxurkIk.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-BgVgrfhQ.js +2310 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-Coc6pA-1.js → PricingSettingsDialog-vSvvOHQp.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BomxqCBU.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-zH758vfs.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-DLn-Mz2M.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-CaKwQP43.css → TraceabilityWorkspace-DvvavDLY.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-DKwP1stV.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-PoJA2PI1.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DFBuc_qp.js → icons-vendor-B_lDDHn1.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-B31GMG5O.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-CZQlsLV9.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CCQOHdVI.js → react-vendor-B3TJrD4O.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-pC2_0J8x.js → traceability-7f1j5wx3.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/playwright.dom.config.ts +32 -0
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +199 -140
- package/templates/.agents/dashboard/apps/frontend/src/AppOverlays.tsx +0 -21
- package/templates/.agents/dashboard/apps/frontend/src/DashboardAlternateContent.tsx +20 -11
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +14 -7
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +4 -2
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.dom.e2e.ts +56 -0
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.test.ts +21 -2
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.tsx +89 -19
- package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +19 -4
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +49 -3
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +29 -10
- package/templates/.agents/dashboard/apps/frontend/src/operations-period-render.test.ts +4 -4
- package/templates/.agents/dashboard/apps/frontend/src/overview-status-page.test.ts +4 -2
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +36 -26
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +2 -2
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-banner-semantics.test.ts +47 -6
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +59 -9
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-page-export.test.ts +32 -0
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-page-export.ts +21 -0
- package/templates/.agents/dashboard/apps/frontend/src/styles.css +19 -0
- package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.test.ts +32 -0
- package/templates/.agents/dashboard/apps/frontend/src/traceability-task-pagination.ts +36 -0
- package/templates/.agents/dashboard/apps/frontend/src/traceability-workspace.css +6 -2
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +137 -23
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +229 -35
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +61 -7
- package/templates/.agents/dashboard/apps/frontend/src/use-app-operations-pages.ts +3 -6
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.ts +7 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-list-page.test.ts +163 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-list-page.ts +136 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-operations-detail-export.ts +76 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-load-dedup.test.ts +23 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-load-dedup.ts +27 -0
- package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.test.ts +39 -15
- package/templates/.agents/dashboard/apps/frontend/src/work-list-pagination.ts +3 -4
- package/templates/.agents/dashboard/apps/frontend/vite.config.ts +4 -1
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +89 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +31 -16
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +43 -14
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +5 -5
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperAttributionPanel.tsx +60 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostDeveloperAttributionTable.tsx +191 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.loading.test.ts +14 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.run-page.test.ts +18 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +18 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostModelsAuditTable.tsx +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +75 -44
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorLoadErrors.tsx +35 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +162 -40
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +221 -79
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +132 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.tsx +70 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +203 -155
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +164 -125
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-copy.ts +2 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-views.ts +3 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor.css +5 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +35 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/index.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +2 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +32 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.test.ts +37 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +131 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +34 -17
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +0 -24
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +225 -424
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +24 -15
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-terminal-day.test.ts +6 -1
- 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/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/src/contracts.ts +46 -26
- package/templates/.agents/dashboard/modules/operations/src/react/DeveloperAttributionPanel.test.ts +54 -0
- package/templates/.agents/dashboard/modules/operations/src/react/DeveloperAttributionPanel.tsx +247 -0
- package/templates/.agents/dashboard/modules/operations/src/react/EntityTables.tsx +31 -11
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsMainContent.tsx +39 -13
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.helpers.tsx +107 -2
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.macro-metrics.test.ts +55 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.test.ts +23 -29
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverview.tsx +211 -184
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewTopPanel.tsx +127 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +60 -51
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageNavigation.tsx +1 -4
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPageOverview.tsx +3 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +43 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +181 -0
- package/templates/.agents/dashboard/modules/operations/src/react/PeriodSummaryTable.tsx +32 -10
- package/templates/.agents/dashboard/modules/operations/src/react/TaskDetailsDialog.tsx +9 -3
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.tsx +13 -5
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.test.ts +16 -6
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkList.tsx +14 -4
- package/templates/.agents/dashboard/modules/operations/src/react/conversation-rows.ts +1 -2
- package/templates/.agents/dashboard/modules/operations/src/react/developer-identities.test.ts +18 -0
- package/templates/.agents/dashboard/modules/operations/src/react/developer-identities.ts +30 -0
- package/templates/.agents/dashboard/modules/operations/src/react/execution-metrics.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +393 -4
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +484 -61
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +23 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/xlsx-runtime-e2e.test.ts +248 -0
- package/templates/.agents/dashboard/modules/operations/src/react/index.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.test.ts +4 -4
- package/templates/.agents/dashboard/modules/operations/src/react/operation-duration.ts +6 -4
- package/templates/.agents/dashboard/modules/operations/src/react/operations-coverage-toast.test.ts +4 -3
- package/templates/.agents/dashboard/modules/operations/src/react/operations-date-filters.css +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operations-global-filters.test.ts +4 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview-period-filter.test.ts +22 -12
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.css +4 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-overview.status-cards.test.ts +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +53 -6
- package/templates/.agents/dashboard/modules/operations/src/react/operations-view-order.test.ts +2 -4
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary.test.ts +82 -6
- package/templates/.agents/dashboard/modules/operations/src/react/period-summary.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +1 -1
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.test.ts +19 -7
- package/templates/.agents/dashboard/modules/operations/src/server/execution-relationship-counts.ts +4 -1
- package/templates/.agents/dashboard/modules/operations/src/server/metric-coverage.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/src/server/quick-daily-operations-projection.ts +11 -5
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/src/index.ts +1 -1
- package/templates/.agents/dashboard/packages/contracts/package.json +1 -1
- package/templates/.agents/dashboard/packages/contracts/src/index.ts +1 -0
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +533 -338
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +506 -311
- package/templates/.agents/dashboard/packages/local-runtime/gitignore.template +2 -0
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs +15 -7
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +44 -13
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +8 -3
- 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 +472 -145
- package/templates/.agents/dashboard/packages/local-runtime/scripts/test-unix-launchers.mjs +15 -3
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +141 -33
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +533 -338
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +6 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +3 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +89 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +33 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/server-classification-page.test.ts +87 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.test.ts +44 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +125 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +66 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-request-authority.test.ts +61 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-request-authority.ts +18 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-run-projections.test.ts +42 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +97 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot.test.ts +22 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server-sqlite-task-trace.ts +91 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +7 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test-fixtures.ts +36 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +230 -132
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +224 -182
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-artifact-counts.ts +28 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-agent-page.test.ts +63 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-agent-page.ts +109 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-aggregates.ts +497 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-fast-page-parity.test-support.ts +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-page.test.ts +176 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-page.ts +119 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-projection.ts +41 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-page.test.ts +16 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-page.ts +29 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +355 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-persistence.ts +121 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-timing.ts +27 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-metric-contract.ts +16 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +223 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +304 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-cache.test-support.ts +23 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-first-fold-types.ts +89 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider-fixture.ts +227 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +691 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +81 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +1655 -567
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +2168 -1268
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-cache.ts +129 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-install.test.ts +26 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-install.ts +28 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-seed.test.ts +116 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +146 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.test.mjs +165 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-refresh.mjs +140 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +255 -289
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +94 -88
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +5 -2
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +4 -1
- package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-loading.spec.ts +142 -0
- package/templates/.agents/dashboard/tests/e2e/specs/cost-monitor-pagination.spec.ts +232 -0
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +743 -0
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +189 -214
- 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 +6 -6
- 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 +3 -3
- package/templates/.agents/requirements/kanban-dashboard.md +10 -2
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +1 -1
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +4 -4
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/dashboard-ui-consistency.md +14 -0
- package/templates/.agents/rules/frontend-lite.md +4 -4
- package/templates/.agents/rules/run-lifecycle-closure.md +4 -4
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +1142 -1041
- package/templates/.agents/runtime/checksums.sha256 +6 -6
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
- package/templates/.agents/runtime/provenance.json +5 -5
- package/templates/.agents/runtime/sbom.cdx.json +3 -3
- package/templates/.agents/sales/playbook.md +32 -0
- package/templates/.agents/sales/roteiro-comercial-zaip.md +252 -0
- package/templates/.agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.test.mjs +20 -16
- package/templates/.agents/skills/zaip-aios/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-agent-catalog/SKILL.md +22 -0
- package/templates/.agents/skills/zaip-skill-agent-catalog/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-author-skills/SKILL.md +3 -2
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +49 -0
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/author-skill-scripts.test.mjs +27 -0
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/run-skill-tests.mjs +37 -0
- package/templates/.agents/skills/zaip-skill-backend/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +9 -2
- 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 +1 -1
- package/templates/.agents/skills/zaip-skill-change/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-change/references/observable-evidence.md +83 -0
- package/templates/.agents/skills/zaip-skill-dashboard-diagnostics/SKILL.md +22 -0
- package/templates/.agents/skills/zaip-skill-dashboard-diagnostics/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-enforce-architecture/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-frontend/SKILL.md +4 -3
- package/templates/.agents/skills/zaip-skill-frontend/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +10 -10
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +6 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/SKILL.md +27 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +6 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +111 -104
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-explicit-recovery.mjs +223 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +55 -9
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +145 -14
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +19 -9
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.test.mjs +82 -5
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/source-size-telemetry/model-identity-reconciliation.mjs +77 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +20 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-review/SKILL.md +5 -0
- package/templates/.agents/skills/zaip-skill-rules/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +6 -0
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +22 -90
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/scripts/ensure-node.mjs +28 -5
- package/templates/.agents/zaip-aios/INDEX.md +57 -22
- package/templates/.agents/zaip-aios/README.md +24 -13
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/02-requirements.md +5 -0
- package/templates/.agents/zaip-aios/guides/06-execucao.md +13 -4
- package/templates/.agents/zaip-aios/guides/07-revisao-e-validacao.md +7 -0
- package/templates/.agents/zaip-aios/guides/10-seguranca.md +23 -0
- package/templates/.agents/zaip-aios/guides/11-observabilidade-e-custos.md +6 -6
- package/templates/.agents/zaip-aios/guides/13-boas-praticas.md +3 -0
- package/templates/.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md +12 -3
- package/templates/.agents/zaip-aios/guides/17-como-o-custo-e-calculado.md +5 -5
- package/templates/.agents/zaip-aios/guides/18-catalogo-de-agentes.md +76 -0
- package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +95 -0
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +366 -0
- package/templates/.agents/zaip-aios/guides/21-telemetria-monitor-custos.md +46 -0
- package/templates/.agents/zaip-aios/guides/22-fluxos-e-roteamento.md +74 -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 +19 -0
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +111 -0
- package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +172 -0
- package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +149 -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 +756 -235
- package/templates/.agents/dashboard/apps/frontend/dist/assets/DashboardHelpDialog-Cs6dzDmW.js +0 -1505
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-QE1k9yZB.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-_Pf5DA_A.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/TraceabilityWorkspace-BVlz3DLZ.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-BZ5WdaMN.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-Cf9ctPVt.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-8A4DcNXM.js +0 -2
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DK_enB5Z.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-idle-cost-prefetch.ts +0 -45
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ui-table-wrap{isolation:isolate;scrollbar-gutter:stable;max-height:800px;position:relative;overflow:auto}.ui-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.86rem}.ui-table th,.ui-table td{border-bottom:1px solid var(--line,#ffffff14);text-align:left;vertical-align:top;padding:.86rem .8rem}.ui-table th{z-index:3;color:var(--muted,#94a3b8);letter-spacing:.06em;text-transform:uppercase;background:#0a0e17fa;font-size:.72rem;position:sticky;top:0}.ui-table th:hover,.ui-table th:focus-within{z-index:100}.ui-table-heading{justify-content:flex-end;align-items:center;gap:6px;width:100%;min-width:0;display:flex}.ui-table-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;line-height:1.35;overflow:hidden}.ui-table th:not(.is-number) .ui-table-heading{justify-content:flex-start}.ui-table-sort,.ui-table-info{box-sizing:border-box;aspect-ratio:1;width:18px;min-width:18px;max-width:18px;height:18px;min-height:18px;max-height:18px;color:inherit;font:inherit;cursor:pointer;background:#0f172aa8;border:1px solid #94a3b84d;border-radius:50%;flex:0 0 18px;place-items:center;padding:0;line-height:1;display:inline-grid;position:relative}.ui-table-sort:hover,.ui-table-sort:focus-visible{color:var(--accent,#60a5fa);outline-offset:2px;background:#3b82f624;border-color:#60a5faa6;outline:2px solid #60a5fa2e}.ui-table-sort-indicator{opacity:.82;font-size:8px;line-height:1}.ui-table-info{color:var(--muted,#94a3b8);text-transform:none;cursor:help;font-size:11px;font-style:normal}.ui-table-tooltip{z-index:2147483647;width:max-content;max-width:min(320px,70vw);color:var(--text,#f8fafc);letter-spacing:normal;text-align:left;text-transform:none;white-space:normal;pointer-events:none;background:#090e19fa;border:1px solid #60a5fa4d;border-radius:10px;padding:10px 12px;font-size:.76rem;font-weight:400;line-height:1.45;position:fixed;transform:translate(-50%);box-shadow:0 14px 35px #00000061}.ui-table tbody tr{transition:background .12s}.ui-table tbody tr:hover{background:#00b0f00a}.ui-table tbody .ui-table-row-action{cursor:pointer}.ui-table tbody .ui-table-row-action:focus-visible{outline:2px solid var(--accent,#00b0f0);outline-offset:-2px}.ui-table tbody tr:last-child td{border-bottom:0}.ui-table tfoot td{z-index:1;color:var(--text,#f8fafc);white-space:nowrap;background:#10192afa;border-top:1px solid #60a5fa59;border-bottom:0;font-weight:700;position:sticky;bottom:0}.ui-table .is-number{text-align:right}.ui-table strong,.ui-table small{display:block}.ui-table small{color:var(--muted,#94a3b8);overflow-wrap:anywhere;margin-top:.2rem}.ui-table-pagination{border-top:1px solid var(--border,#334155);background:var(--surface,#111827);color:var(--muted,#94a3b8);justify-content:flex-end;align-items:center;gap:.75rem;padding:.75rem .85rem;display:flex;position:sticky;left:0}.ui-table-pagination button{border:1px solid var(--border,#334155);background:var(--surface-elevated,#1e293b);min-height:2rem;color:var(--text,#f8fafc);cursor:pointer;border-radius:.45rem;padding:.35rem .7rem}.ui-table-pagination button:disabled{cursor:default;opacity:.45}.ui-empty{color:var(--muted,#94a3b8);text-align:center;margin:0;padding:1rem}.dashboard-header{z-index:60;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#020711f0;border-bottom:1px solid #94a3b81a;justify-content:space-between;align-items:center;gap:14px;min-height:64px;padding:10px 24px;display:flex;position:fixed;inset:0 0 auto}.dashboard-header-brand{align-items:start;gap:3px;display:grid}.dashboard-header-brand strong{color:var(--accent,#00b0f0);letter-spacing:-.02em;white-space:nowrap;align-items:center;gap:.75rem;font-size:1rem;display:flex}.dashboard-header-repository{color:#020617;background:#fff;border-radius:999px;align-items:center;gap:.25rem;padding-block:.3rem;padding-inline:.6rem .72rem;font-size:.76rem;font-weight:700;line-height:1;text-decoration:none;display:inline-flex}.dashboard-header-repository:hover{color:#020617;background:#e2e8f0}.dashboard-header-github{color:currentColor;flex:none;width:1.2em;height:1.2em}.dashboard-header-brand small{color:#64748b;white-space:nowrap;font-size:.61rem}.dashboard-header-logo{object-fit:contain;width:auto;height:28px;display:block;position:absolute;left:50%;transform:translate(-50%)}.dashboard-header-actions{background:#090e19e6;border:1px solid #ffffff12;border-radius:18px;align-items:center;gap:8px;padding:6px;display:flex;box-shadow:0 10px 30px #00000038}.dashboard-header button{border:1px solid var(--line-strong);min-height:40px;color:var(--text);cursor:pointer;background:#0f1422db;border-radius:11px;padding:0 14px;transition:border-color .12s,transform .12s,background .12s}.dashboard-header button:hover{border-color:#00b0f070;transform:translateY(-1px)}.dashboard-header button:disabled{cursor:wait;opacity:.65;transform:none}.dashboard-header-button,.dashboard-header-icon{justify-content:center;align-items:center;gap:10px;display:inline-flex}.dashboard-header-button{font-size:.82rem}.dashboard-header-icon{width:38px;padding:0}.dashboard-header-svg{flex:0 0 18px;width:18px;height:18px}.dashboard-header-flag{border-radius:6px;flex:0 0 20px;width:20px;height:20px;display:block;overflow:hidden}.dashboard-header-chevron{width:16px;height:16px;color:var(--muted);margin-left:2px}.dashboard-header-button.is-active,.dashboard-header-icon.is-active{color:var(--accent);background:#00b0f024;border-color:#00b0f070}.dashboard-header-anchor{position:relative}.dashboard-header-popup{z-index:70;background:#0b101cfa;border:1px solid #ffffff1a;border-radius:18px;min-width:280px;padding:14px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 20px 48px #0000006b}.dashboard-header-filter-popup{width:auto;max-height:calc(100vh - 98px);position:fixed;inset:74px 24px auto;overflow:auto}.dashboard-header-locale-popup,.dashboard-header-settings-popup{gap:8px;width:280px;display:grid}.dashboard-header-locale-popup button{text-align:left;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.dashboard-header-settings-content,.dashboard-header-settings-content label{gap:7px;display:grid}.dashboard-header-settings-content label>span,.dashboard-header-settings-content>strong{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.67rem}.dashboard-header-settings-content select,.dashboard-header-mobile-settings select{border:1px solid var(--line-strong);min-height:40px;color:var(--text);background:#0a1220;border-radius:11px;padding:0 10px}.dashboard-header-mobile-settings{display:none}@media (width<=1180px){.dashboard-header-logo{display:none}}@media (width<=760px){.dashboard-header{justify-content:flex-end;min-height:64px;padding:10px 14px}.dashboard-header-brand,.dashboard-header-refresh,.dashboard-header-filter-action,.dashboard-header-locale-action{display:none}.dashboard-header-logo{height:26px;display:block}.dashboard-header-actions{box-shadow:none;background:0 0;border:0;margin-left:auto;padding:0;display:flex}.dashboard-header-settings-action .dashboard-header-settings-popup{width:auto;max-height:calc(100vh - 88px);position:fixed;inset:74px 14px auto;overflow-y:auto}.dashboard-header-mobile-settings{border-bottom:1px solid #ffffff1a;gap:12px;padding-bottom:14px;display:grid}.dashboard-header-mobile-settings>small{color:#64748b;font-size:.68rem}.dashboard-header-mobile-settings>button{justify-content:center;align-items:center;gap:8px;display:flex}.dashboard-header-mobile-settings>label,.dashboard-header-mobile-filters{gap:7px;display:grid}.dashboard-header-mobile-settings>label span,.dashboard-header-mobile-filters>strong{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.67rem}}.period-average-summary{margin:0 0 12px;display:grid}.period-average-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.period-average-grid article{border:1px solid var(--line);background:#0a101ce6;border-radius:13px;gap:5px;min-width:0;min-height:74px;padding:12px 14px 11px;display:grid;position:relative;overflow:hidden}.period-average-grid article:before{content:"";background:#66aef0;height:2px;position:absolute;inset:0 0 auto}.period-average-grid span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.66rem;line-height:1.15;overflow:hidden}.period-average-grid article>strong{color:var(--text);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;align-self:end;font-size:clamp(1rem,1.35vw,1.25rem);line-height:1;overflow:hidden}@media (width<=1180px){.period-average-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.period-average-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=420px){.period-average-grid{grid-template-columns:1fr}}.operations-entity-details{border-radius:24px;grid-template-rows:auto minmax(0,1fr);width:min(980px,100%);max-height:min(760px,90vh)}.operations-entity-details-scroll{overscroll-behavior:contain;min-height:0;padding:20px;overflow-y:auto}body .operations-status-dialog-backdrop{box-sizing:border-box;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#020617c7;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:24px;overflow:hidden}body .operations-entity-details{border-radius:24px;grid-template-rows:auto minmax(0,1fr);width:min(980px,100%);max-width:980px;height:auto;max-height:min(760px,90dvh);display:grid;overflow:hidden}body .operations-entity-details-scroll{overscroll-behavior:contain;min-height:0;overflow-y:auto}.operations-entity-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;display:grid}.operations-entity-detail-grid div{background:#0f172a94;border:1px solid #94a3b824;border-radius:12px;min-width:0;padding:14px}.operations-entity-detail-grid dt{color:#71829a;letter-spacing:.06em;text-transform:uppercase;font-size:.61rem}.operations-entity-detail-grid dd{color:#dce8f7;overflow-wrap:anywhere;white-space:pre-wrap;margin:7px 0 0;font-size:.76rem;line-height:1.5}@media (width<=760px){.operations-entity-detail-grid{grid-template-columns:1fr}}.export-progress{color:#fff;z-index:20;background:#172033;border-radius:.5rem;gap:.5rem;max-width:calc(100vw - 2rem);padding:1rem;display:grid;position:fixed;bottom:1rem;right:1rem}.export-progress progress{width:18rem}.export-success{z-index:20;color:#fff;background:#198754;border-radius:.5rem;padding:.65rem .9rem;position:fixed;bottom:1rem;right:1rem}.excel-export-action{align-items:center;gap:8px;display:inline-flex}.operations-task-card .operations-elapsed-badge{color:#bfdbfe;font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap;background:#60a5fa1f;border:1px solid #60a5fa52;border-radius:999px;justify-self:start;padding:4px 8px;font-size:.64rem;font-weight:700}.operations-task-card .operations-elapsed-badge.is-alert{color:#fecaca;background:#ef444429;border-color:#f8717185}.operations-task-card.is-kind-prd{background:linear-gradient(#46376f80,#1e1934c7);border-color:#a78bfa9e}.operations-task-card.is-kind-spec{background:linear-gradient(#14274ec7,#09142beb);border-color:#3758a4ad}.operations-task-card.is-kind-task{background:linear-gradient(#5c400d7a,#2a1f0cc2);border-color:#fbbf2485}.operations-task-card.is-kind-prd:hover{border-color:#c4b5fd}.operations-task-card.is-kind-spec:hover{border-color:#6f91d8}.operations-task-card.is-kind-task:hover{border-color:#fde68a}.operations-unified-work .operations-task-card.is-kind-task{background:linear-gradient(#2d374880,#181f2cc7);border-color:#94a3b86b}.operations-unified-work .operations-task-card.is-kind-task:hover{border-color:#cbd5e1}.operations-task-origin-badge{color:#bfdbfe;letter-spacing:.03em;background:#60a5fa1f;border:1px solid #60a5fa4d;border-radius:999px;justify-self:start;padding:4px 8px;font-size:.64rem;font-weight:700}.operations-task-origin-badge.is-spec{color:#ddd6fe;background:#7c3aed24;border-color:#a78bfa57}.operations-task-origin-badge.is-prd{color:#fde68a;background:#b4530924;border-color:#fbbf2457}.operations-macro-dialog-backdrop{--macro-accent:#72c7ff;--macro-accent-rgb:114, 199, 255}.operations-macro-planning-dialog{--macro-accent:#72c7ff;--macro-accent-rgb:114, 199, 255;border:1px solid rgba(var(--macro-accent-rgb), .26);color:#eaf3ff;background:radial-gradient(circle at 86% 0%, rgba(var(--macro-accent-rgb), .12), transparent 32%), linear-gradient(155deg, #080d19fc, #0c1220fc);border-radius:24px;grid-template-rows:auto minmax(0,1fr);width:min(1180px,100%);max-height:min(820px,90vh);display:grid;position:relative;overflow:hidden;box-shadow:0 34px 120px #00000094}.operations-macro-planning-dialog[data-kind=prd]{--macro-accent:#bba7ff;--macro-accent-rgb:187, 167, 255}.operations-macro-dialog-header{background:#080c17b8;border-bottom:1px solid #94a3b824;justify-content:space-between;align-items:flex-start;gap:28px;padding:30px 34px 28px;display:flex}.operations-macro-heading{align-items:flex-start;gap:16px;min-width:0;display:flex}.operations-macro-heading-icon{border:1px solid rgba(var(--macro-accent-rgb), .34);width:48px;height:48px;color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .1);box-shadow:inset 0 0 24px rgba(var(--macro-accent-rgb), .04);border-radius:15px;flex:0 0 48px;place-items:center;display:grid}.operations-macro-heading>div:last-child{min-width:0}.operations-macro-kicker{color:var(--macro-accent);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:9px;font-size:.7rem;font-weight:800;display:flex}.operations-macro-kicker i{opacity:.5;background:currentColor;border-radius:999px;width:4px;height:4px}.operations-macro-heading h2{color:#f4f8ff;letter-spacing:-.025em;max-width:800px;margin:8px 0 0;font-size:clamp(1.45rem,3vw,2.15rem);line-height:1.16}.operations-macro-heading p{color:#8696ad;text-overflow:ellipsis;white-space:nowrap;max-width:min(720px,72vw);margin:10px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.73rem;overflow:hidden}.operations-macro-close{color:#cbd8e8;cursor:pointer;background:#121929e0;border:1px solid #94a3b838;border-radius:14px;flex:0 0 44px;place-items:center;width:44px;height:44px;transition:all .15s;display:grid}.operations-macro-close:hover{border-color:rgba(var(--macro-accent-rgb), .55);color:#fff;background:rgba(var(--macro-accent-rgb), .12)}.operations-macro-document-open{border:1px solid rgba(var(--macro-accent-rgb), .35);color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .09);cursor:pointer;border-radius:12px;align-items:center;gap:8px;margin-left:auto;padding:11px 13px;font-size:.72rem;font-weight:750;display:inline-flex}.operations-prd-document-backdrop{z-index:1001;background:#020610d1;place-items:center;padding:5vh 24px;display:grid;position:fixed;inset:0}.operations-prd-document-dialog{color:#eaf3ff;background:#0c1220;border:1px solid #bba7ff4d;border-radius:20px;grid-template-rows:auto minmax(0,1fr) auto;width:min(940px,100%);max-height:90vh;display:grid;overflow:hidden;box-shadow:0 34px 120px #0000009e}.operations-prd-document-dialog>header,.operations-prd-document-dialog>footer{border-bottom:1px solid #94a3b824;justify-content:space-between;align-items:flex-start;gap:20px;padding:22px 26px;display:flex}.operations-prd-document-dialog header span{color:#bba7ff;letter-spacing:.08em;align-items:center;gap:7px;font-size:.68rem;font-weight:800;display:flex}.operations-prd-document-dialog h2,.operations-prd-document-dialog p{margin:0}.operations-prd-document-dialog h2{margin-top:7px;font-size:1.35rem}.operations-prd-document-dialog p,.operations-prd-document-dialog>footer{color:#8696ad;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem}.operations-prd-document-dialog p{margin-top:6px}.operations-prd-document-dialog header button{color:#cbd8e8;cursor:pointer;background:0 0;border:0;padding:5px}.operations-prd-document-scroll{padding:26px;overflow:auto}.operations-prd-markdown{color:#d9e5f3;overflow-wrap:anywhere;font-size:.9rem;line-height:1.7}.operations-prd-markdown>:first-child{margin-top:0}.operations-prd-markdown>:last-child{margin-bottom:0}.operations-prd-markdown h1,.operations-prd-markdown h2,.operations-prd-markdown h3{color:#f2f6ff;line-height:1.25}.operations-prd-markdown h1{margin:0 0 20px;font-size:1.7rem}.operations-prd-markdown h2{margin:32px 0 14px;font-size:1.28rem}.operations-prd-markdown h3{margin:24px 0 10px;font-size:1.04rem}.operations-prd-markdown p{margin:0 0 16px}.operations-prd-markdown ul,.operations-prd-markdown ol{margin:0 0 18px;padding-left:24px}.operations-prd-markdown li+li{margin-top:6px}.operations-prd-markdown strong{color:#f0f5ff}.operations-prd-markdown a{color:#aeb9ff}.operations-prd-markdown :not(pre)>code{color:#d8d2ff;background:#bba7ff1f;border-radius:5px;padding:2px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em}.operations-prd-markdown pre{background:#03071094;border:1px solid #94a3b829;border-radius:10px;margin:0 0 18px;padding:14px;overflow:auto}.operations-prd-markdown pre code{white-space:pre;font:.78rem/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.operations-prd-markdown blockquote{color:#bdc9da;background:#bba7ff0f;border-left:3px solid #bba7ff;margin:0 0 18px;padding:8px 14px}.operations-prd-markdown hr{background:#94a3b833;border:0;height:1px;margin:26px 0}.operations-prd-markdown-table{border:1px solid #94a3b829;border-radius:10px;margin:0 0 18px;overflow-x:auto}.operations-prd-markdown table{border-collapse:collapse;width:100%;font-size:.8rem}.operations-prd-markdown th,.operations-prd-markdown td{text-align:left;vertical-align:top;border-bottom:1px solid #94a3b81f;padding:10px 12px}.operations-prd-markdown th{color:#e8e5ff;background:#bba7ff17}.operations-prd-markdown tr:last-child td{border-bottom:0}.operations-prd-document-dialog>footer{border-top:1px solid #94a3b824;border-bottom:0}.operations-prd-document-loading,.operations-prd-document-error{background:linear-gradient(135deg,#bba7ff17,#0c142247);border:1px solid #bba7ff33;border-radius:16px;gap:22px;padding:22px;display:grid}.operations-prd-document-loading-copy{align-items:center;gap:11px;display:flex}.operations-prd-document-loading-copy strong,.operations-prd-document-error strong{color:#edf4ff;font-size:.88rem}.operations-prd-document-loading-copy p,.operations-prd-document-error p{color:#8da0b8;margin:4px 0 0;font-family:inherit;font-size:.76rem}.operations-prd-document-spinner{color:#bba7ff;flex:none;animation:1s linear infinite operations-document-spin}.operations-prd-document-skeleton{gap:10px;display:grid}.operations-prd-document-skeleton i{background:linear-gradient(90deg,#94a3b81a,#bba7ff40,#94a3b81a) 0 0/220% 100%;border-radius:999px;height:11px;animation:1.5s ease-in-out infinite operations-document-shimmer;display:block}.operations-prd-document-skeleton i:nth-child(2){width:88%;animation-delay:90ms}.operations-prd-document-skeleton i:nth-child(3){width:72%;animation-delay:.18s}.operations-prd-document-skeleton i:nth-child(4){width:82%;animation-delay:.27s}.operations-prd-document-error{border-color:#fb923c5c}.operations-prd-document-error button{color:#e8e5ff;cursor:pointer;background:#bba7ff1a;border:1px solid #bba7ff5c;border-radius:9px;align-items:center;gap:7px;width:fit-content;padding:8px 11px;font-size:.75rem;font-weight:750;display:inline-flex}@keyframes operations-document-spin{to{transform:rotate(360deg)}}@keyframes operations-document-shimmer{to{background-position:-220% 0}}@media (prefers-reduced-motion:reduce){.operations-prd-document-spinner,.operations-prd-document-skeleton i{animation:none}}.operations-macro-dialog-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-color:rgba(var(--macro-accent-rgb), .42) transparent;gap:26px;min-height:0;max-height:none;padding:28px 34px 36px;display:grid;overflow-y:auto}.operations-macro-back{width:max-content;max-width:100%;color:var(--macro-accent);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:0;display:flex}.operations-macro-back span{gap:2px;min-width:0;font-size:.75rem;font-weight:750;display:grid}.operations-macro-back small{color:#788aa2;text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;font-weight:500;overflow:hidden}.operations-macro-usage-strip,.operations-macro-overview-cards,.operations-macro-mini-usage{margin:0}.operations-macro-usage-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.operations-macro-usage-strip>div{border:1px solid rgba(var(--macro-accent-rgb), .18);background:rgba(var(--macro-accent-rgb), .055);border-radius:16px;grid-template-rows:auto auto;grid-template-columns:36px minmax(0,1fr);column-gap:13px;min-height:76px;padding:16px 18px;display:grid}.operations-macro-usage-strip>div>span{width:36px;height:36px;color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .11);border-radius:11px;grid-row:1/3;align-self:center;place-items:center;display:grid}.operations-macro-usage-strip dt,.operations-macro-overview-cards dt,.operations-macro-mini-usage dt{color:#75869e;letter-spacing:.055em;text-transform:uppercase;font-size:.64rem}.operations-macro-usage-strip dd{color:#f1f7ff;margin:3px 0 0;font-size:1.08rem;font-weight:800}.operations-macro-overview-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.operations-macro-overview-cards>div{background:#0f172a85;border:1px solid #94a3b81f;border-radius:14px;grid-template-rows:auto auto;grid-template-columns:28px minmax(0,1fr);column-gap:11px;min-height:66px;padding:15px 16px;display:grid}.operations-macro-overview-cards>div>span{color:#7f91a9;grid-row:1/3;align-self:center}.operations-macro-overview-cards dd{color:#dce8f7;text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:.93rem;font-weight:750;overflow:hidden}.operations-macro-section{gap:18px;padding-top:6px;display:grid}.operations-macro-section-heading{grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:14px;display:grid}.operations-macro-section-heading>span{width:38px;height:38px;color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .1);border-radius:12px;place-items:center;display:grid}.operations-macro-section-heading h3,.operations-macro-section-heading p{margin:0}.operations-macro-section-heading h3{color:#edf5ff;font-size:.94rem}.operations-macro-section-heading p{color:#8293aa;margin-top:4px;font-size:.72rem;line-height:1.45}.operations-macro-section-heading>strong{border:1px solid rgba(var(--macro-accent-rgb), .2);min-width:34px;height:34px;color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .08);border-radius:11px;place-items:center;font-size:.78rem;display:grid}.operations-prd-spec-grid,.operations-spec-task-list{gap:14px;display:grid}.operations-prd-spec-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-prd-spec-grid>button,.operations-spec-task-list>button{color:#dce8f7;cursor:pointer;text-align:left;background:#0e1727c7;border:1px solid #5d729247;min-width:0;transition:border-color .15s,background .15s,transform .15s}.operations-prd-spec-grid>button:hover,.operations-spec-task-list>button:hover{border-color:rgba(var(--macro-accent-rgb), .62);background:rgba(var(--macro-accent-rgb), .08);transform:translateY(-1px)}.operations-prd-spec-grid>button{border-radius:17px;grid-template-columns:42px minmax(0,1fr) auto;grid-template-areas:"index copy action"".usage usage";gap:16px 15px;padding:18px;display:grid}.operations-prd-spec-index{width:42px;height:42px;color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .1);border-radius:12px;grid-area:index;place-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;font-weight:800;display:grid}.operations-prd-spec-copy,.operations-spec-task-copy{gap:6px;min-width:0;display:grid}.operations-prd-spec-copy{grid-area:copy}.operations-prd-spec-copy>span,.operations-spec-task-copy>span{color:#8092aa;letter-spacing:.07em;text-transform:uppercase;font-size:.62rem;font-weight:800}.operations-prd-spec-copy strong,.operations-spec-task-copy strong{color:#edf4ff;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;line-height:1.35;overflow:hidden}.operations-prd-spec-copy code,.operations-spec-task-copy code{color:#70839c;text-overflow:ellipsis;white-space:nowrap;font-size:.64rem;overflow:hidden}.operations-prd-spec-action{color:var(--macro-accent);grid-area:action;place-self:center end;align-items:center;gap:8px;display:flex}.operations-prd-spec-action small{color:#8da0b8;white-space:nowrap;font-size:.68rem}.operations-prd-spec-grid .operations-macro-mini-usage{grid-area:usage}.operations-macro-mini-usage{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.operations-macro-mini-usage>div{border-top:1px solid #94a3b81c;min-width:0;padding-top:11px}.operations-macro-mini-usage dd{color:#dce9f8;text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:.76rem;font-weight:750;overflow:hidden}.operations-spec-parent{color:#bba7ff;background:#bba7ff0e;border:1px solid #bba7ff2e;border-radius:13px;align-items:center;gap:9px;min-width:0;padding:12px 14px;font-size:.72rem;display:flex}.operations-spec-parent span{color:#8091a8}.operations-spec-parent strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.operations-spec-task-list>button{border-radius:15px;grid-template-columns:42px minmax(180px,1fr) minmax(230px,.72fr) auto;align-items:center;gap:14px;padding:14px 15px;display:grid}.operations-spec-task-sequence{height:42px;color:var(--macro-accent);background:rgba(var(--macro-accent-rgb), .09);border-radius:12px;place-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;font-weight:800;display:grid;position:relative}.operations-spec-task-sequence i{background:var(--macro-accent);width:5px;height:5px;box-shadow:0 0 8px rgba(var(--macro-accent-rgb), .72);border-radius:999px;position:absolute;top:7px;right:7px}.operations-spec-task-action{color:var(--macro-accent);white-space:nowrap;align-items:center;gap:7px;font-size:.71rem;font-weight:750;display:flex}.operations-macro-document{color:#7890aa;background:#0c142285;border:1px solid #94a3b81f;border-radius:14px;align-items:center;gap:12px;min-width:0;padding:13px 15px;display:flex}.operations-macro-document div{gap:4px;min-width:0;display:grid}.operations-macro-document span{letter-spacing:.06em;text-transform:uppercase;font-size:.63rem;font-weight:750}.operations-macro-document code{color:#a4b8cf;text-overflow:ellipsis;white-space:nowrap;font-size:.69rem;overflow:hidden}.operations-macro-empty{border:1px dashed rgba(var(--macro-accent-rgb), .22);color:#8193aa;background:rgba(var(--macro-accent-rgb), .025);border-radius:16px;justify-content:center;align-items:center;gap:10px;min-height:92px;display:flex}.operations-macro-empty p{margin:0;font-size:.78rem}@media (width<=860px){.operations-prd-spec-grid{grid-template-columns:1fr}.operations-spec-task-list>button{grid-template-columns:42px minmax(0,1fr) auto}.operations-spec-task-list .operations-macro-mini-usage{grid-column:2/4}}@media (width<=620px){.operations-macro-dialog-backdrop{padding:0}.operations-macro-planning-dialog{border-radius:0}.operations-macro-dialog-header{gap:12px;padding:22px}.operations-macro-heading{gap:11px}.operations-macro-document-open{margin-left:0}.operations-macro-heading-icon{border-radius:12px;flex-basis:40px;width:40px;height:40px}.operations-macro-dialog-scroll{gap:22px;padding:22px 22px 28px}.operations-macro-usage-strip,.operations-macro-overview-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-spec-task-list>button{grid-template-columns:38px minmax(0,1fr)}.operations-spec-task-list .operations-macro-mini-usage,.operations-spec-task-action{grid-column:2}.operations-spec-task-action{justify-self:start}}@media (width<=430px){.operations-macro-heading h2{font-size:1.25rem}.operations-macro-usage-strip,.operations-macro-overview-cards{grid-template-columns:1fr}.operations-prd-spec-grid>button{grid-template-columns:38px minmax(0,1fr);grid-template-areas:"index copy"".usage"".action";row-gap:14px}.operations-prd-spec-index{width:38px;height:38px}.operations-prd-spec-action{justify-self:start}}.operations-unified-work{gap:14px;display:grid}.operations-work-type-filters{flex-wrap:wrap;gap:8px;display:flex}.operations-work-type-filters button{border:1px solid var(--line);color:var(--muted);cursor:pointer;font:inherit;background:#0c121fd1;border-radius:999px;padding:9px 14px;font-size:.78rem;font-weight:400}.operations-work-type-filters button:hover,.operations-work-type-filters button:focus-visible,.operations-work-type-filters button.is-active{color:#8fd1ff;background:#1f4f7357;border-color:#60bcff94}.operations-work-board .operations-column.is-definition{--column-status-color:#c4b5fd;--column-status-tint:#a78bfa29;--column-card-border:#a78bfa85;--column-card-background:linear-gradient(180deg, #46376f80, #1e1934c7)}.operations-work-board .operations-column.is-planning{--column-status-color:#8da8e8;--column-status-tint:#3758a433;--column-card-border:#4c6fbfa3;--column-card-background:linear-gradient(180deg, #182d58c7, #0a162feb)}.operations-work-board .operations-column.is-ready{--column-status-color:#67e8f9;--column-status-tint:#06b6d426;--column-card-border:#22d3ee85;--column-card-background:linear-gradient(180deg, #1248548f, #09232bdb)}.operations-work-kind{color:#bfdbfe;letter-spacing:.05em;background:#60a5fa2e;border-radius:999px;justify-self:start;padding:5px 9px;font-size:.67rem;font-weight:800}.operations-work-kind.is-prd{color:#ddd6fe;background:#a78bfa33}.operations-work-kind.is-spec{color:#b8ccf2;background:#1e3a8a85}.operations-work-status{color:#cbd5e1;letter-spacing:.03em;background:#4755693d;border:1px solid #94a3b85c;border-radius:999px;justify-self:start;padding:4px 8px;font-size:.64rem;font-weight:700}.operations-work-status.is-executing{color:#8fd1ff;background:#1f4f7357;border-color:#60bcff94}.operations-work-status.is-ready{color:#a5f3fc;background:#06b6d426;border-color:#67e8f980}.operations-work-status.is-completed{color:#86efac;background:#15803d33;border-color:#4ade8070}.operations-work-status.is-blocked,.operations-work-status.is-failed{color:#fdba74;background:#9a341233;border-color:#fb923c7a}.operations-work-card-counts{color:var(--muted);font-size:.72rem}.operations-work-card{cursor:default}.operations-work-card:hover{box-shadow:none;transform:none}.operations-work-card-open{min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;flex-wrap:wrap;align-items:flex-start;gap:6px;padding:0;display:flex}.operations-work-card-first-line{flex-basis:100%;align-items:center;gap:6px;min-height:24px;padding-right:76px;display:flex}.operations-work-card-open>.operations-work-next,.operations-work-card-open>.operations-work-status,.operations-work-card-open>.operations-risk{margin-top:4px}.operations-work-card-open>strong{flex-basis:100%;margin-top:4px}.operations-work-card{position:relative}.operations-work-reorder{position:absolute;top:10px;right:10px}.operations-work-reorder button{min-width:24px;min-height:24px;padding:0}.operations-work-card-open:hover>strong,.operations-work-card-open:focus-visible>strong{color:#8fd1ff;text-underline-offset:3px;text-decoration:underline}.operations-work-card-open:focus-visible{outline-offset:4px;outline:2px solid #67e8f9}.operations-work-card-open>strong{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;display:-webkit-box;overflow:hidden}.operations-work-order,.operations-work-next{border-radius:999px;justify-self:start;padding:3px 7px;font-size:.62rem;font-weight:800}.operations-work-order{color:#bfdbfe;background:#60a5fa29}.operations-work-next{color:#a5f3fc;background:#22d3ee2e}.operations-work-reorder{gap:6px;display:flex}.operations-work-reorder button{color:#cbd5e1;cursor:pointer;min-width:32px;font:inherit;background:#0f172ab3;border:1px solid #94a3b866;border-radius:8px}.operations-work-reorder button:hover,.operations-work-reorder button:focus-visible{color:#a5f3fc;border-color:#67e8f9}.operations-work-card>small[title]{letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;width:100%;min-width:0;font-size:.58rem;line-height:1.2;display:block;overflow:hidden}.operations-work-list-table{min-width:0}.operations-work-list-table .ui-table-wrap{scrollbar-color:#60bcffc7 #0f172ab8;scrollbar-gutter:stable both-edges;scrollbar-width:auto;overflow:scroll auto}.operations-work-list-table .ui-table-wrap::-webkit-scrollbar{height:12px}.operations-work-list-table .ui-table-wrap::-webkit-scrollbar-thumb{background:#60bcffc7;border:3px solid #0f172ab8;border-radius:999px}.operations-work-list-table .ui-table-wrap::-webkit-scrollbar-track{background:#0f172ab8}.operations-work-list-table .ui-table{min-width:1480px}.operations-work-list-table .ui-table th,.operations-work-list-table .ui-table td{padding:.78rem .6rem}.operations-work-list-identity{gap:5px;min-width:280px;display:grid}.operations-work-list-identity .operations-work-kind{width:fit-content}.operations-work-list-identity strong,.operations-work-list-identity small{overflow-wrap:anywhere}.operations-work-list-identity small{color:var(--muted);font-size:.62rem}.operations-work-list-table .operations-status,.operations-work-list-table .operations-risk{white-space:nowrap;display:inline-flex}.operations-work-card .operations-work-reorder button{box-sizing:border-box;width:32px;min-width:32px;height:32px;min-height:32px;padding:0}.operations-period-summary .ui-table-heading{min-width:96px}.operations-period-summary .ui-table th:first-child .ui-table-heading{min-width:120px}.operations-period-summary .ui-table td,.operations-period-summary .ui-table th{white-space:nowrap}.operations-overview{margin-bottom:22px}.operations-overview-controls{justify-content:flex-end;margin-bottom:10px;display:flex}.operations-overview-period{color:#8fa7c2;align-items:center;gap:8px;font-size:.78rem;font-weight:700;display:inline-flex}.operations-overview-period select{border:1px solid var(--line-strong);min-width:138px;color:var(--text);font:inherit;background:#08111feb;border-radius:9px;padding:7px 30px 7px 10px}.operations-overview-period select:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.operations-kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:12px;display:grid}.operations-kpi,.operations-panel,.operations-column,.operations-macro-card,.operations-content{border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0e17f0;border-radius:18px}.operations-kpi{gap:6px;min-height:108px;padding:16px 18px;display:grid;position:relative;overflow:hidden}.operations-kpi.is-selectable{border:1px solid var(--line);width:100%;color:inherit;cursor:pointer;font:inherit;text-align:left;transition:border-color .14s,box-shadow .14s,transform .14s}.operations-kpi.is-selectable:hover,.operations-kpi.is-selectable:focus-visible{box-shadow:var(--shadow), 0 0 0 2px #60a5fa24;border-color:#60a5fab8;outline:none;transform:translateY(-2px)}.operations-kpi:before{content:"";background:linear-gradient(90deg,#00b0f0,#00b0f00a);height:4px;position:absolute;inset:0 0 auto}.operations-kpi.is-featured{background:linear-gradient(135deg,#123655f5,#0a192bf5);border-color:#60a5fa7a}.operations-kpi span,.operations-kpi small,.operations-panel small{color:#8fa7c2}.operations-kpi span{font-size:.8rem}.operations-kpi strong{color:#f3f8ff;font-size:clamp(1.5rem,2vw,2.35rem);line-height:.95}.operations-kpi small{align-self:end;font-size:.75rem}.operations-chart-grid{grid-template-columns:minmax(0,calc(50% - 162px)) 300px 180px minmax(280px,1fr);gap:12px;display:grid}.operations-panel{min-height:264px;padding:16px 18px}.operations-panel-wide{grid-column:span 1}.operations-panel-header{gap:3px;margin-bottom:14px;display:grid}.operations-panel-header-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.operations-panel-header h2{margin:0;font-size:1rem}.operations-status-visibility-toggle{color:#8fa7c2;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex:none;place-items:center;width:30px;height:30px;padding:0;display:grid}.operations-status-visibility-toggle:hover,.operations-status-visibility-toggle:focus-visible{color:#e6f6ff;background:#60a5fa1f;border-color:#60a5fa94;outline:none}.operations-stacked-bar{background:#243448db;border-radius:999px;height:14px;margin-bottom:16px;display:flex;overflow:hidden}.operations-stacked-bar i{min-width:4px;display:block}.operations-legend-grid{gap:9px;display:grid}.operations-legend-row{grid-template-columns:10px 1fr auto;align-items:center;gap:10px;font-size:.82rem;display:grid}.operations-status-filter{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:9px;padding:3px 4px;transition:background .12s,color .12s}.operations-status-filter:hover,.operations-status-filter:focus-visible{color:#e6f6ff;background:#00b0f017;outline:none}.operations-status-filter:hover span,.operations-status-filter:focus-visible span{color:#e6f6ff}.operations-legend-row i{border-radius:999px;width:10px;height:10px}.operations-legend-row span{color:var(--muted);text-transform:capitalize}.operations-legend-row .operations-legend-value{color:inherit;text-transform:none;align-items:baseline;gap:6px;display:inline-flex}.operations-legend-value small{min-width:42px;color:var(--muted);text-align:right;font-size:.72rem}.operations-donut-wrap{width:136px;height:136px;margin:0 auto 14px;position:relative}.operations-panel-risk .operations-donut-wrap{margin-inline:auto}.operations-donut{border-radius:50%;width:100%;height:100%;-webkit-mask:radial-gradient(circle,#0000 0 53%,#000 55%);mask:radial-gradient(circle,#0000 0 53%,#000 55%)}.operations-donut-wrap>div:last-child{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.operations-donut-wrap strong{font-size:1.7rem}.operations-donut-wrap span{color:#8fa7c2;font-size:.75rem}.operations-token-bars{gap:17px;padding-top:4px;display:grid}.operations-token-row{grid-template-columns:1fr auto;gap:7px 10px;font-size:.82rem;display:grid}.operations-token-row span{color:var(--muted)}.operations-token-row>div{background:#243448db;border-radius:999px;grid-column:1/-1;height:10px;overflow:hidden}.operations-token-row i{border-radius:inherit;height:100%;display:block}.operations-type-summary{gap:10px;display:grid}.operations-type-summary>div{border-bottom:1px solid #4a608047;gap:5px;padding:10px 0;display:grid}.operations-type-summary>div:first-child{padding-top:4px}.operations-type-summary>div:last-child{border-bottom:0}.operations-type-summary span{color:var(--muted);font-size:.8rem}.operations-type-summary strong{color:#f3f8ff;font-variant-numeric:tabular-nums;text-align:left;font-size:1rem}.operations-panel-type{flex-direction:column;display:flex}.operations-panel-type.is-en-us .operations-panel-header>small{letter-spacing:-.01em;white-space:nowrap;font-size:.72rem}.operations-latest-task-created{border-top:1px solid #4a608047;gap:5px;margin-top:auto;padding-top:14px;display:grid}.operations-latest-task-created span{color:var(--muted);font-size:.76rem}.operations-latest-task-created strong{color:#f3f8ff;font-variant-numeric:tabular-nums;font-size:.88rem;line-height:1.35}.operations-panel-type.is-en-us .operations-latest-task-created strong{letter-spacing:-.02em;white-space:nowrap;font-size:.75rem}.operations-run-bars{align-items:flex-end;gap:9px;height:184px;padding-top:12px;display:flex}.operations-run-bar{appearance:none;color:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:7px;min-width:0;height:100%;padding:0;display:flex}.operations-run-bar:hover i,.operations-run-bar:focus-visible i{filter:brightness(1.12)}.operations-run-bar:focus-visible{outline-offset:3px;border-radius:8px;outline:2px solid #60a5fa}.operations-run-bar:disabled{cursor:default}.operations-run-bars strong{color:#d8e6f5;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.68rem;font-weight:650;line-height:1}.operations-run-bars i{background:linear-gradient(#00b0f0,#60a5fa);border-radius:10px 10px 3px 3px;width:100%;min-height:8px;display:block}.operations-run-bar.is-duration-unavailable i{background:#7089a55c;min-height:0}.operations-run-bars span{color:#8fa7c2;text-align:center;text-transform:uppercase;place-content:start center;min-height:2.4em;font-size:.65rem;line-height:1.2;display:grid}.operations-top-task-metrics{border-top:1px solid #4a608047;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px;padding-top:14px;display:grid}.operations-top-task-metrics>div{background:#11182794;border:1px solid #4a60804d;border-radius:12px;gap:5px;min-width:0;padding:10px;display:grid}.operations-top-task-metrics span,.operations-top-task-metrics small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.operations-top-task-metrics span{color:#8fa7c2;font-size:.68rem}.operations-top-task-metrics strong{color:#f3f8ff;font-variant-numeric:tabular-nums;font-size:.88rem;line-height:1.1}.operations-top-task-metrics small{color:#7089a5;font-size:.62rem}.operations-status-dialog-backdrop{box-sizing:border-box;z-index:80;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:100vw;max-width:none;height:100dvh;max-height:none;color:inherit;background:#020617c7;border:0;place-items:center;margin:0;padding:24px;display:grid;position:fixed;inset:0;overflow:hidden}.operations-status-dialog{border:1px solid var(--line-strong);background:linear-gradient(#0a0e17fc,#0d1220fc);border-radius:24px;grid-template-rows:auto auto minmax(0,1fr);width:min(780px,100%);max-height:min(760px,90vh);display:grid;overflow:hidden;box-shadow:0 30px 100px #00000080}.operations-status-dialog>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:18px;padding:24px 26px 20px;display:flex}.operations-status-dialog header span,.operations-status-dialog header p{color:var(--muted);font-size:.78rem}.operations-status-dialog h2,.operations-status-dialog header p{margin:4px 0 0}.operations-status-dialog h2{font-size:clamp(1.4rem,3vw,2rem)}.operations-status-dialog>header>button{border:1px solid var(--line-strong);width:40px;height:40px;color:var(--text);cursor:pointer;background:#0f1422e6;border-radius:12px;flex:0 0 40px;font-size:1.25rem}.operations-status-dialog-search{gap:6px;padding:16px 16px 0;display:grid}.operations-status-dialog-search span{color:var(--muted);font-size:.74rem;font-weight:700}.operations-status-dialog-search input{border:1px solid var(--line-strong);width:100%;color:var(--text);background:#08111feb;border-radius:12px;padding:11px 13px}.operations-status-dialog-search input:focus-visible{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.operations-status-task-list{overscroll-behavior:contain;gap:9px;min-height:0;max-height:none;padding:16px;display:grid;overflow-y:auto}.operations-status-task-list>button{border:1px solid var(--line);width:100%;color:var(--text);cursor:pointer;text-align:left;background:#111827c7;border-radius:14px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:14px 16px;transition:border-color .12s,background .12s,transform .12s;display:grid}.operations-status-task-list>button:hover,.operations-status-task-list>button:focus-visible{background:#00b0f014;border-color:#00b0f06b;outline:none;transform:translateY(-1px)}.operations-status-task-main{gap:5px;min-width:0;display:grid}.operations-status-task-main strong,.operations-status-task-main small{overflow-wrap:anywhere}.operations-status-task-main small{color:var(--muted)}.operations-status-task-action{color:var(--accent);white-space:nowrap;font-size:.76rem}@media (width<=760px){.operations-status-dialog-backdrop{padding:12px}.operations-status-dialog{border-radius:18px}.operations-status-dialog>header{padding:20px}.operations-status-task-list>button{grid-template-columns:minmax(0,1fr) auto}.operations-status-task-action{grid-column:1/-1}}.operations-page{width:min(1600px,100%);margin:0 auto;padding:84px 24px 56px}.operations-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.operations-hero{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:none}.operations-hero p{color:#95aac4;margin:0;font-size:.78rem}.operations-hero .operations-eyebrow{color:#00b0f0;letter-spacing:.16em;text-transform:uppercase;margin-bottom:6px;font-size:.82rem;font-weight:800}.operations-last-updated{color:#64748b;margin-top:7px;font-size:.64rem;display:none}.operations-actions{background:#090e19e6;border:1px solid #ffffff12;border-radius:18px;flex-wrap:wrap;align-items:center;gap:8px;padding:6px;display:none;box-shadow:0 10px 30px #00000038}.operations-actions button,.operations-toolbar button,.operations-dialog button{border:1px solid var(--line-strong);min-height:42px;color:var(--text);cursor:pointer;background:#0a0e17f5;border-radius:12px;padding:10px 14px;transition:transform .12s,border-color .12s,background .12s}.operations-actions button:hover,.operations-toolbar button:hover,.operations-dialog button:hover{border-color:#00b0f085;transform:translateY(-1px)}.operations-actions button:disabled{cursor:wait;opacity:.62;transform:none}.operations-nav-icon,.operations-nav-button{justify-content:center;align-items:center;gap:10px;display:inline-flex}.operations-nav-icon{width:42px;padding:0}.operations-nav-svg{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;flex:0 0 18px;width:18px;height:18px}.operations-locale-flag{border-radius:6px;flex:0 0 20px;width:20px;height:20px;display:block;overflow:hidden}.operations-locale-chevron{width:16px;height:16px;color:var(--muted);margin-left:2px}.operations-nav-button.is-active,.operations-nav-icon.is-active{color:var(--accent);background:#00b0f024;border-color:#00b0f070}.operations-nav-popup-anchor{position:relative}.operations-nav-popup{z-index:30;background:#0b101cfa;border:1px solid #ffffff1a;border-radius:18px;min-width:280px;padding:14px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 20px 48px #0000006b}.operations-filter-popup{grid-template-columns:minmax(240px,2fr) repeat(2,minmax(150px,1fr)) auto;align-items:end;gap:10px;width:min(850px,100vw - 48px);display:grid}.operations-filter-popup label,.operations-settings-popup{gap:7px;display:grid}.operations-filter-popup label>span,.operations-settings-popup>strong{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.67rem}.operations-filter-popup input,.operations-filter-popup select{border:1px solid var(--line-strong);min-height:42px;color:var(--text);background:#0a1220;border-radius:11px;padding:0 11px}.operations-locale-popup,.operations-settings-popup{width:280px}.operations-locale-popup{gap:8px;display:grid}.operations-locale-popup button{text-align:left;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.operations-toolbar{justify-content:space-between;align-items:center;gap:12px;margin:22px 0 12px;display:flex}.operations-run-kind-toolbar{margin-top:8px}.operations-toolbar nav{flex-wrap:wrap;gap:6px;min-width:0;padding:2px;display:flex;overflow-x:visible}.operations-toolbar button{white-space:nowrap;min-height:40px;padding:8px 10px;font-size:.82rem}.operations-toolbar button.is-active{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}.operations-tab-export{flex:none;justify-content:flex-end;display:flex}.operations-tab-export .excel-export-action{color:#042330;background:linear-gradient(135deg,#00b0f0 0%,#72f4fb 100%);border:1px solid #0000;border-radius:999px;gap:6px;min-height:44px;padding:0 10px;font-size:.82rem;font-weight:650}.operations-tab-export .excel-export-action svg{width:14px;height:14px}.operations-tab-export .excel-export-action:hover:not(:disabled){color:#042330;background:linear-gradient(135deg,#00b0f0 0%,#72f4fb 100%);border-color:#72f4fbb8}.operations-toolbar nav button:focus-visible,.operations-tab-export .excel-export-action:focus-visible{outline-offset:2px;outline:3px solid #00b0f0}.operations-toolbar input{border:1px solid var(--line-strong);min-width:260px;min-height:42px;color:var(--text);background:#0a0e17f5;border-radius:12px;padding:10px 12px}.operations-content{padding:14px}.operations-execution-table .ui-table-wrap{overflow-x:auto}.operations-execution-table .ui-table{table-layout:fixed;min-width:2080px}.operations-execution-table .ui-table th,.operations-execution-table .ui-table td{box-sizing:border-box;min-width:0;padding:.72rem .48rem}.operations-execution-table .ui-table th:first-child{width:12%}.operations-execution-table .ui-table th:nth-child(2){width:25%}.operations-execution-table .ui-table th:nth-child(3),.operations-execution-table .ui-table th:nth-child(4){width:9%}.operations-execution-table .ui-table th:nth-child(5),.operations-execution-table .ui-table th:nth-child(9){width:5%}.operations-execution-table .ui-table th:nth-child(6),.operations-execution-table .ui-table th:nth-child(7){width:8%}.operations-execution-table .ui-table th:nth-child(8){width:10%}.operations-execution-table .ui-table th:nth-child(10),.operations-execution-table .ui-table th:nth-child(11){width:4.5%}.operations-execution-table .ui-table td:nth-child(2){overflow-wrap:anywhere}.operations-execution-table .ui-table-heading{gap:3px;min-height:2.7rem}.operations-execution-table .ui-table-label{text-overflow:clip;white-space:nowrap;overflow:visible}.operations-board{grid-template-columns:repeat(9,minmax(240px,1fr));gap:16px;padding-bottom:4px;display:grid;overflow-x:auto}.operations-column{min-width:0;min-height:420px;box-shadow:none;background:#0d1220eb;padding:18px}.operations-column>header{border-bottom:1px solid #4a608047;border-top:3px solid var(--column-status-color,var(--line-strong));background:linear-gradient(105deg, var(--column-status-tint,transparent), transparent 70%);text-transform:uppercase;border-radius:12px 12px 0 0;justify-content:space-between;gap:12px;margin:-18px -18px 14px;padding:15px 18px 14px;font-size:.78rem;display:flex}.operations-column-trigger,.operations-column-count{color:var(--column-status-color,var(--text));cursor:pointer;font:inherit;border:0}.operations-column-trigger{color:var(--column-status-color,var(--text));text-align:left;background:0 0;padding:3px 0;font-weight:750}.operations-macro-column-title{color:var(--column-status-color,var(--text));text-align:left;text-transform:none;align-self:center;padding:3px 0;font-weight:750;line-height:1.35}.operations-column-trigger:hover,.operations-column-trigger:focus-visible,.operations-column-count:hover,.operations-column-count:focus-visible{filter:brightness(1.18);outline:2px solid var(--column-status-color,var(--accent));outline-offset:3px}.operations-column.is-draft{--column-status-color:#c4b5fd;--column-status-tint:#a78bfa29;--column-card-border:#a78bfa85;--column-card-background:linear-gradient(180deg, #46376f80, #1e1934c7)}.operations-column.is-planned{--column-status-color:#6f91d8;--column-status-tint:#1e3a8a3d;--column-card-border:#3758a4ad;--column-card-background:linear-gradient(180deg, #14274ec7, #09142beb)}.operations-column.is-executing{--column-status-color:#fde68a;--column-status-tint:#fbbf2429;--column-card-border:#fbbf2485;--column-card-background:linear-gradient(180deg, #5c400d7a, #2a1f0cc2)}.operations-column.is-verifying{--column-status-color:#fca5a5;--column-status-tint:#f8717129;--column-card-border:#f8717185;--column-card-background:linear-gradient(180deg, #5b263080, #30181fc7)}.operations-column.is-completed{--column-status-color:#86efac;--column-status-tint:#34d39929;--column-card-border:#34d39980;--column-card-background:linear-gradient(180deg, #164f3d80, #0f2b24c7)}.operations-column.is-blocked,.operations-column.is-failed,.operations-column.is-cancelled{--column-status-color:#cbd5e1;--column-status-tint:#64748b29;--column-card-border:#94a3b86b;--column-card-background:linear-gradient(180deg, #2d374880, #181f2cc7)}.operations-column-count{color:#9ef4e5;text-align:center;background:#14b8a62e;border-radius:50%;flex:0 0 36px;place-items:center;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;font-weight:700;line-height:1;display:grid}.operations-column.is-draft>header .operations-column-count{color:#ddd6fe;background:#a78bfa33}.operations-column.is-planned>header .operations-column-count{color:#b8ccf2;background:#1e3a8a61}.operations-column.is-executing>header .operations-column-count{color:#fde68a;background:#fbbf2433}.operations-column.is-verifying>header .operations-column-count{color:#fecaca;background:#f8717133}.operations-column.is-completed>header .operations-column-count{color:#a7f3d0;background:#34d39933}.operations-column.is-blocked>header .operations-column-count,.operations-column.is-failed>header .operations-column-count,.operations-column.is-cancelled>header .operations-column-count{color:#cbd5e1;background:#64748b3d}.operations-column-body{gap:12px;min-width:0;display:grid}.operations-infinite-sentinel{min-height:34px;color:var(--muted);text-align:center;padding:8px;font-size:.7rem}.operations-task-card{border:1px solid var(--column-card-border,#4a60805c);background:var(--column-card-background,linear-gradient(180deg, #0f1b2efa, #0b1524fa));width:100%;min-width:0;max-width:100%;color:var(--text);text-align:left;cursor:pointer;border-radius:16px;gap:10px;padding:14px;transition:transform .12s,border-color .12s,box-shadow .12s;display:grid;overflow:hidden}.operations-task-card:hover{border-color:var(--column-status-color,#5eead499);transform:translateY(-2px);box-shadow:0 20px 34px #030a1459}.operations-task-card>strong{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-width:0;display:-webkit-box;overflow:hidden}.operations-task-card small,.operations-task-card span{color:#8fa7c2;overflow-wrap:anywhere}.operations-task-card .operations-task-id{letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;width:100%;min-width:0;max-width:100%;font-size:.58rem;line-height:1.2;display:block;overflow:hidden}.operations-task-card .operations-card-created{color:#64748b;font-variant-numeric:tabular-nums;letter-spacing:.01em;font-size:.62rem}.operations-task-card progress{width:100%;accent-color:var(--accent)}.operations-task-usage{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;display:grid}.operations-task-usage div{border-top:1px solid #4a608047;min-width:0;padding-top:7px}.operations-task-usage dt{color:var(--muted);text-transform:uppercase;font-size:.58rem}.operations-task-usage dd{color:#e6f2ff;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin:3px 0 0;font-size:.67rem;font-weight:700;overflow:hidden}.operations-macro-board-card{text-align:left}.operations-macro-kind{color:#bfdbfe;letter-spacing:.07em;background:#60a5fa2e;border-radius:999px;justify-self:start;padding:5px 9px;font-size:.66rem;font-weight:700}.operations-macro-board-card dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:2px 0 0;display:grid}.operations-macro-board-card .operations-macro-usage{grid-template-columns:repeat(3,minmax(0,1fr))}.operations-macro-board-card dl div{border-top:1px solid #4a608047;padding-top:8px}.operations-macro-board-card dt{color:var(--muted);font-size:.65rem}.operations-macro-board-card dd{color:var(--text);margin:3px 0 0;font-weight:700}.operations-risk{text-transform:uppercase;border-radius:999px;justify-self:start;padding:5px 9px;font-size:.66rem}.operations-risk.is-critical{color:#fecaca;background:#7f1d1db8}.operations-risk.is-standard{color:#fde68a;background:#713f12b8}.operations-risk.is-lite{color:#bfdbfe;background:#1e40af7a}.operations-macro-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;display:grid}.operations-macro-card{border:1px solid var(--line);width:100%;color:var(--text);text-align:left;cursor:pointer;box-shadow:none;background:#0a0e17f0;border-radius:16px;padding:18px}.operations-macro-card:hover,.operations-macro-card:focus-visible{border-color:#00b0f08c;outline:none}.operations-macro-card header{justify-content:space-between;gap:16px;display:flex}.operations-macro-card h3{margin:4px 0}.operations-macro-card small,.operations-path{color:var(--muted);overflow-wrap:anywhere}.operations-macro-card dl,.operations-detail-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;display:grid}.operations-macro-card dl div,.operations-detail-grid div{border:1px solid var(--line);background:#0f1b2ec7;border-radius:12px;padding:12px}.operations-macro-card dt,.operations-detail-grid dt{color:var(--muted);text-transform:uppercase;font-size:.7rem}.operations-macro-card dd,.operations-detail-grid dd{overflow-wrap:anywhere;margin:5px 0 0;font-weight:700}.operations-status{background:var(--surface-raised);border-radius:999px;height:fit-content;padding:6px 10px;font-size:.7rem}.operations-status.is-executing{color:#fde68a}.operations-status.is-draft{color:#ddd6fe}.operations-status.is-planned{color:#bfdbfe}.operations-status.is-verifying{color:#fecaca}.operations-status.is-completed{color:#75e6a4}.operations-status.is-blocked,.operations-status.is-failed,.operations-status.is-cancelled{color:#cbd5e1}.operations-empty{color:var(--muted);text-align:center}.operations-dialog-backdrop{z-index:80;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#020617c7;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.operations-dialog{border:1px solid var(--line-strong);background:linear-gradient(#0a0e17fc,#0d1220fc);border-radius:24px;grid-template-rows:auto minmax(0,1fr) auto;width:min(980px,100%);max-height:90vh;padding:0;display:grid;overflow:hidden;box-shadow:0 30px 100px #00000073}.operations-dialog>header,.operations-dialog>footer{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.operations-dialog>header{border-bottom:1px solid var(--line);padding:28px 28px 22px}.operations-dialog-scroll{overscroll-behavior:contain;min-height:0;padding:24px 28px;overflow-y:auto}.operations-dialog h2{margin:4px 0;font-size:clamp(1.7rem,3vw,2.4rem)}.operations-dialog header p{color:var(--muted)}.operations-dialog section{margin-top:20px}.operations-dialog pre{white-space:pre-wrap;border:1px solid var(--line);color:#d2deee;background:#08111feb;border-radius:16px;max-height:none;padding:18px;line-height:1.65;overflow:visible}.operations-dialog footer{border-top:1px solid var(--line);color:var(--muted);overflow-wrap:anywhere;align-items:center;padding:18px 28px;font-size:.75rem}@media (width<=760px){.operations-dialog-backdrop{padding:12px}.operations-dialog{border-radius:18px}.operations-dialog>header,.operations-dialog-scroll,.operations-dialog>footer{padding-left:20px;padding-right:20px}}.operations-tags{flex-wrap:wrap;gap:8px;display:flex}.operations-tags span{color:#cde3ff;background:#2563eb29;border-radius:999px;padding:6px 10px}.operations-content-skeleton{border:1px solid var(--line);min-height:360px;color:var(--muted);background:#111827ad;border-radius:18px;gap:16px;padding:24px;display:grid}.operations-table-status,.operations-table-entry,.operations-table-decision-origin,.operations-table-stage,.operations-table-risk{text-transform:capitalize;border:1px solid #0000;border-radius:999px;align-items:center;padding:4px 9px;font-size:.7rem;font-weight:700;display:inline-flex}.operations-table-status{color:#cbd5e1;background:#64748b1f;border-color:#64748b52}.operations-table-status.is-completed{color:#86efac;background:#34d39924;border-color:#34d3996b}.operations-table-status.is-cancelled,.operations-table-risk.is-critical{color:#fca5a5;background:#f8717124;border-color:#f871716b}.operations-table-entry.is-prd,.operations-table-decision-origin.is-human{color:#ddd6fe;background:#a78bfa24;border-color:#a78bfa6b}.operations-table-entry.is-spec,.operations-table-stage.is-planning,.operations-table-risk.is-lite{color:#bfdbfe;background:#60a5fa24;border-color:#60a5fa6b}.operations-table-entry.is-task,.operations-table-stage.is-execution,.operations-table-risk.is-standard{color:#fde68a;background:#fbbf2424;border-color:#fbbf246b}.operations-table-entry.is-conversation,.operations-table-decision-origin.is-agent{color:#a5f3fc;background:#22d3ee24;border-color:#22d3ee6b}.operations-toolbar{flex-wrap:wrap;align-items:flex-end}.operations-toolbar nav{flex:620px}.operations-toolbar-filters{grid-template-columns:minmax(210px,1.35fr) repeat(2,minmax(128px,.8fr)) minmax(155px,1fr);align-items:end;gap:8px;margin-left:auto;display:grid}.dashboard-global-controls{justify-content:space-between;align-items:end;gap:18px;margin:22px 0 14px;scroll-margin-top:82px;display:flex}.dashboard-global-controls .dashboard-capability-nav{flex:none;margin:0}.dashboard-global-filters{flex:0 760px;width:min(760px,100%);min-width:0;margin-left:auto}.operations-toolbar-field{gap:4px;min-width:0;display:grid}.operations-toolbar-field>span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.51rem;font-weight:700}.operations-search-control{min-width:0;position:relative}.dashboard-global-controls .operations-search-control input{padding-right:38px}.dashboard-global-controls .operations-search-clear{color:#71829a;cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;width:26px;height:26px;padding:0;display:grid;position:absolute;top:50%;right:7px;transform:translateY(-50%)}.dashboard-global-controls .operations-search-clear:hover{color:#bae6fd;background:#7dd3fc1a}.dashboard-global-controls .operations-search-clear:focus-visible{outline-offset:1px;outline:2px solid #38bdf8}.operations-search-clear svg{stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:16px;height:16px}.operations-toolbar .operations-toolbar-field input,.operations-toolbar .operations-toolbar-field select,.dashboard-global-controls .operations-toolbar-field input,.dashboard-global-controls .operations-toolbar-field select{border:1px solid var(--line-strong);width:100%;min-width:0;min-height:36px;color:var(--text);background:#0a0e17f5;border-radius:10px;padding:6px 9px;font-size:.76rem}.operations-toolbar .operations-date-field input,.dashboard-global-controls .operations-date-field input{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.operations-toolbar .operations-period-field select,.dashboard-global-controls .operations-period-field select{padding-right:30px}@media (width<=760px){.dashboard-global-controls{flex-direction:column;align-items:stretch}.dashboard-global-controls .dashboard-capability-nav,.dashboard-global-filters{width:100%;min-width:0}.operations-toolbar-filters{grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.operations-search-field,.operations-period-field{grid-column:1/-1}}@media (width<=420px){.operations-toolbar-filters{grid-template-columns:1fr}.operations-search-field,.operations-period-field{grid-column:auto}}.operations-global-filters{grid-template-columns:repeat(4,minmax(160px,1fr));align-items:end;gap:16px 12px;padding:6px;display:grid}.dashboard-header-filter-popup:has(.operations-global-filters){background:radial-gradient(circle at 90% 0,#0ea5e917,#0000 34%),#080d18fb;border-color:#7dd3fc29;border-radius:20px;width:min(940px,100vw - 48px);padding:20px;inset:76px 24px auto auto;box-shadow:0 26px 70px #00000085}.operations-filter-heading{border-bottom:1px solid #94a3b81f;grid-column:1/-1;justify-content:space-between;align-items:center;gap:18px;padding:2px 2px 12px;display:flex}.operations-filter-heading>div{gap:4px;display:grid}.operations-filter-heading strong{color:#e5f2ff;font-size:1rem}.operations-filter-heading small{color:#71829a;font-size:.68rem}.operations-filter-status{color:#7dd3fc;align-items:center;gap:8px;font-size:.68rem;display:inline-flex}.operations-filter-status i{background:#38bdf8;border-radius:50%;width:8px;height:8px;animation:.9s ease-in-out infinite alternate operations-filter-pulse;box-shadow:0 0 0 5px #38bdf81f}.operations-global-filters label{gap:7px;display:grid}.operations-global-filters label>span{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.67rem}.operations-global-filters input,.operations-global-filters select{border:1px solid var(--line-strong);min-width:0;min-height:42px;color:var(--text);background:#080e19e6;border-radius:13px;outline:none;padding:0 14px;transition:border-color .14s,box-shadow .14s,background .14s}.operations-global-filters input:hover,.operations-global-filters select:hover{border-color:#7dd3fc47}.operations-global-filters input:focus,.operations-global-filters select:focus{background:#0a1423fa;border-color:#38bdf8b3;box-shadow:0 0 0 3px #38bdf81a}.operations-filter-search{grid-column:span 2}.operations-global-filters .operations-date-field input{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.dashboard-header .operations-clear-filters{color:#bae6fd;background:#0e74901a;border-color:#7dd3fc38;justify-content:center;align-items:center;gap:9px;min-height:42px;display:inline-flex}@media (width<=820px){.operations-global-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}.operations-reset-icon{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:16px;height:16px}@keyframes operations-filter-pulse{to{opacity:.42;transform:scale(.78)}}.operations-loading-line{z-index:59;background:#38bdf814;height:2px;position:fixed;top:63px;left:0;right:0;overflow:hidden}.operations-loading-line:after{content:"";background:linear-gradient(90deg,#0000,#38bdf8,#0000);width:32%;height:100%;animation:.85s ease-in-out infinite operations-loading-slide;position:absolute}@keyframes operations-loading-slide{0%{transform:translate(-110%)}to{transform:translate(420%)}}.operations-filtered{transition:opacity .14s}.operations-filtered.is-loading{opacity:1;pointer-events:auto}.operations-loading-status{z-index:75;color:#dbeafe;background:#0f172af5;border:1px solid #38bdf859;border-radius:14px;align-items:center;gap:10px;padding:12px 14px;font-size:.86rem;display:flex;position:fixed;bottom:18px;right:18px;box-shadow:0 12px 32px #00000047}.operations-loading-status:before{content:"";border:3px solid #334155;border-top-color:#38bdf8;border-radius:50%;width:18px;height:18px;animation:.9s linear infinite operations-loading-spin}@keyframes operations-loading-spin{to{transform:rotate(360deg)}}@media (width>=1500px){.operations-chart-grid{grid-template-columns:minmax(0,calc(50% - 162px)) 300px 180px minmax(280px,1fr)}.operations-panel-wide{grid-column:span 1}}@media (width<=1180px){.operations-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.operations-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.operations-page{padding:86px 14px 42px}.operations-global-filters{grid-template-columns:1fr}.operations-filter-search,.operations-filter-heading{grid-column:auto}.operations-filter-heading{flex-direction:column;align-items:flex-start}.operations-hero,.operations-toolbar{flex-direction:column;align-items:stretch}.operations-kpi-grid,.operations-chart-grid{grid-template-columns:1fr}.operations-toolbar input{width:100%;min-width:0}.operations-tab-export{justify-content:flex-end}.operations-content{padding:10px}.operations-execution-table .ui-table{font-size:.73rem}.operations-execution-table .ui-table th,.operations-execution-table .ui-table td{padding:.56rem .3rem}.operations-execution-table .ui-table th:first-child{width:12%}.operations-execution-table .ui-table th:nth-child(2){width:25%}.operations-execution-table .ui-table th:nth-child(3),.operations-execution-table .ui-table th:nth-child(4){width:9%}.operations-execution-table .ui-table th:nth-child(5),.operations-execution-table .ui-table th:nth-child(9){width:5%}.operations-execution-table .ui-table th:nth-child(6),.operations-execution-table .ui-table th:nth-child(7){width:8%}.operations-execution-table .ui-table th:nth-child(8){width:10%}.operations-execution-table .ui-table th:nth-child(10),.operations-execution-table .ui-table th:nth-child(11){width:4.5%}.operations-dialog{padding:22px 18px}.operations-dialog>footer{flex-direction:column}}.cost-page{width:min(1600px,100%);margin:0 auto;padding:86px 26px 64px}.cost-monitor-nav{z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#020711f0;border-bottom:1px solid #94a3b81a;justify-content:space-between;align-items:center;gap:14px;min-height:58px;padding:10px 24px;display:none;position:fixed;inset:0 0 auto}.dashboard-header-filter-popup .cost-filters,.dashboard-header-mobile-filters .cost-filters{box-shadow:none;background:0 0;border:0;border-radius:0;margin:0;padding:0}.cost-monitor-nav button,.cost-tabs button,.cost-filters button,.cost-content button:not(.ui-table-sort):not(.ui-table-info){border:1px solid var(--line-strong);min-height:40px;color:var(--text);cursor:pointer;background:#0f1422db;border-radius:11px;padding:0 14px;transition:border-color .12s,transform .12s,background .12s}.cost-monitor-nav button:hover,.cost-tabs button:hover,.cost-filters button:hover,.cost-content button:not(.ui-table-sort):not(.ui-table-info):hover{border-color:#00b0f070;transform:translateY(-1px)}.cost-monitor-nav button:disabled{cursor:wait;opacity:.65;transform:none}.cost-back{color:var(--muted);justify-self:start}.cost-monitor-brand{align-items:start;gap:3px;display:grid}.cost-monitor-logo{object-fit:contain;width:auto;height:28px;display:block;position:absolute;left:50%;transform:translate(-50%)}.cost-monitor-title{color:#00b0f0;letter-spacing:-.02em;white-space:nowrap;font-size:1rem}.cost-last-updated{color:#64748b;white-space:nowrap;margin:0;font-size:.61rem}.cost-nav-actions{background:#090e19e6;border:1px solid #ffffff12;border-radius:18px;align-items:center;gap:8px;padding:6px;display:flex;box-shadow:0 10px 30px #00000038}.cost-period{gap:4px;display:grid}.cost-period span{color:#7f91aa;letter-spacing:.08em;text-transform:uppercase;font-size:.61rem}.cost-period select{border:1px solid var(--line-strong);min-height:40px;color:var(--text);background:#0a1220;border-radius:11px;padding:0 30px 0 10px}.cost-nav-icon,.cost-nav-button{justify-content:center;align-items:center;gap:10px;display:inline-flex}.cost-nav-button{font-size:.82rem}.cost-locale-flag{border-radius:6px;flex:0 0 20px;width:20px;height:20px;display:block;overflow:hidden}.cost-locale-chevron{color:var(--muted);flex:0 0 16px;width:16px;height:16px;margin-left:2px}.cost-nav-icon{width:38px;padding:0}.cost-settings-icon,.cost-filter-icon{stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:18px;height:18px}.cost-nav-button.is-active,.cost-nav-icon.is-active{color:var(--accent);background:#00b0f024;border-color:#00b0f070}.cost-nav-popup-anchor{position:relative}.cost-nav-popup{z-index:30;background:#0b101cfa;border:1px solid #ffffff1a;border-radius:18px;min-width:280px;padding:14px;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 20px 48px #0000006b}.cost-nav-filter-popup{width:min(1200px,100vw - 48px)}.cost-nav-filter-popup .cost-filters{box-shadow:none;background:0 0;border:0;border-radius:0;margin:0;padding:0}.cost-nav-locale-popup,.cost-nav-settings-popup{gap:8px;width:280px;display:grid}.cost-mobile-settings{display:none}.cost-nav-locale-popup button{text-align:left;justify-content:space-between;align-items:center;gap:8px;display:flex}.cost-nav-settings-popup label{gap:7px;display:grid}.cost-nav-settings-popup span{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.67rem}.cost-nav-settings-popup select{border:1px solid var(--line-strong);min-height:40px;color:var(--text);background:#0a1220;border-radius:11px;padding:0 10px}.cost-row-action{place-items:center;width:34px;min-height:34px;padding:0;display:inline-grid}.cost-row-action svg{fill:currentColor;width:18px;height:18px}.cost-content .ui-table{width:max-content;min-width:100%}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .ui-table{table-layout:fixed;width:100%;min-width:0}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .cost-page-controls{justify-content:flex-end;align-items:center;gap:10px;margin-top:12px;display:flex}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .cost-page-controls output{min-width:8.5rem;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;font-size:.78rem}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .ui-table-heading{gap:4px;width:100%;min-width:0}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .ui-table-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .ui-table :is(th,td){white-space:nowrap;padding-inline:clamp(.35rem,.65vw,.8rem)}.cost-content:is(.cost-content-daily,.cost-content-monthly,.cost-content-annual) .ui-table :is(th,td):first-child{width:clamp(128px,14vw,220px)}.cost-content-agentCalls .ui-table :is(th,td):nth-child(2),.cost-content-prds .ui-table :is(th,td):nth-child(2),.cost-content-specs .ui-table :is(th,td):nth-child(2){width:320px;min-width:320px}.cost-content-tasks .ui-table :is(th,td):nth-child(2){width:450px;min-width:450px}.cost-content-tasks .ui-table{width:max-content;min-width:0}.cost-content-tasks .ui-table :is(th,td){padding-inline:.7rem}.cost-content:is(.cost-content-conversations,.cost-content-prds,.cost-content-specs) .ui-table{width:max-content;min-width:0}.cost-content:is(.cost-content-conversations,.cost-content-prds,.cost-content-specs) .ui-table :is(th,td){padding-inline:.7rem}.cost-content-conversations .ui-table :is(th,td):nth-child(2){width:360px;min-width:360px}.cost-content:is(.cost-content-tasks,.cost-content-conversations,.cost-content-prds,.cost-content-specs) .ui-table{table-layout:fixed;width:100%;min-width:0}.cost-content:is(.cost-content-tasks,.cost-content-conversations,.cost-content-prds,.cost-content-specs) .ui-table :is(th,td){min-width:0}.cost-content:is(.cost-content-tasks,.cost-content-conversations,.cost-content-prds,.cost-content-specs) .ui-table :is(th,td):nth-child(2){width:clamp(220px,25vw,360px);min-width:0}.cost-hero{justify-content:space-between;align-items:end;gap:24px;padding:10px 0 18px;display:flex}.cost-hero-description{color:var(--muted);margin:0;font-size:.8rem;line-height:1.45}.cost-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.cost-summary article,.cost-filters,.cost-content,.cost-chart{border:1px solid var(--line);box-shadow:var(--shadow);background:#080d17f2;border-radius:18px}.cost-summary article{background:linear-gradient(135deg,#0a121ffa,#070d17fa);grid-template-rows:auto 1fr auto;gap:14px;min-width:0;min-height:154px;padding:24px 24px 22px;display:grid;position:relative;overflow:hidden}.cost-summary article:before{content:"";background:linear-gradient(90deg,#00b0f0,#00b0f00a);height:4px;position:absolute;inset:0 0 auto}.cost-summary span{color:#7185a1;letter-spacing:.05em;text-transform:uppercase;font-size:.76rem;font-weight:650}.cost-summary strong{color:#f4f8ff;font-variant-numeric:tabular-nums;letter-spacing:-.03em;white-space:nowrap;align-self:end;font-size:clamp(1.65rem,2.2vw,2.35rem);line-height:1}.cost-summary small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;overflow:hidden}.cost-filters{box-shadow:none;grid-template-columns:minmax(220px,2fr) repeat(5,minmax(120px,1fr));gap:11px;margin:18px 0;padding:14px;display:grid}.cost-filters label{gap:7px;display:grid}.cost-filters label span{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.64rem}.cost-filters input,.cost-filters select{border:1px solid var(--line-strong);width:100%;min-height:42px;color:var(--text);background:#08111ef5;border-radius:11px;padding:0 11px}.cost-filters>button{align-self:end}.cost-tabs-bar{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px;padding:2px 2px 12px;display:grid}.cost-tabs{flex-wrap:wrap;gap:6px;display:flex;overflow-x:visible}.cost-tabs button{border-radius:999px;flex:none;min-height:44px;padding-inline:10px;font-size:.82rem}.cost-tabs button.is-active{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}.cost-tab-export{justify-content:flex-end;display:flex}.cost-tab-export .excel-export-action{color:#042330;background:linear-gradient(135deg,#00b0f0 0%,#72f4fb 100%);border:1px solid #0000;border-radius:999px;gap:6px;min-height:44px;padding:0 10px;font-size:.82rem;font-weight:650}.cost-tab-export .excel-export-action svg{width:14px;height:14px}.cost-tab-export .excel-export-action:hover:not(:disabled){color:#042330;background:linear-gradient(135deg,#00b0f0 0%,#72f4fb 100%);border-color:#72f4fbb8}.cost-tabs button:focus-visible,.cost-tab-export .excel-export-action:focus-visible{outline-offset:2px;outline:3px solid #00b0f0}.cost-run-kind-toolbar{gap:8px;margin:0 0 14px;display:flex}.cost-content .cost-run-kind-toolbar button.is-active{border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent)}.cost-content{min-height:360px;padding:14px}.cost-content-overview{box-shadow:none;background:0 0;border:0;padding:0}.cost-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.cost-chart{min-height:270px;padding:20px;overflow:hidden}.cost-chart-trend{order:10;min-height:270px}.cost-chart-phases{order:-1}.cost-chart-model{order:1}.cost-chart header{justify-content:space-between;align-items:start;gap:16px;display:flex}.cost-chart header small{color:#00b0f0;letter-spacing:.12em;font-size:.66rem;font-weight:800}.cost-chart h2{margin:5px 0 0;font-size:1.14rem}.cost-chart header>strong{color:#7890ab;font-size:.76rem;font-weight:600}.cost-line-chart{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.cost-trend-plot{height:155px;margin:18px 12px 0;position:relative}.cost-trend-value{z-index:1;color:#d7eaff;font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;background:#070e1adb;border:1px solid #5ea7ff38;border-radius:6px;padding:2px 5px;font-size:.62rem;font-weight:700;line-height:1.2;position:absolute;transform:translate(-50%,-125%)}.cost-trend-value.is-first{transform:translateY(-125%)}.cost-trend-value.is-last{transform:translate(-100%,-125%)}.cost-trend-days{color:#7890ab;font-variant-numeric:tabular-nums;text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:7px;font-size:.61rem;display:grid}.cost-bar-list{gap:15px;margin-top:24px;display:grid}.cost-bar-list>div{grid-template-columns:minmax(80px,130px) 1fr auto;align-items:center;gap:12px;display:grid}.cost-bar-list span,.token-mix span,.phase-strip span{color:#a8b6c8;font-size:.78rem}.cost-bar-list i{background:#94a3b81a;border-radius:9px;height:7px;overflow:hidden}.cost-bar-list b{border-radius:inherit;height:100%;display:block}.cost-bar-list strong,.token-mix strong,.phase-strip strong{color:#e8f0fb;font-size:.8rem}.token-mix{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:25px;display:grid}.token-mix>div,.phase-strip>div{background:#0f1726ad;border:1px solid #94a3b81a;border-radius:13px;grid-template-columns:auto 1fr;gap:8px;padding:14px;display:grid}.token-mix i,.phase-strip i{border-radius:50%;width:9px;height:9px;margin-top:2px}.token-mix strong,.phase-strip strong{grid-column:2;font-size:1.14rem}.phase-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:30px;display:grid}.phase-strip>div{display:block}.phase-name{align-items:center;gap:8px;display:flex}.phase-name i{flex:0 0 9px;margin:0}.phase-name span{color:#c5d2e3;font-size:.76rem;font-weight:650}.phase-metrics{gap:7px;margin:12px 0 0;display:grid}.phase-metrics>div{border-top:1px solid #94a3b81a;gap:3px;padding-top:7px;display:grid}.phase-metrics dt{color:#7890ab;letter-spacing:.04em;text-transform:uppercase;font-size:.58rem}.phase-metrics dd{color:#e8f0fb;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.72rem;font-weight:700;overflow:hidden}.cost-empty{color:var(--muted);text-align:center;padding:55px 0}@media (width<=1180px){.cost-monitor-logo{display:none}.cost-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.cost-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.cost-page{padding:86px 14px 42px}.cost-monitor-nav{justify-content:flex-end;align-items:center;min-height:64px;padding:10px 14px}.cost-monitor-brand,.cost-refresh-action,.cost-filter-action,.cost-locale-action{display:none}.cost-monitor-logo{height:26px;display:block}.cost-back{justify-self:stretch}.cost-nav-actions{box-shadow:none;background:0 0;border:0;margin-left:auto;padding:0;display:flex}.cost-settings-action .cost-nav-settings-popup{width:auto;max-height:calc(100vh - 88px);position:fixed;inset:74px 14px auto;overflow-y:auto}.cost-mobile-settings{border-bottom:1px solid #ffffff1a;gap:12px;padding-bottom:14px;display:grid}.cost-mobile-updated{color:#64748b;font-size:.68rem}.cost-mobile-settings>label{gap:7px;display:grid}.cost-mobile-settings>label span,.cost-mobile-filters>strong{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.67rem}.cost-mobile-settings select{border:1px solid var(--line-strong);min-height:42px;color:var(--text);background:#0a1220;border-radius:11px;padding:0 10px}.cost-mobile-filters{gap:9px;display:grid}.cost-mobile-filters .cost-filters{box-shadow:none;background:0 0;border:0;border-radius:0;grid-template-columns:1fr;margin:0;padding:0}.cost-summary,.cost-chart-grid,.phase-strip{grid-template-columns:1fr 1fr}.cost-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.cost-hero{flex-direction:column;align-items:stretch}.cost-tabs-bar{grid-template-columns:1fr}.cost-tab-export{justify-content:flex-end}}@media (width<=500px){.cost-summary,.cost-chart-grid,.phase-strip,.cost-filters{grid-template-columns:1fr}.cost-nav-actions{grid-template-columns:1fr 1fr}.cost-nav-actions button{grid-column:span 2}}.cost-run-origin{letter-spacing:.02em;white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;min-height:25px;padding:3px 9px;font-size:.72rem;font-weight:700;display:inline-flex}.cost-run-origin-prd{color:#d8b4fe;background:#7e22ce2e;border-color:#c084fc8c}.cost-run-origin-spec{color:#99f6e4;background:#0d94882e;border-color:#2dd4bf8c}.cost-run-origin-task{color:#bae6fd;background:#0284c72e;border-color:#38bdf88c}.cost-page.cost-page-embedded{width:100%;margin:0;padding:0}.cost-audit-heading{color:var(--text-primary);margin:2rem 0 .75rem;font-size:1rem}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e}from"./cost-monitor-
|
|
1
|
+
import{m as e}from"./cost-monitor-DKwP1stV.js";var t=e(`BadgeCheck`,[[`path`,{d:`M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z`,key:`3c2336`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),n=e(`CalendarDays`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),r=e(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),i=e(`CircleGauge`,[[`path`,{d:`M15.6 2.7a10 10 0 1 0 5.7 5.7`,key:`1e0p6d`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`path`,{d:`M13.4 10.6 19 5`,key:`1kr7tw`}]]),a=e(`ClipboardList`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),o=e(`Copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),s=e(`FileCheck2`,[[`path`,{d:`M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4`,key:`1pf5j1`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`m3 15 2 2 4-4`,key:`1lhrkk`}]]),c=e(`FileStack`,[[`path`,{d:`M21 7h-3a2 2 0 0 1-2-2V2`,key:`9rb54x`}],[`path`,{d:`M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17Z`,key:`1059l0`}],[`path`,{d:`M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15`,key:`16874u`}],[`path`,{d:`M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11`,key:`k2ox98`}]]),l=e(`Gavel`,[[`path`,{d:`m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8`,key:`15492f`}],[`path`,{d:`m16 16 6-6`,key:`vzrcl6`}],[`path`,{d:`m8 8 6-6`,key:`18bi4p`}],[`path`,{d:`m9 7 8 8`,key:`5jnvq1`}],[`path`,{d:`m21 11-8-8`,key:`z4y7zo`}]]),u=e(`LayoutGrid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),d=e(`Link2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),f=e(`Settings`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),p=e(`ShieldCheck`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),m=e(`Workflow`,[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]);export{u as a,s as c,i as d,r as f,d as i,o as l,t as m,p as n,l as o,n as p,f as r,c as s,m as t,a as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.dashboard-capability-nav{background:#080e19b8;border:1px solid #94a3b81f;border-radius:15px;grid-template-columns:repeat(3,minmax(190px,1fr));gap:5px;width:fit-content;margin:22px 0 14px;padding:5px;display:grid}.dashboard-capability-nav button{color:#7f91aa;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:11px;align-items:center;gap:10px;min-height:52px;padding:7px 13px;display:flex}.dashboard-capability-nav button:hover{color:#dce8f7;border-color:#38bdf82e}.dashboard-capability-nav button.is-active{color:#e7f5ff;background:#0ea5e91c;border-color:#38bdf847;box-shadow:inset 0 0 0 1px #38bdf80a}.dashboard-capability-nav svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;width:20px;height:20px}.dashboard-capability-nav span{gap:2px;display:grid}.dashboard-capability-nav strong{font-size:.78rem}.dashboard-capability-nav small{color:#64748b;white-space:nowrap;font-size:.62rem}@media (width<=560px){.dashboard-capability-nav{grid-template-columns:repeat(3,minmax(165px,1fr));width:max-content;max-width:100%;overflow-x:auto}.dashboard-capability-nav button{justify-content:center;padding-inline:8px}.dashboard-capability-nav small{display:none}}.app-loading-panel{color:#dbeafe;text-align:center;background:#0ea5e90a;border:1px solid #38bdf82e;border-radius:20px;place-content:center;justify-items:center;gap:14px;min-height:240px;display:grid}.app-loading-panel i{border:3px solid #334155;border-top-color:#38bdf8;border-radius:50%;width:28px;height:28px;animation:.9s linear infinite app-refresh-spin}.app-loading-panel div{gap:5px;display:grid}.app-loading-panel strong{color:#e2e8f0}.app-loading-panel span{color:#94a3b8;font-size:.85rem}.app-loading-panel-error{border-color:#f8717147}.app-loading-panel-error button{color:#fecaca;cursor:pointer;background:#7f1d1d66;border:1px solid #f8717159;border-radius:10px;padding:9px 12px}.period-transition-overlay{color:#f1f5f9;z-index:9999;background:#0a0e17;justify-content:center;align-items:center;font-family:Inter,ui-sans-serif,system-ui,sans-serif;display:flex;position:fixed;inset:0}.period-transition-overlay__content{align-items:center;gap:16px;display:flex}.period-transition-overlay__spinner{border:3px solid #f1f5f947;border-top-color:#00b0f0;border-radius:999px;width:32px;height:32px;animation:.8s linear infinite period-transition-spin}.period-transition-overlay__label{font-size:clamp(1rem,3vw,1.25rem);font-weight:700}@keyframes period-transition-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.period-transition-overlay__spinner{border-top-color:#00b0f0;animation:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#f1f5f9;--background:#010610;--surface:#0a0e17;--surface-muted:#0d1220;--surface-raised:#111827;--line:#ffffff14;--line-strong:#ffffff24;--text:#f1f5f9;--muted:#94a3b8;--muted-deep:#4b5563;--accent:#00b0f0;--accent-soft:#00b0f01f;--accent-border:#00b0f040;--shadow:0 18px 48px #00000073;font-synthesis:none;text-rendering:optimizelegibility;background:#010610;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--background);min-width:320px;min-height:100%}html,body,#root{scrollbar-color:#00b0f0 #050b15;scrollbar-width:thin}html::-webkit-scrollbar{width:14px;height:14px}body::-webkit-scrollbar{width:14px;height:14px}#root::-webkit-scrollbar{width:14px;height:14px}html::-webkit-scrollbar-track{background:#050b15}body::-webkit-scrollbar-track{background:#050b15}#root::-webkit-scrollbar-track{background:#050b15}html::-webkit-scrollbar-thumb{background:linear-gradient(#38bdf8,#0284c7) padding-box padding-box;border:3px solid #050b15;border-radius:999px;box-shadow:inset 0 0 0 1px #bae6fd4d}body::-webkit-scrollbar-thumb{background:linear-gradient(#38bdf8,#0284c7) padding-box padding-box;border:3px solid #050b15;border-radius:999px;box-shadow:inset 0 0 0 1px #bae6fd4d}#root::-webkit-scrollbar-thumb{background:linear-gradient(#38bdf8,#0284c7) padding-box padding-box;border:3px solid #050b15;border-radius:999px;box-shadow:inset 0 0 0 1px #bae6fd4d}html::-webkit-scrollbar-thumb:hover{background:linear-gradient(#7dd3fc,#00b0f0)}body::-webkit-scrollbar-thumb:hover{background:linear-gradient(#7dd3fc,#00b0f0)}#root::-webkit-scrollbar-thumb:hover{background:linear-gradient(#7dd3fc,#00b0f0)}body{background:radial-gradient(circle at 50% 0, #00b0f00f 0%, transparent 42%), var(--background);min-width:320px;min-height:100vh;color:var(--text);margin:0}button,input,select{font:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-state{text-align:center;place-content:center;min-height:100vh;padding:2rem;display:grid}.app-state h1{max-width:720px}.app-state pre{white-space:pre-wrap;color:#fecaca;max-width:min(800px,90vw);overflow:auto}.app-state button{border:1px solid var(--accent-border);background:var(--surface);color:var(--accent);cursor:pointer;border-radius:12px;justify-self:center;padding:.7rem 1rem}.app-skeleton{min-height:100vh;padding:clamp(18px,2.4vw,38px)}.app-skeleton-header{justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px;display:flex}.app-skeleton-header h1{margin:8px 0 0;font-size:clamp(1.45rem,2.4vw,2.25rem)}.app-skeleton-actions{gap:10px;display:flex}.app-skeleton-actions span{border:1px solid var(--line);background:var(--surface-muted);border-radius:12px;width:48px;height:42px}.app-skeleton-kpis,.app-skeleton-panels,.app-skeleton-board{gap:14px;display:grid}.app-skeleton-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.app-skeleton-kpis article,.app-skeleton-panels article,.app-skeleton-board>article{border:1px solid var(--line);background:linear-gradient(145deg,#111827db,#0a0e17eb);border-radius:16px}.app-skeleton-kpis article{min-height:138px;padding:18px}.app-skeleton-line,.app-skeleton-value,.app-skeleton-pill,.app-skeleton-chart,.app-skeleton-actions span{position:relative;overflow:hidden}.app-skeleton-line:after,.app-skeleton-value:after,.app-skeleton-pill:after,.app-skeleton-chart:after,.app-skeleton-actions span:after{content:"";background:linear-gradient(90deg,#0000,#7dd3fc1f,#0000);animation:1.35s ease-in-out infinite app-skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}.app-skeleton-line,.app-skeleton-value,.app-skeleton-pill{background:#172033;border-radius:999px;display:block}.app-skeleton-line{width:88%;height:10px;margin-top:12px}.app-skeleton-line-short{width:34%}.app-skeleton-line-medium{width:62%}.app-skeleton-value{width:42%;height:30px;margin-top:18px}.app-skeleton-panels{grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);margin-top:14px}.app-skeleton-panels article{padding:18px}.app-skeleton-chart{background:repeating-linear-gradient(#3341554d 0 1px,#0000 1px 38px);border-radius:12px;height:156px;margin-top:22px}.app-skeleton-chart-small{background:radial-gradient(circle,#172033 0 34%,#0000 35%)}.app-skeleton-board{grid-template-columns:repeat(5,minmax(210px,1fr));margin-top:18px;padding-bottom:10px;overflow-x:auto}.app-skeleton-board>article{min-height:220px;padding:14px}.app-skeleton-board h2{color:#cbd5e1;min-height:34px;margin:0 0 12px;font-size:.82rem;line-height:1.35}.app-skeleton-card{background:#0206178f;border:1px solid #ffffff0f;border-radius:12px;min-height:92px;margin-top:10px;padding:10px}.app-skeleton-pill{width:52px;height:15px;margin-top:14px}@keyframes app-skeleton-shimmer{to{transform:translate(100%)}}.app-notice,.app-warning{z-index:80;max-width:min(520px,100% - 2rem);box-shadow:var(--shadow);border-radius:16px;gap:1rem;padding:.9rem 1rem;display:flex;position:fixed;bottom:1rem;right:1rem}.app-snapshot-status{color:#dbeafe;background:#082f49f5;border:1px solid #38bdf857}.app-warning.app-error{color:#fecaca;background:#451010f5;border:1px solid #f8717147}.app-notice button,.app-warning button{color:inherit;cursor:pointer;background:0 0;border:0}.app-refresh-dialog-backdrop{z-index:200;background:#020617b8;border:0;justify-content:center;align-items:center;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:24px;display:flex;position:fixed;inset:0;overflow:auto}.app-refresh-dialog{color:#e2e8f0;background:#0f172a;border:1px solid #334155;border-radius:16px;max-width:460px;padding:24px;box-shadow:0 24px 64px #0000006b}.app-refresh-dialog h2{margin:0 0 8px}.app-refresh-dialog p{color:#94a3b8;margin:0;line-height:1.5}.app-refresh-dialog>div{gap:10px;margin-top:20px;display:grid}.app-refresh-dialog button{cursor:pointer;border:0;border-radius:8px;padding:11px 14px}.app-refresh-dialog>div button:first-child{color:#f8fafc;background:#334155}.app-refresh-dialog>div button:last-child{color:#fff;background:#2563eb}.app-refresh-cancel{color:#94a3b8;background:0 0;width:100%;margin-top:12px}.app-refresh-progress{text-align:center;place-items:center;display:grid}.app-refresh-progress i{border:3px solid #334155;border-top-color:#38bdf8;border-radius:50%;width:28px;height:28px;margin-bottom:14px;animation:.9s linear infinite app-refresh-spin}.app-refresh-status{z-index:80;width:min(390px,100vw - 36px);box-shadow:var(--shadow);background:#0f172af5;border:1px solid #38bdf859;border-radius:14px;align-items:center;gap:12px;padding:13px 15px;display:flex;position:fixed;bottom:18px;right:18px}.app-refresh-status i{border:3px solid #334155;border-top-color:#38bdf8;border-radius:50%;flex:none;width:22px;height:22px;animation:.9s linear infinite app-refresh-spin}.app-refresh-status div{gap:3px;display:grid}.app-refresh-status strong{color:#e2e8f0;font-size:.9rem}.app-refresh-status span{color:#94a3b8;font-size:.78rem}.app-refresh-status-close{color:#cbd5e1;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-self:flex-start;padding:0 5px;font-size:1.25rem;line-height:1}.app-refresh-status-close:hover,.app-refresh-status-close:focus-visible{color:#f8fafc;background:#94a3b829}.app-reconciliation-result{z-index:80;width:min(520px,100vw - 36px);box-shadow:var(--shadow);background:#0f172afa;border:1px solid #38bdf859;border-radius:14px;gap:8px;padding:13px 15px;display:grid;position:fixed;bottom:18px;right:18px}.app-reconciliation-result strong{color:#e2e8f0}.app-reconciliation-result span,.app-reconciliation-result p{color:#cbd5e1;margin:0;font-size:.82rem}.app-reconciliation-result button{cursor:pointer;border:0;border-radius:6px;justify-self:start;padding:7px 10px}@media (width<=860px){.app-skeleton-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.app-skeleton-panels{grid-template-columns:1fr}}@keyframes app-refresh-spin{to{transform:rotate(360deg)}}.dashboard-global-settings{gap:14px;display:grid}.dashboard-global-settings label{gap:7px;display:grid}.dashboard-global-settings .dashboard-help-open{color:#bae6fd;justify-content:center;width:100%}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto;transition:none;animation:none}}.pricing-backdrop{background:radial-gradient(circle at 50% 0,#308bcf17,#0000 36%),#070b13;min-height:100vh;padding:clamp(20px,3vw,48px)}.pricing-dialog{background:linear-gradient(145deg,#0d1320 0%,#090e18 100%);border:1px solid #2b3a52;border-radius:24px;flex-direction:column;width:100%;max-width:1840px;min-height:calc(100vh - clamp(40px,6vw,96px));margin:0 auto;display:flex;box-shadow:0 24px 80px #0000006b}.pricing-dialog>header,.pricing-dialog>footer{flex:none;justify-content:space-between;align-items:center;gap:24px;display:flex}.pricing-dialog>header{border-bottom:1px solid #202b3d;padding:28px 32px 24px}.pricing-dialog>header>div{max-width:820px}.pricing-dialog>header small{color:#77bff2;letter-spacing:.12em;font-size:11px;font-weight:700}.pricing-dialog>header h1{margin:7px 0 8px;font-size:clamp(26px,2.2vw,34px);line-height:1.15}.pricing-dialog>header p{color:#94a3b8;margin:0;line-height:1.55}.pricing-dialog small{color:#8391a7}.pricing-dialog button{color:#eaf3ff;cursor:pointer;background:#111a29;border:1px solid #34445e;border-radius:11px;padding:11px 16px;transition:border-color .16s,background .16s,transform .16s}.pricing-dialog button:hover:not(:disabled){background:#17243a;border-color:#5c7ca5}.pricing-dialog button:active:not(:disabled){transform:translateY(1px)}.pricing-dialog button:focus-visible,.pricing-dialog input:focus-visible,.pricing-dialog select:focus-visible{outline-offset:2px;outline:2px solid #65b8f3}.pricing-dialog>header>.pricing-back-button{color:#b9dafa;flex:none;align-items:center;gap:9px;padding:12px 16px;font-size:14px;display:inline-flex}.pricing-back-button span{font-size:18px;line-height:1}.pricing-fx-settings{background:#111a29ad;border:1px solid #24334a;border-radius:16px;grid-template-columns:minmax(0,1fr) minmax(260px,360px);align-items:end;gap:32px;margin:24px 32px 0;padding:20px 22px;display:grid}.pricing-fx-copy strong,.pricing-table-heading strong{color:#edf5ff;font-size:15px}.pricing-fx-copy p,.pricing-table-heading p{color:#8e9bb1;margin:7px 0 0;font-size:13px;line-height:1.5}.pricing-fx-settings label{color:#9fb0c8;letter-spacing:.04em;text-transform:uppercase;gap:8px;font-size:12px;font-weight:700;display:grid}.pricing-fx-input{background:#0c1422;border:1px solid #34465f;border-radius:11px;grid-template-columns:44px 1fr;align-items:center;display:grid;overflow:hidden}.pricing-fx-input>span{color:#75bff4;border-right:1px solid #2b3950;align-self:stretch;place-items:center;font-weight:800;display:grid}.pricing-dialog .pricing-fx-input input{background:0 0;border:0;border-radius:0;min-width:0}.pricing-table-heading{justify-content:space-between;align-items:end;gap:20px;padding:24px 34px 12px;display:flex}.pricing-table-heading>span{color:#8fc8f2;white-space:nowrap;background:#101c2c;border:1px solid #2c405c;border-radius:999px;padding:6px 10px;font-size:12px}.pricing-table-wrap{scrollbar-gutter:stable both-edges;margin:0 16px;padding:0 16px 24px;overflow:auto visible}.pricing-dialog table{border-collapse:separate;border-spacing:0;width:100%;min-width:1760px}.pricing-dialog th{z-index:2;color:#8fb9eb;text-align:left;letter-spacing:.09em;text-transform:uppercase;background:#0d1421;border-top:1px solid #202c40;border-bottom:1px solid #28364c;padding:14px 10px;font-size:10px;line-height:1.35;position:sticky;top:0}.pricing-dialog th:first-child{border-top-left-radius:12px;padding-left:14px}.pricing-dialog th:last-child{border-top-right-radius:12px}.pricing-dialog td{vertical-align:top;border-bottom:1px solid #1c2738;padding:12px 10px}.pricing-dialog tbody tr{transition:background .16s}.pricing-dialog tbody tr:hover{background:#3b82f60b}.pricing-dialog input,.pricing-dialog select{box-sizing:border-box;color:#eef5ff;background:#101827;border:1px solid #2e3e56;border-radius:10px;width:100%;min-width:116px;padding:11px 12px}.pricing-dialog input:hover,.pricing-dialog select:hover{border-color:#415978}.pricing-dialog td:first-child{min-width:240px;padding-left:14px}.pricing-dialog td:first-child input{min-width:220px}.pricing-dialog td:first-child small{margin:7px 2px 0;display:block}.pricing-dialog td:last-child{padding-right:14px}.pricing-dialog td:last-child button{color:#fca5a5;width:40px;height:40px;padding:0}.pricing-dialog>footer{z-index:4;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#090e18f5;border-top:1px solid #202a3b;border-radius:0 0 24px 24px;margin-top:auto;padding:20px 32px 24px;position:sticky;bottom:0}.pricing-dialog>footer div{gap:12px;display:flex}.pricing-dialog>footer div button:last-child{background:#153550;border-color:#3d7eb0}@media (width<=760px){.pricing-backdrop{padding:10px}.pricing-dialog{border-radius:18px;min-height:calc(100vh - 20px)}.pricing-dialog>header{align-items:flex-start;padding:22px 20px 20px}.pricing-dialog>header p{font-size:13px}.pricing-dialog>header>.pricing-back-button{padding:10px 12px;font-size:0}.pricing-dialog>header>.pricing-back-button span{font-size:20px}.pricing-fx-settings{grid-template-columns:1fr;gap:18px;margin:18px 20px 0;padding:18px}.pricing-table-heading{padding:22px 22px 10px}.pricing-table-wrap{margin:0 8px;padding:0 12px 14px}.pricing-dialog>footer{flex-direction:column;align-items:stretch;padding:16px 20px 20px}.pricing-dialog>footer>button,.pricing-dialog>footer div,.pricing-dialog>footer div button{width:100%}}.cost-guide{color:#eaf3ff;background:radial-gradient(circle at 80% 0,#00b0f01a,#0000 34%),#070b13;min-height:100vh;padding:clamp(18px,4vw,56px)}.cost-guide>header,.cost-guide-controls,.cost-guide-section,.cost-guide-final-note{width:min(1160px,100%);margin-inline:auto}.cost-guide>header{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.cost-guide small{color:#7dd3fc;letter-spacing:.12em;font-weight:800}.cost-guide h1{margin:8px 0;font-size:clamp(2rem,4vw,3.25rem)}.cost-guide h2,.cost-guide h3{margin-top:0}.cost-guide p{color:#a9b8ca;line-height:1.6}.cost-guide button,.cost-guide select{color:#eaf3ff;background:#101a2a;border:1px solid #36506e;border-radius:11px;padding:11px 14px}.cost-guide button{cursor:pointer}.cost-guide-controls{gap:14px;margin-block:28px;display:flex}.cost-guide-controls label{color:#9fb8d4;gap:7px;font-size:.82rem;display:grid}.cost-guide-section{background:#0c1421;border:1px solid #24354b;border-radius:18px;margin-block:22px;padding:clamp(18px,3vw,28px)}.cost-guide-section-heading{max-width:780px;margin-bottom:20px}.cost-guide-section-heading p{margin-bottom:0}.cost-guide-table-wrap{overflow-x:auto}.cost-guide table{border-collapse:collapse;width:100%;min-width:650px}.cost-guide caption{color:#7dd3fc;text-align:left;padding:0 0 12px}.cost-guide th,.cost-guide td{text-align:left;border-bottom:1px solid #25364b;padding:12px}.cost-guide thead{color:#7dd3fc}.cost-guide-blocks{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.cost-guide-blocks article,.cost-guide-example-card{background:#0f1a2a;border:1px solid #263c55;border-radius:14px;padding:18px}.cost-guide-blocks strong{color:#ddecff}.cost-guide-blocks p{margin:8px 0 0;font-size:.92rem}.cost-guide-example-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.cost-guide-calculation{gap:4px;display:grid}.cost-guide-calculation-head,.cost-guide-calculation-line{grid-template-columns:minmax(95px,.7fr) minmax(260px,2fr) minmax(90px,.7fr);align-items:center;gap:12px;display:grid}.cost-guide-calculation-head{color:#7890aa;text-transform:uppercase;font-size:.75rem}.cost-guide-calculation-line{border-bottom:1px solid #223348;padding-block:9px}.cost-guide-calculation-line code,.cost-guide-speed code{color:#b9d5ee;white-space:normal;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.78rem}.cost-guide-calculation-line>span,.cost-guide-calculation-total>span{text-align:right}.cost-guide-calculation-total{color:#7dd3fc;justify-content:space-between;gap:16px;padding-top:14px;font-size:1.05rem;display:flex}.cost-guide-speed,.cost-guide-context-summary{background:#0b1b2b;border:1px solid #285579;border-radius:13px;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:16px;padding:14px 16px;display:flex}.cost-guide-speed strong{color:#7dd3fc;font-size:1.3rem}.cost-guide-context-summary{color:#adc3d9;margin-bottom:18px}.cost-guide-unavailable,.cost-guide-unavailable-combination{background:#2a210b66;border:1px solid #8a6b22;border-radius:12px;padding:16px;color:#fcd34d!important}.cost-guide-unavailable-combination{margin-top:18px}.cost-guide-unavailable-combination p{margin:6px 0 0}.cost-guide-final-note{box-sizing:border-box;color:#d7e8fa;background:#0c1726;border-left:4px solid #38bdf8;border-radius:8px 14px 14px 8px;padding:20px;line-height:1.6}@media (width<=900px){.cost-guide-example-grid{grid-template-columns:1fr}}@media (width<=760px){.cost-guide>header,.cost-guide-controls{flex-direction:column}.cost-guide-blocks{grid-template-columns:1fr}.cost-guide-calculation-head{display:none}.cost-guide-calculation-line{grid-template-columns:1fr;gap:5px}.cost-guide-calculation-line>span{text-align:left}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardHelpDialog-BgVgrfhQ.js","assets/cost-monitor-DKwP1stV.js","assets/rolldown-runtime-D9-fqq9M.js","assets/cost-monitor-PoJA2PI1.css","assets/dashboard-localization-CLJ0lT9v.js","assets/DashboardHelpDialog-Je5nK-Et.css","assets/PricingSettingsDialog-vSvvOHQp.js","assets/ProjectSettingsPage-zH758vfs.js","assets/ProjectSettingsPage-BomxqCBU.css","assets/CostCalculationGuidePage-ovxurkIk.js","assets/TraceabilityWorkspace-DLn-Mz2M.js","assets/traceability-7f1j5wx3.js","assets/icons-vendor-B_lDDHn1.js","assets/traceability-DFY7ZDlu.css","assets/TraceabilityWorkspace-DvvavDLY.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{S as e,a as t,b as n,g as r,h as i,i as a,n as o,r as s,t as c}from"./cost-monitor-DKwP1stV.js";import{t as l}from"./react-vendor-B3TJrD4O.js";import{n as u,t as d}from"./traceability-7f1j5wx3.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var f=e(),p=l(),m=n();function h({locale:e}){let t=e===`pt-BR`?[`Definição`,`Planejamento`,`Pronto para Executar`,`Execução`,`Verificação`]:[`Definition`,`Planning`,`Ready to Execute`,`Execution`,`Verification`];return(0,m.jsxs)(`main`,{"aria-busy":`true`,"aria-live":`polite`,"aria-label":e===`pt-BR`?`Preparando dashboard`:`Preparing dashboard`,className:`app-skeleton`,role:`status`,children:[(0,m.jsxs)(`header`,{className:`app-skeleton-header`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`span`,{className:`app-skeleton-line app-skeleton-line-short`}),(0,m.jsx)(`h1`,{children:`Dashboard Zaip AIOS`})]}),(0,m.jsxs)(`div`,{className:`app-skeleton-actions`,children:[(0,m.jsx)(`span`,{}),(0,m.jsx)(`span`,{}),(0,m.jsx)(`span`,{})]})]}),(0,m.jsx)(`section`,{className:`app-skeleton-kpis`,"aria-hidden":`true`,children:Array.from({length:4},(e,t)=>`skeleton-kpi-${t}`).map(e=>(0,m.jsxs)(`article`,{children:[(0,m.jsx)(`span`,{className:`app-skeleton-line app-skeleton-line-short`}),(0,m.jsx)(`span`,{className:`app-skeleton-value`}),(0,m.jsx)(`span`,{className:`app-skeleton-line`})]},e))}),(0,m.jsxs)(`section`,{className:`app-skeleton-panels`,"aria-hidden":`true`,children:[(0,m.jsxs)(`article`,{children:[(0,m.jsx)(`span`,{className:`app-skeleton-line app-skeleton-line-medium`}),(0,m.jsx)(`div`,{className:`app-skeleton-chart`})]}),(0,m.jsxs)(`article`,{children:[(0,m.jsx)(`span`,{className:`app-skeleton-line app-skeleton-line-medium`}),(0,m.jsx)(`div`,{className:`app-skeleton-chart app-skeleton-chart-small`})]})]}),(0,m.jsx)(`section`,{className:`app-skeleton-board`,"aria-hidden":`true`,children:t.map((e,t)=>(0,m.jsxs)(`article`,{children:[(0,m.jsx)(`h2`,{children:e}),Array.from({length:t%2==0?2:1},(t,n)=>`${e}-${n}`).map(e=>(0,m.jsxs)(`div`,{className:`app-skeleton-card`,children:[(0,m.jsx)(`span`,{className:`app-skeleton-line`}),(0,m.jsx)(`span`,{className:`app-skeleton-line app-skeleton-line-medium`}),(0,m.jsx)(`span`,{className:`app-skeleton-pill`})]},e))]},e))})]})}function g(e,t){let n=t===`pt-BR`;return e===`costs`?n?{title:`Carregando Monitor de Custos…`,detail:`Isso costuma levar poucos segundos.`}:{title:`Loading Cost Monitor…`,detail:`This usually takes a few seconds.`}:e===`traceability`?n?{title:`Carregando Rastreabilidade…`,detail:`Estamos preparando as 6 etapas da task.`}:{title:`Loading Traceability…`,detail:`Preparing the task's 6 stages.`}:n?{title:`Atualizando dados do dashboard…`,detail:`Você pode continuar navegando.`}:{title:`Refreshing dashboard data…`,detail:`You can keep navigating.`}}function _({area:e,locale:t}){let n=g(e,t);return(0,m.jsxs)(`section`,{"aria-busy":`true`,"aria-live":`polite`,className:`app-loading-panel`,role:`status`,children:[(0,m.jsx)(`i`,{}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`strong`,{children:n.title}),(0,m.jsx)(`span`,{children:n.detail})]})]})}function v({area:e,locale:t}){let n=g(e,t);return(0,m.jsxs)(`section`,{"aria-live":`polite`,className:`app-refresh-status`,role:`status`,children:[(0,m.jsx)(`i`,{}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`strong`,{children:n.title}),(0,m.jsx)(`span`,{children:n.detail})]})]})}function y({locale:e,onRetry:t}){return(0,m.jsxs)(`section`,{"aria-live":`polite`,className:`app-loading-panel app-loading-panel-error`,role:`status`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`strong`,{children:e===`pt-BR`?`Não foi possível carregar os custos`:`Couldn't load costs`}),(0,m.jsx)(`span`,{children:e===`pt-BR`?`A tela continua disponível. Tente novamente quando quiser.`:`The dashboard remains available. Try again whenever you want.`})]}),(0,m.jsx)(`button`,{onClick:t,type:`button`,children:e===`pt-BR`?`Tentar novamente`:`Try again`})]})}function b(e,t){return e===t}function x(e,t,n,r){return b(e,t)&&n.from===r.from&&n.to===r.to}function S(e){return e instanceof DOMException&&e.name===`AbortError`}function ee(e,t){return e===t}function te(e,t,n){return b(e,t)&&!n.aborted}function ne(e,t){let n=e=>[...new Map(e.map(e=>[e.id,e])).values()];return{...e,prds:n([...e.prds,...t.flatMap(e=>e.prds)]),specs:n([...e.specs,...t.flatMap(e=>e.specs)]),tasks:n([...e.tasks,...t.flatMap(e=>e.tasks)]),changes:n([...e.changes,...t.flatMap(e=>e.changes)])}}function C(){let e=(0,f.useRef)(null);return(0,f.useEffect)(()=>{e.current?.focus()},[]),(0,m.jsx)(`div`,{"aria-busy":`true`,"aria-live":`polite`,className:`period-transition-overlay`,onKeyDownCapture:e=>e.preventDefault(),ref:e,role:`status`,tabIndex:-1,children:(0,m.jsxs)(`div`,{className:`period-transition-overlay__content`,children:[(0,m.jsx)(`i`,{"aria-hidden":`true`,className:`period-transition-overlay__spinner`}),(0,m.jsx)(`span`,{className:`period-transition-overlay__label`,children:`Carregando...`})]})})}function re({pending:e,children:t}){return(0,m.jsx)(`div`,{"aria-hidden":e||void 0,inert:e,children:t})}function ie({children:e,error:t,globalLoadingPending:n,locale:r,onRefresh:i,operations:a,snapshotNotice:o,setupRoute:s}){return s===null?t&&a===null?(0,m.jsxs)(`main`,{className:`app-state`,children:[(0,m.jsx)(`p`,{children:`Dashboard local indisponível`}),(0,m.jsx)(`h1`,{children:`Não foi possível ler o workspace V2.`}),(0,m.jsx)(`pre`,{children:t}),(0,m.jsx)(`button`,{onClick:i,type:`button`,children:`Tentar novamente`})]}):a===null?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(h,{locale:r}),o,n?(0,m.jsx)(C,{}):null]}):e:s}var w=`modulepreload`,T=function(e){return`/`+e},ae={},E=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=T(t,n),t=s(t),t in ae)return;ae[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:w,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},oe=(0,f.lazy)(async()=>({default:(await E(async()=>{let{DashboardHelpDialog:e}=await import(`./DashboardHelpDialog-BgVgrfhQ.js`);return{DashboardHelpDialog:e}},__vite__mapDeps([0,1,2,3,4,5]))).DashboardHelpDialog}));function se({costLocale:e,documentDetail:n,helpOpen:i,loadingArea:a,operations:s,reconciliationResult:c,refreshDialog:l,showTrace:p,trace:h,traceLink:g,traceLoadingTaskId:_,closeDocument:y,onCloseHelp:b,onCloseTrace:x,onDismissReconciliation:S,onOpenDocument:ee,onOpenTrace:te,onOpenTraceChange:ne,onOpenTraceMacro:C,onRefreshCancel:re,onRefreshFromDialog:ie,setTraceLink:w}){return(0,m.jsxs)(m.Fragment,{children:[p?null:_?(0,m.jsx)(d,{locale:e,taskId:_}):h?(0,m.jsx)(u,{locale:e,onClose:x,onOpenChange:ne,onOpenPrd:e=>C(`PRD`,e),onOpenSpec:e=>C(`SPEC`,e),trace:h}):null,g?.kind===`change`?(0,m.jsx)(r,{details:{kind:`change`,row:g.row},locale:e,onClose:()=>w(null)}):null,g?.kind===`macro`?(0,m.jsx)(t,{label:g.label,locale:e,onClose:()=>w(null),onOpenDocument:ee,onOpenTrace:e=>{w(null),te(e)},row:g.row,runs:s.runs,specs:s.specs,tasks:s.tasks}):null,n?(0,m.jsx)(o,{detail:n.detail,error:n.error,label:n.label,locale:e,loading:!n.detail&&!n.error,onClose:y,onRetry:()=>ee(n.kind,n.preview.id),preview:n.preview}):null,i?(0,m.jsx)(f.Suspense,{fallback:null,children:(0,m.jsx)(oe,{locale:e,onClose:b})}):null,l===`choose`?(0,m.jsx)(`div`,{className:`app-refresh-dialog-backdrop`,children:(0,m.jsxs)(`section`,{"aria-label":`Atualizar dashboard`,"aria-modal":`true`,className:`app-refresh-dialog`,role:`dialog`,children:[(0,m.jsx)(`h2`,{children:e===`pt-BR`?`Atualizar dashboard`:`Refresh dashboard`}),(0,m.jsx)(`p`,{children:e===`pt-BR`?`Escolha uma atualização rápida ou reconcilie os itens que ainda estão em aberto.`:`Choose a quick refresh or reconcile work items that are still open.`}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`button`,{onClick:()=>ie(!1),type:`button`,children:e===`pt-BR`?`Apenas atualizar dados`:`Refresh data only`}),(0,m.jsx)(`button`,{onClick:()=>ie(!0),type:`button`,children:e===`pt-BR`?`Reconciliar itens abertos`:`Reconcile open work`})]}),(0,m.jsx)(`button`,{className:`app-refresh-cancel`,onClick:re,type:`button`,children:e===`pt-BR`?`Cancelar`:`Cancel`})]})}):null,l===`refreshing`||l===`reconciling`?(0,m.jsxs)(`section`,{"aria-live":`polite`,className:`app-refresh-status`,role:`status`,children:[(0,m.jsx)(`i`,{}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`strong`,{children:l===`reconciling`?e===`pt-BR`?`Reconciliando itens em aberto…`:`Reconciling open work…`:e===`pt-BR`?`Atualizando dados…`:`Refreshing data…`}),(0,m.jsx)(`span`,{children:e===`pt-BR`?`Você pode continuar usando o dashboard.`:`You can keep using the dashboard.`})]})]}):null,c!==null&&l===null?(0,m.jsxs)(`section`,{"aria-live":`polite`,className:`app-reconciliation-result`,role:`status`,children:[(0,m.jsx)(`strong`,{children:e===`pt-BR`?`Resultado da reconciliação manual`:`Manual reconciliation result`}),(0,m.jsx)(`span`,{children:e===`pt-BR`?`${c.reconciled_ids.length} item(ns) reconciliado(s).`:`${c.reconciled_ids.length} item(s) reconciled.`}),c.reconciled_ids.length>0?(0,m.jsx)(`p`,{children:c.reconciled_ids.join(`, `)}):null,c.blocked.length>0?(0,m.jsxs)(`p`,{children:[e===`pt-BR`?`Bloqueados: `:`Blocked: `,c.blocked.map(e=>`${e.id}${e.reason===null?``:` (${e.reason})`}`).join(`; `)]}):null,c.not_reconciled.length>0?(0,m.jsxs)(`p`,{children:[e===`pt-BR`?`Não reconciliados: `:`Not reconciled: `,c.not_reconciled.map(e=>`${e.id}${e.reason===null?``:` (${e.reason})`}`).join(`; `)]}):null,(0,m.jsx)(`button`,{onClick:S,type:`button`,children:e===`pt-BR`?`Fechar`:`Dismiss`})]}):null,a!==null&&a!==`operations`&&l===null?(0,m.jsx)(v,{area:a,locale:e}):null]})}var ce=(0,f.lazy)(async()=>({default:(await E(async()=>{let{PricingSettingsPage:e}=await import(`./PricingSettingsDialog-vSvvOHQp.js`);return{PricingSettingsPage:e}},__vite__mapDeps([6,1,2,3,4]))).PricingSettingsPage})),le=(0,f.lazy)(async()=>({default:(await E(async()=>{let{ProjectSettingsPage:e}=await import(`./ProjectSettingsPage-zH758vfs.js`);return{ProjectSettingsPage:e}},__vite__mapDeps([7,1,2,3,8]))).ProjectSettingsPage})),ue=(0,f.lazy)(async()=>({default:(await E(async()=>{let{CostCalculationGuidePage:e}=await import(`./CostCalculationGuidePage-ovxurkIk.js`);return{CostCalculationGuidePage:e}},__vite__mapDeps([9,1,2,3]))).CostCalculationGuidePage})),de=`/setup-pricing`,fe=`/setup-project`,pe=`/cost-calculation-guide`;function me(e){let{api:t,costLocale:n,fxRate:r,navigate:i,pathname:a,pricing:o,refresh:s,setFxRate:c,setPricing:l}=e;return a===`/setup-pricing`?o===null?(0,m.jsxs)(`main`,{className:`app-state`,children:[(0,m.jsx)(`p`,{children:n===`pt-BR`?`Configuração do projeto`:`Project settings`}),(0,m.jsx)(`h1`,{children:n===`pt-BR`?`Carregando catálogo de preços…`:`Loading pricing catalog…`}),(0,m.jsx)(`button`,{onClick:()=>i(`/`),type:`button`,children:n===`pt-BR`?`Voltar ao dashboard`:`Back to dashboard`})]}):(0,m.jsx)(f.Suspense,{fallback:null,children:(0,m.jsx)(ce,{catalog:o,fxRate:r,locale:n,onClose:()=>i(`/`),onSave:async e=>{l(await t.savePricing(e)),await s()},onSaveFxRate:async e=>{c(await t.saveFxRate(e)),await s()}})}):a===`/cost-calculation-guide`&&o!==null?(0,m.jsx)(f.Suspense,{fallback:null,children:(0,m.jsx)(ue,{catalog:o,fxRate:r,locale:n,onClose:()=>i(`/`)})}):a===`/setup-project`?(0,m.jsx)(f.Suspense,{fallback:null,children:(0,m.jsx)(le,{api:t,locale:n,onClose:()=>i(`/`)})}):null}var he=`/zaip-cost-monitor`,D=`zaip-dashboard-session-token`,ge=`zaip-dashboard-locale`,O=`zaip-dashboard-currency`;function _e(){return window.localStorage.getItem(`zaip-dashboard-locale`)===`en-US`?`en-US`:`pt-BR`}function ve(e){return e.replace(/\/+$/,``)===he?`cost-monitor`:null}function ye(){let e=new URL(window.location.href),t=e.searchParams.get(`token`)??window.localStorage.getItem(`zaip-dashboard-session-token`)??window.sessionStorage.getItem(`zaip-dashboard-session-token`)??``;return t&&(window.localStorage.setItem(D,t),window.sessionStorage.setItem(D,t)),e.searchParams.has(`token`)&&(e.searchParams.delete(`token`),window.history.replaceState(null,``,`${e.pathname}${e.search}${e.hash}`)),t}var be=(0,f.lazy)(async()=>({default:(await E(async()=>{let{TraceabilityWorkspace:e}=await import(`./TraceabilityWorkspace-DLn-Mz2M.js`);return{TraceabilityWorkspace:e}},__vite__mapDeps([10,1,2,3,11,12,13,14]))).TraceabilityWorkspace}));function xe({costs:e,costLocale:t,currency:n,dashboardView:r,failedArea:i,lastUpdatedAt:a,loadCostDetail:o,loadCostReadModelPage:s,loadCostRunPage:l,loadCostGroupPage:u,loadingArea:d,onActiveDataChange:p,onCurrencyChange:h,onLoadingChange:g,onLocaleChange:v,onOpenTrace:b,onLoadMoreTraceTasks:x,onRefresh:S,onRetry:ee,onSelectTraceTask:te,onOpenTraceChange:ne,onOpenTraceMacro:C,operations:re,selectedTraceTaskId:ie,trace:w,traceLoadingTaskId:T,traceTasksHasMore:ae,traceTasksLoading:E,traceTasks:oe}){return r===`cost-monitor`?e===null?()=>i===`costs`?(0,m.jsx)(y,{locale:t,onRetry:ee}):(0,m.jsx)(_,{area:`costs`,locale:t}):r=>(0,m.jsx)(f.Suspense,{fallback:(0,m.jsx)(_,{area:`costs`,locale:t}),children:(0,m.jsx)(c,{currency:n,data:e,embedded:!0,globalFilters:r,lastUpdatedAt:a,locale:t,loading:d===`costs`,loadDetail:o,loadReadModelPage:s,loadRunPage:l,loadGroupPage:u,onActiveDataChange:p,onCurrencyChange:h,onLoadingChange:g,onLocaleChange:v,onOpenTrace:b,onRefresh:S,operations:re})}):r===`traceability`?()=>(0,m.jsx)(f.Suspense,{fallback:(0,m.jsx)(_,{area:`operations`,locale:t}),children:(0,m.jsx)(be,{loadingTaskId:T,locale:t,onOpenChange:ne,onOpenPrd:e=>C(`PRD`,e),onOpenSpec:e=>C(`SPEC`,e),onLoadMoreTasks:x,onSelectTask:te,selectedTaskId:ie,tasks:oe.length>0?oe:re.tasks,hasMoreTasks:ae,isLoadingTasks:E,trace:w})}):r===null?(0,m.jsx)(`span`,{"aria-hidden":`true`,hidden:!0}):void 0}var k={"pt-BR":{label:`Áreas do dashboard`,operations:`Operação`,operationsHint:`Trabalho em andamento e priorização`,costs:`Monitor de Custos`,costsHint:`Tempo, tokens e custo`,traceability:`Rastreabilidade`,traceabilityHint:`Ciclo completo em 6 etapas`},"en-US":{label:`Dashboard areas`,operations:`Operations`,operationsHint:`Lifecycle and work in progress`,costs:`Cost Monitor`,costsHint:`Time, tokens, and cost`,traceability:`Traceability`,traceabilityHint:`Complete 6-stage lifecycle`}};function Se({activeView:e,locale:t,onChange:n}){let r=k[t],i=e=>{n(e),window.requestAnimationFrame(()=>{document.querySelector(`.dashboard-global-controls`)?.scrollIntoView({behavior:`smooth`,block:`start`})})};return(0,m.jsxs)(`nav`,{"aria-label":r.label,className:`dashboard-capability-nav`,children:[(0,m.jsxs)(`button`,{"aria-current":e===`cost-monitor`?`page`:void 0,className:e===`cost-monitor`?`is-active`:void 0,onClick:()=>i(`cost-monitor`),type:`button`,children:[(0,m.jsx)(Ce,{}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:r.costs}),(0,m.jsx)(`small`,{children:r.costsHint})]})]}),(0,m.jsxs)(`button`,{"aria-current":e===`operations`?`page`:void 0,className:e===`operations`?`is-active`:void 0,onClick:()=>i(`operations`),type:`button`,children:[(0,m.jsx)(A,{}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:r.operations}),(0,m.jsx)(`small`,{children:r.operationsHint})]})]}),(0,m.jsxs)(`button`,{"aria-current":e===`traceability`?`page`:void 0,className:e===`traceability`?`is-active`:void 0,onClick:()=>i(`traceability`),type:`button`,children:[(0,m.jsx)(j,{}),(0,m.jsxs)(`span`,{children:[(0,m.jsx)(`strong`,{children:r.traceability}),(0,m.jsx)(`small`,{children:r.traceabilityHint})]})]})]})}function A(){return(0,m.jsxs)(`svg`,{"aria-hidden":`true`,className:`lucide lucide-square-kanban`,viewBox:`0 0 24 24`,children:[(0,m.jsx)(`rect`,{height:`18`,rx:`2`,width:`18`,x:`3`,y:`3`}),(0,m.jsx)(`path`,{d:`M8 7v7`}),(0,m.jsx)(`path`,{d:`M12 7v4`}),(0,m.jsx)(`path`,{d:`M16 7v9`})]})}function Ce(){return(0,m.jsxs)(`svg`,{"aria-hidden":`true`,className:`lucide lucide-circle-dollar-sign`,viewBox:`0 0 24 24`,children:[(0,m.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,m.jsx)(`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`}),(0,m.jsx)(`path`,{d:`M12 18V6`})]})}function j(){return(0,m.jsxs)(`svg`,{"aria-hidden":`true`,className:`lucide lucide-route`,viewBox:`0 0 24 24`,children:[(0,m.jsx)(`circle`,{cx:`6`,cy:`19`,r:`3`}),(0,m.jsx)(`path`,{d:`M9 19h6.5a3.5 3.5 0 0 0 0-7h-7a3.5 3.5 0 0 1 0-7H18`}),(0,m.jsx)(`circle`,{cx:`18`,cy:`5`,r:`3`})]})}function we({currency:e,locale:t,onCurrencyChange:n,onHelpOpen:r,onNavigate:i,pricingSetupPath:a,projectSetupPath:o,costCalculationGuidePath:s}){return(0,m.jsxs)(`div`,{className:`dashboard-global-settings`,children:[(0,m.jsxs)(`label`,{children:[(0,m.jsx)(`span`,{children:t===`pt-BR`?`Moeda`:`Currency`}),(0,m.jsxs)(`select`,{"aria-label":t===`pt-BR`?`Moeda`:`Currency`,onChange:e=>n(e.target.value),value:e,children:[(0,m.jsx)(`option`,{value:`BRL`,children:`BRL · Real brasileiro`}),(0,m.jsx)(`option`,{value:`USD`,children:`USD · US Dollar`})]})]}),(0,m.jsx)(`button`,{className:`dashboard-help-open`,onClick:r,type:`button`,children:t===`pt-BR`?`Central de Ajuda`:`Open help and guides`}),(0,m.jsx)(`button`,{className:`dashboard-help-open`,onClick:()=>i(a),type:`button`,children:t===`pt-BR`?`Configurar preços e câmbio`:`Configure pricing and FX`}),(0,m.jsx)(`button`,{className:`dashboard-help-open`,onClick:()=>i(o),type:`button`,children:t===`pt-BR`?`Configurar projeto`:`Configure project`})]})}var Te=class{token;constructor(e){this.token=e}ready(){return this.get(`/api/v2/ready`)}operations(e,t=`detail`,n,r=!1){let a=`${i.operations}?scope=${t}${r?`&fresh=1`:``}`;return this.get(F(a,e),n)}sqliteViewPage(e,t,n={},r){let i=new URLSearchParams({view:e,offset:String(n.offset??0)});return n.limit!==void 0&&i.set(`limit`,String(n.limit)),n.query&&i.set(`query`,n.query),n.status&&i.set(`status`,n.status),n.risk&&i.set(`risk`,n.risk),n.provider&&i.set(`provider`,n.provider),n.model&&i.set(`model`,n.model),n.agent&&i.set(`agent`,n.agent),n.phase&&i.set(`phase`,n.phase),n.origin&&i.set(`origin`,n.origin),n.workType&&i.set(`workType`,n.workType),n.priority&&i.set(`priority`,n.priority),n.kind&&i.set(`kind`,n.kind),this.get(F(`/api/v2/sqlite-views?${i.toString()}`,t),r)}operationsBoard(e,t,n=0,r,a,o=4){let s=new URLSearchParams({scope:`board`,stage:t,offset:String(n),limit:String(o)});return r?.query&&s.set(`query`,r.query),r?.status&&s.set(`status`,r.status),r?.risk&&s.set(`risk`,r.risk),r?.origin&&s.set(`origin`,r.origin),r?.kind&&s.set(`kind`,r.kind),this.get(F(`${i.operations}?${s.toString()}`,e),a)}operationsClassification(e,t,n,r=0,a,o=50){let s=new URLSearchParams({scope:`classification`,kind:t,classification:n,offset:String(r),limit:String(o)});return this.get(F(`${i.operations}?${s.toString()}`,e),a)}operationsEntityPage(e,t,n=0,r,a){let o=M(t,n,r);return this.get(F(`${i.operations}/runs?${o}`,e),a)}operationsLifecyclePage(e,t,n=0,r,a){let o=M(t,n,r);return this.get(F(`${i.operations}/entities?${o}`,e),a)}operationsReadModelPage(e,t,n=0,r=50,a=``,o){let s=new URLSearchParams({kind:t,offset:String(n),limit:String(r)});return a&&s.set(`query`,a),this.get(F(`${i.operations}/read-models?${s.toString()}`,e),o)}costMonitor(e=`BRL`,t,n=`detail`,r,a,o=!1){let s=new URLSearchParams({currency:e,scope:n});o&&s.set(`fresh`,`1`);for(let[e,t]of Object.entries(a??{}))t&&s.set(e,t);return this.get(F(`${i.costMonitor}?${s.toString()}`,t),r)}costMonitorRuns(e=`BRL`,t,n,r=100,a,o){let s=new URLSearchParams({currency:e,scope:`runs`,offset:String(n),limit:String(r)});for(let[e,t]of Object.entries(o??{}))t&&s.set(e,t);return this.get(F(`${i.costMonitor}?${s.toString()}`,t),a)}snapshot(e=`BRL`,t){return this.get(F(`${i.snapshot}?currency=${e}`,t))}reconcileOpenWork(e=`BRL`,t){return this.post(F(`${i.reconcileOpenWork}?currency=${e}`,t),Ee)}refreshProjection(e=`BRL`,t){return this.post(F(`${i.refreshProjection}?currency=${e}`,t),Ee)}task(e){return this.get(i.task(e))}prd(e){return this.get(i.prd(e))}spec(e){return this.get(i.spec(e))}taskTrace(e,t){return this.get(i.taskTrace(e),t)}pricing(){return this.get(`/api/v2/pricing`)}async savePricing(e){let t=await fetch(`/api/v2/pricing`,{method:`PUT`,headers:{"content-type":`application/json`,"x-zaip-session":this.token},body:JSON.stringify(e)});if(!t.ok)throw Error(`Pricing update failed with HTTP ${t.status}`);return await t.json()}fxRate(){return this.get(`/api/v2/fx-rate`)}agentCatalog(){return this.get(i.agentCatalog)}agentPortraitUrl(e){return`/api/v2/agent-catalog-assets/${encodeURIComponent(e)}?token=${encodeURIComponent(this.token)}`}projectSettings(){return this.get(i.projectSettings)}projectOverview(){return this.get(`${i.projectSettings}/overview`)}async saveWorkPriority(e){let t=await fetch(i.workPriority,{method:`PUT`,headers:{"content-type":`application/json`,"x-zaip-session":this.token},body:JSON.stringify({item_ids:e})});if(!t.ok)throw Error(`Work priority update failed with HTTP ${t.status}`);return await t.json()}async saveProjectSettings(e){let t=await fetch(i.projectSettings,{method:`PUT`,headers:{"content-type":`application/json`,"x-zaip-session":this.token},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error??`Project settings update failed with HTTP ${t.status}`)}return await t.json()}async saveAgentCatalog(e){let t=e.map(({nickname_candidates:e,...t})=>t),n=await fetch(i.agentCatalog,{method:`PUT`,headers:{"content-type":`application/json`,"x-zaip-session":this.token},body:JSON.stringify({agents:t})});if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??`Agent catalog update failed with HTTP ${n.status}`)}return await n.json()}async saveFxRate(e){let t=await fetch(`/api/v2/fx-rate`,{method:`PUT`,headers:{"content-type":`application/json`,"x-zaip-session":this.token},body:JSON.stringify({rate:e})});if(!t.ok)throw Error(`FX update failed with HTTP ${t.status}`);return await t.json()}async get(e,t){let n=await P(e,{cache:`no-cache`,headers:{"x-zaip-session":this.token}},N,t);if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??`Dashboard API failed with HTTP ${n.status}`)}return await n.json()}async post(e,t=N){let n=await P(e,{method:`POST`,headers:{"x-zaip-session":this.token}},t);if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error??`Dashboard API failed with HTTP ${n.status}`)}return await n.json()}};function M(e,t,n){let r=new URLSearchParams({kind:e,offset:String(t),limit:`100`});return n?.query&&r.set(`query`,n.query),n?.status&&r.set(`status`,n.status),n?.risk&&r.set(`risk`,n.risk),r.toString()}var N=6e4,Ee=18e4;async function P(e,t,n=N,r){let i=new AbortController,a=()=>i.abort();r?.addEventListener(`abort`,a,{once:!0}),r?.aborted&&i.abort();let o=window.setTimeout(()=>i.abort(),n);try{return await fetch(e,{...t,signal:i.signal})}catch(e){throw e instanceof DOMException&&e.name===`AbortError`?Error(`A leitura demorou mais de ${Math.ceil(n/1e3)} segundos. Tente novamente.`):e}finally{window.clearTimeout(o),r?.removeEventListener(`abort`,a)}}function F(e,t){if(t===void 0)return e;let n=new URL(e,`http://dashboard.local`);return t.from!==null&&n.searchParams.set(`from`,t.from),t.to!==null&&n.searchParams.set(`to`,t.to),`${n.pathname}${n.search}`}var De={preset:`this-month`,range:a(`this-month`)};function I(e){return e.preset===`all`?{from:null,to:null}:{from:e.range.start,to:e.range.end}}var Oe=1500;function ke({snapshotUpdating:e,initialDataPending:t,dismissed:n,delayElapsed:r}){return e&&t&&!n&&r}function Ae({cursor:e,page:t,tasks:n}){let r=new Map(n.map(e=>[e.id,e]));for(let e of t.tasks)r.set(e.id,e);let i=e.offset+t.tasks.length;return{tasks:[...r.values()],cursor:t.tasks.length===0||i>=t.total?{offset:0,stageIndex:e.stageIndex+1}:{...e,offset:i}}}function je(e,t,n){return Math.min(t,e+n)}function L(e){return typeof e==`number`?e:null}function Me(e){return typeof e==`number`?{known_sum:e,unknown:0,complete:!0,coverage_ratio:1}:{known_sum:0,unknown:1,complete:!1,coverage_ratio:0}}function R(e){return Object.hasOwn(e,`total_duration`)?L(e.total_duration):L(e.cost_monitor_total_duration)}function Ne(e,t,n){let{filters:r,query:i}=e;return{offset:t,limit:n,...i===void 0||i===``?{}:{query:i},...r.provider?{provider:r.provider}:{},...r.model?{model:r.model}:{},...r.agent?{agent:r.agent}:{},...r.phase?{phase:r.phase}:{},...r.status?{status:r.status}:{},...r.origin?{origin:r.origin}:{},...r.workType?{workType:r.workType}:{},...r.priority?{priority:r.priority}:{},...r.risk?{risk:r.risk}:{}}}function z(e){let t=R(e),n=Number(e.duration_unknown??+(t===null)),r=L(e.duration_known)??t??0;return{key:String(e.key??e.period_key??`total`),label:String(e.label??e.key??e.period_key??``),latest_started_at:typeof e.latest_started_at==`string`?e.latest_started_at:``,persona:typeof e.persona==`string`?e.persona:null,job:typeof e.job==`string`?e.job:null,run_count:Number(e.total_run_count??e.invocation_count??0),task_count:L(e.task_count),prd_count:Number(e.prd_count??0),spec_count:Number(e.spec_count??0),evidence_count:Number(e.evidence_count??0),test_count:Number(e.validation_count??0),event_count:Number(e.source_event_count??0),total_tokens:L(e.total_tokens),estimated_usd:L(e.total_cost_usd),estimated_brl:L(e.total_cost_brl),duration_ms:t,duration:{known_sum:r,unknown:n,complete:n===0,coverage_ratio:+(n===0)},coverage:{events:0,tokens:0,usd:0,brl:0}}}async function Pe(e,t){let{from:n,limit:r,offset:i,signal:a,to:o,view:s}=t,c=n===void 0||o===void 0?void 0:{from:n,to:o};if(s===`daily`){let n=await e.sqliteViewPage(`cost_monitor_daily`,c,Ne(t,i,r),a);return{offset:n.offset,limit:n.limit,total_count:n.total_count,has_more:n.has_more,rows:n.rows.map(z),...n.totals===void 0?{}:{totals:z(n.totals)}}}let l={monthly:`cost_monitor_monthly`,annual:`cost_monitor_annual`,agents:`cost_monitor_zaip_agents`,models:`cost_monitor_models`,providers:`cost_monitor_providers`}[s],u=await e.sqliteViewPage(l,c,Ne(t,i,r),a);return{offset:u.offset,limit:u.limit,total_count:u.total_count,has_more:u.has_more,rows:u.rows.map(z),...u.totals===void 0?{}:{totals:z(u.totals)}}}async function Fe(e,t){let{filters:n,from:r,limit:i=10,offset:a,signal:o,to:s}=t,c=await e.sqliteViewPage(`cost_monitor_agent_invocations`,r===void 0||s===void 0?void 0:{from:r,to:s},{offset:a,limit:i,...n?.query?{query:n.query}:{},...n?.provider?{provider:n.provider}:{},...n?.model?{model:n.model}:{},...n?.agent?{agent:n.agent}:{},...n?.phase?{phase:n.phase}:{},...n?.status?{status:n.status}:{}},o);return{page_only:!0,runs:c.rows.map(Ie),run_page:{offset:c.offset,limit:c.limit,total:c.total_count,has_more:c.has_more}}}function Ie(e){let t=(e,t)=>typeof e==`string`?e:t,n=e=>typeof e==`number`?e:null,r=t(e.agent_invocation_id,`unavailable`),i=typeof e.task_id==`string`?e.task_id:null,a=typeof e.spec_id==`string`?e.spec_id:null,o=typeof e.prd_id==`string`?e.prd_id:null,s=t(e.phase,`execution`),c=e.duration_provenance===`observed`||e.duration_provenance===`reconciled`||e.duration_provenance===`estimated`||e.duration_provenance===`legacy_inferred`?e.duration_provenance:`unavailable`,l=Object.hasOwn(e,`calculated_cost_usd`)?n(e.calculated_cost_usd):n(e.cost_usd),u=n(e.current_fx_rate)??n(e.fx_rate),d=n(e.recorded_cost_usd)??n(e.recorded_usd),f=Object.hasOwn(e,`recorded_fx_rate`)?n(e.recorded_fx_rate):n(e.fx_rate),p=n(e.recorded_brl)??(!Object.hasOwn(e,`recorded_brl`)&&d!==null?n(e.cost_brl):null),m=l!==null&&u!==null?Math.round(l*u*1e6)/1e6:null;return{run_id:r,execution_id:typeof e.execution_id==`string`?e.execution_id:null,conversation_id:t(e.run_id,r),task_id:i,task_title:t(e.task_title,i??`Tarefa avulsa`),task_status:t(e.task_status,`unavailable`),priority:t(e.priority,`unavailable`),risk:t(e.risk,`unavailable`),spec_id:a,prd_id:o,change_id:typeof e.change_id==`string`?e.change_id:null,parent_run_id:typeof e.parent_agent_invocation_id==`string`?e.parent_agent_invocation_id:null,run_role:e.invocation_kind===`subagent`?`subagent`:`orchestrator`,run_kind:e.run_kind===`subrun`?`subrun`:`run`,run_purpose:`execution`,requires_finalizer:!1,client:t(e.client,`unavailable`),agent:t(e.zaip_agent,`unavailable`),agent_name:t(e.zaip_agent,`unavailable`),provider:typeof e.provider==`string`?e.provider:null,model:t(e.model,`unavailable`),requested_model:t(e.requested_model,`unavailable`),reasoning_effort:typeof e.reasoning_effort==`string`?e.reasoning_effort:null,effective_reasoning_effort:typeof e.effective_reasoning_effort==`string`?e.effective_reasoning_effort:null,service_tier:typeof e.service_tier==`string`?e.service_tier:null,call_count:n(e.llm_call_count),status:t(e.status,`completed`),phase:s,origin:o===null?a===null?i===null?`conversation`:`task`:`spec`:`prd`,work_type:e.work_type===`rework`?`rework`:`new`,started_at:t(e.occurred_at,``),finished_at:typeof e.finished_at==`string`?e.finished_at:null,duration_ms:n(e.duration_ms),duration_provenance:c,estimation_basis:typeof e.estimation_basis==`string`?e.estimation_basis:null,source_started_at:typeof e.source_started_at==`string`?e.source_started_at:null,source_finished_at:typeof e.source_finished_at==`string`?e.source_finished_at:null,capture_lag_ms:n(e.capture_lag_ms),event_count:n(e.source_event_count),input_tokens:n(e.input_tokens),cached_input_tokens:n(e.cached_input_tokens),output_tokens:n(e.output_tokens),reasoning_tokens:n(e.reasoning_tokens),total_tokens:n(e.total_tokens),uncached_input_tokens:n(e.uncached_input_tokens),visible_output_tokens:n(e.visible_output_tokens),input_rate_usd_per_million:n(e.input_rate_usd_per_million),cached_input_rate_usd_per_million:n(e.cached_input_rate_usd_per_million),output_rate_usd_per_million:n(e.output_rate_usd_per_million),reasoning_rate_usd_per_million:n(e.reasoning_rate_usd_per_million),context_input_multiplier:n(e.context_input_multiplier),context_output_multiplier:n(e.context_output_multiplier),speed_cost_multiplier:n(e.speed_cost_multiplier),standard_cost_usd:n(e.standard_cost_usd),speed_uplift_usd:n(e.speed_uplift_usd),input_cost_usd:n(e.input_cost_usd),cached_input_cost_usd:n(e.cached_input_cost_usd),output_cost_usd:n(e.output_cost_usd),reasoning_cost_usd:n(e.reasoning_cost_usd),fx_rate:u,estimated_usd:l,estimated_brl:m,recorded_usd:d,recorded_brl:p,recorded_fx_rate:f,coverage:{events:0,tokens:0,usd:0,brl:0},artifact_path:`.agents/records/runs/${r}`}}function Le(e,t){let n=t.totals,r=e=>Me(n?.[e]);return{data_source:`lifecycle_daily_read_models`,snapshot_id:null,source_latest_at:null,kind:e,offset:t.offset,limit:t.limit,total:t.total_count,has_more:t.has_more,next_cursor:null,subtotal:{entity_count:typeof n?.entity_count==`number`?n.entity_count:t.total_count,run_count:r(`invocation_count`),metrics:{duration:r(`total_duration`),total_tokens:r(`total_tokens`),cost_brl:r(`total_cost_brl`),cost_usd:r(`total_cost_usd`)}},rows:t.rows.map(t=>({id:String(t.task_id??t.spec_id??t.prd_id??t.execution_id??t.conversation_id??t.id??`unavailable`),title:String(t.title??t.task_id??t.spec_id??t.prd_id??t.execution_id??t.conversation_id??`Unavailable`),kind:e===`tasks`?`task`:e===`specs`?`spec`:e===`prds`?`prd`:e===`executions`?`execution`:`conversation`,status:typeof t.status==`string`?t.status:null,risk:typeof t.risk==`string`?t.risk:null,occurred_at:typeof t.occurred_at==`string`?t.occurred_at:typeof t.started_at==`string`?t.started_at:typeof t.last_day==`string`?`${t.last_day}T12:00:00.000Z`:``,parent_id:null,run_count:Number(t.invocation_count??0),cost_currency:`BRL`,metrics:{duration:Me(t.total_duration),total_tokens:Me(t.total_tokens),cost:Me(t.total_cost_brl)}}))}}function Re(e){return{loadCostDetail:(0,f.useCallback)(async()=>{throw Error(`SQLite Cost Monitor loads the selected paginated view; full detail is disabled.`)},[]),loadCostReadModelPage:(0,f.useCallback)(async({filters:t,from:n,kind:r,limit:i,offset:a,query:o,signal:s,to:c})=>{let l={tasks:`cost_monitor_tasks`,specs:`cost_monitor_specs`,prds:`cost_monitor_prds`,executions:`cost_monitor_executions`,conversations:`cost_monitor_conversations`}[r];return Le(r,await e.sqliteViewPage(l,n===void 0||c===void 0?void 0:{from:n,to:c},{offset:a,limit:i,...o===void 0||o===``?{}:{query:o},...t.provider?{provider:t.provider}:{},...t.model?{model:t.model}:{},...t.agent?{agent:t.agent}:{},...t.phase?{phase:t.phase}:{},...t.status?{status:t.status}:{},...t.origin?{origin:t.origin}:{},...t.workType?{workType:t.workType}:{},...t.priority?{priority:t.priority}:{},...t.risk?{risk:t.risk}:{}},s))},[e]),loadCostRunPage:(0,f.useCallback)(t=>Fe(e,t),[e]),loadCostGroupPage:(0,f.useCallback)(t=>Pe(e,t),[e])}}function ze(e,t){return!1}function Be(e,t=window,n=0){let r=!1,i=!1,a=new AbortController,o=t.setTimeout(()=>{r||i||(i=!0,e(a.signal))},n);return()=>{r||(r=!0,a.abort(),t.clearTimeout(o))}}function Ve({inFlight:e,lastRefreshAt:t,now:n,visibilityState:r}){return r===`visible`&&!e&&n-t>=5e3}function He({api:e,costLocale:t,currency:n,dashboardView:r,loadOperationsDetails:i,operations:a,operationsDetailAbortRef:o,operationsDetailCancelRef:s,operationsPageAbortRef:c,pathname:l,pricing:u,refresh:d,refreshVersion:p,setError:m,setFxRate:h,setPathname:g,setPricing:_}){let v=(0,f.useRef)(!1),y=(0,f.useRef)(0);(0,f.useEffect)(()=>(d(),()=>{s.current?.(),s.current=null,o.current?.abort(),o.current=null,c.current?.abort(),c.current=null,++p.current}),[o,s,c,d,p]),(0,f.useEffect)(()=>{let e=()=>{let e=Date.now();Ve({inFlight:v.current,lastRefreshAt:y.current,now:e,visibilityState:document.visibilityState})&&(y.current=e,v.current=!0,d(!1,!1,!0).finally(()=>{v.current=!1}))};return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[d]),(0,f.useEffect)(()=>{if(!ze(r,a?.summary.overview_metrics?.partial===!0))return;let e=Be(async e=>{await i(e)});return s.current=e,()=>{s.current===e&&(s.current=null),e()}},[r,i,a?.summary.overview_metrics?.partial,s]),(0,f.useEffect)(()=>window.localStorage.setItem(ge,t),[t]),(0,f.useEffect)(()=>window.localStorage.setItem(O,n),[n]),(0,f.useEffect)(()=>{[`/`,`/setup-pricing`,`/setup-project`].includes(window.location.pathname)||(window.history.replaceState(null,``,`/${window.location.search}${window.location.hash}`),g(`/`))},[g]),(0,f.useEffect)(()=>{let e=()=>g(window.location.pathname);return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[g]),(0,f.useEffect)(()=>{l!==`/setup-pricing`||u!==null||Promise.all([e.pricing(),e.fxRate()]).then(([e,t])=>{_(e),h(t)}).catch(e=>m(String(e)))},[e,l,u,m,h,_])}var B={events:0,tokens:{input:null,cached_input:null,output:null,reasoning:null,total:null},cost:{usd:null,brl:null},coverage:{events:0,tokens:0,usd:0,brl:0}};function Ue(e,t,n){let r=e=>e===`intake`||e===`orchestration`||e===`execution`||e===`review`||e===`audit`||e===`finalization`?e:`execution`,i=n.rows.map(e=>({id:e.id,artifact_path:`.agents/records/runs/${e.id}`,status:e.status===`running`||e.status===`failed`||e.status===`cancelled`?e.status:`completed`,phase:e.phase??`execution`,entrypoint:e.conversation_id===null?`task`:`conversation`,work_type:`new`,run_role:e.run_kind===`subrun`?`subagent`:`orchestrator`,run_kind:e.run_kind??`run`,run_purpose:r(e.run_purpose),requires_finalizer:!1,parent_run_id:e.parent_run_id,client:e.client??`unknown`,agent:e.agent??`unknown`,agent_name:e.agent??`unknown`,agent_persona:e.agent_persona??null,agent_job:e.agent_job??null,provider:e.provider??null,model:e.model??`unknown`,reasoning_effort:e.reasoning_effort??null,effective_model:e.model??null,effective_reasoning_effort:e.reasoning_effort??null,effective_config_mixed:e.pricing_mixed??!1,service_tier:e.service_tier??null,call_count:e.llm_call_count??null,terminal_call_count:null,failed_call_count:null,cancelled_call_count:null,conversation_id:e.conversation_id??e.id,execution_id:e.execution_id,task_id:e.task_id,spec_id:null,prd_id:null,change_id:null,started_at:e.started_at,finished_at:e.finished_at,duration_ms:e.duration_ms,source_duration_ms:e.source_duration_ms===void 0?e.duration_ms:e.source_duration_ms,duration_provenance:e.duration_provenance===`observed`||e.duration_provenance===`reconciled`||e.duration_provenance===`legacy_inferred`||e.duration_provenance===`estimated`?e.duration_provenance:`unavailable`,llm_call_count:e.llm_call_count??null,input_tokens:e.input_tokens??null,cached_input_tokens:e.cached_input_tokens??null,uncached_input_tokens:e.uncached_input_tokens??null,output_tokens:e.output_tokens??null,reasoning_tokens:e.reasoning_tokens??null,visible_output_tokens:e.visible_output_tokens??null,input_rate_usd_per_million:e.input_rate_usd_per_million??null,cached_input_rate_usd_per_million:e.cached_input_rate_usd_per_million??null,output_rate_usd_per_million:e.output_rate_usd_per_million??null,reasoning_rate_usd_per_million:e.reasoning_rate_usd_per_million??null,context_input_multiplier:e.context_input_multiplier??null,context_output_multiplier:e.context_output_multiplier??null,speed_cost_multiplier:e.speed_cost_multiplier??null,pricing_scenario:e.pricing_scenario??null,standard_cost_usd:e.standard_cost_usd??null,speed_uplift_usd:e.speed_uplift_usd??null,input_cost_usd:e.input_cost_usd??null,cached_input_cost_usd:e.cached_input_cost_usd??null,output_cost_usd:e.output_cost_usd??null,reasoning_cost_usd:e.reasoning_cost_usd??null,calculated_cost_usd:e.calculated_cost_usd??null,recorded_cost_usd:e.recorded_cost_usd??null,cost_variance_usd:e.cost_variance_usd??null,cost_usd:e.cost_usd??null,cost_brl:e.currency===`BRL`?e.cost:null,fx_rate:e.fx_rate??null,pricing_segment_count:e.pricing_segment_count??null,pricing_mixed:e.pricing_mixed??!1,pricing_model:e.pricing_model??null,pricing_source:e.pricing_source??null,...e.lifecycle_elapsed_ms===void 0?{}:{lifecycle_elapsed_ms:e.lifecycle_elapsed_ms},usage:{conversation:B,planning:B,execution:{...B,events:e.llm_call_count??0,tokens:{input:e.input_tokens??null,cached_input:e.cached_input_tokens??null,output:e.output_tokens??null,reasoning:e.reasoning_tokens??null,total:e.total_tokens},cost:{usd:e.cost_usd??null,brl:e.currency===`BRL`?e.cost:null}},total:{...B,events:e.llm_call_count??0,tokens:{input:e.input_tokens??null,cached_input:e.cached_input_tokens??null,output:e.output_tokens??null,reasoning:e.reasoning_tokens??null,total:e.total_tokens},cost:{usd:e.cost_usd??null,brl:e.currency===`BRL`?e.cost:null}},new_work:B,rework:B}}));return{...e,runs:i,executions:t===`executions`||t===`conversations`?n.rows.map((e,n)=>{let r=i[n],a=r.execution_id??r.conversation_id,o=e.status??`unavailable`;return{id:a,kind:t===`conversations`?`interaction`:`delivery`,created_at:r.started_at,status:o,work_status:o,origin:t===`conversations`?{type:`interaction`,conversation_id:r.conversation_id}:{type:`task`,task_id:r.task_id??`unavailable`},dag:{nodes:[],topological_order:[]},result:null,artifact_path:`.agents/records/executions/${a}`,agent_call_count:0,orchestrator_run_count:0,subagent_run_count:0,finalizer_run_count:0,finalized_task_count:0,llm_call_count:0,llm_call_count_complete:!1,task_count:0,spec_count:0,prd_count:0,duration_ms:r.source_duration_ms??null,...e.lifecycle_elapsed_ms===void 0?{}:{lifecycle_elapsed_ms:e.lifecycle_elapsed_ms},total_tokens:r.usage.total.tokens.total,cost_brl:r.usage.total.cost.brl}}):e.executions}}function We(e){if(typeof e!=`string`)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function Ge({api:e,entityFiltersRef:t,operationsPageAbortRef:n,operationsPageRequestVersionRef:r,operationsPeriod:i,operationsPeriodRef:a,refreshVersion:o,setEntityPage:s,setEntityPageKind:c,setOperations:l}){return{loadOperationsEntityPage:(0,f.useCallback)(async(u,d=0,f=t.current)=>{n.current?.abort();let p=new AbortController;n.current=p;let m=++r.current,h=o.current,g=I(i),_=()=>te(m,r.current,p.signal)&&x(h,o.current,g,I(a.current));c(u),s({offset:d,total:null,loading:!0,error:null});try{let t={runs:`operations_agent_invocations`,executions:`operations_executions`,conversations:`operations_conversations`}[u],n=await e.sqliteViewPage(t,g,{offset:d,limit:100,...f.query?{query:f.query}:{},...f.status?{status:f.status}:{},...f.risk?{risk:f.risk}:{}},p.signal),r={kind:u,offset:n.offset,limit:n.limit,total:n.total_count,aggregation:`canonical_entity`,rows:n.rows.map(e=>({id:String(e.agent_invocation_id??e.execution_id??e.conversation_id??e.id),started_at:String(e.occurred_at??e.started_at??`1970-01-01T00:00:00.000Z`),finished_at:typeof e.finished_at==`string`?e.finished_at:null,task_id:typeof e.task_id==`string`?e.task_id:null,execution_id:typeof e.execution_id==`string`?e.execution_id:null,conversation_id:typeof e.conversation_id==`string`?e.conversation_id:null,parent_run_id:typeof e.parent_agent_invocation_id==`string`?e.parent_agent_invocation_id:null,run_kind:e.invocation_kind===`delegated`||e.invocation_kind===`subagent`?`subrun`:e.invocation_kind===`orchestrator`?`run`:null,run_purpose:typeof e.purpose==`string`?e.purpose:null,phase:typeof e.phase==`string`?e.phase:null,status:typeof e.status==`string`?e.status:null,agent:typeof e.zaip_agent==`string`?e.zaip_agent:null,agent_persona:typeof e.zaip_agent_persona==`string`?e.zaip_agent_persona:null,agent_job:typeof e.zaip_agent_job==`string`?e.zaip_agent_job:null,client:typeof e.client==`string`?e.client:null,provider:typeof e.provider==`string`?e.provider:null,model:typeof e.model==`string`?e.model:null,reasoning_effort:typeof e.reasoning_effort==`string`?e.reasoning_effort:null,service_tier:typeof e.service_tier==`string`?e.service_tier:null,duration_ms:typeof e.duration_ms==`number`?e.duration_ms:typeof e.total_duration==`number`?e.total_duration:null,source_duration_ms:typeof e.source_duration_ms==`number`?e.source_duration_ms:null,duration_provenance:typeof e.duration_provenance==`string`?e.duration_provenance:null,llm_call_count:typeof e.llm_call_count==`number`?e.llm_call_count:null,input_tokens:typeof e.input_tokens==`number`?e.input_tokens:null,cached_input_tokens:typeof e.cached_input_tokens==`number`?e.cached_input_tokens:null,uncached_input_tokens:typeof e.uncached_input_tokens==`number`?e.uncached_input_tokens:null,output_tokens:typeof e.output_tokens==`number`?e.output_tokens:null,reasoning_tokens:typeof e.reasoning_tokens==`number`?e.reasoning_tokens:null,visible_output_tokens:typeof e.visible_output_tokens==`number`?e.visible_output_tokens:null,total_tokens:typeof e.total_tokens==`number`?e.total_tokens:null,input_rate_usd_per_million:typeof e.input_rate_usd_per_million==`number`?e.input_rate_usd_per_million:null,cached_input_rate_usd_per_million:typeof e.cached_input_rate_usd_per_million==`number`?e.cached_input_rate_usd_per_million:null,output_rate_usd_per_million:typeof e.output_rate_usd_per_million==`number`?e.output_rate_usd_per_million:null,reasoning_rate_usd_per_million:typeof e.reasoning_rate_usd_per_million==`number`?e.reasoning_rate_usd_per_million:null,context_input_multiplier:typeof e.context_input_multiplier==`number`?e.context_input_multiplier:null,context_output_multiplier:typeof e.context_output_multiplier==`number`?e.context_output_multiplier:null,speed_cost_multiplier:typeof e.speed_cost_multiplier==`number`?e.speed_cost_multiplier:null,pricing_scenario:typeof e.pricing_scenario==`string`?e.pricing_scenario:null,standard_cost_usd:typeof e.standard_cost_usd==`number`?e.standard_cost_usd:null,speed_uplift_usd:typeof e.speed_uplift_usd==`number`?e.speed_uplift_usd:null,input_cost_usd:typeof e.input_cost_usd==`number`?e.input_cost_usd:null,cached_input_cost_usd:typeof e.cached_input_cost_usd==`number`?e.cached_input_cost_usd:null,output_cost_usd:typeof e.output_cost_usd==`number`?e.output_cost_usd:null,reasoning_cost_usd:typeof e.reasoning_cost_usd==`number`?e.reasoning_cost_usd:null,calculated_cost_usd:typeof e.calculated_cost_usd==`number`?e.calculated_cost_usd:null,recorded_cost_usd:typeof e.recorded_cost_usd==`number`?e.recorded_cost_usd:null,cost_variance_usd:typeof e.cost_variance_usd==`number`?e.cost_variance_usd:null,cost_usd:typeof e.cost_usd==`number`?e.cost_usd:null,fx_rate:typeof e.fx_rate==`number`?e.fx_rate:null,pricing_segment_count:typeof e.pricing_segment_count==`number`?e.pricing_segment_count:null,pricing_mixed:e.pricing_mixed===1||e.pricing_mixed===!0,pricing_model:typeof e.audit_pricing_model==`string`?e.audit_pricing_model:typeof e.pricing_model==`string`?e.pricing_model:null,pricing_source:typeof e.audit_pricing_source==`string`?e.audit_pricing_source:typeof e.pricing_source==`string`?e.pricing_source:null,cost:typeof e.total_cost_brl==`number`?e.total_cost_brl:typeof e.cost_brl==`number`?e.cost_brl:null,currency:`BRL`}))};if(!_())return;l(e=>e===null?e:Ue(e,u,r)),s({offset:r.offset,total:r.total,loading:!1,error:null,aggregation:r.aggregation})}catch(e){if(!_()||S(e))return;s({offset:d,total:null,loading:!1,error:e instanceof Error?e.message:String(e)})}finally{n.current===p&&(n.current=null)}},[e,t,n,r,i,a,o,s,c,l]),loadOperationsLifecyclePage:(0,f.useCallback)(async(u,d=0,f=t.current)=>{n.current?.abort();let p=new AbortController;n.current=p;let m=++r.current,h=o.current,g=I(i),_=()=>te(m,r.current,p.signal)&&x(h,o.current,g,I(a.current));c(u),s({offset:d,total:null,loading:!0,error:null});try{let t=await e.sqliteViewPage(u===`changes`?`operations_changes`:`operations_decisions`,g,{offset:d,limit:100,...f.query?{query:f.query}:{},...f.status?{status:f.status}:{},...f.risk?{risk:f.risk}:{}},p.signal),n=u===`changes`?t.rows.map(e=>{let t=String(e.source_type),n=String(e.source_id);return{id:String(e.id),title:typeof e.title==`string`?e.title:String(e.id),created_at:typeof e.occurred_at==`string`?e.occurred_at:null,status:typeof e.status==`string`?e.status:`unclassified`,risk:typeof e.risk==`string`?e.risk:`unclassified`,source:t===`spec`?{type:`spec`,spec_id:n}:t===`prd`?{type:`prd`,prd_id:n,spec_id:null}:{type:`task`,task_id:n},requirement_ids:We(e.requirement_ids_json),acceptance_ids:We(e.acceptance_ids_json),task_ids:We(e.task_ids_json),result:typeof e.result==`string`?e.result:null,artifact_path:typeof e.source_path==`string`?e.source_path:String(e.id)}}):t.rows.map(e=>({id:String(e.id),title:typeof e.title==`string`?e.title:String(e.id),origin:e.origin===`human`?`human`:`agent`,scope_type:e.scope_type===`execution`?`execution`:`change`,scope_id:String(e.scope_id),artifact_path:typeof e.source_path==`string`?e.source_path:String(e.id),created_at:typeof e.occurred_at==`string`?e.occurred_at:`1970-01-01T00:00:00.000Z`})),r={kind:u,offset:t.offset,limit:t.limit,total:t.total_count,rows:n};if(!_())return;l(e=>e===null?e:{...e,...u===`changes`?{changes:r.rows}:{decisions:r.rows}}),s({offset:r.offset,total:r.total,loading:!1,error:null})}catch(e){if(!_()||S(e))return;s({offset:d,total:null,loading:!1,error:e instanceof Error?e.message:String(e)})}finally{n.current===p&&(n.current=null)}},[e,t,n,r,i,a,o,s,c,l])}}function Ke({api:e,operations:t,setError:n,setFailedArea:r,setLoadingArea:i}){let[a,o]=(0,f.useState)(null),[s,c]=(0,f.useState)([]),[l,u]=(0,f.useState)(null),[d,p]=(0,f.useState)(null),m=(0,f.useRef)(0),h=(0,f.useRef)(0),g=(0,f.useRef)(null),[_,v]=(0,f.useState)(null),[y,b]=(0,f.useState)(``);async function x(a){let c=++h.current;g.current?.abort();let l=new AbortController;g.current=l,n(null),r(null),o(null),v(a),i(`traceability`),await new Promise(e=>window.requestAnimationFrame(()=>e()));try{let n=await e.taskTrace(a,l.signal);if(h.current!==c)return!1;let r=s.find(e=>e.id===a)??t?.tasks.find(e=>e.id===a);return o({...n,task_title:r?.title||n.task_title||a,task_risk:r?.risk||n.task_risk||null,task_created_at:r?.created_at||n.task_created_at||null,task_progress:r?.progress??n.task_progress??0}),!0}catch(e){return l.signal.aborted||h.current!==c?!1:(n(e instanceof Error?e.message:String(e)),r(`traceability`),!1)}finally{h.current===c&&(g.current===l&&(g.current=null),v(null),i(e=>e===`traceability`?null:e))}}function S(e){let n=t?.changes.find(t=>t.id===e);n!==void 0&&(o(null),p({kind:`change`,row:n}))}function ee(e,n){let r=(e===`PRD`?t?.prds:t?.specs)?.find(e=>e.id===n);r!==void 0&&(o(null),p({kind:`macro`,label:e,row:r}))}async function te(n,r){let i=(n===`prd`?t?.prds:t?.specs)?.find(e=>e.id===r);if(!i)return;let a=++m.current,o=n===`prd`?`PRD`:`SPEC`;u({kind:n,label:o,preview:i});try{let t=n===`prd`?await e.prd(r):await e.spec(r);if(m.current!==a)return;u({kind:n,label:o,preview:i,detail:t})}catch(e){if(m.current!==a)return;u({kind:n,label:o,preview:i,error:e instanceof Error?e.message:String(e)})}}function ne(){m.current+=1,u(null)}return{closeDocument:ne,documentDetail:l,openDocument:te,openTrace:x,openTraceChange:S,openTraceMacro:ee,selectedTraceTaskId:y,setSelectedTraceTaskId:b,setTrace:o,setTraceLink:p,setTraceLoadingTaskId:v,setTraceTasks:c,trace:a,traceLink:d,traceLoadingTaskId:_,traceTasks:s}}function qe(e,t){return JSON.stringify([e.query,e.status,e.risk,e.origin??``,e.kind??``,t.from??``,t.to??``])}function Je(e,t,n){return e===`explicit`||t!==n}function Ye(e,t){return{...e,kind:e.kind??t.kind??``}}var V={offset:0,limit:10,total:null,hasMore:!1,typeFilter:`all`,rows:[],loading:!1,error:null};function Xe({api:e,operationsPeriod:t,operationsPeriodRef:n}){let[r,i]=(0,f.useState)(V),a=(0,f.useRef)({query:``,status:``,risk:``}),o=(0,f.useRef)(null),s=(0,f.useRef)(0),c=(0,f.useRef)(null),l=(0,f.useCallback)(async(r,l=0,u=`explicit`)=>{let d=I(t),f=Ye(r,a.current),p=qe(f,d);if(!Je(u,p,c.current))return;o.current?.abort();let m=new AbortController;o.current=m;let h=++s.current;a.current=f,c.current=p;let g=f.kind||`all`;i(e=>({...e,offset:l,typeFilter:g,loading:!0,error:null}));try{let t=await e.sqliteViewPage(`operations_work_list`,d,{offset:l,limit:10,...f.query?{query:f.query}:{},...f.status?{status:f.status}:{},...f.risk?{risk:f.risk}:{},...f.origin?{origin:f.origin}:{},...g===`all`?{}:{kind:g}},m.signal);if(m.signal.aborted||h!==s.current||d.from!==I(n.current).from||d.to!==I(n.current).to)return;i({offset:t.offset,limit:t.limit,total:t.total_count,hasMore:t.has_more,typeFilter:g,rows:t.rows,loading:!1,error:null})}catch(e){if(m.signal.aborted||h!==s.current)return;c.current===p&&(c.current=null),i(t=>({...t,offset:l,typeFilter:g,loading:!1,error:e instanceof Error?e.message:String(e)}))}finally{o.current===m&&(o.current=null)}},[e,t,n]),u=(0,f.useCallback)(()=>{o.current?.abort(),o.current=null,++s.current,c.current=null,i(V)},[]);return{workListPage:r,workListFiltersRef:a,loadWorkListFilters:(0,f.useCallback)(e=>l(e,0,`filter-hydration`),[l]),loadWorkListPage:l,resetWorkListPage:u}}async function*H(e,t){let n=e;for(;;){if(n.rows.length===0)return;yield n.rows;let e=n.offset+n.rows.length;if(!n.has_more||e>=n.total_count)return;n=await t(e)}}function Ze({api:e,operationsPeriod:t}){return(0,f.useCallback)((n,r)=>{let i=I(t);if(n===`work-kanban`)return;let a={"work-list":`operations_work_list`,changes:`operations_changes`,decisions:`operations_decisions`,executions:`operations_executions`,runs:`operations_agent_invocations`,conversations:`operations_conversations`,daily:`operations_daily`,monthly:`operations_monthly`,yearly:`operations_annual`}[n];if(a===void 0)return;let o=e=>({offset:e,limit:100,...r.query?{query:r.query}:{},...r.status?{status:r.status}:{},...r.risk?{risk:r.risk}:{},...r.origin?{origin:r.origin}:{},...a===`operations_work_list`&&r.kind?{kind:r.kind}:{}});return{prepare:async()=>{let t=await e.sqliteViewPage(a,i,o(0));return{totalRows:t.total_count,pages:()=>H(t,t=>e.sqliteViewPage(a,i,o(t)))}}}},[e,t])}var Qe=(e,t)=>`${e}:${t}`,$e=(e,t)=>`${e}:${t}`,et=[`definition`,`planning`,`ready`,`executing`,`verifying`,`completed`,`blocked`,`cancelled`,`failed`],tt=[`completed`,`executing`,`ready`,`blocked`,`verifying`,`failed`,`cancelled`,`planning`,`definition`];function U(){let[e,t]=(0,f.useState)(!1),[n,r]=(0,f.useState)(!1),[i,a]=(0,f.useState)(!1),o=(0,f.useMemo)(ye,[]),c=(0,f.useMemo)(()=>new Te(o),[o]),{loadCostDetail:l,loadCostReadModelPage:u,loadCostRunPage:d,loadCostGroupPage:p}=Re(c),[h,g]=(0,f.useState)(()=>ve(window.location.pathname)),_=(0,f.useRef)(h);_.current=h;let[v,y]=(0,f.useState)(null),[te,w]=(0,f.useState)({offset:0,total:null,loading:!1,error:null}),[T,ae]=(0,f.useState)(`runs`),E=(0,f.useRef)({query:``,status:``,risk:``}),[oe,ce]=(0,f.useState)({}),[le,ue]=(0,f.useState)({}),[he,D]=(0,f.useState)({}),[ge,O]=(0,f.useState)({}),[be,k]=(0,f.useState)({}),[A,Ce]=(0,f.useState)(null),[j,M]=(0,f.useState)(null),[N,Ee]=(0,f.useState)(_e),[P,F]=(0,f.useState)(()=>window.localStorage.getItem(`zaip-dashboard-currency`)===`USD`?`USD`:`BRL`),je=(0,f.useCallback)(e=>{Ee(e),F(e===`en-US`?`USD`:`BRL`)},[]),[L,Me]=(0,f.useState)(()=>De),R=(0,f.useRef)(L);R.current=L;let[Ne,z]=(0,f.useState)(!1),[Pe,Fe]=(0,f.useState)(null),[Ie,Le]=(0,f.useState)(null),[ze,Be]=(0,f.useState)(window.location.pathname),[Ve,B]=(0,f.useState)(!0),[,Ue]=(0,f.useState)(!1),[,We]=(0,f.useState)(!1),[qe,Je]=(0,f.useState)(!1),[Ye,V]=(0,f.useState)(`operations`),[H,U]=(0,f.useState)(null),[nt,rt]=(0,f.useState)(null);(0,f.useEffect)(()=>{c.ready().then(e=>t(e.snapshot_state===`updating`)).catch(()=>{})},[c]);let[it,W]=(0,f.useState)(null),[at,ot]=(0,f.useState)(null),[st,ct]=(0,f.useState)(null),[lt,ut]=(0,f.useState)({title:`Dashboard Zaip AIOS`,repositoryName:``}),{closeDocument:dt,documentDetail:ft,openDocument:pt,openTrace:G,openTraceChange:mt,openTraceMacro:ht,selectedTraceTaskId:gt,setSelectedTraceTaskId:_t,setTrace:vt,setTraceLink:yt,setTraceLoadingTaskId:bt,setTraceTasks:xt,trace:St,traceLink:Ct,traceLoadingTaskId:wt,traceTasks:Tt}=Ke({api:c,operations:v,setError:W,setFailedArea:U,setLoadingArea:V}),K=(0,f.useRef)(Tt),q=(0,f.useRef)({offset:0,stageIndex:0}),Et=(0,f.useRef)(!1),[Dt,Ot]=(0,f.useState)(!1),[kt,At]=(0,f.useState)(!1),J=(0,f.useRef)(0);(0,f.useEffect)(()=>{K.current=Tt},[Tt]);let jt=(0,f.useRef)(0),Mt=(0,f.useRef)(!1),Y=(0,f.useRef)(0),Nt=(0,f.useRef)(0),Pt=(0,f.useRef)(null),Ft=(0,f.useRef)(!1),It=(0,f.useRef)(!1),Lt=(0,f.useRef)(null),X=(0,f.useRef)(null),Rt=(0,f.useRef)(null),zt=(0,f.useRef)(0),Bt=(0,f.useRef)({}),Z=(0,f.useRef)(new Set),Q=(0,f.useRef)(new Map),Vt=(0,f.useRef)(new Set),Ht=(0,f.useRef)(new Set),Ut=(0,f.useRef)({query:``,status:``,risk:``,origin:``,kind:``}),Wt=(0,f.useRef)(`||||`),$=(0,f.useRef)(0),Gt=(0,f.useRef)(void 0),{workListPage:Kt,workListFiltersRef:qt,loadWorkListFilters:Jt,loadWorkListPage:Yt,resetWorkListPage:Xt}=Xe({api:c,operationsPeriod:L,operationsPeriodRef:R}),Zt=(0,f.useRef)(!1),Qt=(0,f.useCallback)(async(e=!0,t=!1,n=!1)=>{Lt.current?.(),Lt.current=null,X.current?.abort(),X.current=null,$.current+=1;for(let e of Q.current.values())e.abort();Q.current.clear(),Z.current.clear(),Ht.current.clear(),Bt.current={},ce({}),ue({}),D({}),O({}),k({});let r=++J.current,i=jt.current,a=_.current,o=I(L),s=()=>b(r,J.current)&&x(r,J.current,o,I(R.current));e&&(B(!0),V(`operations`)),W(null),U(null);try{if(t||n){let e,n=null;if(t){let t=await c.reconcileOpenWork(P,o);n=t.reconciliation,e=t}else e=await c.refreshProjection(P,o);if(!s())return;n!==null&&ot(n),y(e.operations),Gt.current=e.operations.summary.overview_metrics,It.current=!0,Ce(e.costs),Ft.current=!0,M(null),e.dashboard&&ut({title:e.dashboard.title,repositoryName:e.dashboard.repository_name}),ct(e.projection.source_latest_at)}else{let[e,t]=await Promise.all([c.operations(o,`quick`,void 0,Zt.current),P===`USD`?c.costMonitor(P,o,`summary`):Promise.resolve(null)]);if(!s())return;Zt.current=!1,y(e),Gt.current=e.summary.overview_metrics,It.current=!1,t!==null&&(Ce(t),Ft.current=!1,M(null)),ct(e.summary.source_latest_at)}}catch(e){if(!s())return;W(e instanceof Error?e.message:String(e)),U(a===`cost-monitor`?`costs`:`operations`)}finally{s()&&ee(i,jt.current)&&Je(!1),e&&s()&&(B(!1),V(e=>e===`operations`?null:e))}},[c,P,L]),$t=(0,f.useCallback)(async e=>{if(It.current||Mt.current||e?.aborted)return null;X.current?.abort();let t=e===void 0?new AbortController:null,n=e??t?.signal;if(n===void 0)return null;t!==null&&(X.current=t),Mt.current=!0,Y.current+=1,V(`costs`),U(null);try{let e=++J.current,t=I(L),r=()=>b(e,J.current)&&x(e,J.current,t,I(R.current)),i=await c.operations(t,`detail`,n);return r()?(y(i),It.current=!0,i):null}catch(e){return n.aborted||S(e)?null:(W(e instanceof Error?e.message:String(e)),U(`operations`),null)}finally{t!==null&&X.current===t&&(X.current=null),Mt.current=!1,Y.current=Math.max(0,Y.current-1),Y.current===0&&V(e=>e===`costs`?null:e)}},[c,L]),{loadOperationsEntityPage:en,loadOperationsLifecyclePage:tn}=Ge({api:c,entityFiltersRef:E,operationsPageAbortRef:Rt,operationsPageRequestVersionRef:zt,operationsPeriod:L,operationsPeriodRef:R,refreshVersion:J,setEntityPage:w,setEntityPageKind:ae,setOperations:y}),nn=(0,f.useCallback)((e,t)=>{E.current=t,e===`changes`||e===`decisions`?tn(e,0,t):en(e,0,t)},[en,tn]),rn=(0,f.useCallback)(async e=>{if(v===null||Z.current.has(e))return;Z.current.add(e),Q.current.get(e)?.abort();let t=new AbortController;Q.current.set(e,t);let n=$.current,r=I(L);D(t=>({...t,[e]:{loading:!0,error:null}}));let i=Bt.current[e]??0;try{let a=await c.operationsBoard(r,e,i,Ut.current,t.signal,10);if(t.signal.aborted||n!==$.current||r.from!==I(R.current).from||r.to!==I(R.current).to)return;y(e=>e===null?e:{...ne(e,[a]),summary:e.summary}),ce(t=>({...t,[e]:a.total})),ue(t=>({...t,[e]:a.totals_by_kind}));let o=i+a.prds.length+a.specs.length+a.tasks.length;Bt.current={...Bt.current,[e]:o}}catch(r){if(t.signal.aborted||n!==$.current||S(r))return;D(t=>({...t,[e]:{loading:!1,error:r instanceof Error?r.message:String(r)}}))}finally{n===$.current&&(Z.current.delete(e),Q.current.get(e)===t&&Q.current.delete(e),D(t=>t[e]?.error===null?{...t,[e]:{loading:!1,error:null}}:t))}},[c,v,L]),an=(0,f.useCallback)(e=>{let t={...e,kind:e.kind??Ut.current.kind??``},n=`${t.query}|${t.status}|${t.risk}|${t.origin??``}|${t.kind}`;if(n!==Wt.current){Wt.current=n,Ut.current=t,$.current+=1;for(let e of Q.current.values())e.abort();Q.current.clear(),Z.current.clear(),Ht.current.clear(),Bt.current={},ce({}),ue({}),D({}),O({}),k({}),y(e=>e===null?e:{...e,prds:[],specs:[],tasks:[],changes:[],summary:n===`||||`&&Gt.current!==void 0?{...e.summary,overview_metrics:Gt.current}:e.summary})}},[]),on=(0,f.useCallback)(async(e,t,n)=>{let r=Qe(e,t);if(Vt.current.has(r))return;Vt.current.add(r);let i=$.current,a=I(L);O(e=>({...e,[r]:{items:n===0?[]:e[r]?.items??[],total:e[r]?.total??0,loading:!0,error:null}}));try{let o=await c.operationsBoard(a,e,n,{kind:t===`task`?`all-tasks`:t});if(i!==$.current||a.from!==I(R.current).from||a.to!==I(R.current).to)return;let s=t===`task`?o.tasks:t===`spec`?o.specs:o.prds;O(e=>({...e,[r]:{items:n===0?s:[...e[r]?.items??[],...s],total:o.total,loading:!1,error:null}}))}catch(e){if(i!==$.current||S(e))return;O(t=>({...t,[r]:{items:t[r]?.items??[],total:t[r]?.total??0,loading:!1,error:e instanceof Error?e.message:String(e)}}))}finally{Vt.current.delete(r)}},[c,L]),sn=(0,f.useCallback)(async(e,t,n)=>{let r=$e(e,t);if(Vt.current.has(r))return;Vt.current.add(r);let i=$.current,a=I(L);k(e=>({...e,[r]:{items:n===0?[]:e[r]?.items??[],total:e[r]?.total??0,loading:!0,error:null}}));try{let o=await c.operationsClassification(a,e,t,n);if(i!==$.current||a.from!==I(R.current).from||a.to!==I(R.current).to)return;let s=e===`task`?o.tasks:e===`spec`?o.specs:o.prds;k(e=>({...e,[r]:{items:n===0?s:[...e[r]?.items??[],...s],total:o.total,loading:!1,error:null}}))}catch(e){if(i!==$.current||S(e))return;k(t=>({...t,[r]:{items:t[r]?.items??[],total:t[r]?.total??0,loading:!1,error:e instanceof Error?e.message:String(e)}}))}finally{Vt.current.delete(r)}},[c,L]),cn=(0,f.useCallback)(e=>{let t={...Ut.current,...e},n=I(L);return{prepare:async()=>{let e=await Promise.all(et.map(e=>c.operationsBoard(n,e,0,t))),r=e=>[...e.prds.map(({kind:e,...t})=>({kind:`prd`,...t})),...e.specs.map(({kind:e,...t})=>({kind:`spec`,...t})),...e.tasks.map(e=>({kind:`task`,...e}))];return{totalRows:e.reduce((e,t)=>e+t.total,0),pages:async function*(){for(let i of e){let e=i,a=0;for(;;){let i=r(e);if(i.length===0||(a+=i.length,yield i,a>=e.total))break;e=await c.operationsBoard(n,e.stage,a,t)}}}}}}},[c,L]),ln=Ze({api:c,operationsPeriod:L});(0,f.useEffect)(()=>{if(h!==`operations`||v===null)return;let e=!1,t=async()=>{if(e)return;let t=et.filter(e=>!Ht.current.has(e)&&!Z.current.has(e));for(let n=0;n<t.length&&!e;n+=3){let e=t.slice(n,n+3);for(let t of e)Ht.current.add(t);await Promise.all(e.map(e=>rn(e)))}},n=typeof window.requestIdleCallback==`function`?{kind:`idle`,id:window.requestIdleCallback(()=>void t())}:{kind:`timeout`,id:window.setTimeout(()=>void t(),0)};return()=>{e=!0,n.kind===`idle`?window.cancelIdleCallback(n.id):window.clearTimeout(n.id)}},[h,rn,v]);let un=async e=>{e&&ot(null),rt(e?`reconciling`:`refreshing`),await Qt(!1,e,!e),rt(null)};He({api:c,costLocale:N,currency:P,dashboardView:h,loadOperationsDetails:$t,operations:v,operationsDetailAbortRef:X,operationsDetailCancelRef:Lt,operationsPageAbortRef:Rt,pathname:ze,pricing:Pe,refresh:Qt,refreshVersion:J,setError:W,setFxRate:Le,setPathname:Be,setPricing:Fe});let dn=e=>{window.history.pushState(null,``,e),Be(e),window.scrollTo({left:0,top:0})},fn=(0,f.useCallback)(async()=>{Pt.current?.abort();let e=new AbortController;Pt.current=e;let t=++Nt.current,n=I(L);Y.current+=1,V(`costs`),U(null);try{let r=await c.costMonitor(P,n,`summary`,e.signal);if(e.signal.aborted||t!==Nt.current)return;Ce(r),Ft.current=!0,M(null)}catch(n){if(e.signal.aborted||t!==Nt.current)return;W(n instanceof Error?n.message:String(n)),U(`costs`)}finally{Y.current=Math.max(0,Y.current-1),Y.current===0&&V(e=>e===`costs`?null:e),Pt.current===e&&(Pt.current=null)}},[c,P,L]);(0,f.useEffect)(()=>{P!==`USD`||A?.currency===P||fn()},[A?.currency,P,fn]);let pn=(0,f.useCallback)(async(e=!1,t=!1)=>{if(Et.current||(t&&(q.current={offset:0,stageIndex:0},K.current=[],xt([]),Ot(!0)),q.current.stageIndex>=tt.length))return K.current;Et.current=!0,At(!0);try{do{let t=q.current,n=tt[t.stageIndex];if(n===void 0)break;let r=await c.operationsBoard({from:null,to:null},n,t.offset,{kind:`all-tasks`},void 0,10),i=Ae({cursor:t,page:r,tasks:K.current});if(K.current=i.tasks,xt(K.current),q.current=i.cursor,r.tasks.length>0&&!e)break}while(q.current.stageIndex<tt.length);return Ot(q.current.stageIndex<tt.length),K.current}finally{Et.current=!1,At(!1)}},[c,xt]),mn=async e=>{if(g(e),window.scrollTo({left:0,top:0}),e===`cost-monitor`?A?.currency!==P&&fn():Pt.current?.abort(),e===`traceability`){let e=Tt;if(e.length===0){let t=$.current;if(e=await pn(!1,!0),t!==$.current)return;xt(e)}let t=e.toSorted((e,t)=>Date.parse(t.finished_at??t.updated_at)-Date.parse(e.finished_at??e.updated_at)),n=t.find(e=>e.status===`completed`)??t[0];n&&(_t(n.id),G(n.id));return}vt(null),bt(null)},hn=(0,m.jsx)(Se,{activeView:h,locale:N,onChange:e=>void mn(e)}),gn=(0,f.useMemo)(()=>new Map((j??A)?.runs.map(e=>[e.run_id,P===`USD`?e.estimated_usd:e.estimated_brl])??[]),[A,P,j]),_n=(0,f.useMemo)(()=>{let e=j??A;return e?.currency===P?P===`USD`?e.overview.estimated_usd:e.overview.estimated_brl:null},[A,P,j]),vn=(0,f.useMemo)(()=>{let e=j??A;if(e?.currency===P)return{day:e.groups.daily,month:e.groups.monthly,year:e.groups.annual}},[A,P,j]),yn=()=>{W(null),H===`costs`?Qt():H===`traceability`&>?G(gt):H===`operations`&&v!==null?$t():Qt()},bn=me({api:c,costLocale:N,fxRate:Ie,navigate:dn,pathname:ze,pricing:Pe,refresh:Qt,setFxRate:Le,setPricing:Fe}),xn=qe||P===`USD`&&A?.currency!==P,Sn=v===null&&Ve;(0,f.useEffect)(()=>{if(!e||!Sn||n){a(!1);return}let t=window.setTimeout(()=>a(!0),Oe);return()=>window.clearTimeout(t)},[Sn,n,e]);let Cn=ke({snapshotUpdating:e,initialDataPending:Sn,dismissed:n,delayElapsed:i})?(0,m.jsxs)(`div`,{"aria-live":`polite`,className:`app-notice app-snapshot-status`,role:`status`,children:[(0,m.jsx)(`span`,{children:`Exibindo o último snapshot local validado. Os dados canônicos estão sendo atualizados em segundo plano e estarão atuais na próxima abertura.`}),(0,m.jsx)(`button`,{"aria-label":N===`pt-BR`?`Fechar aviso de atualização do snapshot`:`Dismiss snapshot update notice`,onClick:()=>r(!0),type:`button`,children:`×`})]}):null,wn=v;return(0,m.jsxs)(ie,{error:it,globalLoadingPending:xn,locale:N,onRefresh:()=>void Qt(),operations:v,snapshotNotice:Cn,setupRoute:bn,children:[(0,m.jsxs)(re,{pending:xn,children:[it?(0,m.jsxs)(`div`,{"aria-live":`assertive`,className:`app-warning app-error`,role:`alert`,children:[(0,m.jsx)(`span`,{children:it}),H?(0,m.jsx)(`button`,{onClick:yn,type:`button`,children:N===`pt-BR`?`Tentar novamente`:`Try again`}):null,(0,m.jsx)(`button`,{"aria-label":N===`pt-BR`?`Fechar erro`:`Dismiss error`,onClick:()=>W(null),type:`button`,children:`×`})]}):null,(0,m.jsx)(s,{alternateContent:xe({costs:A,costLocale:N,currency:P,dashboardView:h,failedArea:H,lastUpdatedAt:st,loadCostDetail:l,loadCostReadModelPage:u,loadCostRunPage:d,loadCostGroupPage:p,loadingArea:Ye,onActiveDataChange:M,onCurrencyChange:F,onLoadingChange:We,onLocaleChange:je,onLoadMoreTraceTasks:pn,onOpenTrace:e=>void G(e),onRefresh:()=>rt(`choose`),onRetry:yn,onSelectTraceTask:e=>{_t(e),G(e)},onOpenTraceChange:mt,onOpenTraceMacro:ht,operations:wn,selectedTraceTaskId:gt,trace:St,traceLoadingTaskId:wt,traceTasksHasMore:Dt,traceTasksLoading:kt,traceTasks:Tt}),capabilityNavigation:hn,boardTotals:oe,boardKindTotals:le,boardExportSource:cn,detailExportSource:ln,boardStates:he,data:wn,datePreset:L.preset,dateRange:L.range,entityPage:te,dashboardTitle:lt.title,repositoryName:lt.repositoryName,loading:Ve,locale:N,currency:P,factualCostTotal:_n,factualCostPeriods:vn,onLoadingChange:Ue,resolveRunCost:A===null?void 0:e=>gn.get(e)??null,onLocaleChange:je,onDetailDataRequest:e=>{let t=e===`conversations`?`conversations`:e===`executions`?`executions`:e===`runs`?`runs`:null;t===null?e===`changes`||e===`decisions`?tn(e):$t():en(t)},onLoadMacroMetrics:()=>void $t(),onEntityPageChange:e=>{T===`changes`||T===`decisions`?tn(T,e):en(T,e)},onEntityFiltersChange:nn,onBoardFiltersChange:an,onWorkListFiltersChange:Jt,onWorkListPageChange:e=>void Yt(qt.current,e),onBoardTypeChange:e=>an({...Ut.current,kind:e===`all`?``:e}),onWorkListTypeChange:e=>void Yt({...qt.current,kind:e===`all`?``:e}),onLoadMoreBoard:e=>void rn(e),workListPage:Kt,statusPage:(e,t)=>ge[Qe(e,t)],onLoadStatusPage:(e,t,n)=>void on(e,t,n),classificationPage:(e,t)=>be[$e(e,t)],onLoadClassificationPage:(e,t,n)=>void sn(e,t,n),onOpenDocument:(e,t)=>void pt(e,t),onOpenTask:G,onPriorityChange:async e=>{try{await c.saveWorkPriority(e)}catch(e){throw W(e instanceof Error?e.message:String(e)),e}},onDateChange:(e,t)=>{It.current=!1,Lt.current?.(),Lt.current=null,X.current?.abort(),X.current=null,Rt.current?.abort(),Rt.current=null,Xt(),++zt.current,$.current+=1;for(let e of Q.current.values())e.abort();Q.current.clear(),Z.current.clear(),Ht.current.clear(),Bt.current={},ce({}),ue({}),D({}),O({}),k({}),++J.current,w({offset:0,total:null,loading:!1,error:null}),Ft.current=!1,Ce(null),M(null),B(!0),jt.current+=1,Je(!0),V(`operations`),Me({preset:e,range:t})},onRefresh:()=>rt(`choose`),settings:(0,m.jsx)(we,{costCalculationGuidePath:pe,currency:P,locale:N,onCurrencyChange:F,onHelpOpen:()=>z(!0),onNavigate:dn,pricingSetupPath:de,projectSetupPath:fe})}),(0,m.jsx)(se,{closeDocument:dt,costLocale:N,documentDetail:ft,helpOpen:Ne,loadingArea:h===`cost-monitor`&&A===null?null:Ye,operations:wn,reconciliationResult:at,refreshDialog:nt,showTrace:h===`traceability`,trace:St,traceLink:Ct,traceLoadingTaskId:wt,onCloseHelp:()=>z(!1),onCloseTrace:()=>vt(null),onDismissReconciliation:()=>ot(null),onOpenDocument:(e,t)=>void pt(e,t),onOpenTrace:e=>void G(e),onOpenTraceChange:mt,onOpenTraceMacro:ht,onRefreshCancel:()=>rt(null),onRefreshFromDialog:e=>void un(e),setTraceLink:e=>yt(e)})]}),xn?(0,m.jsx)(C,{}):null]})}var nt=document.getElementById(`root`);if(!nt)throw Error(`Elemento #root não encontrado`);(0,p.createRoot)(nt).render((0,m.jsx)(f.StrictMode,{children:(0,m.jsx)(U,{})}));export{je as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./rolldown-runtime-D9-fqq9M.js";import{S as t,x as n}from"./cost-monitor-
|
|
1
|
+
import{t as e}from"./rolldown-runtime-D9-fqq9M.js";import{S as t,x as n}from"./cost-monitor-DKwP1stV.js";var r=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,ee||(ee=!0,oe());else{var t=n(l);t!==null&&le(x,t.startTime-e)}}var ee=!1,te=-1,ne=5,re=-1;function ie(){return g?!0:!(e.unstable_now()-re<ne)}function ae(){if(g=!1,ee){var t=e.unstable_now();re=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(te),te=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&ie());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&le(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?oe():ee=!1}}}var oe;if(typeof y==`function`)oe=function(){y(ae)};else if(typeof MessageChannel<`u`){var se=new MessageChannel,ce=se.port2;se.port1.onmessage=ae,oe=function(){ce.postMessage(null)}}else oe=function(){_(ae,0)};function le(t,n){te=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):ne=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(te),te=-1):h=!0,le(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,oe()))),r},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var r=i(),a=t(),o=n();function s(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function l(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function u(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function d(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function f(e){if(l(e)!==e)throw Error(s(188))}function p(e){var t=e.alternate;if(!t){if(t=l(e),t===null)throw Error(s(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var a=i.alternate;if(a===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return f(i),e;if(a===r)return f(i),t;a=a.sibling}throw Error(s(188))}if(n.return!==r.return)n=i,r=a;else{for(var o=!1,c=i.child;c;){if(c===n){o=!0,n=i,r=a;break}if(c===r){o=!0,r=i,n=a;break}c=c.sibling}if(!o){for(c=a.child;c;){if(c===n){o=!0,n=a,r=i;break}if(c===r){o=!0,r=a,n=i;break}c=c.sibling}if(!o)throw Error(s(189))}}if(n.alternate!==r)throw Error(s(190))}if(n.tag!==3)throw Error(s(188));return n.stateNode.current===n?e:t}function m(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=m(e),t!==null)return t;e=e.sibling}return null}var h=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),ee=Symbol.for(`react.consumer`),te=Symbol.for(`react.context`),ne=Symbol.for(`react.forward_ref`),re=Symbol.for(`react.suspense`),ie=Symbol.for(`react.suspense_list`),ae=Symbol.for(`react.memo`),oe=Symbol.for(`react.lazy`),se=Symbol.for(`react.activity`),ce=Symbol.for(`react.memo_cache_sentinel`),le=Symbol.iterator;function ue(e){return typeof e!=`object`||!e?null:(e=le&&e[le]||e[`@@iterator`],typeof e==`function`?e:null)}var de=Symbol.for(`react.client.reference`);function fe(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===de?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case re:return`Suspense`;case ie:return`SuspenseList`;case se:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case te:return e.displayName||`Context`;case ee:return(e._context.displayName||`Context`)+`.Consumer`;case ne:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case ae:return t=e.displayName||null,t===null?fe(e.type)||`Memo`:t;case oe:t=e._payload,e=e._init;try{return fe(e(t))}catch{}}return null}var pe=Array.isArray,S=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,C=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,me={pending:!1,data:null,method:null,action:null},he=[],ge=-1;function _e(e){return{current:e}}function w(e){0>ge||(e.current=he[ge],he[ge]=null,ge--)}function T(e,t){ge++,he[ge]=e.current,e.current=t}var ve=_e(null),ye=_e(null),be=_e(null),xe=_e(null);function Se(e,t){switch(T(be,t),T(ye,e),T(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}w(ve),T(ve,e)}function Ce(){w(ve),w(ye),w(be)}function we(e){e.memoizedState!==null&&T(xe,e);var t=ve.current,n=Hd(t,e.type);t!==n&&(T(ye,e),T(ve,n))}function Te(e){ye.current===e&&(w(ve),w(ye)),xe.current===e&&(w(xe),Qf._currentValue=me)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1<e.stack.indexOf(`
|
|
2
2
|
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
|
|
3
3
|
`+Ee+e+De}var ke=!1;function Ae(e,t){if(!e||ke)return``;ke=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
|
|
4
4
|
`),l=s.split(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,_ as t,b as n,c as r,d as i,f as a,l as o,o as s,p as c,s as l,u,v as d,y as f}from"./cost-monitor-Cf9ctPVt.js";import{a as p,c as m,d as h,f as g,i as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E}from"./icons-vendor-DFBuc_qp.js";var D=e(),O=n();function k({ariaLabel:e,closeLabel:t,document:n,onClose:r}){return(0,O.jsxs)(`section`,{"aria-label":e,"aria-modal":`true`,className:`trace-document`,role:`dialog`,children:[(0,O.jsxs)(`header`,{children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`small`,{children:n.path}),(0,O.jsx)(`h2`,{children:n.title})]}),(0,O.jsx)(`button`,{"aria-label":t,className:`trace-close-button`,onClick:r,type:`button`,children:(0,O.jsx)(s,{"aria-hidden":`true`,size:20,strokeWidth:2})})]}),(0,O.jsx)(`pre`,{children:n.content})]})}function A({stage:e,stageRecord:t,documents:n,stageCopy:r,stageArtifacts:i,copy:o,onBack:s,onOpenDocument:l,onStageChange:u}){let d=[`definition`,`planning`,`execution`,`decisions`,`verification`,`evidence`],f=d.indexOf(e),m=d[f-1],h=d[f+1],g=n.filter(e=>e.kind===`evidence`).length,_=new Set(n.map(e=>e.kind)).size,v=new Map;for(let e of n)v.set(e.kind,[...v.get(e.kind)??[],e]);let y=t?.last_recorded_at??o.pending;return(0,O.jsxs)(`section`,{className:`trace-stage-detail`,children:[(0,O.jsx)(`header`,{children:(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{children:r[e].label}),(0,O.jsx)(`h3`,{children:i[e]}),(0,O.jsx)(`small`,{children:y})]})}),(0,O.jsxs)(`div`,{className:`trace-stage-metrics`,children:[(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{children:o.documents}),(0,O.jsx)(`strong`,{children:n.length})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{children:o.types}),(0,O.jsx)(`strong`,{children:_})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{children:o.evidenceMetric}),(0,O.jsx)(`strong`,{children:g})]})]}),(0,O.jsx)(`div`,{className:`trace-stage-documents`,children:n.length===0?(0,O.jsx)(`p`,{className:`trace-stage-empty`,children:o.empty}):[...v].map(([e,t])=>(0,O.jsxs)(`section`,{className:`trace-document-group`,children:[(0,O.jsxs)(`h4`,{children:[e,` `,(0,O.jsx)(`small`,{children:t.length})]}),t.map(e=>(0,O.jsxs)(`button`,{onClick:()=>l(e),type:`button`,children:[(0,O.jsx)(`strong`,{children:e.title}),(0,O.jsx)(`small`,{children:e.path})]},e.id))]},e))}),(0,O.jsxs)(`nav`,{"aria-label":o.navigation,className:`trace-stage-navigation`,children:[(0,O.jsxs)(`button`,{className:`trace-navigation-action trace-navigation-previous`,disabled:f===0,onClick:()=>u(d[f-1]),type:`button`,children:[(0,O.jsx)(c,{"aria-hidden":`true`,size:18,strokeWidth:1.9}),(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`small`,{children:o.previous}),(0,O.jsx)(`strong`,{children:m?r[m].label.split(` (`)[0]:`—`})]})]}),(0,O.jsxs)(`div`,{className:`trace-navigation-center`,children:[(0,O.jsx)(`div`,{"aria-hidden":`true`,className:`trace-navigation-progress`,children:d.map((t,n)=>(0,O.jsx)(`span`,{"data-active":t===e,"data-passed":n<f},t))}),(0,O.jsxs)(`small`,{children:[f+1,` `,o.of,` `,d.length]}),(0,O.jsxs)(`button`,{className:`trace-all-stages-button`,onClick:s,type:`button`,children:[(0,O.jsx)(p,{"aria-hidden":`true`,size:15,strokeWidth:1.9}),o.back]})]}),(0,O.jsxs)(`button`,{className:`trace-navigation-action trace-navigation-next`,disabled:f===d.length-1,onClick:()=>u(d[f+1]),type:`button`,children:[(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`small`,{children:o.next}),(0,O.jsx)(`strong`,{children:h?r[h].label.split(` (`)[0]:`—`})]}),(0,O.jsx)(a,{"aria-hidden":`true`,size:18,strokeWidth:1.9})]})]})]})}function j({ariaLabel:e,children:t,closeLabel:n,onClose:r}){return(0,D.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]),(0,O.jsxs)(`div`,{className:`trace-stage-dialog-backdrop`,role:`presentation`,children:[(0,O.jsx)(`button`,{"aria-label":n,className:`trace-stage-dialog-backdrop-dismiss`,onClick:r,type:`button`}),(0,O.jsxs)(`section`,{"aria-label":e,"aria-modal":`true`,className:`trace-stage-dialog`,role:`dialog`,children:[(0,O.jsx)(`button`,{"aria-label":n,className:`trace-stage-dialog-close`,onClick:r,type:`button`,children:(0,O.jsx)(s,{"aria-hidden":`true`,size:22})}),t]})]})}var M=[`definition`,`planning`,`execution`,`decisions`,`verification`,`evidence`],N=[`task`,`change`,`spec`,`prd`],P=[`coverage`,`documents`,`evidence`,`links`],F={"pt-BR":{lite:`Leve`,standard:`Padrão`,critical:`Crítico`},"en-US":{lite:`Lite`,standard:`Standard`,critical:`Critical`}},I={definition:E,planning:o,execution:C,decisions:x,verification:b,evidence:m},L={definition:`PRD · Requisitos`,planning:`SPEC · Change`,execution:`Tarefas · DAG · Runs · arquivos`,decisions:`Decisões do planejamento e da execução`,verification:`Testes · revisões · evals · checks`,evidence:`Evidências · resultados · rastreabilidade`},R={definition:`PRD · Requirements`,planning:`SPEC · Change`,execution:`Tasks · DAG · Runs · files`,decisions:`Planning and execution decisions`,verification:`Tests · reviews · evals · checks`,evidence:`Evidence · results · traceability`};function z(e,t){return[{label:`Task`,value:e.task_id,onOpen:void 0},{label:`Change`,value:e.change_id,onOpen:t.onOpenChange},{label:`SPEC`,value:e.spec_id,onOpen:t.onOpenSpec},{label:`PRD`,value:e.prd_id,onOpen:t.onOpenPrd}]}var B={definition:{label:`Definição (PRD + Requisitos)`,description:`Objetivo, contexto e critérios que definem o trabalho.`},planning:{label:`Planejamento (SPEC + Change)`,description:`Escopo, solução e mudanças previstas antes da execução.`},execution:{label:`Execução (Tarefas ou DAG)`,description:`Tarefas, dependências da DAG, Runs e arquivos produzidos.`},decisions:{label:`Decisões (Plano e Execução)`,description:`Decisões humanas e da IA tomadas no planejamento e na execução.`},verification:{label:`Verificação (Testes + Revisões)`,description:`Testes, revisões, evals e checks comparam o resultado aos Critérios de Aceite.`},evidence:{label:`Evidências (Resultados + Rastreabilidade)`,description:`Provas reproduzíveis vinculadas às Tasks, Changes, Runs e Critérios de Aceite.`}},V={definition:{label:`Definition (PRD + Requirements)`,description:`Objective, context, and criteria that define the work.`},planning:{label:`Planning (SPEC + Change)`,description:`Scope, solution, and changes planned before execution.`},execution:{label:`Execution (Tasks or DAG)`,description:`Tasks, DAG dependencies, Runs, and produced files.`},decisions:{label:`Decisions (Plan and Execution)`,description:`Human and AI decisions made during planning and execution.`},verification:{label:`Verification (Tests + Reviews)`,description:`Tests, reviews, evals, and checks compare results with acceptance criteria.`},evidence:{label:`Evidence (Results + Traceability)`,description:`Reproducible proof linked to Tasks, Changes, Runs, and acceptance criteria.`}},H={"pt-BR":{aria:`Rastreabilidade da task`,coverage:`etapas rastreadas`,evidence:`evidências`,close:`Fechar`,empty:`Nenhum documento relacionado.`,closeDocument:`Fechar documento`,back:`Voltar às etapas`,previous:`Anterior`,next:`Próxima`,documents:`Documentos`,types:`Tipos`,evidenceMetric:`Evidências`,taskFirst:`Task-first`,specDriven:`Spec-driven`,copyId:`Copiar ID`,copied:`ID copiado`,unlinked:`Não vinculado`,recorded:`Registrada em`,pending:`Pendente`,missingTimestamp:`Sem data/hora`,tests:`testes registrados`,time:`Tempo`,tokens:`Tokens`,cost:`Custo`,measuredRuns:`Runs medidas`,items:`itens`,navigation:`Navegação entre etapas`,of:`de`,stageDetails:`Detalhes da etapa`,document:`Documento`},"en-US":{aria:`Task traceability`,coverage:`tracked stages`,evidence:`evidence items`,close:`Close`,empty:`No related document.`,closeDocument:`Close document`,back:`Back to stages`,previous:`Previous`,next:`Next`,documents:`Documents`,types:`Types`,evidenceMetric:`Evidence`,taskFirst:`Task-first`,specDriven:`Spec-driven`,copyId:`Copy ID`,copied:`ID copied`,unlinked:`Not linked`,recorded:`Recorded at`,pending:`Pending`,missingTimestamp:`Missing date/time`,tests:`recorded tests`,time:`Time`,tokens:`Tokens`,cost:`Cost`,measuredRuns:`measured Runs`,items:`items`,navigation:`Stage navigation`,of:`of`,stageDetails:`Stage details`,document:`Document`}};function U({taskId:e,locale:t=`pt-BR`}){let n=t===`pt-BR`;return(0,O.jsx)(`div`,{className:`trace-backdrop`,children:(0,O.jsxs)(`section`,{"aria-busy":`true`,"aria-label":n?`Carregando rastreabilidade`:`Loading traceability`,"aria-live":`polite`,className:`trace-panel trace-loading-panel`,role:`dialog`,children:[(0,O.jsxs)(`header`,{className:`trace-panel-header`,children:[(0,O.jsxs)(`div`,{className:`trace-heading`,children:[(0,O.jsx)(`span`,{className:`trace-heading-icon trace-loading-icon`,"aria-hidden":`true`,children:(0,O.jsx)(r,{size:22,strokeWidth:1.8})}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`h2`,{children:n?`Carregando rastreabilidade`:`Loading traceability`}),(0,O.jsx)(`p`,{children:e})]})]}),(0,O.jsxs)(`span`,{className:`trace-loading-status`,children:[(0,O.jsx)(r,{"aria-hidden":`true`,size:15,strokeWidth:2}),n?`Preparando trace`:`Preparing trace`]})]}),(0,O.jsx)(`div`,{className:`trace-loading-identifiers`,"aria-hidden":`true`,children:N.map(e=>(0,O.jsx)(`span`,{},e))}),(0,O.jsx)(`div`,{className:`trace-loading-metrics`,"aria-hidden":`true`,children:P.map(e=>(0,O.jsx)(`span`,{},e))}),(0,O.jsx)(`div`,{className:`trace-loading-stages`,"aria-hidden":`true`,children:M.map(e=>(0,O.jsx)(`span`,{},e))})]})})}function W({trace:e,locale:t=`pt-BR`,onClose:n,onOpenChange:r,onOpenPrd:o,onOpenSpec:c,embedded:d=!1}){let[f,p]=(0,D.useState)(null),[m,x]=(0,D.useState)(null),[C,E]=(0,D.useState)(!1),N=H[t],P=t===`en-US`?V:B,U=t===`en-US`?R:L,W=(0,D.useMemo)(()=>new Map(M.map(t=>[t,e.documents.filter(e=>e.stage===t)])),[e.documents]),K=(0,D.useMemo)(()=>new Map(e.stages.map(e=>[e.stage,e])),[e.stages]),Y=Math.round(e.coverage.stages_with_timestamps/e.coverage.total_stages*100),X=[e.task_id,e.change_id,e.spec_id,e.prd_id].filter(Boolean).length,Z=z(e,{onOpenChange:r,onOpenPrd:o,onOpenSpec:c}),Q=q(e.task_created_at,t),$=J(e.task_created_at,t),ee=async()=>{try{await navigator.clipboard.writeText(e.task_id),E(!0),window.setTimeout(()=>E(!1),2e3)}catch{E(!1)}};return(0,O.jsxs)(`div`,{className:d?`trace-embedded`:`trace-backdrop`,children:[(0,O.jsxs)(`section`,{"aria-label":N.aria,"aria-modal":d?void 0:`true`,className:`trace-panel`,role:`dialog`,children:[(0,O.jsxs)(`header`,{className:`trace-panel-header`,children:[(0,O.jsxs)(`div`,{className:`trace-heading`,children:[(0,O.jsx)(`span`,{className:`trace-heading-icon`,"aria-hidden":`true`,children:(0,O.jsx)(l,{size:22,strokeWidth:1.8})}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`div`,{className:`trace-heading-title`,children:(0,O.jsxs)(`h2`,{children:[(0,O.jsx)(`span`,{className:`trace-title-prefix`,children:`Trace:`}),` `,e.task_title||e.task_id]})}),(0,O.jsx)(`p`,{children:t===`pt-BR`?`Visão completa do ciclo de desenvolvimento`:`Complete development lifecycle view`})]})]}),(0,O.jsxs)(`div`,{className:`trace-header-actions`,children:[(0,O.jsx)(G,{copy:N,locale:t,usage:e.usage}),d?null:(0,O.jsx)(`button`,{className:`trace-close-button`,"aria-label":N.close,onClick:n,type:`button`,children:(0,O.jsx)(s,{"aria-hidden":`true`,size:20,strokeWidth:2})})]})]}),(0,O.jsxs)(`section`,{className:`trace-task-summary`,"aria-label":t===`pt-BR`?`Resumo da tarefa`:`Task summary`,children:[(0,O.jsxs)(`article`,{children:[(0,O.jsx)(S,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Criada em`:`Created at`}),(0,O.jsx)(`strong`,{children:Q})]})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(u,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Desde a criação`:`Since creation`}),(0,O.jsx)(`strong`,{children:$})]})]}),(0,O.jsxs)(`article`,{className:`trace-task-progress`,children:[(0,O.jsx)(h,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content trace-task-progress-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Progresso`:`Progress`}),(0,O.jsxs)(`strong`,{children:[e.task_progress,`%`]}),(0,O.jsx)(`progress`,{max:100,value:e.task_progress})]})]}),(0,O.jsxs)(`article`,{className:`trace-task-classification`,children:[(0,O.jsx)(y,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Classificação`:`Classification`}),(0,O.jsxs)(`div`,{className:`trace-task-badges`,children:[(0,O.jsxs)(`span`,{className:`trace-mode-badge`,children:[(0,O.jsx)(T,{"aria-hidden":`true`,size:12,strokeWidth:2}),e.spec_id===null?N.taskFirst:N.specDriven]}),e.task_risk?(0,O.jsxs)(`span`,{className:`trace-risk-badge`,"data-risk":e.task_risk,children:[(0,O.jsx)(b,{"aria-hidden":`true`,size:12,strokeWidth:2}),F[t][e.task_risk]]}):null]})]})]})]}),(0,O.jsx)(`section`,{className:`trace-overview trace-lineage`,"aria-label":t===`pt-BR`?`Identificadores vinculados`:`Linked identifiers`,children:Z.map(({label:e,value:n,onOpen:r})=>{let i=n!==null&&r!==void 0,o=e===`Task`&&n!==null,s=(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`div`,{className:`trace-identifier-content`,children:[(0,O.jsxs)(`span`,{children:[(0,O.jsx)(_,{"aria-hidden":`true`,size:11,strokeWidth:2}),e]}),(0,O.jsx)(`strong`,{title:n??N.unlinked,children:n??N.unlinked})]}),o?(0,O.jsx)(`button`,{"aria-label":C?t===`pt-BR`?`ID da tarefa copiado`:`Task ID copied`:t===`pt-BR`?`Copiar ID da tarefa`:`Copy task ID`,className:`trace-identifier-copy`,onClick:()=>void ee(),title:C?t===`pt-BR`?`Copiado`:`Copied`:void 0,type:`button`,children:C?(0,O.jsx)(g,{"aria-hidden":`true`,size:15}):(0,O.jsx)(v,{"aria-hidden":`true`,size:15})}):null,i?(0,O.jsx)(a,{"aria-hidden":`true`,size:15,strokeWidth:1.9}):null]});return(0,O.jsx)(`article`,{"data-empty":n===null,"data-linked":n!==null,"data-navigable":i,children:i?(0,O.jsx)(`button`,{"aria-label":`${t===`pt-BR`?`Abrir`:`Open`} ${e}: ${n}`,className:`trace-identifier-navigation`,onClick:()=>r(n),type:`button`,children:s}):(0,O.jsx)(`div`,{className:`trace-identifier-static`,children:s})},e)})}),(0,O.jsxs)(`section`,{className:`trace-metrics`,"aria-label":t===`pt-BR`?`Resumo da rastreabilidade`:`Traceability summary`,children:[(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(l,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsxs)(`strong`,{children:[Y,`%`]}),(0,O.jsx)(`span`,{children:N.coverage})]}),(0,O.jsxs)(`small`,{children:[e.coverage.stages_with_timestamps,` `,N.of,` `,e.coverage.total_stages]})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(w,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`strong`,{children:e.documents.length}),(0,O.jsx)(`span`,{children:N.documents})]}),(0,O.jsx)(`small`,{children:t===`pt-BR`?`no ciclo completo`:`in the full lifecycle`})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(y,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`strong`,{children:e.coverage.evidence_count}),(0,O.jsx)(`span`,{children:N.evidenceMetric})]}),(0,O.jsxs)(`small`,{children:[e.coverage.test_count,` `,N.tests]})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(_,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`strong`,{children:X}),(0,O.jsx)(`span`,{children:t===`pt-BR`?`Vínculos`:`Links`})]}),(0,O.jsx)(`small`,{children:`Task · Change · SPEC · PRD`})]})]}),(0,O.jsx)(`div`,{className:`trace-stage-menu`,children:M.map((e,n)=>{let r=I[e],o=(W.get(e)??[]).length;return(0,O.jsxs)(`button`,{className:`trace-stage-menu-button`,"data-stage":e,onClick:()=>x(e),type:`button`,children:[(0,O.jsx)(`span`,{className:`trace-stage-number`,children:String(n+1).padStart(2,`0`)}),(0,O.jsx)(r,{className:`trace-stage-icon`,"aria-hidden":`true`,size:22,strokeWidth:1.8}),(0,O.jsx)(`strong`,{children:P[e].label}),(0,O.jsx)(`em`,{children:P[e].description}),(0,O.jsxs)(`span`,{className:`trace-stage-action`,children:[(0,O.jsxs)(`small`,{children:[(0,O.jsx)(i,{"aria-hidden":`true`,size:13}),` `,o,` `,N.items]}),(0,O.jsxs)(`span`,{children:[t===`pt-BR`?`Ver etapa`:`View stage`,(0,O.jsx)(a,{"aria-hidden":`true`,size:13,strokeWidth:2})]})]})]},e)})})]}),m?(0,O.jsx)(j,{ariaLabel:N.stageDetails,closeLabel:t===`pt-BR`?`Fechar detalhes da etapa`:`Close stage details`,onClose:()=>x(null),children:(0,O.jsx)(A,{copy:N,documents:W.get(m)??[],locale:t,onBack:()=>x(null),onOpenDocument:p,onStageChange:x,stage:m,stageArtifacts:U,stageRecord:K.get(m),stageCopy:P})}):null,f?(0,O.jsx)(k,{ariaLabel:`${N.document} ${f.title}`,closeLabel:N.closeDocument,document:f,onClose:()=>p(null)}):null]})}function G({usage:e,locale:n,copy:r}){let i=[{label:r.time,metric:e.duration_ms,value:K(e.duration_ms.value,n)},{label:r.tokens,metric:e.total_tokens,value:e.total_tokens.value===null?`—`:t(e.total_tokens.value,n)},{label:r.cost,metric:e.cost,value:e.cost.value===null||e.cost.currency===null?`—`:d(e.cost.value,e.cost.currency,n)}];return(0,O.jsx)(`section`,{"aria-label":n===`pt-BR`?`Uso agregado da Task`:`Aggregated Task usage`,children:(0,O.jsx)(`dl`,{className:`trace-usage-strip`,children:i.map(({label:t,metric:n,value:i})=>{let a=Math.round(n.coverage_ratio*100),o=`${n.known_runs}/${e.run_count} ${r.measuredRuns} · ${a}%`;return(0,O.jsxs)(`div`,{title:o,children:[(0,O.jsxs)(`dt`,{children:[t,(0,O.jsx)(`span`,{"aria-hidden":`true`,className:`trace-usage-coverage`,"data-complete":n.unknown_runs===0}),(0,O.jsx)(`span`,{className:`trace-usage-sr-only`,children:o})]}),(0,O.jsx)(`dd`,{children:i})]},t)})})})}function K(e,t){return e===null?`—`:f(e,t)}function q(e,t){if(e===null)return`—`;let n=new Date(e);return Number.isNaN(n.getTime())?`—`:new Intl.DateTimeFormat(t,{dateStyle:`short`,timeStyle:`short`}).format(n)}function J(e,t){if(e===null)return`—`;let n=Date.parse(e);if(!Number.isFinite(n))return`—`;let r=Math.max(0,Date.now()-n),i=Math.max(1,Math.round(r/6e4)),a;if(i<60)a=`${i}m`;else{let e=Math.round(i/60);if(e<24)a=`${e}h`;else{let n=Math.round(e/24);if(n<7)a=`${n}d`;else{let e=Math.round(n/7);a=t===`pt-BR`?`${e}sem`:`${e}w`}}}return t===`pt-BR`?`Há ${a}`:`${a} ago`}export{W as n,U as t};
|
|
1
|
+
import{S as e,_ as t,b as n,c as r,d as i,f as a,l as o,o as s,p as c,s as l,u,v as d,y as f}from"./cost-monitor-DKwP1stV.js";import{a as p,c as m,d as h,f as g,i as _,l as v,m as y,n as b,o as x,p as S,r as C,s as w,t as T,u as E}from"./icons-vendor-B_lDDHn1.js";var D=e(),O=n();function k({ariaLabel:e,closeLabel:t,document:n,onClose:r}){return(0,O.jsxs)(`section`,{"aria-label":e,"aria-modal":`true`,className:`trace-document`,role:`dialog`,children:[(0,O.jsxs)(`header`,{children:[(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`small`,{children:n.path}),(0,O.jsx)(`h2`,{children:n.title})]}),(0,O.jsx)(`button`,{"aria-label":t,className:`trace-close-button`,onClick:r,type:`button`,children:(0,O.jsx)(s,{"aria-hidden":`true`,size:20,strokeWidth:2})})]}),(0,O.jsx)(`pre`,{children:n.content})]})}function A({stage:e,stageRecord:t,documents:n,stageCopy:r,stageArtifacts:i,copy:o,onBack:s,onOpenDocument:l,onStageChange:u}){let d=[`definition`,`planning`,`execution`,`decisions`,`verification`,`evidence`],f=d.indexOf(e),m=d[f-1],h=d[f+1],g=n.filter(e=>e.kind===`evidence`).length,_=new Set(n.map(e=>e.kind)).size,v=new Map;for(let e of n)v.set(e.kind,[...v.get(e.kind)??[],e]);let y=t?.last_recorded_at??o.pending;return(0,O.jsxs)(`section`,{className:`trace-stage-detail`,children:[(0,O.jsx)(`header`,{children:(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{children:r[e].label}),(0,O.jsx)(`h3`,{children:i[e]}),(0,O.jsx)(`small`,{children:y})]})}),(0,O.jsxs)(`div`,{className:`trace-stage-metrics`,children:[(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{children:o.documents}),(0,O.jsx)(`strong`,{children:n.length})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{children:o.types}),(0,O.jsx)(`strong`,{children:_})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{children:o.evidenceMetric}),(0,O.jsx)(`strong`,{children:g})]})]}),(0,O.jsx)(`div`,{className:`trace-stage-documents`,children:n.length===0?(0,O.jsx)(`p`,{className:`trace-stage-empty`,children:o.empty}):[...v].map(([e,t])=>(0,O.jsxs)(`section`,{className:`trace-document-group`,children:[(0,O.jsxs)(`h4`,{children:[e,` `,(0,O.jsx)(`small`,{children:t.length})]}),t.map(e=>(0,O.jsxs)(`button`,{onClick:()=>l(e),type:`button`,children:[(0,O.jsx)(`strong`,{children:e.title}),(0,O.jsx)(`small`,{children:e.path})]},e.id))]},e))}),(0,O.jsxs)(`nav`,{"aria-label":o.navigation,className:`trace-stage-navigation`,children:[(0,O.jsxs)(`button`,{className:`trace-navigation-action trace-navigation-previous`,disabled:f===0,onClick:()=>u(d[f-1]),type:`button`,children:[(0,O.jsx)(c,{"aria-hidden":`true`,size:18,strokeWidth:1.9}),(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`small`,{children:o.previous}),(0,O.jsx)(`strong`,{children:m?r[m].label.split(` (`)[0]:`—`})]})]}),(0,O.jsxs)(`div`,{className:`trace-navigation-center`,children:[(0,O.jsx)(`div`,{"aria-hidden":`true`,className:`trace-navigation-progress`,children:d.map((t,n)=>(0,O.jsx)(`span`,{"data-active":t===e,"data-passed":n<f},t))}),(0,O.jsxs)(`small`,{children:[f+1,` `,o.of,` `,d.length]}),(0,O.jsxs)(`button`,{className:`trace-all-stages-button`,onClick:s,type:`button`,children:[(0,O.jsx)(p,{"aria-hidden":`true`,size:15,strokeWidth:1.9}),o.back]})]}),(0,O.jsxs)(`button`,{className:`trace-navigation-action trace-navigation-next`,disabled:f===d.length-1,onClick:()=>u(d[f+1]),type:`button`,children:[(0,O.jsxs)(`span`,{children:[(0,O.jsx)(`small`,{children:o.next}),(0,O.jsx)(`strong`,{children:h?r[h].label.split(` (`)[0]:`—`})]}),(0,O.jsx)(a,{"aria-hidden":`true`,size:18,strokeWidth:1.9})]})]})]})}function j({ariaLabel:e,children:t,closeLabel:n,onClose:r}){return(0,D.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]),(0,O.jsxs)(`div`,{className:`trace-stage-dialog-backdrop`,role:`presentation`,children:[(0,O.jsx)(`button`,{"aria-label":n,className:`trace-stage-dialog-backdrop-dismiss`,onClick:r,type:`button`}),(0,O.jsxs)(`section`,{"aria-label":e,"aria-modal":`true`,className:`trace-stage-dialog`,role:`dialog`,children:[(0,O.jsx)(`button`,{"aria-label":n,className:`trace-stage-dialog-close`,onClick:r,type:`button`,children:(0,O.jsx)(s,{"aria-hidden":`true`,size:22})}),t]})]})}var M=[`definition`,`planning`,`execution`,`decisions`,`verification`,`evidence`],N=[`task`,`change`,`spec`,`prd`],P=[`coverage`,`documents`,`evidence`,`links`],F={"pt-BR":{lite:`Leve`,standard:`Padrão`,critical:`Crítico`},"en-US":{lite:`Lite`,standard:`Standard`,critical:`Critical`}},I={definition:E,planning:o,execution:C,decisions:x,verification:b,evidence:m},L={definition:`PRD · Requisitos`,planning:`SPEC · Change`,execution:`Tarefas · DAG · Runs · arquivos`,decisions:`Decisões do planejamento e da execução`,verification:`Testes · revisões · evals · checks`,evidence:`Evidências · resultados · rastreabilidade`},R={definition:`PRD · Requirements`,planning:`SPEC · Change`,execution:`Tasks · DAG · Runs · files`,decisions:`Planning and execution decisions`,verification:`Tests · reviews · evals · checks`,evidence:`Evidence · results · traceability`};function z(e,t){return[{label:`Task`,value:e.task_id,onOpen:void 0},{label:`Change`,value:e.change_id,onOpen:t.onOpenChange},{label:`SPEC`,value:e.spec_id,onOpen:t.onOpenSpec},{label:`PRD`,value:e.prd_id,onOpen:t.onOpenPrd}]}var B={definition:{label:`Definição (PRD + Requisitos)`,description:`Objetivo, contexto e critérios que definem o trabalho.`},planning:{label:`Planejamento (SPEC + Change)`,description:`Escopo, solução e mudanças previstas antes da execução.`},execution:{label:`Execução (Tarefas ou DAG)`,description:`Tarefas, dependências da DAG, Runs e arquivos produzidos.`},decisions:{label:`Decisões (Plano e Execução)`,description:`Decisões humanas e da IA tomadas no planejamento e na execução.`},verification:{label:`Verificação (Testes + Revisões)`,description:`Testes, revisões, evals e checks comparam o resultado aos Critérios de Aceite.`},evidence:{label:`Evidências (Resultados + Rastreabilidade)`,description:`Provas reproduzíveis vinculadas às Tasks, Changes, Runs e Critérios de Aceite.`}},V={definition:{label:`Definition (PRD + Requirements)`,description:`Objective, context, and criteria that define the work.`},planning:{label:`Planning (SPEC + Change)`,description:`Scope, solution, and changes planned before execution.`},execution:{label:`Execution (Tasks or DAG)`,description:`Tasks, DAG dependencies, Runs, and produced files.`},decisions:{label:`Decisions (Plan and Execution)`,description:`Human and AI decisions made during planning and execution.`},verification:{label:`Verification (Tests + Reviews)`,description:`Tests, reviews, evals, and checks compare results with acceptance criteria.`},evidence:{label:`Evidence (Results + Traceability)`,description:`Reproducible proof linked to Tasks, Changes, Runs, and acceptance criteria.`}},H={"pt-BR":{aria:`Rastreabilidade da task`,coverage:`etapas rastreadas`,evidence:`evidências`,close:`Fechar`,empty:`Nenhum documento relacionado.`,closeDocument:`Fechar documento`,back:`Voltar às etapas`,previous:`Anterior`,next:`Próxima`,documents:`Documentos`,types:`Tipos`,evidenceMetric:`Evidências`,taskFirst:`Task-first`,specDriven:`Spec-driven`,copyId:`Copiar ID`,copied:`ID copiado`,unlinked:`Não vinculado`,recorded:`Registrada em`,pending:`Pendente`,missingTimestamp:`Sem data/hora`,tests:`testes registrados`,time:`Tempo`,tokens:`Tokens`,cost:`Custo`,measuredRuns:`Runs medidas`,items:`itens`,navigation:`Navegação entre etapas`,of:`de`,stageDetails:`Detalhes da etapa`,document:`Documento`},"en-US":{aria:`Task traceability`,coverage:`tracked stages`,evidence:`evidence items`,close:`Close`,empty:`No related document.`,closeDocument:`Close document`,back:`Back to stages`,previous:`Previous`,next:`Next`,documents:`Documents`,types:`Types`,evidenceMetric:`Evidence`,taskFirst:`Task-first`,specDriven:`Spec-driven`,copyId:`Copy ID`,copied:`ID copied`,unlinked:`Not linked`,recorded:`Recorded at`,pending:`Pending`,missingTimestamp:`Missing date/time`,tests:`recorded tests`,time:`Time`,tokens:`Tokens`,cost:`Cost`,measuredRuns:`measured Runs`,items:`items`,navigation:`Stage navigation`,of:`of`,stageDetails:`Stage details`,document:`Document`}};function U({taskId:e,locale:t=`pt-BR`}){let n=t===`pt-BR`;return(0,O.jsx)(`div`,{className:`trace-backdrop`,children:(0,O.jsxs)(`section`,{"aria-busy":`true`,"aria-label":n?`Carregando rastreabilidade`:`Loading traceability`,"aria-live":`polite`,className:`trace-panel trace-loading-panel`,role:`dialog`,children:[(0,O.jsxs)(`header`,{className:`trace-panel-header`,children:[(0,O.jsxs)(`div`,{className:`trace-heading`,children:[(0,O.jsx)(`span`,{className:`trace-heading-icon trace-loading-icon`,"aria-hidden":`true`,children:(0,O.jsx)(r,{size:22,strokeWidth:1.8})}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`h2`,{children:n?`Carregando rastreabilidade`:`Loading traceability`}),(0,O.jsx)(`p`,{children:e})]})]}),(0,O.jsxs)(`span`,{className:`trace-loading-status`,children:[(0,O.jsx)(r,{"aria-hidden":`true`,size:15,strokeWidth:2}),n?`Preparando trace`:`Preparing trace`]})]}),(0,O.jsx)(`div`,{className:`trace-loading-identifiers`,"aria-hidden":`true`,children:N.map(e=>(0,O.jsx)(`span`,{},e))}),(0,O.jsx)(`div`,{className:`trace-loading-metrics`,"aria-hidden":`true`,children:P.map(e=>(0,O.jsx)(`span`,{},e))}),(0,O.jsx)(`div`,{className:`trace-loading-stages`,"aria-hidden":`true`,children:M.map(e=>(0,O.jsx)(`span`,{},e))})]})})}function W({trace:e,locale:t=`pt-BR`,onClose:n,onOpenChange:r,onOpenPrd:o,onOpenSpec:c,embedded:d=!1}){let[f,p]=(0,D.useState)(null),[m,x]=(0,D.useState)(null),[C,E]=(0,D.useState)(!1),N=H[t],P=t===`en-US`?V:B,U=t===`en-US`?R:L,W=(0,D.useMemo)(()=>new Map(M.map(t=>[t,e.documents.filter(e=>e.stage===t)])),[e.documents]),K=(0,D.useMemo)(()=>new Map(e.stages.map(e=>[e.stage,e])),[e.stages]),Y=Math.round(e.coverage.stages_with_timestamps/e.coverage.total_stages*100),X=[e.task_id,e.change_id,e.spec_id,e.prd_id].filter(Boolean).length,Z=z(e,{onOpenChange:r,onOpenPrd:o,onOpenSpec:c}),Q=q(e.task_created_at,t),$=J(e.task_created_at,t),ee=async()=>{try{await navigator.clipboard.writeText(e.task_id),E(!0),window.setTimeout(()=>E(!1),2e3)}catch{E(!1)}};return(0,O.jsxs)(`div`,{className:d?`trace-embedded`:`trace-backdrop`,children:[(0,O.jsxs)(`section`,{"aria-label":N.aria,"aria-modal":d?void 0:`true`,className:`trace-panel`,role:`dialog`,children:[(0,O.jsxs)(`header`,{className:`trace-panel-header`,children:[(0,O.jsxs)(`div`,{className:`trace-heading`,children:[(0,O.jsx)(`span`,{className:`trace-heading-icon`,"aria-hidden":`true`,children:(0,O.jsx)(l,{size:22,strokeWidth:1.8})}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`div`,{className:`trace-heading-title`,children:(0,O.jsxs)(`h2`,{children:[(0,O.jsx)(`span`,{className:`trace-title-prefix`,children:`Trace:`}),` `,e.task_title||e.task_id]})}),(0,O.jsx)(`p`,{children:t===`pt-BR`?`Visão completa do ciclo de desenvolvimento`:`Complete development lifecycle view`})]})]}),(0,O.jsxs)(`div`,{className:`trace-header-actions`,children:[(0,O.jsx)(G,{copy:N,locale:t,usage:e.usage}),d?null:(0,O.jsx)(`button`,{className:`trace-close-button`,"aria-label":N.close,onClick:n,type:`button`,children:(0,O.jsx)(s,{"aria-hidden":`true`,size:20,strokeWidth:2})})]})]}),(0,O.jsxs)(`section`,{className:`trace-task-summary`,"aria-label":t===`pt-BR`?`Resumo da tarefa`:`Task summary`,children:[(0,O.jsxs)(`article`,{children:[(0,O.jsx)(S,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Criada em`:`Created at`}),(0,O.jsx)(`strong`,{children:Q})]})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(u,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Desde a criação`:`Since creation`}),(0,O.jsx)(`strong`,{children:$})]})]}),(0,O.jsxs)(`article`,{className:`trace-task-progress`,children:[(0,O.jsx)(h,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content trace-task-progress-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Progresso`:`Progress`}),(0,O.jsxs)(`strong`,{children:[e.task_progress,`%`]}),(0,O.jsx)(`progress`,{max:100,value:e.task_progress})]})]}),(0,O.jsxs)(`article`,{className:`trace-task-classification`,children:[(0,O.jsx)(y,{"aria-hidden":`true`,size:17,strokeWidth:1.8}),(0,O.jsxs)(`div`,{className:`trace-task-summary-content`,children:[(0,O.jsx)(`span`,{children:t===`pt-BR`?`Classificação`:`Classification`}),(0,O.jsxs)(`div`,{className:`trace-task-badges`,children:[(0,O.jsxs)(`span`,{className:`trace-mode-badge`,children:[(0,O.jsx)(T,{"aria-hidden":`true`,size:12,strokeWidth:2}),e.spec_id===null?N.taskFirst:N.specDriven]}),e.task_risk?(0,O.jsxs)(`span`,{className:`trace-risk-badge`,"data-risk":e.task_risk,children:[(0,O.jsx)(b,{"aria-hidden":`true`,size:12,strokeWidth:2}),F[t][e.task_risk]]}):null]})]})]})]}),(0,O.jsx)(`section`,{className:`trace-overview trace-lineage`,"aria-label":t===`pt-BR`?`Identificadores vinculados`:`Linked identifiers`,children:Z.map(({label:e,value:n,onOpen:r})=>{let i=n!==null&&r!==void 0,o=e===`Task`&&n!==null,s=(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)(`div`,{className:`trace-identifier-content`,children:[(0,O.jsxs)(`span`,{children:[(0,O.jsx)(_,{"aria-hidden":`true`,size:11,strokeWidth:2}),e]}),(0,O.jsx)(`strong`,{title:n??N.unlinked,children:n??N.unlinked})]}),o?(0,O.jsx)(`button`,{"aria-label":C?t===`pt-BR`?`ID da tarefa copiado`:`Task ID copied`:t===`pt-BR`?`Copiar ID da tarefa`:`Copy task ID`,className:`trace-identifier-copy`,onClick:()=>void ee(),title:C?t===`pt-BR`?`Copiado`:`Copied`:void 0,type:`button`,children:C?(0,O.jsx)(g,{"aria-hidden":`true`,size:15}):(0,O.jsx)(v,{"aria-hidden":`true`,size:15})}):null,i?(0,O.jsx)(a,{"aria-hidden":`true`,size:15,strokeWidth:1.9}):null]});return(0,O.jsx)(`article`,{"data-empty":n===null,"data-linked":n!==null,"data-navigable":i,children:i?(0,O.jsx)(`button`,{"aria-label":`${t===`pt-BR`?`Abrir`:`Open`} ${e}: ${n}`,className:`trace-identifier-navigation`,onClick:()=>r(n),type:`button`,children:s}):(0,O.jsx)(`div`,{className:`trace-identifier-static`,children:s})},e)})}),(0,O.jsxs)(`section`,{className:`trace-metrics`,"aria-label":t===`pt-BR`?`Resumo da rastreabilidade`:`Traceability summary`,children:[(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(l,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsxs)(`strong`,{children:[Y,`%`]}),(0,O.jsx)(`span`,{children:N.coverage})]}),(0,O.jsxs)(`small`,{children:[e.coverage.stages_with_timestamps,` `,N.of,` `,e.coverage.total_stages]})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(w,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`strong`,{children:e.documents.length}),(0,O.jsx)(`span`,{children:N.documents})]}),(0,O.jsx)(`small`,{children:t===`pt-BR`?`no ciclo completo`:`in the full lifecycle`})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(y,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`strong`,{children:e.coverage.evidence_count}),(0,O.jsx)(`span`,{children:N.evidenceMetric})]}),(0,O.jsxs)(`small`,{children:[e.coverage.test_count,` `,N.tests]})]}),(0,O.jsxs)(`article`,{children:[(0,O.jsx)(`span`,{className:`trace-metric-icon`,children:(0,O.jsx)(_,{"aria-hidden":`true`,size:18})}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`strong`,{children:X}),(0,O.jsx)(`span`,{children:t===`pt-BR`?`Vínculos`:`Links`})]}),(0,O.jsx)(`small`,{children:`Task · Change · SPEC · PRD`})]})]}),(0,O.jsx)(`div`,{className:`trace-stage-menu`,children:M.map((e,n)=>{let r=I[e],o=(W.get(e)??[]).length;return(0,O.jsxs)(`button`,{className:`trace-stage-menu-button`,"data-stage":e,onClick:()=>x(e),type:`button`,children:[(0,O.jsx)(`span`,{className:`trace-stage-number`,children:String(n+1).padStart(2,`0`)}),(0,O.jsx)(r,{className:`trace-stage-icon`,"aria-hidden":`true`,size:22,strokeWidth:1.8}),(0,O.jsx)(`strong`,{children:P[e].label}),(0,O.jsx)(`em`,{children:P[e].description}),(0,O.jsxs)(`span`,{className:`trace-stage-action`,children:[(0,O.jsxs)(`small`,{children:[(0,O.jsx)(i,{"aria-hidden":`true`,size:13}),` `,o,` `,N.items]}),(0,O.jsxs)(`span`,{children:[t===`pt-BR`?`Ver etapa`:`View stage`,(0,O.jsx)(a,{"aria-hidden":`true`,size:13,strokeWidth:2})]})]})]},e)})})]}),m?(0,O.jsx)(j,{ariaLabel:N.stageDetails,closeLabel:t===`pt-BR`?`Fechar detalhes da etapa`:`Close stage details`,onClose:()=>x(null),children:(0,O.jsx)(A,{copy:N,documents:W.get(m)??[],locale:t,onBack:()=>x(null),onOpenDocument:p,onStageChange:x,stage:m,stageArtifacts:U,stageRecord:K.get(m),stageCopy:P})}):null,f?(0,O.jsx)(k,{ariaLabel:`${N.document} ${f.title}`,closeLabel:N.closeDocument,document:f,onClose:()=>p(null)}):null]})}function G({usage:e,locale:n,copy:r}){let i=[{label:r.time,metric:e.duration_ms,value:K(e.duration_ms.value,n)},{label:r.tokens,metric:e.total_tokens,value:e.total_tokens.value===null?`—`:t(e.total_tokens.value,n)},{label:r.cost,metric:e.cost,value:e.cost.value===null||e.cost.currency===null?`—`:d(e.cost.value,e.cost.currency,n)}];return(0,O.jsx)(`section`,{"aria-label":n===`pt-BR`?`Uso agregado da Task`:`Aggregated Task usage`,children:(0,O.jsx)(`dl`,{className:`trace-usage-strip`,children:i.map(({label:t,metric:n,value:i})=>{let a=Math.round(n.coverage_ratio*100),o=`${n.known_runs}/${e.run_count} ${r.measuredRuns} · ${a}%`;return(0,O.jsxs)(`div`,{title:o,children:[(0,O.jsxs)(`dt`,{children:[t,(0,O.jsx)(`span`,{"aria-hidden":`true`,className:`trace-usage-coverage`,"data-complete":n.unknown_runs===0}),(0,O.jsx)(`span`,{className:`trace-usage-sr-only`,children:o})]}),(0,O.jsx)(`dd`,{children:i})]},t)})})})}function K(e,t){return e===null?`—`:f(e,t)}function q(e,t){if(e===null)return`—`;let n=new Date(e);return Number.isNaN(n.getTime())?`—`:new Intl.DateTimeFormat(t,{dateStyle:`short`,timeStyle:`short`}).format(n)}function J(e,t){if(e===null)return`—`;let n=Date.parse(e);if(!Number.isFinite(n))return`—`;let r=Math.max(0,Date.now()-n),i=Math.max(1,Math.round(r/6e4)),a;if(i<60)a=`${i}m`;else{let e=Math.round(i/60);if(e<24)a=`${e}h`;else{let n=Math.round(e/24);if(n<7)a=`${n}d`;else{let e=Math.round(n/7);a=t===`pt-BR`?`${e}sem`:`${e}w`}}}return t===`pt-BR`?`Há ${a}`:`${a} ago`}export{W as n,U as t};
|