@zaip-ai/cli 1.3.7 → 1.4.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 +86 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/services/adapters.js +4 -4
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/codex-config-template.d.ts +2 -2
- package/dist/services/codex-config-template.d.ts.map +1 -1
- package/dist/services/codex-config-template.js +3 -3
- package/dist/services/codex-config-template.js.map +1 -1
- package/dist/services/codex-rules.d.ts +1 -1
- package/dist/services/codex-rules.d.ts.map +1 -1
- package/dist/services/codex-rules.js +9 -24
- package/dist/services/codex-rules.js.map +1 -1
- package/dist/services/delivery-git-preflight.d.ts +23 -0
- package/dist/services/delivery-git-preflight.d.ts.map +1 -0
- package/dist/services/delivery-git-preflight.js +69 -0
- package/dist/services/delivery-git-preflight.js.map +1 -0
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +13 -1
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +22 -28
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/install-profile.d.ts +8 -0
- package/dist/services/install-profile.d.ts.map +1 -0
- package/dist/services/install-profile.js +56 -0
- package/dist/services/install-profile.js.map +1 -0
- package/dist/services/logger.d.ts.map +1 -1
- package/dist/services/logger.js +6 -5
- package/dist/services/logger.js.map +1 -1
- package/dist/services/stack-git.d.ts +9 -0
- package/dist/services/stack-git.d.ts.map +1 -0
- package/dist/services/stack-git.js +188 -0
- package/dist/services/stack-git.js.map +1 -0
- package/dist/services/stack-install.d.ts +14 -0
- package/dist/services/stack-install.d.ts.map +1 -0
- package/dist/services/stack-install.js +176 -0
- package/dist/services/stack-install.js.map +1 -0
- package/dist/services/stack-node.d.ts +12 -0
- package/dist/services/stack-node.d.ts.map +1 -0
- package/dist/services/stack-node.js +150 -0
- package/dist/services/stack-node.js.map +1 -0
- package/dist/services/stack-package-manager.d.ts +12 -0
- package/dist/services/stack-package-manager.d.ts.map +1 -0
- package/dist/services/stack-package-manager.js +178 -0
- package/dist/services/stack-package-manager.js.map +1 -0
- package/dist/services/stack-plan.d.ts +35 -0
- package/dist/services/stack-plan.d.ts.map +1 -0
- package/dist/services/stack-plan.js +130 -0
- package/dist/services/stack-plan.js.map +1 -0
- package/dist/services/stack-terraform.d.ts +13 -0
- package/dist/services/stack-terraform.d.ts.map +1 -0
- package/dist/services/stack-terraform.js +274 -0
- package/dist/services/stack-terraform.js.map +1 -0
- package/dist/services/template-manifest.d.ts.map +1 -1
- package/dist/services/template-manifest.js +14 -1
- package/dist/services/template-manifest.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.agents/.env.example +34 -0
- package/templates/{README.md → .agents/README.md} +124 -60
- package/templates/.agents/config/agents/catalog.yaml +23 -23
- package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +5 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +10 -7
- package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +5 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +5 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +1 -0
- package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +5 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +1 -0
- package/templates/.agents/config/pricing/models.json +25 -1
- package/templates/.agents/config/project.yaml +2 -0
- package/templates/.agents/dashboard/.zaip-managed.json +214 -94
- package/templates/.agents/dashboard/DATA-DICTIONARY.md +1 -1
- package/templates/.agents/dashboard/README.md +58 -19
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-DwVZOmMV.js → CostCalculationGuidePage-snUCQYTC.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog--czwAlcH.js → DashboardHelpDialog-oZVlf-l5.js} +787 -723
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-CyjMXkm8.js → PricingSettingsDialog-BPtVUGgs.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-3Awyaovx.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-BomxqCBU.css → ProjectSettingsPage-GgzpZ_PY.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-CAqYVin1.js → TraceabilityWorkspace-BYjVOHI_.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-DbaLbU2q.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-DXBOtWNI.js → icons-vendor-TPUT2IUt.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-ZJFXmK7m.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-DaNXQPyk.js → react-vendor-Ct48XHGL.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-I4AKqVDX.js → traceability-BDe4_Ubl.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +6 -6
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +73 -67
- package/templates/.agents/dashboard/apps/frontend/src/AppLoadingBoundary.tsx +35 -7
- package/templates/.agents/dashboard/apps/frontend/src/AppWorkBoard.ts +55 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +15 -2
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +33 -6
- package/templates/.agents/dashboard/apps/frontend/src/app-loading-boundary.css +98 -0
- package/templates/.agents/dashboard/apps/frontend/src/cost-period-refresh.test.ts +5 -5
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-reconciliation.ts +33 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.test.ts +75 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +9 -8
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +15 -3
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-page.css +0 -104
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +61 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-stack-versions.css +117 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +78 -2
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +28 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +8 -5
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +180 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/contracts.ts +7 -4
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorContent.tsx +13 -7
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +14 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableDisplay.ts +211 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +152 -157
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.tsx +155 -142
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/InvocationManifestQuery.test.ts +145 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/period-cost-groups.ts +7 -5
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-compact-cost-page.ts +4 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +4 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-run-page.ts +4 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +4 -4
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +79 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +105 -11
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +477 -327
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +430 -285
- package/templates/.agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs +14 -2
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +6 -26
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/verify-persistent-launch.mjs +268 -0
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +482 -332
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +243 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +252 -41
- package/templates/.agents/dashboard/packages/local-runtime/src/server-agent-assets.ts +39 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-browser-lease.ts +33 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +148 -11
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-result.test.ts +68 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +19 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +39 -43
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-revision.test.ts +42 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-revision.ts +26 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +34 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-startup.ts +30 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.test.ts +89 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-work-reconciliation.ts +88 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +68 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +11 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +129 -99
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-agent-productivity.test.ts +111 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-agent-productivity.ts +140 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-agent-page.test.ts +127 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-agent-page.ts +145 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-aggregates.ts +156 -23
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-group-projection.ts +18 -9
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-invocation-projection.ts +52 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-persistence.ts +35 -13
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-force-canonical.test.ts +56 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-cache.test.ts +29 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-cache.ts +136 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +251 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +22 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-cache.test-support.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical-parsing.ts +42 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +793 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider-duration.test.ts +270 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider-fixture.ts +3 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +18 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.test.ts +87 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-source-fingerprint.ts +105 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +131 -59
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.ts +1000 -1115
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-snapshot-cache.ts +13 -92
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +79 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +27 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-lifecycle.mjs +6 -6
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-prerequisites.mjs +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-refresh.mjs +2 -10
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-server.mjs +142 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +231 -239
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +18 -29
- package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +6 -0
- package/templates/.agents/dashboard/stack-dependencies.json +14 -0
- package/templates/.agents/dashboard/zaip-dashboard-windows.exe +0 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/cloud-hostinger-autonomy.md +47 -0
- 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 +2 -2
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +1 -1
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +1 -1
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +1 -1
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/autonomy-decision.md +1 -1
- package/templates/.agents/rules/cloud-hostinger-autonomy.md +21 -0
- package/templates/.agents/rules/core.md +5 -4
- package/templates/.agents/rules/local-sqlite-storage.md +18 -0
- package/templates/.agents/rules/meta-mcp.md +21 -0
- package/templates/.agents/rules/workflow.md +1 -0
- package/templates/.agents/runtime/bin/zaip.mjs +305 -137
- package/templates/.agents/runtime/checksums.sha256 +2 -2
- package/templates/.agents/runtime/provenance.json +2 -2
- package/templates/.agents/skills/zaip-skill-api-to-mcp/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-brand-governance/SKILL.md +25 -9
- package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-framework.md +2 -2
- package/templates/.agents/skills/zaip-skill-brand-governance/references/brandbook-standards.md +2 -2
- package/templates/.agents/skills/zaip-skill-change/references/observable-evidence.md +15 -0
- package/templates/.agents/skills/zaip-skill-dashboard-sqlite/SKILL.md +13 -5
- package/templates/.agents/skills/zaip-skill-data-analyst/SKILL.md +10 -5
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +5 -4
- package/templates/.agents/skills/zaip-skill-frontend-launcher/SKILL.md +4 -3
- package/templates/.agents/skills/zaip-skill-frontend-launcher/references/launcher-contract.md +5 -3
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +5 -5
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +78 -13
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +59 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/yaml-parser.mjs +157 -0
- package/templates/.agents/skills/zaip-skill-growth-strategy-revops/SKILL.md +11 -6
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/SKILL.md +17 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/agents/openai.yaml +7 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/autonomous-cloud-inputs.example.json +41 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/autonomous-runner.md +84 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/operational-contract.md +19 -0
- package/templates/.agents/skills/zaip-skill-local-credentials/SKILL.md +43 -0
- package/templates/.agents/skills/zaip-skill-local-credentials/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-local-credentials/references/dotenv-resolution.md +47 -0
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +8 -3
- package/templates/.agents/skills/zaip-skill-meta-ads/SKILL.md +16 -0
- package/templates/.agents/skills/zaip-skill-meta-ads/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-ads/references/setup.md +3 -0
- package/templates/.agents/skills/zaip-skill-meta-ads-setup/SKILL.md +24 -0
- package/templates/.agents/skills/zaip-skill-meta-ads-setup/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-ads-setup/references/diagnostics.md +13 -0
- package/templates/.agents/skills/zaip-skill-meta-ads-setup/references/official-sources.md +10 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-health/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-health/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-health/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-health/references/upstream.md +77 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-integration/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-integration/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-integration/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-api-integration/references/upstream.md +126 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-health-check/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-health-check/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-health-check/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-health-check/references/upstream.md +67 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-review-prep/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-review-prep/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-review-prep/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-app-review-prep/references/upstream.md +69 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-compliance-check/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-compliance-check/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-compliance-check/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-compliance-check/references/upstream.md +79 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-access-token/SKILL.md +14 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-access-token/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-access-token/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-access-token/references/upstream.md +144 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-webhooks/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-webhooks/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-webhooks/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-debug-webhooks/references/upstream.md +83 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-search-docs/SKILL.md +10 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-search-docs/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-search-docs/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-search-docs/references/setup.md +11 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-search-docs/references/upstream.md +55 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-webhook-setup/SKILL.md +12 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-webhook-setup/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-webhook-setup/references/LICENSE +21 -0
- package/templates/.agents/skills/zaip-skill-meta-devtools-webhook-setup/references/upstream.md +56 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +12 -7
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +11 -4
- package/templates/.agents/skills/zaip-skill-tool-setup/SKILL.md +6 -4
- package/templates/.agents/skills/zaip-skill-tool-setup/references/codex-config.md +4 -2
- package/templates/.agents/skills/zaip-skill-tool-setup/references/secrets.md +1 -0
- package/templates/.agents/tools/catalog.yaml +6 -0
- package/templates/.agents/tools/cloud-runner-dns.mjs +28 -0
- package/templates/.agents/tools/cloud-runner-terraform.mjs +212 -0
- package/templates/.agents/tools/cloud-runner.integration.test.mjs +239 -0
- package/templates/.agents/tools/cloud-runner.mjs +786 -0
- package/templates/.agents/tools/cloud-runner.test.mjs +534 -0
- package/templates/.agents/tools/cloud-terraform-plan-policy.mjs +262 -0
- package/templates/.agents/tools/mcp/development/meta-devtools/README.md +14 -0
- package/templates/.agents/tools/mcp/development/meta-devtools/manifest.yaml +28 -0
- package/templates/.agents/tools/mcp/infra/cloudflare/manifest.yaml +2 -3
- package/templates/.agents/tools/mcp/infra/hostinger/manifest.yaml +1 -3
- package/templates/.agents/tools/mcp/marketing/meta-ads/README.md +15 -13
- package/templates/.agents/tools/mcp/marketing/meta-ads/manifest.yaml +15 -10
- package/templates/.agents/tools/profiles/development.yaml +3 -0
- package/templates/infra/terraform/.terraform.lock.hcl +42 -0
- package/templates/infra/terraform/README.md +31 -0
- package/templates/infra/terraform/backend.tf.json +13 -0
- package/templates/infra/terraform/deployment-inputs.example.yaml +22 -0
- package/templates/infra/terraform/fixtures/approved-targets.json +32 -0
- package/templates/infra/terraform/fixtures/plan-approved.json +67 -0
- package/templates/infra/terraform/main.tf +77 -0
- package/templates/infra/terraform/outputs.tf +20 -0
- package/templates/infra/terraform/terraform.tfvars.example +26 -0
- package/templates/infra/terraform/variables.tf +91 -0
- package/templates/infra/terraform/versions.tf +18 -0
- package/templates/scripts/validate-cloud-hostinger-contract.mjs +89 -0
- package/templates/scripts/validate-cloud-terraform-plan.mjs +1 -0
- package/templates/template-manifest.json +613 -173
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-B_Oj6Dlf.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-C09KmlSw.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-CblPpexd.js +0 -2
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-hPPfVGQv.css +0 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-stale-seed.ts +0 -50
|
@@ -16,7 +16,7 @@ Dimensão física das opções de `provider` do catálogo de preços atual, incl
|
|
|
16
16
|
|
|
17
17
|
## Propósito, escopo e convenções
|
|
18
18
|
|
|
19
|
-
Schema v54 do read model SQLite
|
|
19
|
+
Schema v54 do read model SQLite persistente do dashboard. A definição está em `packages/local-runtime/src/sqlite-read-model.ts`; o banco do Dashboard fica em `.local/sqlite/zaip-aios-dashboard.sqlite`. A carga usa somente uma allowlist de Runs V2, entidades Markdown, artefatos canônicos e configuração. Telemetria agregada, `.agents/records/lifecycle`, projeções e outros agregados derivados não são fontes.
|
|
20
20
|
|
|
21
21
|
`zaip_aios_activities` é a única tabela fato financeira. `canonical_run_index`, `canonical_work_items`, `canonical_executions`, `canonical_changes`, `canonical_decisions`, `files`, `read_model_source_state` e `read_model_metadata` são views técnicas reconstruídas das linhas `technical_payload` da fato. Toda view persistida tem o prefixo `zaip_vw_`; o runtime mantém aliases temporários somente para compatibilidade interna. Os tipos são as afinidades retornadas por `PRAGMA table_info`. Em views, a nulabilidade não é determinável de modo confiável pelo PRAGMA. Em tabelas, somente `NOT NULL` é afirmado; a chave primária é indicada sem inferir regras adicionais.
|
|
22
22
|
|
|
@@ -1,22 +1,52 @@
|
|
|
1
1
|
# Dashboard ZAIP-AIOS SQLite
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
`.local/sqlite/` centraliza os bancos SQLite locais do workspace. A pasta pode conter vários
|
|
4
|
+
arquivos, com um nome estável para cada finalidade, conforme a
|
|
5
|
+
[regra de armazenamento local](../rules/local-sqlite-storage.md).
|
|
6
|
+
O banco reservado ao dashboard é `.local/sqlite/zaip-aios-dashboard.sqlite`;
|
|
7
|
+
a unicidade desse banco se aplica à finalidade dashboard, e outras finalidades têm seus próprios arquivos.
|
|
8
|
+
Os arquivos em `.agents/records` e `.agents/config` continuam sendo a fonte da verdade.
|
|
9
|
+
O SQLite é um modelo de consulta reconstruível, não o local de gravação dos registros canônicos.
|
|
10
|
+
|
|
11
|
+
| Caminho | Responsabilidade |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `.agents/records/` | Tasks, PRDs, SPECs, Changes, Executions, Runs e atribuições históricas. |
|
|
14
|
+
| `.agents/config/` | Configuração do projeto, catálogo de agentes e preços. |
|
|
15
|
+
| `.agents/dashboard/` | Código, frontend compilado, runtime e executável. |
|
|
16
|
+
| `.local/sqlite/` | Diretório compartilhado dos bancos SQLite locais, separados por finalidade. |
|
|
17
|
+
| `.local/sqlite/zaip-aios-dashboard.sqlite` | Único banco utilizado pelo dashboard normal. |
|
|
18
|
+
| `%TEMP%/zaip-aios/dashboard-sqlite-<workspace>/` | Sessão, locks, logs e cache de compilação Node. |
|
|
19
|
+
|
|
20
|
+
As antigas pastas `.local/dashboard-*` foram usadas para diagnósticos, benchmarks, exports,
|
|
21
|
+
previews e bancos de teste. O launcher não depende delas nem gera novos bancos nessas pastas.
|
|
6
22
|
|
|
7
23
|
## Como funciona
|
|
8
24
|
|
|
9
|
-
- O rebuild
|
|
10
|
-
-
|
|
11
|
-
colunas para runs, tokens, custo, duração e cobertura.
|
|
12
|
-
- O runtime lê manifests, índices, chunks e detalhes pelo adapter `SqliteReadModelFileSystem`.
|
|
25
|
+
- O rebuild lê apenas fontes canônicas necessárias e materializa fatos, views e caches de consulta.
|
|
26
|
+
- O runtime consulta o banco pelo adapter `SqliteReadModelFileSystem`.
|
|
13
27
|
- As rotas `operations?scope=quick` e `cost-monitor?scope=summary` usam o SQLite para os fatos
|
|
14
28
|
agregados de primeiro fold (runs, tokens, custo e cobertura); a política híbrida de duração e os
|
|
15
29
|
detalhes de PRD/SPEC/Task continuam no código compartilhado e no adapter file-backed.
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
30
|
+
- Comandos suportados pela API gravam nos canônicos e atualizam a projeção, sem usar o SQLite
|
|
31
|
+
como armazenamento exclusivo de dados de negócio.
|
|
32
|
+
- Havendo um banco íntegro e compatível, o servidor abre esse banco e informa `updating` enquanto
|
|
33
|
+
verifica os canônicos em outro processo. Sem mudanças, mantém o banco. Com mudanças, atualiza
|
|
34
|
+
o mesmo arquivo em uma transação, incluindo os dados das primeiras telas.
|
|
35
|
+
- Leitores continuam usando a última transação confirmada durante a atualização. Após o commit,
|
|
36
|
+
o servidor renova suas consultas e caches e informa `current`. Uma falha reverte a transação.
|
|
37
|
+
- O inventário mantém checkpoints por arquivo no próprio SQLite: caminho, tamanho, identidade,
|
|
38
|
+
datas de modificação e alteração, hash e última atualização processada. Arquivos intactos
|
|
39
|
+
reutilizam seu hash; arquivos novos ou alterados têm o conteúdo verificado novamente.
|
|
40
|
+
A sincronização aplica inclusões, atualizações e remoções, preservando os registros históricos
|
|
41
|
+
intactos. Os totais e caches são atualizados a partir dos fatos já armazenados.
|
|
42
|
+
- A abertura do executável inicia a verificação em segundo plano. Enquanto o servidor estiver ativo,
|
|
43
|
+
alterações nos canônicos disparam verificação; uma checagem a cada minuto cobre mudança de dia
|
|
44
|
+
e eventos de filesystem perdidos. Uma mudança durante a atualização agenda outra verificação.
|
|
45
|
+
Com o servidor encerrado não há sincronização; a próxima abertura recupera as alterações pendentes.
|
|
46
|
+
A virada do dia em São Paulo atualiza os caches de período, sem importar novamente o histórico.
|
|
47
|
+
- Mudar PID ou porta não muda o caminho do SQLite. Encerrar o dashboard preserva o banco.
|
|
48
|
+
Os arquivos `-wal`, `-shm` ou `-journal` são auxiliares de transação, não cópias históricas;
|
|
49
|
+
não os apague separadamente enquanto o banco estiver aberto.
|
|
20
50
|
|
|
21
51
|
O health check identifica inequivocamente esta versão:
|
|
22
52
|
|
|
@@ -32,7 +62,10 @@ O health check identifica inequivocamente esta versão:
|
|
|
32
62
|
Execute a partir da raiz do repositório:
|
|
33
63
|
|
|
34
64
|
```powershell
|
|
35
|
-
#
|
|
65
|
+
# Compilar o runtime após alterar seu código
|
|
66
|
+
node .agents/dashboard/packages/local-runtime/scripts/build-sqlite-runtime.mjs
|
|
67
|
+
|
|
68
|
+
# Sincronizar o banco oficial com os canônicos
|
|
36
69
|
node .agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs
|
|
37
70
|
|
|
38
71
|
# Recriar frontend e runtime independentes dos globs pnpm do dashboard original
|
|
@@ -41,20 +74,26 @@ node .agents/dashboard/packages/local-runtime/scripts/build-sqlite-dashboard.mjs
|
|
|
41
74
|
# Verificar a paridade SQL com o daily overview canônico (all-time, intervalos, zero e null)
|
|
42
75
|
node .agents/dashboard/packages/local-runtime/scripts/test-sqlite-read-model.mjs
|
|
43
76
|
|
|
44
|
-
# Abrir
|
|
77
|
+
# Abrir pelo launcher Node
|
|
45
78
|
node .agents/dashboard/packages/local-runtime/start-dashboard.mjs
|
|
46
79
|
```
|
|
47
80
|
|
|
48
81
|
No Windows, dê duplo clique em
|
|
49
|
-
`.agents/dashboard/zaip-dashboard-windows.exe`. A
|
|
50
|
-
|
|
51
|
-
|
|
82
|
+
`.agents/dashboard/zaip-dashboard-windows.exe`. A porta inicial é `4417`.
|
|
83
|
+
O clique mais recente controla a sessão conforme o contrato do launcher.
|
|
84
|
+
Prefira a sincronização do servidor enquanto ele estiver aberto, evitando writers manuais
|
|
85
|
+
concorrentes. Não copie um arquivo SQLite ativo sem considerar seu WAL.
|
|
52
86
|
|
|
53
|
-
## Limites
|
|
87
|
+
## Limites
|
|
54
88
|
|
|
55
89
|
- O `node:sqlite` do Node 22.16 ainda emite `ExperimentalWarning`.
|
|
56
|
-
-
|
|
57
|
-
|
|
90
|
+
- A primeira criação ou uma mudança incompatível de esquema exige preparação antes de servir.
|
|
91
|
+
Atualizações volumosas podem demorar; o banco válido existente permite abrir a interface durante
|
|
92
|
+
esse trabalho. `current` descreve a última sincronização concluída.
|
|
93
|
+
- Uma reconstrução solicitada explicitamente também importa todas as fontes. Mudanças de preços,
|
|
94
|
+
catálogo ou atribuição histórica podem exigir reavaliação de cálculos históricos a partir dos
|
|
95
|
+
registros já interpretados e salvos no próprio SQLite; uma atualização comum de Task ou Run
|
|
96
|
+
não repete a interpretação das execuções históricas intactas.
|
|
58
97
|
- A agregação SQL não substitui a semântica híbrida legada de duração: ela permanece compartilhada
|
|
59
98
|
para preservar a paridade histórica. As entidades e os detalhes continuam file-backed pelo adapter.
|
|
60
99
|
- O banco pode ser excluído sem perda de informação e recriado pelo comando da skill
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,b as t}from"./cost-monitor-C09KmlSw.js";var n=e(),r=t(),i={input:1e5,cache:4e4,output:2e4,reasoning:8e3},a=e=>Math.round(e*1e6)/1e6;function o(e,t,n,r,i){let o=a(Math.max(e.input-e.cache,0)/1e6*t.input*n),s=a(e.cache/1e6*(t.cache??0)*n),c=a(e.output/1e6*t.output*r),l=a(o+s+c);return{usage:e,rates:t,inputMultiplier:n,outputMultiplier:r,inputUsd:o,cacheUsd:s,outputUsd:c,reasoningUsd:0,totalUsd:l,totalBrl:i===null?null:a(l*i)}}function s(e,t){if(t===`standard`)return{input:e.input_per_million_usd,cache:e.cached_input_per_million_usd,output:e.output_per_million_usd};let n=e.priority_input_per_million_usd,r=e.priority_output_per_million_usd;return n==null||r==null?null:{input:n,cache:e.priority_cached_input_per_million_usd??null,output:r}}function c(e,t,n){let r=s(e,t);return r===null?null:o(i,r,1,1,n)}function l(e,t){return e.long_context_threshold_tokens===null?null:o({input:e.long_context_threshold_tokens+5e4,cache:i.cache,output:i.output,reasoning:i.reasoning},s(e,`standard`),e.long_context_input_multiplier,e.long_context_output_multiplier,t)}var u={"pt-BR":{eyebrow:`CONFIGURAÇÕES · TRANSPARÊNCIA`,title:`Como o custo é calculado`,intro:`Do menor grão — uma chamada LLM — até o total: veja quais tokens entram na conta e como modelo, esforço, contexto e velocidade mudam o resultado.`,back:`Voltar ao dashboard`,model:`Modelo usado nos exemplos`,currency:`Moeda`,unavailable:`Indisponível`,millionRate:`por 1 milhão de tokens`,rateTitle:`1. Comece pelas tarifas do modelo`,rateIntro:`O modelo escolhe a tabela de preços. Priority/Fast usa outra tabela quando o catálogo publica essas tarifas.`,standard:`Standard`,priority:`Priority / Fast`,input:`Input`,cache:`Cache`,output:`Output`,reasoning:`Reasoning`,ratio:`Priority ÷ Standard`,included:`Incluído no output (+0)`,noPublishedRate:`Sem tarifa publicada (custo adicional 0)`,conceptsTitle:`2. Entenda cada parte da chamada`,concepts:[[`Chamada LLM`,`É o menor grão do cálculo: uma requisição ao provedor, com um modelo e um tier de serviço.`],[`Input tokens`,`Tudo que entra no modelo: instruções, histórico, contexto, ferramentas e a mensagem atual.`],[`Cache tokens`,`São parte do input, não tokens extras. Primeiro subtraímos o cache do input e depois aplicamos sua tarifa própria.`],[`Output tokens`,`É o total produzido pelo modelo. O custo usa o output total informado pela telemetria.`],[`Reasoning tokens`,`São parte do output. O cálculo atual cobra o output uma vez e mantém reasoningUsd = 0, evitando cobrança dupla.`],[`Modelo e esforço`,`O modelo muda as tarifas. O esforço não tem multiplicador próprio, mas pode gerar mais reasoning, output ou ciclos e aumentar o custo indiretamente.`],[`Multiplicador de contexto`,`Acima do limite do modelo, o multiplicador de input vale também para cache; o multiplicador de output vale para todo o output.`],[`Multiplicador de velocidade`,`É a razão derivada entre o total Priority/Fast e o Standard. Serve para comparar; nunca é multiplicado de novo no total.`]],exampleTitle:`3. Exemplo simples, parcela por parcela`,exampleIntro:`Uma chamada com 100 mil tokens de input, dos quais 40 mil vieram do cache, e 20 mil tokens de output, dos quais 8 mil são reasoning.`,billableInput:`Input faturável`,operation:`Operação`,cost:`Custo`,total:`Total da chamada`,speedMultiplier:`Multiplicador de velocidade derivado`,longTitle:`4. Exemplo com contexto longo`,longIntro:`Para realmente ultrapassar o limite, o exemplo usa o threshold do modelo + 50 mil tokens de input. A conta abaixo continua no tier Standard.`,threshold:`Limite do modelo`,longInput:`Input do exemplo longo`,priorityLong:`Priority/Fast + contexto longo`,priorityLongNote:`Indisponível: sem uma combinação publicada no catálogo, o dashboard não inventa uma tarifa.`,finalNote:`Regra prática: escolha o modelo e o tier, separe input de cache, cobre o output total uma única vez e só então aplique câmbio. Mais esforço só aumenta o custo quando aumenta o uso registrado.`},"en-US":{eyebrow:`SETTINGS · TRANSPARENCY`,title:`How cost is calculated`,intro:`From the smallest grain — one LLM call — to the total: see which tokens enter the calculation and how model, effort, context, and speed affect it.`,back:`Back to dashboard`,model:`Model used in the examples`,currency:`Currency`,unavailable:`Unavailable`,millionRate:`per 1 million tokens`,rateTitle:`1. Start with the model rates`,rateIntro:`The model selects the price table. Priority/Fast uses a different table when the catalog publishes those rates.`,standard:`Standard`,priority:`Priority / Fast`,input:`Input`,cache:`Cache`,output:`Output`,reasoning:`Reasoning`,ratio:`Priority ÷ Standard`,included:`Included in output (+0)`,noPublishedRate:`No published rate (additional cost 0)`,conceptsTitle:`2. Understand each part of the call`,concepts:[[`LLM call`,`The smallest calculation grain: one provider request with one model and one service tier.`],[`Input tokens`,`Everything sent to the model: instructions, history, context, tools, and the current message.`],[`Cache tokens`,`They are part of input, not extra tokens. Cache is subtracted from input first, then its own rate is applied.`],[`Output tokens`,`Everything produced by the model. Cost uses the total output reported by telemetry.`],[`Reasoning tokens`,`They are part of output. Current math charges output once and keeps reasoningUsd = 0, preventing double billing.`],[`Model and effort`,`The model changes rates. Effort has no direct multiplier, but it can produce more reasoning, output, or cycles and indirectly raise cost.`],[`Context multiplier`,`Above the model threshold, the input multiplier also applies to cache; the output multiplier applies to all output.`],[`Speed multiplier`,`It is the derived ratio between Priority/Fast and Standard totals. It is only a comparison and is never multiplied into the total again.`]],exampleTitle:`3. A simple example, component by component`,exampleIntro:`One call with 100 thousand input tokens, including 40 thousand cache tokens, and 20 thousand output tokens, including 8 thousand reasoning tokens.`,billableInput:`Billable input`,operation:`Operation`,cost:`Cost`,total:`Call total`,speedMultiplier:`Derived speed multiplier`,longTitle:`4. Long-context example`,longIntro:`To actually exceed the limit, this example uses the model threshold + 50 thousand input tokens. The calculation remains on Standard tier.`,threshold:`Model threshold`,longInput:`Long-example input`,priorityLong:`Priority/Fast + long context`,priorityLongNote:`Unavailable: without a published combination in the catalog, the dashboard does not invent a rate.`,finalNote:`Rule of thumb: choose model and tier, separate input from cache, charge total output once, then apply FX. Higher effort only raises cost when it raises recorded usage.`}};function d(e,t,n,r){if(t===`BRL`&&n===null)return r;let i=t===`BRL`?e*n:e;return new Intl.NumberFormat(t===`BRL`?`pt-BR`:`en-US`,{style:`currency`,currency:t,minimumFractionDigits:2,maximumFractionDigits:6}).format(i)}function f(e,t,n,r,i){return e==null?i:d(e,t,n,r)}function p(e,t){return new Intl.NumberFormat(t).format(e)}function m({example:e,currency:t,fxRate:n,locale:i,labels:a}){let o=a.unavailable,s=Math.max(e.usage.input-e.usage.cache,0),c=e.inputMultiplier===1?``:` × ${e.inputMultiplier}`,l=e.outputMultiplier===1?``:` × ${e.outputMultiplier}`,u=e.rates.cache??0,m=[{label:a.billableInput,operation:`${p(e.usage.input,i)} − ${p(e.usage.cache,i)} = ${p(s,i)} tokens`,cost:null},{label:a.input,operation:`${p(s,i)} ÷ 1M × ${f(e.rates.input,t,n,o,a.noPublishedRate)}${c}`,cost:e.inputUsd},{label:a.cache,operation:`${p(e.usage.cache,i)} ÷ 1M × ${f(u,t,n,o,a.noPublishedRate)}${c}`,cost:e.cacheUsd},{label:a.output,operation:`${p(e.usage.output,i)} ÷ 1M × ${f(e.rates.output,t,n,o,a.noPublishedRate)}${l}`,cost:e.outputUsd},{label:a.reasoning,operation:`${p(e.usage.reasoning,i)} tokens ⊂ ${a.output} → +0`,cost:e.reasoningUsd}];return(0,r.jsxs)(`div`,{className:`cost-guide-calculation`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-calculation-head`,"aria-hidden":`true`,children:[(0,r.jsx)(`span`,{}),(0,r.jsx)(`span`,{children:a.operation}),(0,r.jsx)(`span`,{children:a.cost})]}),m.map(e=>(0,r.jsxs)(`div`,{className:`cost-guide-calculation-line`,children:[(0,r.jsx)(`strong`,{children:e.label}),(0,r.jsx)(`code`,{children:e.operation}),(0,r.jsx)(`span`,{children:e.cost===null?`—`:d(e.cost,t,n,o)})]},e.label)),(0,r.jsxs)(`div`,{className:`cost-guide-calculation-total`,children:[(0,r.jsx)(`strong`,{children:a.total}),(0,r.jsx)(`span`,{children:d(e.totalUsd,t,n,o)})]})]})}function h({catalog:e,fxRate:t,locale:i,onClose:a}){let o=u[i],[s,d]=(0,n.useState)(e.models[0]?.id??``),[h,g]=(0,n.useState)(`USD`),_=(0,n.useMemo)(()=>e.models.find(e=>e.id===s)??e.models[0]??null,[e.models,s]);if(_===null)return(0,r.jsxs)(`main`,{className:`cost-guide`,children:[(0,r.jsxs)(`button`,{onClick:a,type:`button`,children:[`← `,o.back]}),(0,r.jsx)(`h1`,{children:o.title}),(0,r.jsx)(`p`,{children:o.unavailable})]});let v=t?.rate??null,y=c(_,`standard`,v),b=c(_,`priority`,v),x=l(_,v),S=b!==null&&y.totalUsd>0?b.totalUsd/y.totalUsd:null,C=[{label:o.input,standard:_.input_per_million_usd,priority:_.priority_input_per_million_usd},{label:o.cache,standard:_.cached_input_per_million_usd,priority:_.priority_cached_input_per_million_usd},{label:o.output,standard:_.output_per_million_usd,priority:_.priority_output_per_million_usd}];return(0,r.jsxs)(`main`,{className:`cost-guide`,children:[(0,r.jsxs)(`header`,{children:[(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`small`,{children:o.eyebrow}),(0,r.jsx)(`h1`,{children:o.title}),(0,r.jsx)(`p`,{children:o.intro})]}),(0,r.jsxs)(`button`,{onClick:a,type:`button`,children:[`← `,o.back]})]}),(0,r.jsxs)(`section`,{className:`cost-guide-controls`,"aria-label":o.model,children:[(0,r.jsxs)(`label`,{children:[o.model,(0,r.jsx)(`select`,{value:_.id,onChange:e=>d(e.target.value),children:e.models.map(e=>(0,r.jsx)(`option`,{value:e.id,children:e.id},e.id))})]}),(0,r.jsxs)(`label`,{children:[o.currency,(0,r.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),children:[(0,r.jsx)(`option`,{value:`USD`,children:`USD`}),(0,r.jsxs)(`option`,{value:`BRL`,children:[`BRL `,v===null?`(${o.unavailable})`:`(1 USD = ${v.toFixed(4)} BRL)`]})]})]})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-section-heading`,children:[(0,r.jsx)(`h2`,{children:o.rateTitle}),(0,r.jsx)(`p`,{children:o.rateIntro})]}),(0,r.jsx)(`div`,{className:`cost-guide-table-wrap`,children:(0,r.jsxs)(`table`,{children:[(0,r.jsxs)(`caption`,{children:[_.id,` · `,o.millionRate]}),(0,r.jsx)(`thead`,{children:(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`th`,{scope:`col`}),(0,r.jsx)(`th`,{scope:`col`,children:o.standard}),(0,r.jsx)(`th`,{scope:`col`,children:o.priority}),(0,r.jsx)(`th`,{scope:`col`,children:o.ratio})]})}),(0,r.jsxs)(`tbody`,{children:[C.map(e=>(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`th`,{scope:`row`,children:e.label}),(0,r.jsx)(`td`,{children:f(e.standard,h,v,o.unavailable,o.noPublishedRate)}),(0,r.jsx)(`td`,{children:f(e.priority,h,v,o.unavailable,o.noPublishedRate)}),(0,r.jsx)(`td`,{children:e.standard!==null&&e.standard>0&&e.priority!==null&&e.priority!==void 0?`${(e.priority/e.standard).toFixed(2)}×`:o.unavailable})]},e.label)),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`th`,{scope:`row`,children:o.reasoning}),(0,r.jsx)(`td`,{colSpan:3,children:o.included})]})]})]})})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsx)(`div`,{className:`cost-guide-section-heading`,children:(0,r.jsx)(`h2`,{children:o.conceptsTitle})}),(0,r.jsx)(`div`,{className:`cost-guide-blocks`,children:o.concepts.map(([e,t])=>(0,r.jsxs)(`article`,{children:[(0,r.jsx)(`strong`,{children:e}),(0,r.jsx)(`p`,{children:t})]},e))})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-section-heading`,children:[(0,r.jsx)(`h2`,{children:o.exampleTitle}),(0,r.jsx)(`p`,{children:o.exampleIntro})]}),(0,r.jsxs)(`div`,{className:`cost-guide-example-grid`,children:[(0,r.jsxs)(`article`,{className:`cost-guide-example-card`,children:[(0,r.jsx)(`h3`,{children:o.standard}),(0,r.jsx)(m,{example:y,currency:h,fxRate:v,locale:i,labels:o})]}),(0,r.jsxs)(`article`,{className:`cost-guide-example-card`,children:[(0,r.jsx)(`h3`,{children:o.priority}),b===null?(0,r.jsx)(`p`,{className:`cost-guide-unavailable`,children:o.unavailable}):(0,r.jsx)(m,{example:b,currency:h,fxRate:v,locale:i,labels:o})]})]}),(0,r.jsxs)(`div`,{className:`cost-guide-speed`,children:[(0,r.jsx)(`span`,{children:o.speedMultiplier}),(0,r.jsx)(`strong`,{children:S===null?o.unavailable:`${S.toFixed(2)}×`}),(0,r.jsxs)(`code`,{children:[o.priority,` `,o.total,` ÷ `,o.standard,` `,o.total]})]})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-section-heading`,children:[(0,r.jsx)(`h2`,{children:o.longTitle}),(0,r.jsx)(`p`,{children:o.longIntro})]}),(0,r.jsxs)(`div`,{className:`cost-guide-context-summary`,children:[(0,r.jsxs)(`span`,{children:[o.threshold,`:`,` `,(0,r.jsx)(`strong`,{children:_.long_context_threshold_tokens===null?o.unavailable:p(_.long_context_threshold_tokens,i)})]}),(0,r.jsxs)(`span`,{children:[o.longInput,`:`,` `,(0,r.jsx)(`strong`,{children:x===null?o.unavailable:p(x.usage.input,i)})]}),(0,r.jsxs)(`span`,{children:[`Input/cache: `,(0,r.jsxs)(`strong`,{children:[_.long_context_input_multiplier,`×`]})]}),(0,r.jsxs)(`span`,{children:[`Output: `,(0,r.jsxs)(`strong`,{children:[_.long_context_output_multiplier,`×`]})]})]}),x===null?(0,r.jsx)(`p`,{className:`cost-guide-unavailable`,children:o.unavailable}):(0,r.jsx)(m,{example:x,currency:h,fxRate:v,locale:i,labels:o}),(0,r.jsxs)(`div`,{className:`cost-guide-unavailable-combination`,children:[(0,r.jsxs)(`strong`,{children:[o.priorityLong,`: `,o.unavailable]}),(0,r.jsx)(`p`,{children:o.priorityLongNote})]})]}),(0,r.jsx)(`aside`,{className:`cost-guide-final-note`,children:o.finalNote})]})}export{h as CostCalculationGuidePage};
|
|
1
|
+
import{S as e,b as t}from"./cost-monitor-DbaLbU2q.js";var n=e(),r=t(),i={input:1e5,cache:4e4,output:2e4,reasoning:8e3},a=e=>Math.round(e*1e6)/1e6;function o(e,t,n,r,i){let o=a(Math.max(e.input-e.cache,0)/1e6*t.input*n),s=a(e.cache/1e6*(t.cache??0)*n),c=a(e.output/1e6*t.output*r),l=a(o+s+c);return{usage:e,rates:t,inputMultiplier:n,outputMultiplier:r,inputUsd:o,cacheUsd:s,outputUsd:c,reasoningUsd:0,totalUsd:l,totalBrl:i===null?null:a(l*i)}}function s(e,t){if(t===`standard`)return{input:e.input_per_million_usd,cache:e.cached_input_per_million_usd,output:e.output_per_million_usd};let n=e.priority_input_per_million_usd,r=e.priority_output_per_million_usd;return n==null||r==null?null:{input:n,cache:e.priority_cached_input_per_million_usd??null,output:r}}function c(e,t,n){let r=s(e,t);return r===null?null:o(i,r,1,1,n)}function l(e,t){return e.long_context_threshold_tokens===null?null:o({input:e.long_context_threshold_tokens+5e4,cache:i.cache,output:i.output,reasoning:i.reasoning},s(e,`standard`),e.long_context_input_multiplier,e.long_context_output_multiplier,t)}var u={"pt-BR":{eyebrow:`CONFIGURAÇÕES · TRANSPARÊNCIA`,title:`Como o custo é calculado`,intro:`Do menor grão — uma chamada LLM — até o total: veja quais tokens entram na conta e como modelo, esforço, contexto e velocidade mudam o resultado.`,back:`Voltar ao dashboard`,model:`Modelo usado nos exemplos`,currency:`Moeda`,unavailable:`Indisponível`,millionRate:`por 1 milhão de tokens`,rateTitle:`1. Comece pelas tarifas do modelo`,rateIntro:`O modelo escolhe a tabela de preços. Priority/Fast usa outra tabela quando o catálogo publica essas tarifas.`,standard:`Standard`,priority:`Priority / Fast`,input:`Input`,cache:`Cache`,output:`Output`,reasoning:`Reasoning`,ratio:`Priority ÷ Standard`,included:`Incluído no output (+0)`,noPublishedRate:`Sem tarifa publicada (custo adicional 0)`,conceptsTitle:`2. Entenda cada parte da chamada`,concepts:[[`Chamada LLM`,`É o menor grão do cálculo: uma requisição ao provedor, com um modelo e um tier de serviço.`],[`Input tokens`,`Tudo que entra no modelo: instruções, histórico, contexto, ferramentas e a mensagem atual.`],[`Cache tokens`,`São parte do input, não tokens extras. Primeiro subtraímos o cache do input e depois aplicamos sua tarifa própria.`],[`Output tokens`,`É o total produzido pelo modelo. O custo usa o output total informado pela telemetria.`],[`Reasoning tokens`,`São parte do output. O cálculo atual cobra o output uma vez e mantém reasoningUsd = 0, evitando cobrança dupla.`],[`Modelo e esforço`,`O modelo muda as tarifas. O esforço não tem multiplicador próprio, mas pode gerar mais reasoning, output ou ciclos e aumentar o custo indiretamente.`],[`Multiplicador de contexto`,`Acima do limite do modelo, o multiplicador de input vale também para cache; o multiplicador de output vale para todo o output.`],[`Multiplicador de velocidade`,`É a razão derivada entre o total Priority/Fast e o Standard. Serve para comparar; nunca é multiplicado de novo no total.`]],exampleTitle:`3. Exemplo simples, parcela por parcela`,exampleIntro:`Uma chamada com 100 mil tokens de input, dos quais 40 mil vieram do cache, e 20 mil tokens de output, dos quais 8 mil são reasoning.`,billableInput:`Input faturável`,operation:`Operação`,cost:`Custo`,total:`Total da chamada`,speedMultiplier:`Multiplicador de velocidade derivado`,longTitle:`4. Exemplo com contexto longo`,longIntro:`Para realmente ultrapassar o limite, o exemplo usa o threshold do modelo + 50 mil tokens de input. A conta abaixo continua no tier Standard.`,threshold:`Limite do modelo`,longInput:`Input do exemplo longo`,priorityLong:`Priority/Fast + contexto longo`,priorityLongNote:`Indisponível: sem uma combinação publicada no catálogo, o dashboard não inventa uma tarifa.`,finalNote:`Regra prática: escolha o modelo e o tier, separe input de cache, cobre o output total uma única vez e só então aplique câmbio. Mais esforço só aumenta o custo quando aumenta o uso registrado.`},"en-US":{eyebrow:`SETTINGS · TRANSPARENCY`,title:`How cost is calculated`,intro:`From the smallest grain — one LLM call — to the total: see which tokens enter the calculation and how model, effort, context, and speed affect it.`,back:`Back to dashboard`,model:`Model used in the examples`,currency:`Currency`,unavailable:`Unavailable`,millionRate:`per 1 million tokens`,rateTitle:`1. Start with the model rates`,rateIntro:`The model selects the price table. Priority/Fast uses a different table when the catalog publishes those rates.`,standard:`Standard`,priority:`Priority / Fast`,input:`Input`,cache:`Cache`,output:`Output`,reasoning:`Reasoning`,ratio:`Priority ÷ Standard`,included:`Included in output (+0)`,noPublishedRate:`No published rate (additional cost 0)`,conceptsTitle:`2. Understand each part of the call`,concepts:[[`LLM call`,`The smallest calculation grain: one provider request with one model and one service tier.`],[`Input tokens`,`Everything sent to the model: instructions, history, context, tools, and the current message.`],[`Cache tokens`,`They are part of input, not extra tokens. Cache is subtracted from input first, then its own rate is applied.`],[`Output tokens`,`Everything produced by the model. Cost uses the total output reported by telemetry.`],[`Reasoning tokens`,`They are part of output. Current math charges output once and keeps reasoningUsd = 0, preventing double billing.`],[`Model and effort`,`The model changes rates. Effort has no direct multiplier, but it can produce more reasoning, output, or cycles and indirectly raise cost.`],[`Context multiplier`,`Above the model threshold, the input multiplier also applies to cache; the output multiplier applies to all output.`],[`Speed multiplier`,`It is the derived ratio between Priority/Fast and Standard totals. It is only a comparison and is never multiplied into the total again.`]],exampleTitle:`3. A simple example, component by component`,exampleIntro:`One call with 100 thousand input tokens, including 40 thousand cache tokens, and 20 thousand output tokens, including 8 thousand reasoning tokens.`,billableInput:`Billable input`,operation:`Operation`,cost:`Cost`,total:`Call total`,speedMultiplier:`Derived speed multiplier`,longTitle:`4. Long-context example`,longIntro:`To actually exceed the limit, this example uses the model threshold + 50 thousand input tokens. The calculation remains on Standard tier.`,threshold:`Model threshold`,longInput:`Long-example input`,priorityLong:`Priority/Fast + long context`,priorityLongNote:`Unavailable: without a published combination in the catalog, the dashboard does not invent a rate.`,finalNote:`Rule of thumb: choose model and tier, separate input from cache, charge total output once, then apply FX. Higher effort only raises cost when it raises recorded usage.`}};function d(e,t,n,r){if(t===`BRL`&&n===null)return r;let i=t===`BRL`?e*n:e;return new Intl.NumberFormat(t===`BRL`?`pt-BR`:`en-US`,{style:`currency`,currency:t,minimumFractionDigits:2,maximumFractionDigits:6}).format(i)}function f(e,t,n,r,i){return e==null?i:d(e,t,n,r)}function p(e,t){return new Intl.NumberFormat(t).format(e)}function m({example:e,currency:t,fxRate:n,locale:i,labels:a}){let o=a.unavailable,s=Math.max(e.usage.input-e.usage.cache,0),c=e.inputMultiplier===1?``:` × ${e.inputMultiplier}`,l=e.outputMultiplier===1?``:` × ${e.outputMultiplier}`,u=e.rates.cache??0,m=[{label:a.billableInput,operation:`${p(e.usage.input,i)} − ${p(e.usage.cache,i)} = ${p(s,i)} tokens`,cost:null},{label:a.input,operation:`${p(s,i)} ÷ 1M × ${f(e.rates.input,t,n,o,a.noPublishedRate)}${c}`,cost:e.inputUsd},{label:a.cache,operation:`${p(e.usage.cache,i)} ÷ 1M × ${f(u,t,n,o,a.noPublishedRate)}${c}`,cost:e.cacheUsd},{label:a.output,operation:`${p(e.usage.output,i)} ÷ 1M × ${f(e.rates.output,t,n,o,a.noPublishedRate)}${l}`,cost:e.outputUsd},{label:a.reasoning,operation:`${p(e.usage.reasoning,i)} tokens ⊂ ${a.output} → +0`,cost:e.reasoningUsd}];return(0,r.jsxs)(`div`,{className:`cost-guide-calculation`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-calculation-head`,"aria-hidden":`true`,children:[(0,r.jsx)(`span`,{}),(0,r.jsx)(`span`,{children:a.operation}),(0,r.jsx)(`span`,{children:a.cost})]}),m.map(e=>(0,r.jsxs)(`div`,{className:`cost-guide-calculation-line`,children:[(0,r.jsx)(`strong`,{children:e.label}),(0,r.jsx)(`code`,{children:e.operation}),(0,r.jsx)(`span`,{children:e.cost===null?`—`:d(e.cost,t,n,o)})]},e.label)),(0,r.jsxs)(`div`,{className:`cost-guide-calculation-total`,children:[(0,r.jsx)(`strong`,{children:a.total}),(0,r.jsx)(`span`,{children:d(e.totalUsd,t,n,o)})]})]})}function h({catalog:e,fxRate:t,locale:i,onClose:a}){let o=u[i],[s,d]=(0,n.useState)(e.models[0]?.id??``),[h,g]=(0,n.useState)(`USD`),_=(0,n.useMemo)(()=>e.models.find(e=>e.id===s)??e.models[0]??null,[e.models,s]);if(_===null)return(0,r.jsxs)(`main`,{className:`cost-guide`,children:[(0,r.jsxs)(`button`,{onClick:a,type:`button`,children:[`← `,o.back]}),(0,r.jsx)(`h1`,{children:o.title}),(0,r.jsx)(`p`,{children:o.unavailable})]});let v=t?.rate??null,y=c(_,`standard`,v),b=c(_,`priority`,v),x=l(_,v),S=b!==null&&y.totalUsd>0?b.totalUsd/y.totalUsd:null,C=[{label:o.input,standard:_.input_per_million_usd,priority:_.priority_input_per_million_usd},{label:o.cache,standard:_.cached_input_per_million_usd,priority:_.priority_cached_input_per_million_usd},{label:o.output,standard:_.output_per_million_usd,priority:_.priority_output_per_million_usd}];return(0,r.jsxs)(`main`,{className:`cost-guide`,children:[(0,r.jsxs)(`header`,{children:[(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`small`,{children:o.eyebrow}),(0,r.jsx)(`h1`,{children:o.title}),(0,r.jsx)(`p`,{children:o.intro})]}),(0,r.jsxs)(`button`,{onClick:a,type:`button`,children:[`← `,o.back]})]}),(0,r.jsxs)(`section`,{className:`cost-guide-controls`,"aria-label":o.model,children:[(0,r.jsxs)(`label`,{children:[o.model,(0,r.jsx)(`select`,{value:_.id,onChange:e=>d(e.target.value),children:e.models.map(e=>(0,r.jsx)(`option`,{value:e.id,children:e.id},e.id))})]}),(0,r.jsxs)(`label`,{children:[o.currency,(0,r.jsxs)(`select`,{value:h,onChange:e=>g(e.target.value),children:[(0,r.jsx)(`option`,{value:`USD`,children:`USD`}),(0,r.jsxs)(`option`,{value:`BRL`,children:[`BRL `,v===null?`(${o.unavailable})`:`(1 USD = ${v.toFixed(4)} BRL)`]})]})]})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-section-heading`,children:[(0,r.jsx)(`h2`,{children:o.rateTitle}),(0,r.jsx)(`p`,{children:o.rateIntro})]}),(0,r.jsx)(`div`,{className:`cost-guide-table-wrap`,children:(0,r.jsxs)(`table`,{children:[(0,r.jsxs)(`caption`,{children:[_.id,` · `,o.millionRate]}),(0,r.jsx)(`thead`,{children:(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`th`,{scope:`col`}),(0,r.jsx)(`th`,{scope:`col`,children:o.standard}),(0,r.jsx)(`th`,{scope:`col`,children:o.priority}),(0,r.jsx)(`th`,{scope:`col`,children:o.ratio})]})}),(0,r.jsxs)(`tbody`,{children:[C.map(e=>(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`th`,{scope:`row`,children:e.label}),(0,r.jsx)(`td`,{children:f(e.standard,h,v,o.unavailable,o.noPublishedRate)}),(0,r.jsx)(`td`,{children:f(e.priority,h,v,o.unavailable,o.noPublishedRate)}),(0,r.jsx)(`td`,{children:e.standard!==null&&e.standard>0&&e.priority!==null&&e.priority!==void 0?`${(e.priority/e.standard).toFixed(2)}×`:o.unavailable})]},e.label)),(0,r.jsxs)(`tr`,{children:[(0,r.jsx)(`th`,{scope:`row`,children:o.reasoning}),(0,r.jsx)(`td`,{colSpan:3,children:o.included})]})]})]})})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsx)(`div`,{className:`cost-guide-section-heading`,children:(0,r.jsx)(`h2`,{children:o.conceptsTitle})}),(0,r.jsx)(`div`,{className:`cost-guide-blocks`,children:o.concepts.map(([e,t])=>(0,r.jsxs)(`article`,{children:[(0,r.jsx)(`strong`,{children:e}),(0,r.jsx)(`p`,{children:t})]},e))})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-section-heading`,children:[(0,r.jsx)(`h2`,{children:o.exampleTitle}),(0,r.jsx)(`p`,{children:o.exampleIntro})]}),(0,r.jsxs)(`div`,{className:`cost-guide-example-grid`,children:[(0,r.jsxs)(`article`,{className:`cost-guide-example-card`,children:[(0,r.jsx)(`h3`,{children:o.standard}),(0,r.jsx)(m,{example:y,currency:h,fxRate:v,locale:i,labels:o})]}),(0,r.jsxs)(`article`,{className:`cost-guide-example-card`,children:[(0,r.jsx)(`h3`,{children:o.priority}),b===null?(0,r.jsx)(`p`,{className:`cost-guide-unavailable`,children:o.unavailable}):(0,r.jsx)(m,{example:b,currency:h,fxRate:v,locale:i,labels:o})]})]}),(0,r.jsxs)(`div`,{className:`cost-guide-speed`,children:[(0,r.jsx)(`span`,{children:o.speedMultiplier}),(0,r.jsx)(`strong`,{children:S===null?o.unavailable:`${S.toFixed(2)}×`}),(0,r.jsxs)(`code`,{children:[o.priority,` `,o.total,` ÷ `,o.standard,` `,o.total]})]})]}),(0,r.jsxs)(`section`,{className:`cost-guide-section`,children:[(0,r.jsxs)(`div`,{className:`cost-guide-section-heading`,children:[(0,r.jsx)(`h2`,{children:o.longTitle}),(0,r.jsx)(`p`,{children:o.longIntro})]}),(0,r.jsxs)(`div`,{className:`cost-guide-context-summary`,children:[(0,r.jsxs)(`span`,{children:[o.threshold,`:`,` `,(0,r.jsx)(`strong`,{children:_.long_context_threshold_tokens===null?o.unavailable:p(_.long_context_threshold_tokens,i)})]}),(0,r.jsxs)(`span`,{children:[o.longInput,`:`,` `,(0,r.jsx)(`strong`,{children:x===null?o.unavailable:p(x.usage.input,i)})]}),(0,r.jsxs)(`span`,{children:[`Input/cache: `,(0,r.jsxs)(`strong`,{children:[_.long_context_input_multiplier,`×`]})]}),(0,r.jsxs)(`span`,{children:[`Output: `,(0,r.jsxs)(`strong`,{children:[_.long_context_output_multiplier,`×`]})]})]}),x===null?(0,r.jsx)(`p`,{className:`cost-guide-unavailable`,children:o.unavailable}):(0,r.jsx)(m,{example:x,currency:h,fxRate:v,locale:i,labels:o}),(0,r.jsxs)(`div`,{className:`cost-guide-unavailable-combination`,children:[(0,r.jsxs)(`strong`,{children:[o.priorityLong,`: `,o.unavailable]}),(0,r.jsx)(`p`,{children:o.priorityLongNote})]})]}),(0,r.jsx)(`aside`,{className:`cost-guide-final-note`,children:o.finalNote})]})}export{h as CostCalculationGuidePage};
|