@zaip-ai/cli 1.3.8 → 1.4.2
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 +58 -3
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -6
- 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 +2 -0
- 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-plan.d.ts +3 -1
- package/dist/services/stack-plan.d.ts.map +1 -1
- package/dist/services/stack-plan.js +15 -1
- package/dist/services/stack-plan.js.map +1 -1
- 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 +1 -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 +208 -88
- 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-VcLx9iOO.js → DashboardHelpDialog-oZVlf-l5.js} +72 -8
- 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/{TraceabilityWorkspace-DFZwIXSC.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/ProjectStackEditor.tsx +11 -0
- 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 +7 -8
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +14 -2
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +35 -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 +482 -332
- 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 +90 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +112 -22
- 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-runtime-selection.mjs +36 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-runtime-selection.test.mjs +63 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-server.mjs +142 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +262 -267
- 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/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 +607 -167
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BwnJpl02.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-Dyo_wpL4.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
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
resource "hostinger_vps" "edge" {
|
|
2
|
+
count = var.manage_vps ? 1 : 0
|
|
3
|
+
plan = var.edge_vps.plan
|
|
4
|
+
data_center_id = var.edge_vps.data_center_id
|
|
5
|
+
template_id = var.edge_vps.template_id
|
|
6
|
+
hostname = var.edge_vps.hostname
|
|
7
|
+
ssh_key_ids = var.edge_vps.ssh_key_ids
|
|
8
|
+
|
|
9
|
+
lifecycle {
|
|
10
|
+
precondition {
|
|
11
|
+
condition = var.edge_vps != null
|
|
12
|
+
error_message = "edge_vps is required when manage_vps is true."
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
resource "hostinger_vps" "application" {
|
|
18
|
+
count = var.manage_vps ? 1 : 0
|
|
19
|
+
plan = var.application_vps.plan
|
|
20
|
+
data_center_id = var.application_vps.data_center_id
|
|
21
|
+
template_id = var.application_vps.template_id
|
|
22
|
+
hostname = var.application_vps.hostname
|
|
23
|
+
ssh_key_ids = var.application_vps.ssh_key_ids
|
|
24
|
+
|
|
25
|
+
lifecycle {
|
|
26
|
+
precondition {
|
|
27
|
+
condition = var.application_vps != null
|
|
28
|
+
error_message = "application_vps is required when manage_vps is true."
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
locals {
|
|
34
|
+
edge_ipv4 = var.manage_vps ? hostinger_vps.edge[0].ipv4_address : var.edge_vps_ipv4
|
|
35
|
+
dns_content = {
|
|
36
|
+
for key, record in var.cloudflare_dns_records : key => (
|
|
37
|
+
record.destination == "edge" ? local.edge_ipv4 : record.content
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
resource "cloudflare_dns_record" "approved" {
|
|
43
|
+
for_each = var.cloudflare_dns_records
|
|
44
|
+
|
|
45
|
+
zone_id = var.cloudflare_zone_id
|
|
46
|
+
name = each.value.name
|
|
47
|
+
type = each.value.type
|
|
48
|
+
content = local.dns_content[each.key]
|
|
49
|
+
proxied = each.value.proxied
|
|
50
|
+
ttl = each.value.ttl
|
|
51
|
+
comment = "Managed by Zaip Terraform; destination=${each.value.destination}"
|
|
52
|
+
|
|
53
|
+
lifecycle {
|
|
54
|
+
precondition {
|
|
55
|
+
condition = each.value.destination != "edge" || local.edge_ipv4 != null
|
|
56
|
+
error_message = "An edge record requires the approved VPS 1 IPv4."
|
|
57
|
+
}
|
|
58
|
+
precondition {
|
|
59
|
+
condition = each.value.destination != "explicit" || try(length(trimspace(each.value.content)) > 0, false)
|
|
60
|
+
error_message = "An explicit DNS record requires content."
|
|
61
|
+
}
|
|
62
|
+
precondition {
|
|
63
|
+
condition = each.value.destination != "pages" || each.value.type == "CNAME"
|
|
64
|
+
error_message = "Cloudflare Pages records must use CNAME and explicit content."
|
|
65
|
+
}
|
|
66
|
+
precondition {
|
|
67
|
+
condition = each.value.name == "@" || each.value.name == var.cloudflare_zone_name || (
|
|
68
|
+
can(regex("^[a-z0-9-]+$", each.value.name)) || endswith(each.value.name, ".${var.cloudflare_zone_name}")
|
|
69
|
+
)
|
|
70
|
+
error_message = "DNS record names must be the zone apex, a relative label, or a name in the approved zone."
|
|
71
|
+
}
|
|
72
|
+
precondition {
|
|
73
|
+
condition = each.value.destination != "explicit" || each.value.content != var.application_vps_ipv4
|
|
74
|
+
error_message = "An explicit record cannot target the private application VPS IPv4."
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
output "edge_vps_ipv4" {
|
|
2
|
+
description = "VPS 1 public IPv4, used only as the approved Cloudflare edge origin."
|
|
3
|
+
value = local.edge_ipv4
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
output "application_vps_ipv4" {
|
|
7
|
+
description = "VPS 2 IPv4 for controlled administration; never use as a public DNS origin."
|
|
8
|
+
value = var.manage_vps ? hostinger_vps.application[0].ipv4_address : var.application_vps_ipv4
|
|
9
|
+
sensitive = true
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
output "cloudflare_dns_record_ids" {
|
|
13
|
+
description = "Managed Cloudflare DNS record IDs for read-after-write evidence."
|
|
14
|
+
value = { for key, record in cloudflare_dns_record.approved : key => record.id }
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
output "authorized_cloudflare_account_id" {
|
|
18
|
+
description = "Account identifier declared for plan-policy verification; it is not a credential."
|
|
19
|
+
value = var.cloudflare_account_id
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Copy only non-secret values to a local ignored terraform.tfvars. Supply tokens through TF_VAR_*.
|
|
2
|
+
cloudflare_account_id = "replace-with-approved-account-id"
|
|
3
|
+
cloudflare_zone_id = "replace-with-approved-zone-id"
|
|
4
|
+
cloudflare_zone_name = "example.com"
|
|
5
|
+
manage_vps = false
|
|
6
|
+
edge_vps_ipv4 = "replace-with-approved-edge-ip"
|
|
7
|
+
application_vps_ipv4 = "replace-with-approved-private-vps-ip"
|
|
8
|
+
|
|
9
|
+
# Only Cloudflare records are managed here. Pages CNAME targets are supplied explicitly.
|
|
10
|
+
cloudflare_dns_records = {
|
|
11
|
+
app = {
|
|
12
|
+
name = "app"
|
|
13
|
+
type = "CNAME"
|
|
14
|
+
destination = "pages"
|
|
15
|
+
content = "replace-with-pages-target"
|
|
16
|
+
proxied = true
|
|
17
|
+
ttl = 1
|
|
18
|
+
}
|
|
19
|
+
api = {
|
|
20
|
+
name = "api"
|
|
21
|
+
type = "A"
|
|
22
|
+
destination = "edge"
|
|
23
|
+
proxied = true
|
|
24
|
+
ttl = 1
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
variable "cloudflare_account_id" {
|
|
2
|
+
description = "Cloudflare account ID explicitly authorized for this execution."
|
|
3
|
+
type = string
|
|
4
|
+
validation {
|
|
5
|
+
condition = length(trimspace(var.cloudflare_account_id)) > 0
|
|
6
|
+
error_message = "cloudflare_account_id must identify the approved Cloudflare account."
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
variable "cloudflare_zone_id" {
|
|
11
|
+
description = "Cloudflare zone ID explicitly authorized for this execution."
|
|
12
|
+
type = string
|
|
13
|
+
validation {
|
|
14
|
+
condition = length(trimspace(var.cloudflare_zone_id)) > 0
|
|
15
|
+
error_message = "cloudflare_zone_id must identify the approved Cloudflare zone."
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
variable "cloudflare_zone_name" {
|
|
20
|
+
description = "Human-verifiable DNS zone name paired with cloudflare_zone_id."
|
|
21
|
+
type = string
|
|
22
|
+
validation {
|
|
23
|
+
condition = can(regex("^[A-Za-z0-9.-]+$", var.cloudflare_zone_name))
|
|
24
|
+
error_message = "cloudflare_zone_name must be a DNS name."
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
variable "manage_vps" {
|
|
29
|
+
description = "Create Hostinger VPS resources. False adopts explicitly approved existing VPS IPs."
|
|
30
|
+
type = bool
|
|
31
|
+
default = false
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
variable "edge_vps" {
|
|
35
|
+
description = "VPS 1 edge specification. Required only when manage_vps is true."
|
|
36
|
+
type = object({
|
|
37
|
+
plan = string
|
|
38
|
+
data_center_id = number
|
|
39
|
+
template_id = number
|
|
40
|
+
hostname = string
|
|
41
|
+
ssh_key_ids = list(string)
|
|
42
|
+
})
|
|
43
|
+
default = null
|
|
44
|
+
nullable = true
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
variable "application_vps" {
|
|
48
|
+
description = "VPS 2 private application specification. Required only when manage_vps is true."
|
|
49
|
+
type = object({
|
|
50
|
+
plan = string
|
|
51
|
+
data_center_id = number
|
|
52
|
+
template_id = number
|
|
53
|
+
hostname = string
|
|
54
|
+
ssh_key_ids = list(string)
|
|
55
|
+
})
|
|
56
|
+
default = null
|
|
57
|
+
nullable = true
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
variable "edge_vps_ipv4" {
|
|
61
|
+
description = "Approved VPS 1 IPv4 for adoption mode."
|
|
62
|
+
type = string
|
|
63
|
+
default = null
|
|
64
|
+
nullable = true
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
variable "application_vps_ipv4" {
|
|
68
|
+
description = "Approved VPS 2 IPv4 for adoption mode; DNS must never target this address."
|
|
69
|
+
type = string
|
|
70
|
+
default = null
|
|
71
|
+
nullable = true
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
variable "cloudflare_dns_records" {
|
|
75
|
+
description = "Approved Cloudflare DNS records. destination is edge, pages, or explicit; application is forbidden."
|
|
76
|
+
type = map(object({
|
|
77
|
+
name = string
|
|
78
|
+
type = string
|
|
79
|
+
destination = string
|
|
80
|
+
content = optional(string)
|
|
81
|
+
proxied = bool
|
|
82
|
+
ttl = number
|
|
83
|
+
}))
|
|
84
|
+
default = {}
|
|
85
|
+
validation {
|
|
86
|
+
condition = alltrue([
|
|
87
|
+
for record in values(var.cloudflare_dns_records) : contains(["edge", "pages", "explicit"], record.destination)
|
|
88
|
+
])
|
|
89
|
+
error_message = "DNS destination must be edge, pages, or explicit; application/private is forbidden."
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
terraform {
|
|
2
|
+
required_version = "~> 1.16"
|
|
3
|
+
|
|
4
|
+
required_providers {
|
|
5
|
+
cloudflare = {
|
|
6
|
+
source = "cloudflare/cloudflare"
|
|
7
|
+
version = "~> 5.23"
|
|
8
|
+
}
|
|
9
|
+
hostinger = {
|
|
10
|
+
source = "hostinger/hostinger"
|
|
11
|
+
version = "~> 0.1.22"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
provider "cloudflare" {}
|
|
17
|
+
|
|
18
|
+
provider "hostinger" {}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
|
|
4
|
+
const root = resolve(import.meta.dirname, "..");
|
|
5
|
+
const files = {
|
|
6
|
+
architecture: ".agents/architecture/hostinger-cloudflare-terraform.md",
|
|
7
|
+
requirement: ".agents/requirements/cloud-hostinger-autonomy.md",
|
|
8
|
+
rule: ".agents/rules/cloud-hostinger-autonomy.md",
|
|
9
|
+
env: ".agents/.env.example",
|
|
10
|
+
terraform: "infra/terraform/main.tf",
|
|
11
|
+
variables: "infra/terraform/variables.tf",
|
|
12
|
+
skill: ".agents/skills/zaip-skill-hostinger-cloudflare-terraform/SKILL.md",
|
|
13
|
+
readiness: "infra/terraform/deployment-inputs.example.yaml",
|
|
14
|
+
};
|
|
15
|
+
const source = Object.fromEntries(
|
|
16
|
+
await Promise.all(
|
|
17
|
+
Object.entries(files).map(async ([name, path]) => [
|
|
18
|
+
name,
|
|
19
|
+
await readFile(resolve(root, path), "utf8"),
|
|
20
|
+
]),
|
|
21
|
+
),
|
|
22
|
+
);
|
|
23
|
+
const checks = [
|
|
24
|
+
[source.architecture.includes("Hostinger DNS nunca"), "architecture must prohibit Hostinger DNS"],
|
|
25
|
+
[
|
|
26
|
+
source.architecture.includes("VPS 1") && source.architecture.includes("VPS 2"),
|
|
27
|
+
"architecture must define two VPS roles",
|
|
28
|
+
],
|
|
29
|
+
[
|
|
30
|
+
source.architecture.includes("redis-prod-queue") &&
|
|
31
|
+
source.architecture.includes("redis-beta-cache"),
|
|
32
|
+
"architecture must inventory four Redis roles",
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
source.architecture.includes("Redis") && source.architecture.includes("npm:redis"),
|
|
36
|
+
"architecture must distinguish Redis server and npm client",
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
source.architecture.includes("BullMQ") && source.architecture.includes("noeviction"),
|
|
40
|
+
"architecture must define BullMQ queue safety",
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
source.rule.includes("credenciais") && source.rule.includes("nunca autorizam alvo"),
|
|
44
|
+
"rule must bind credentials to targets",
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
source.env.includes("CLOUDFLARE_API_TOKEN=") &&
|
|
48
|
+
source.env.includes("ZAIP_EDGE_SSH_HOSTKEY_SHA256="),
|
|
49
|
+
"env example must name provider and host-key inputs",
|
|
50
|
+
],
|
|
51
|
+
[
|
|
52
|
+
!/(?:PRIVATE KEY|BEGIN RSA|BEGIN OPENSSH)/.test(source.env),
|
|
53
|
+
"env example must not contain key material",
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
!/(?:hostinger_[a-z_]*dns|hostinger.*dns)/i.test(source.terraform),
|
|
57
|
+
"Terraform must not manage Hostinger DNS",
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
source.terraform.includes('resource "hostinger_vps" "edge"') &&
|
|
61
|
+
source.terraform.includes('resource "hostinger_vps" "application"'),
|
|
62
|
+
"Terraform must declare edge and application VPS",
|
|
63
|
+
],
|
|
64
|
+
[
|
|
65
|
+
source.terraform.includes('resource "cloudflare_dns_record"'),
|
|
66
|
+
"Terraform must manage Cloudflare DNS",
|
|
67
|
+
],
|
|
68
|
+
[
|
|
69
|
+
source.variables
|
|
70
|
+
.replace(/\s+/g, " ")
|
|
71
|
+
.includes('contains(["edge", "pages", "explicit"], record.destination)'),
|
|
72
|
+
"Terraform DNS destinations must exclude application VPS",
|
|
73
|
+
],
|
|
74
|
+
[
|
|
75
|
+
source.skill.includes("read-after-write") && source.skill.includes("prova estática/local"),
|
|
76
|
+
"skill must require truthful live validation",
|
|
77
|
+
],
|
|
78
|
+
[
|
|
79
|
+
source.readiness.includes("deployment_readiness: failed") &&
|
|
80
|
+
source.readiness.includes("image_digests: {}"),
|
|
81
|
+
"readiness template must fail until host and image inputs exist",
|
|
82
|
+
],
|
|
83
|
+
];
|
|
84
|
+
const failures = checks.filter(([passed]) => !passed).map(([, message]) => message);
|
|
85
|
+
if (failures.length > 0)
|
|
86
|
+
throw new Error(`Cloud contract validation failed:\n${failures.join("\n")}`);
|
|
87
|
+
process.stdout.write(
|
|
88
|
+
`Validated ${checks.length} Cloudflare/Hostinger infrastructure invariants.\n`,
|
|
89
|
+
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await import("../.agents/tools/cloud-terraform-plan-policy.mjs");
|