@zaip-ai/cli 6.3.0 → 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +16 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/services/adapter-codex-config.d.ts +3 -0
- package/dist/services/adapter-codex-config.d.ts.map +1 -0
- package/dist/services/adapter-codex-config.js +119 -0
- package/dist/services/adapter-codex-config.js.map +1 -0
- package/dist/services/adapter-config-overlay.d.ts +8 -0
- package/dist/services/adapter-config-overlay.d.ts.map +1 -0
- package/dist/services/adapter-config-overlay.js +17 -0
- package/dist/services/adapter-config-overlay.js.map +1 -0
- package/dist/services/adapters.d.ts +3 -2
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +34 -143
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/adapters.test.js +12 -0
- package/dist/services/adapters.test.js.map +1 -1
- package/dist/services/agent-adapters.d.ts +2 -98
- package/dist/services/agent-adapters.d.ts.map +1 -1
- package/dist/services/agent-adapters.js +30 -29
- package/dist/services/agent-adapters.js.map +1 -1
- package/dist/services/agent-adapters.test.js +4 -2
- package/dist/services/agent-adapters.test.js.map +1 -1
- package/dist/services/agent-guidance-types.d.ts +98 -0
- package/dist/services/agent-guidance-types.d.ts.map +1 -0
- package/dist/services/agent-guidance-types.js +4 -0
- package/dist/services/agent-guidance-types.js.map +1 -0
- package/dist/services/catalog-toml.d.ts +4 -0
- package/dist/services/catalog-toml.d.ts.map +1 -0
- package/dist/services/catalog-toml.js +10 -0
- package/dist/services/catalog-toml.js.map +1 -0
- package/dist/services/catalog-write-scope.d.ts +4 -0
- package/dist/services/catalog-write-scope.d.ts.map +1 -0
- package/dist/services/catalog-write-scope.js +18 -0
- package/dist/services/catalog-write-scope.js.map +1 -0
- package/dist/services/claude-settings-overlay.d.ts +4 -0
- package/dist/services/claude-settings-overlay.d.ts.map +1 -0
- package/dist/services/claude-settings-overlay.js +58 -0
- package/dist/services/claude-settings-overlay.js.map +1 -0
- package/dist/services/client-selection.d.ts +17 -0
- package/dist/services/client-selection.d.ts.map +1 -0
- package/dist/services/client-selection.js +67 -0
- package/dist/services/client-selection.js.map +1 -0
- package/dist/services/codex-conversation-lifecycle-hook.d.ts.map +1 -1
- package/dist/services/codex-conversation-lifecycle-hook.js +20 -9
- package/dist/services/codex-conversation-lifecycle-hook.js.map +1 -1
- package/dist/services/codex-git-publication-template.d.ts +2 -0
- package/dist/services/codex-git-publication-template.d.ts.map +1 -0
- package/dist/services/codex-git-publication-template.js +120 -0
- package/dist/services/codex-git-publication-template.js.map +1 -0
- package/dist/services/codex-github-setup-template.d.ts +3 -0
- package/dist/services/codex-github-setup-template.d.ts.map +1 -0
- package/dist/services/codex-github-setup-template.js +176 -0
- package/dist/services/codex-github-setup-template.js.map +1 -0
- package/dist/services/codex-hook-activation.d.ts +1 -1
- package/dist/services/codex-hook-activation.d.ts.map +1 -1
- package/dist/services/codex-hook-activation.js +55 -10
- package/dist/services/codex-hook-activation.js.map +1 -1
- package/dist/services/codex-host-diagnostic.d.ts +10 -0
- package/dist/services/codex-host-diagnostic.d.ts.map +1 -0
- package/dist/services/codex-host-diagnostic.js +5 -0
- package/dist/services/codex-host-diagnostic.js.map +1 -0
- package/dist/services/codex-host-diagnostic.test.d.ts +2 -0
- package/dist/services/codex-host-diagnostic.test.d.ts.map +1 -0
- package/dist/services/codex-host-diagnostic.test.js +24 -0
- package/dist/services/codex-host-diagnostic.test.js.map +1 -0
- package/dist/services/codex-literal-read-sequence-template.d.ts.map +1 -1
- package/dist/services/codex-literal-read-sequence-template.js +97 -6
- package/dist/services/codex-literal-read-sequence-template.js.map +1 -1
- package/dist/services/codex-native-authority-policy-template.d.ts +2 -0
- package/dist/services/codex-native-authority-policy-template.d.ts.map +1 -0
- package/dist/services/codex-native-authority-policy-template.js +132 -0
- package/dist/services/codex-native-authority-policy-template.js.map +1 -0
- package/dist/services/codex-native-tool-authority-template.d.ts.map +1 -1
- package/dist/services/codex-native-tool-authority-template.js +147 -145
- package/dist/services/codex-native-tool-authority-template.js.map +1 -1
- package/dist/services/codex-node-options-template.d.ts +3 -0
- package/dist/services/codex-node-options-template.d.ts.map +1 -0
- package/dist/services/codex-node-options-template.js +30 -0
- package/dist/services/codex-node-options-template.js.map +1 -0
- package/dist/services/codex-pre-tool-cli-capture-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-cli-capture-template.js +214 -10
- package/dist/services/codex-pre-tool-cli-capture-template.js.map +1 -1
- package/dist/services/codex-pre-tool-cloud-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-cloud-template.js +149 -12
- package/dist/services/codex-pre-tool-cloud-template.js.map +1 -1
- package/dist/services/codex-pre-tool-dependencies.test-support.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-dependencies.test-support.js +12 -0
- package/dist/services/codex-pre-tool-dependencies.test-support.js.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.js +53 -138
- package/dist/services/codex-pre-tool-hook-template.js.map +1 -1
- package/dist/services/codex-pre-tool-hook-template.test.js +13 -7
- package/dist/services/codex-pre-tool-hook-template.test.js.map +1 -1
- package/dist/services/codex-pre-tool-host-context-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-host-context-template.js +23 -0
- package/dist/services/codex-pre-tool-host-context-template.js.map +1 -1
- package/dist/services/codex-pre-tool-policy-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-policy-template.js +5 -3
- package/dist/services/codex-pre-tool-policy-template.js.map +1 -1
- package/dist/services/codex-pre-tool-release-review-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-release-review-template.js +161 -2
- package/dist/services/codex-pre-tool-release-review-template.js.map +1 -1
- package/dist/services/codex-pre-tool-support-template.d.ts.map +1 -1
- package/dist/services/codex-pre-tool-support-template.js +88 -129
- package/dist/services/codex-pre-tool-support-template.js.map +1 -1
- package/dist/services/codex-release-publication-template.d.ts +2 -0
- package/dist/services/codex-release-publication-template.d.ts.map +1 -0
- package/dist/services/codex-release-publication-template.js +127 -0
- package/dist/services/codex-release-publication-template.js.map +1 -0
- package/dist/services/codex-repository-profile-template.d.ts +2 -0
- package/dist/services/codex-repository-profile-template.d.ts.map +1 -0
- package/dist/services/codex-repository-profile-template.js +84 -0
- package/dist/services/codex-repository-profile-template.js.map +1 -0
- 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 +2 -2
- package/dist/services/codex-storage-handoff-template.d.ts +2 -0
- package/dist/services/codex-storage-handoff-template.d.ts.map +1 -0
- package/dist/services/codex-storage-handoff-template.js +18 -0
- package/dist/services/codex-storage-handoff-template.js.map +1 -0
- package/dist/services/codex-subagent-hook-template.d.ts +1 -1
- package/dist/services/codex-subagent-hook-template.d.ts.map +1 -1
- package/dist/services/codex-subagent-hook-template.js +7 -6
- package/dist/services/codex-subagent-hook-template.js.map +1 -1
- package/dist/services/codex-task-delivery-authority-template.d.ts +3 -0
- package/dist/services/codex-task-delivery-authority-template.d.ts.map +1 -0
- package/dist/services/codex-task-delivery-authority-template.js +206 -0
- package/dist/services/codex-task-delivery-authority-template.js.map +1 -0
- package/dist/services/codex-validation-runtime-template.js +1 -1
- package/dist/services/codex-windows-hook-command.js +2 -2
- package/dist/services/codex-windows-hook-command.js.map +1 -1
- package/dist/services/developer-identity-fixture.d.ts.map +1 -1
- package/dist/services/developer-identity-fixture.js +3 -2
- package/dist/services/developer-identity-fixture.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +5 -1
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/github-setup-status.d.ts +6 -3
- package/dist/services/github-setup-status.d.ts.map +1 -1
- package/dist/services/github-setup-status.js +9 -5
- package/dist/services/github-setup-status.js.map +1 -1
- package/dist/services/github-setup-status.test.js +69 -3
- package/dist/services/github-setup-status.test.js.map +1 -1
- package/dist/services/global-codex-config.d.ts.map +1 -1
- package/dist/services/global-codex-config.js +3 -0
- package/dist/services/global-codex-config.js.map +1 -1
- package/dist/services/global-codex-project-trust.d.ts +17 -0
- package/dist/services/global-codex-project-trust.d.ts.map +1 -0
- package/dist/services/global-codex-project-trust.js +186 -0
- package/dist/services/global-codex-project-trust.js.map +1 -0
- package/dist/services/global-codex-project-trust.test.d.ts +2 -0
- package/dist/services/global-codex-project-trust.test.d.ts.map +1 -0
- package/dist/services/global-codex-project-trust.test.js +188 -0
- package/dist/services/global-codex-project-trust.test.js.map +1 -0
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +95 -190
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/install-client-selection.d.ts +6 -0
- package/dist/services/install-client-selection.d.ts.map +1 -0
- package/dist/services/install-client-selection.js +24 -0
- package/dist/services/install-client-selection.js.map +1 -0
- package/dist/services/install-result.d.ts +6 -0
- package/dist/services/install-result.d.ts.map +1 -0
- package/dist/services/install-result.js +14 -0
- package/dist/services/install-result.js.map +1 -0
- package/dist/services/install-storage-boundary.d.ts +6 -0
- package/dist/services/install-storage-boundary.d.ts.map +1 -0
- package/dist/services/install-storage-boundary.js +173 -0
- package/dist/services/install-storage-boundary.js.map +1 -0
- package/dist/services/install-storage-boundary.test.d.ts +2 -0
- package/dist/services/install-storage-boundary.test.d.ts.map +1 -0
- package/dist/services/install-storage-boundary.test.js +110 -0
- package/dist/services/install-storage-boundary.test.js.map +1 -0
- package/dist/services/install-template-backup.d.ts +3 -0
- package/dist/services/install-template-backup.d.ts.map +1 -0
- package/dist/services/install-template-backup.js +46 -0
- package/dist/services/install-template-backup.js.map +1 -0
- package/dist/services/install-template-lock.d.ts +2 -0
- package/dist/services/install-template-lock.d.ts.map +1 -0
- package/dist/services/install-template-lock.js +32 -0
- package/dist/services/install-template-lock.js.map +1 -0
- package/dist/services/install-template-policy.d.ts +16 -0
- package/dist/services/install-template-policy.d.ts.map +1 -1
- package/dist/services/install-template-policy.js +73 -1
- package/dist/services/install-template-policy.js.map +1 -1
- package/dist/services/install-template-render.d.ts +11 -0
- package/dist/services/install-template-render.d.ts.map +1 -0
- package/dist/services/install-template-render.js +53 -0
- package/dist/services/install-template-render.js.map +1 -0
- package/dist/services/install-template-rule-files.d.ts +3 -0
- package/dist/services/install-template-rule-files.d.ts.map +1 -0
- package/dist/services/install-template-rule-files.js +24 -0
- package/dist/services/install-template-rule-files.js.map +1 -0
- package/dist/services/logger.d.ts.map +1 -1
- package/dist/services/logger.js +35 -10
- package/dist/services/logger.js.map +1 -1
- package/dist/services/logger.test.js +65 -16
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/project-config-upgrade.d.ts +3 -0
- package/dist/services/project-config-upgrade.d.ts.map +1 -0
- package/dist/services/project-config-upgrade.js +58 -0
- package/dist/services/project-config-upgrade.js.map +1 -0
- package/dist/services/runtime-template-deploy-policy.test.d.ts +2 -0
- package/dist/services/runtime-template-deploy-policy.test.d.ts.map +1 -0
- package/dist/services/runtime-template-deploy-policy.test.js +26 -0
- package/dist/services/runtime-template-deploy-policy.test.js.map +1 -0
- package/dist/services/runtime-template-test-support.d.ts +14 -0
- package/dist/services/runtime-template-test-support.d.ts.map +1 -1
- package/dist/services/runtime-template-test-support.js +18 -0
- package/dist/services/runtime-template-test-support.js.map +1 -1
- package/dist/services/runtime-template.test.js +14 -63
- package/dist/services/runtime-template.test.js.map +1 -1
- package/dist/services/sqlite-bootstrap.js +2 -2
- package/dist/services/sqlite-bootstrap.js.map +1 -1
- package/dist/services/stack-node.js +2 -2
- package/dist/services/stack-node.js.map +1 -1
- package/dist/services/stack-terraform.d.ts.map +1 -1
- package/dist/services/stack-terraform.js +5 -5
- package/dist/services/stack-terraform.js.map +1 -1
- package/dist/services/template-packed-path.test.d.ts +2 -0
- package/dist/services/template-packed-path.test.d.ts.map +1 -0
- package/dist/services/template-packed-path.test.js +30 -0
- package/dist/services/template-packed-path.test.js.map +1 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/templates/.agents/README-ENG.md +3 -1
- package/templates/.agents/README.md +3 -1
- package/templates/.agents/architecture/software-architecture.md +7 -1
- package/templates/.agents/config/agents/catalog.yaml +25 -12
- package/templates/.agents/config/agents/discovery.json +2 -2
- package/templates/.agents/config/autonomous-cloud-inputs.json +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-analyst.toml +4 -2
- package/templates/.agents/config/clients/codex/agents/zaip-agent-auditor.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-backend.toml +6 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-brand-strategist.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-builder.toml +6 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-cloud-engineer.toml +5 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-data-analyst.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-designer.toml +7 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-finalizer.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-frontend.toml +9 -6
- package/templates/.agents/config/clients/codex/agents/zaip-agent-general-operations.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-governance-compliance.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-growth-strategist.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-integrator.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-marketing-analyst.toml +5 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-orchestrator.toml +4 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-refactoring-specialist.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-reviewer.toml +3 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-sales-specialist.toml +3 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-security-auditor.toml +1 -1
- package/templates/.agents/config/clients/codex/agents/zaip-agent-task-executor.toml +6 -3
- package/templates/.agents/config/clients/codex/agents/zaip-agent-website-developer.toml +7 -4
- package/templates/.agents/config/clients/codex/agents/zaip-agent-writer.toml +3 -1
- package/templates/.agents/config/project.yaml +7 -2
- package/templates/.agents/dashboard/.zaip-managed.json +282 -142
- package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-DZ2mnR6k.js +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-BQOQCvcJ.js → DashboardHelpDialog-DnxpHJSo.js} +20 -10
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-CGET1J8Q.js → PricingSettingsDialog-DsFTUwhL.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BCsdQtWG.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-Bw6xnXUN.js → TraceabilityWorkspace-BN8FwP5S.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-C2AFYBu_.css → cost-monitor-BESDS3aE.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-YfoKMzCQ.js +59 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{dashboard-localization-BZf8HWmm.js → dashboard-localization-BVBhiAAS.js} +3 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-CjGGux6h.js → icons-vendor-DSdQAua1.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-4cl5FQBn.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-uIVtG2ZR.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-B9jZSAKf.js → react-vendor-rGvJzdn5.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-DFpwb0TN.js → traceability-Boz50W9b.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +8 -7
- package/templates/.agents/dashboard/apps/frontend/index.html +1 -0
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/playwright.dom.config.ts +2 -2
- package/templates/.agents/dashboard/apps/frontend/src/AppLoadingPanels.tsx +10 -7
- package/templates/.agents/dashboard/apps/frontend/src/AppOverlays.tsx +22 -19
- package/templates/.agents/dashboard/apps/frontend/src/CostCalculationGuidePage.tsx +16 -117
- package/templates/.agents/dashboard/apps/frontend/src/CostCharts.percentages.test.tsx +75 -0
- package/templates/.agents/dashboard/apps/frontend/src/CostTelemetryGuide.tsx +36 -0
- package/templates/.agents/dashboard/apps/frontend/src/DashboardToast.tsx +9 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +1 -0
- package/templates/.agents/dashboard/apps/frontend/src/ReconciliationFeedback.dom.test.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/ReconciliationFeedback.tsx +22 -19
- package/templates/.agents/dashboard/apps/frontend/src/TraceabilityWorkspace.dom.e2e.ts +5 -2
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.dom.test.ts +86 -0
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +44 -0
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +37 -12
- package/templates/.agents/dashboard/apps/frontend/src/cost-guide-calculations.ts +118 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api-sqlite-view.ts +3 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-api.ts +15 -31
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-http-transport.ts +30 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +4 -1
- package/templates/.agents/dashboard/apps/frontend/src/main.tsx +1 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +2 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +17 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +0 -20
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-observer.test.ts +112 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-observer.ts +147 -0
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-compact-cost-adapter.ts +100 -0
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-page-export.test.ts +20 -0
- package/templates/.agents/dashboard/apps/frontend/src/sqlite-page-export.ts +15 -0
- package/templates/.agents/dashboard/apps/frontend/src/styles-pricing.css +265 -0
- package/templates/.agents/dashboard/apps/frontend/src/styles.css +21 -265
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.test.ts +35 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +11 -87
- package/templates/.agents/dashboard/apps/frontend/src/use-app-effects.ts +26 -199
- package/templates/.agents/dashboard/apps/frontend/src/use-app-trace-documents.navigation.test.tsx +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +65 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +17 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-dashboard-app-model.tsx +2 -2
- package/templates/.agents/dashboard/apps/frontend/src/use-operations-detail-export.ts +10 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.dom.test.ts +86 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +4 -5
- package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +42 -0
- package/templates/.agents/dashboard/apps/frontend/vite.config.ts +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +11 -10
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +39 -15
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.test.ts +27 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostCharts.tsx +89 -83
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +14 -24
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +1 -27
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +12 -63
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.availability.test.ts +60 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +1 -15
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/compact-cost-export-source.ts +85 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/compact-cost-page-range.test.ts +34 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-chart-presentation.ts +74 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-charts.css +117 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-group-table-totals.ts +29 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-export-sources.ts +19 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-state.ts +27 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor.css +6 -117
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/use-cost-group-page.ts +3 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +9 -32
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-metrics.ts +33 -0
- package/templates/.agents/dashboard/modules/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsLocaleMenu.tsx +58 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsOverviewTopPanel.navigation.test.tsx +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +16 -47
- package/templates/.agents/dashboard/modules/operations/src/react/UnifiedWorkBoard.navigation.test.ts +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +4 -100
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +25 -89
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +1 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportDuration.test.ts +105 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-duration-rows.ts +91 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-page-contract.ts +4 -0
- package/templates/.agents/dashboard/modules/traceability/package.json +1 -1
- package/templates/.agents/dashboard/packages/branding/package.json +1 -1
- package/templates/.agents/dashboard/packages/contracts/package.json +2 -2
- package/templates/.agents/dashboard/packages/contracts/src/export.ts +2 -0
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/data-export/src/index.test.ts +30 -0
- package/templates/.agents/dashboard/packages/data-export/src/index.ts +10 -0
- package/templates/.agents/dashboard/packages/data-export/src/ooxml-stream.ts +50 -3
- package/templates/.agents/dashboard/packages/local-runtime/DIAGNOSTICS.md +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/dashboard-build-fingerprint.mjs +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dashboard-diagnostics.mjs +4 -2
- package/templates/.agents/dashboard/packages/local-runtime/dashboard-diagnostics.test.mjs +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +314 -269
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +266 -222
- package/templates/.agents/dashboard/packages/local-runtime/package.json +3 -3
- package/templates/.agents/dashboard/packages/local-runtime/scripts/verify-dashboard-executable-startup.mjs +4 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/verify-dashboard-reconciliation-executable.mjs +4 -4
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +314 -269
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +51 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +15 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/dashboard-diagnostics.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +3 -40
- package/templates/.agents/dashboard/packages/local-runtime/src/project-stack-labels.ts +40 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/retained-worktree-capture.ts +81 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.ts +11 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-hono-security.test.ts +40 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-routes.ts +33 -14
- package/templates/.agents/dashboard/packages/local-runtime/src/server-project-settings-routes.test.ts +83 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-project-settings-routes.ts +41 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-projections.ts +3 -19
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-diagnostics.test.ts +2 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-refresh.test.ts +61 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-reconciliation-route.ts +2 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-run-range.ts +18 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.ts +3 -36
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-worker-receipt.ts +38 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-work-priority-route.ts +18 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-workspace.ts +1 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +6 -32
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-rollup.ts +47 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-financial-consistency.test.ts +133 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-financial-entity-page.ts +159 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-incremental-refresh.test.ts +12 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +17 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-operation-pages.ts +71 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +5 -40
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-temporal-dimension.ts +29 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +7 -55
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +16 -24
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-fixture.test-support.ts +27 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +20 -37
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-keeps-orphan-telemetry-out-kanban-without.test.ts +9 -9
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-marks-token-cost-telemetry-unavailable-when.test.ts +3 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +14 -20
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuilds-disposable-snapshot-serves-zaip-records.test.ts +11 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-financial-summary.ts +38 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/telemetry-reconciliation.integration.test.ts +223 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/work-priority-contract.test.ts +5 -5
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.test.mjs +59 -3
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/packages/windows-launcher/Program.cs +1 -1
- package/templates/.agents/dashboard/packages/windows-launcher/build-dashboard-launcher.ps1 +1 -1
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/playwright.config.ts +1 -0
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard.spec.ts +11 -15
- package/templates/.agents/dashboard/tests/e2e/specs/work-board-hydration.ts +40 -11
- package/templates/.agents/dashboard/zaip-dashboard-windows.exe +0 -0
- package/templates/.agents/design/.zaip-managed.json +498 -54
- package/templates/.agents/design/apps/catalog/dist/assets/index-BH6Fxbj0.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-BK0aBll9.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-Bzhb1wb_.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-CB-MTaWq.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-CIqfUcy8.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-Ccq-NOLA.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-Ch2eyD9C.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-Cy64ytQr.js +67 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-DfxEbFlq.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-Dqt6mTvD.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-rz8gOc0a.js +76 -0
- package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{CatalogShell-BJ8b4xZr.js → CatalogShell-D2YyQQrT.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-CQLHzznn.js → Color-6AOWCN3U-BmCuNXMg.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-DF9KC_gA.js +158 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFilters.stories-D17Q1egS.js +5 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFiltersSpecimen-CEBrLT2k.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DesignSystem.stories-ED52wFjY.js → DesignSystem.stories-BibuRt_c.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-BcLgM80v.js → DocsRenderer-JROSPFPF-GkfL8_gG.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Maker.stories-Dv9Keun_.js +13 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/MakerSpecimen-DGwAKRi9.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/MakerSpecimen-mkkuFOp_.js +5 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Primitives-DV6Bpudf.js → Primitives-n1UqmNvo.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/ReconciliationSpecimen-BJnfyyG3.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/ReconciliationSpecimen.stories-CH-GF9Rk.js +13 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-BKNiAz_E.js → WithTooltip-7X4HQR7L-BPXo6OoG.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WorkspaceStatus.stories-BL19HGOo.js → WorkspaceStatus.stories-Cie1f_yU.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-GcYWBBSp.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-DZBcXL-p.js → chunk-DRQKCCAG-Cn4_bvJJ.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-CF3y2mfo.js → chunk-W22LQPXL-CQrULeB4.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-BVjxMRGq.js → components-uiaDZHE7.js} +5 -5
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-DfjRffT7.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-CTWGZcEe.js → iframe-BgEb-d5o.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-D1JaPXfV.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-B9_a4mHb.js → react-18-BZ-Ne01c.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-CwpjKEyW.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-F_p8E2xc.js → syntaxhighlighter-YFXUGROL-BvuP8St2.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-fbSD9ZLF.js → theming-BGScn6Yf.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/iframe.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/index.json +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/a11y-2/manager-bundle.js +3 -3
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/docs-1/manager-bundle.js +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +3 -3
- package/templates/.agents/design/apps/catalog/package.json +2 -2
- package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +32 -1
- package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +14 -3
- package/templates/.agents/design/apps/catalog/src/specimens/MAKER-HANDOFF.md +134 -0
- package/templates/.agents/design/apps/catalog/src/specimens/MakerSpecimen.test.tsx +143 -0
- package/templates/.agents/design/apps/catalog/src/specimens/MakerSpecimen.tsx +132 -0
- package/templates/.agents/design/apps/catalog/src/specimens/maker-fixtures.d.ts +15 -0
- package/templates/.agents/design/apps/catalog/src/specimens/maker-fixtures.js +86 -0
- package/templates/.agents/design/apps/catalog/src/specimens/maker-native.d.ts +1 -0
- package/templates/.agents/design/apps/catalog/src/specimens/maker-native.js +332 -0
- package/templates/.agents/design/apps/catalog/src/stories/Maker.stories.tsx +24 -0
- package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +1 -0
- package/templates/.agents/design/apps/catalog/src/styles/maker-specimen.css +285 -0
- package/templates/.agents/design/design-system-maker/API.md +468 -0
- package/templates/.agents/design/design-system-maker/NOTICE.md +13 -0
- package/templates/.agents/design/design-system-maker/README.md +138 -0
- package/templates/.agents/design/design-system-maker/SOURCE-PROVENANCE.json +62 -0
- package/templates/.agents/design/design-system-maker/build.json +524 -0
- package/templates/.agents/design/design-system-maker/frontend/ADAPTATION.md +351 -0
- package/templates/.agents/design/design-system-maker/frontend/MAKER-REPAIR-HANDOFF.md +134 -0
- package/templates/.agents/design/design-system-maker/frontend/advanced/examples.js +30 -0
- package/templates/.agents/design/design-system-maker/frontend/advanced/index.html +75 -0
- package/templates/.agents/design/design-system-maker/frontend/advanced/index.js +30 -0
- package/templates/.agents/design/design-system-maker/frontend/catalog/filters.js +132 -0
- package/templates/.agents/design/design-system-maker/frontend/catalog/index.html +17 -0
- package/templates/.agents/design/design-system-maker/frontend/catalog/index.js +82 -0
- package/templates/.agents/design/design-system-maker/frontend/generate.html +74 -0
- package/templates/.agents/design/design-system-maker/frontend/generate.js +226 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/api.js +112 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/components.js +200 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/diagnostic-view.js +218 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/extraction-state.js +38 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/failure-view.js +54 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/frontend-scenarios-2.test.mjs +138 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/frontend.test.mjs +357 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/job-view.js +81 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/model-hydration.js +26 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/model.js +103 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/palette-evidence.js +106 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/palette-evidence.test.mjs +210 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/palette-view.js +149 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/preview.test.mjs +263 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/report-view.js +267 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/reprocess-dialog.js +192 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/specimens.js +231 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/viewer-actions.js +78 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/viewer-detail.js +121 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/viewer-summary.js +91 -0
- package/templates/.agents/design/design-system-maker/frontend/shared/visual-model.js +255 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/advanced.css +128 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/base.css +318 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/catalog-filters.css +114 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/diagnostic.css +298 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/layout.css +320 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/maker.css +7 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/report.css +173 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/reprocess-dialog.css +34 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/specimen-foundations.css +363 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/specimens.css +59 -0
- package/templates/.agents/design/design-system-maker/frontend/styles/viewer-summary.css +308 -0
- package/templates/.agents/design/design-system-maker/frontend/viewer/diagnostic.html +3 -0
- package/templates/.agents/design/design-system-maker/frontend/viewer/index.html +8 -0
- package/templates/.agents/design/design-system-maker/frontend/viewer/index.js +233 -0
- package/templates/.agents/design/design-system-maker/frontend/viewer/preview.html +3 -0
- package/templates/.agents/design/design-system-maker/frontend/viewer/specimen.js +88 -0
- package/templates/.agents/design/design-system-maker/launcher/Program.cs +117 -0
- package/templates/.agents/design/design-system-maker/runtime/chat-cli.mjs +27 -0
- package/templates/.agents/design/design-system-maker/runtime/chat-client.mjs +170 -0
- package/templates/.agents/design/design-system-maker/runtime/chat-contract.mjs +13 -0
- package/templates/.agents/design/design-system-maker/runtime/collection.mjs +269 -0
- package/templates/.agents/design/design-system-maker/runtime/contracts.mjs +383 -0
- package/templates/.agents/design/design-system-maker/runtime/design-codes.mjs +46 -0
- package/templates/.agents/design/design-system-maker/runtime/design-compose.mjs +118 -0
- package/templates/.agents/design/design-system-maker/runtime/design-markdown.mjs +154 -0
- package/templates/.agents/design/design-system-maker/runtime/import.mjs +137 -0
- package/templates/.agents/design/design-system-maker/runtime/io.mjs +121 -0
- package/templates/.agents/design/design-system-maker/runtime/job-progress.mjs +50 -0
- package/templates/.agents/design/design-system-maker/runtime/json-tokens.mjs +88 -0
- package/templates/.agents/design/design-system-maker/runtime/launch-identity.mjs +100 -0
- package/templates/.agents/design/design-system-maker/runtime/launch-protocol.mjs +88 -0
- package/templates/.agents/design/design-system-maker/runtime/launch-server.mjs +51 -0
- package/templates/.agents/design/design-system-maker/runtime/launch.mjs +107 -0
- package/templates/.agents/design/design-system-maker/runtime/local-actions.mjs +184 -0
- package/templates/.agents/design/design-system-maker/runtime/local-artifacts.mjs +228 -0
- package/templates/.agents/design/design-system-maker/runtime/local-request.mjs +100 -0
- package/templates/.agents/design/design-system-maker/runtime/lock.mjs +23 -0
- package/templates/.agents/design/design-system-maker/runtime/presentation.mjs +107 -0
- package/templates/.agents/design/design-system-maker/runtime/repository-source.mjs +200 -0
- package/templates/.agents/design/design-system-maker/runtime/reprocess-mode.mjs +17 -0
- package/templates/.agents/design/design-system-maker/runtime/request-contracts.mjs +121 -0
- package/templates/.agents/design/design-system-maker/runtime/serve.mjs +53 -0
- package/templates/.agents/design/design-system-maker/runtime/server.mjs +363 -0
- package/templates/.agents/design/design-system-maker/runtime/service-actions.mjs +59 -0
- package/templates/.agents/design/design-system-maker/runtime/service-host.mjs +32 -0
- package/templates/.agents/design/design-system-maker/runtime/service-projections.mjs +87 -0
- package/templates/.agents/design/design-system-maker/runtime/service.mjs +393 -0
- package/templates/.agents/design/design-system-maker/runtime/stop.mjs +38 -0
- package/templates/.agents/design/design-system-maker/runtime/trash.mjs +95 -0
- package/templates/.agents/design/design-system-maker/zaip-design-system-maker.exe +0 -0
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/cloud-hostinger-autonomy.md +9 -7
- 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 +3 -3
- package/templates/.agents/requirements/dashboard-launch.md +1 -1
- package/templates/.agents/requirements/data-export.md +1 -1
- package/templates/.agents/requirements/design-system.md +1 -1
- package/templates/.agents/requirements/execution-engine.md +1 -1
- package/templates/.agents/requirements/kanban-dashboard.md +3 -3
- package/templates/.agents/requirements/landing-page-forms.md +39 -0
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +4 -4
- package/templates/.agents/requirements/site-performance.md +41 -0
- 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 +4 -1
- package/templates/.agents/rules/cloud-hostinger-autonomy.md +4 -1
- package/templates/.agents/rules/core.md +5 -2
- package/templates/.agents/rules/framework-maintenance.md +34 -0
- package/templates/.agents/rules/frontend-lite.md +2 -1
- package/templates/.agents/rules/github-deploy-auth.md +18 -0
- package/templates/.agents/rules/infisical-secrets.md +20 -0
- package/templates/.agents/rules/landing-page-forms.md +28 -0
- package/templates/.agents/rules/lead-measurement.md +20 -0
- package/templates/.agents/rules/local-sqlite-storage.md +2 -2
- package/templates/.agents/rules/local-state-storage.md +15 -0
- package/templates/.agents/rules/production-readiness.md +1 -1
- package/templates/.agents/rules/quality-assurance.md +36 -0
- package/templates/.agents/rules/repository-responsibility.md +38 -0
- package/templates/.agents/rules/security.md +1 -1
- package/templates/.agents/rules/site-performance.md +29 -0
- package/templates/.agents/rules/website-quality.md +31 -0
- package/templates/.agents/rules/workflow.md +1 -1
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +2256 -802
- package/templates/.agents/runtime/checksums.sha256 +6 -6
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/pnpm-lock.sha256 +1 -1
- package/templates/.agents/runtime/provenance.json +5 -5
- package/templates/.agents/runtime/sbom.cdx.json +7 -7
- package/templates/.agents/skills/criar-pasta-obsidian/SKILL.md +2 -2
- package/templates/.agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.mjs +7 -24
- package/templates/.agents/skills/criar-pasta-obsidian/scripts/generate-obsidian-vault.test.mjs +4 -2
- package/templates/.agents/skills/criar-pasta-obsidian/scripts/obsidian-format.mjs +20 -0
- package/templates/.agents/skills/zaip-skill-adapters/SKILL.md +6 -0
- package/templates/.agents/skills/zaip-skill-application-observability/references/lead-measurement.md +52 -0
- package/templates/.agents/skills/zaip-skill-architecture-design/SKILL.md +3 -1
- package/templates/.agents/skills/zaip-skill-auth-tenancy/references/lead-measurement.md +42 -0
- package/templates/.agents/skills/zaip-skill-author-skills/SKILL.md +1 -1
- package/templates/.agents/skills/zaip-skill-author-skills/references/engineering-skill-index.md +4 -0
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/audit-skill-catalog.mjs +3 -0
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/run-skill-tests.mjs +37 -7
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/skill-test-plan.mjs +79 -0
- package/templates/.agents/skills/zaip-skill-author-skills/scripts/skill-test-plan.test.mjs +47 -0
- package/templates/.agents/skills/zaip-skill-backend/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-backend/references/deployment-environments.md +2 -2
- package/templates/.agents/skills/zaip-skill-change/references/observable-evidence.md +3 -3
- package/templates/.agents/skills/zaip-skill-cloud-engineering/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-access-setup/SKILL.md +16 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-access-setup/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-access-setup/references/account-token.md +90 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-access-setup/scripts/preview-access.mjs +91 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-access-setup/scripts/preview-access.test.mjs +44 -0
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/SKILL.md +4 -2
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workers-static-assets.md +1 -1
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/references/workflow-templates.md +5 -5
- package/templates/.agents/skills/zaip-skill-cloudflare-github-deploy/scripts/cloudflare-github-deploy-contract.test.mjs +24 -5
- package/templates/.agents/skills/zaip-skill-config/SKILL.md +33 -8
- package/templates/.agents/skills/zaip-skill-config/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-config/references/repository-profiles.md +83 -0
- package/templates/.agents/skills/zaip-skill-dashboard-sqlite/SKILL.md +2 -2
- package/templates/.agents/skills/zaip-skill-data-modeling/references/lead-measurement.md +37 -0
- package/templates/.agents/skills/zaip-skill-database-migrations/references/lead-measurement.md +35 -0
- package/templates/.agents/skills/zaip-skill-decisions/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-deployment-pipeline/SKILL.md +11 -0
- package/templates/.agents/skills/zaip-skill-design-maker/SKILL.md +28 -0
- package/templates/.agents/skills/zaip-skill-design-maker/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-design-maker/references/chat-contract.md +46 -0
- package/templates/.agents/skills/zaip-skill-design-maker/references/compose.md +20 -0
- package/templates/.agents/skills/zaip-skill-design-maker/references/markdown.md +26 -0
- package/templates/.agents/skills/zaip-skill-design-maker/references/repository.md +24 -0
- package/templates/.agents/skills/zaip-skill-design-maker/references/url.md +24 -0
- package/templates/.agents/skills/zaip-skill-design-redesign/SKILL.md +41 -0
- package/templates/.agents/skills/zaip-skill-design-redesign/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-design-reproduction/SKILL.md +47 -0
- package/templates/.agents/skills/zaip-skill-design-reproduction/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-design-system/SKILL.md +6 -0
- package/templates/.agents/skills/zaip-skill-design-url-extraction/SKILL.md +50 -0
- package/templates/.agents/skills/zaip-skill-design-url-extraction/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-design-url-extraction/references/capture-example.json +11 -0
- package/templates/.agents/skills/zaip-skill-design-url-extraction/references/runtime-workflow.md +127 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/SKILL.md +3 -1
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-fence.mjs +2 -1
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-lease.mjs +3 -1
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-storage.mjs +40 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/ready-queue-storage.test.mjs +87 -0
- package/templates/.agents/skills/zaip-skill-executar-fila-pronta/scripts/scheduled-ready-queue-contract.test.mjs +1 -1
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +11 -3
- package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +2 -0
- package/templates/.agents/skills/zaip-skill-execution/references/controlled-release-recovery.md +10 -4
- package/templates/.agents/skills/zaip-skill-execution/references/conversation-promotion.md +38 -0
- package/templates/.agents/skills/zaip-skill-execution/references/runtime-governance.md +3 -1
- package/templates/.agents/skills/zaip-skill-external-integrations/SKILL.md +2 -0
- package/templates/.agents/skills/zaip-skill-external-integrations/references/kommo.md +71 -0
- package/templates/.agents/skills/zaip-skill-figma-setup/SKILL.md +42 -0
- package/templates/.agents/skills/zaip-skill-figma-setup/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-figma-setup/references/capability-contract.json +40 -0
- package/templates/.agents/skills/zaip-skill-figma-setup/references/figma-connection.md +60 -0
- package/templates/.agents/skills/zaip-skill-figma-setup/references/figma-handoff.md +71 -0
- package/templates/.agents/skills/zaip-skill-frontend/SKILL.md +30 -1
- package/templates/.agents/skills/zaip-skill-frontend-data-flows/SKILL.md +3 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +38 -5
- package/templates/.agents/skills/zaip-skill-github-deploy/references/authentication.md +15 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/authorization.md +35 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +21 -3
- package/templates/.agents/skills/zaip-skill-github-deploy/references/literal-read-sequence.md +28 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +4 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-notes.md +4 -4
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/application-content.mjs +82 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/application-content.test.mjs +184 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-publication-authority.mjs +63 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +42 -36
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +4 -5
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-auth.mjs +400 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-auth.test.mjs +192 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-constraints.test.mjs +159 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract-cli.test.mjs +32 -24
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract-range.test-support.mjs +51 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.mjs +213 -225
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-contract.test.mjs +63 -56
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-idempotent-intent.test.mjs +130 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deploy-publication-intent.test.mjs +112 -5
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deployment-request-conditions.test.mjs +117 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deployment-request-continuation.test.mjs +44 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deployment-request-preservation.test.mjs +58 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/deployment-request.mjs +291 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/git-command.mjs +11 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/git-config-paths.mjs +10 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/git-destination.mjs +21 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/git-push-target.mjs +62 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/git-push-target.test.mjs +78 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +4 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/guarded-commits.mjs +132 -42
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight-options.mjs +50 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight-worktree.test.mjs +52 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +70 -119
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +11 -1
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/project-restrictions.mjs +201 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/project-restrictions.test.mjs +154 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-authority-callbacks.test.mjs +46 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-conditions.mjs +193 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-intent.mjs +76 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-plan-binding.mjs +78 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-plan-refusal.mjs +30 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-project-policy.mjs +39 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-2457VC25.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-25VZXDBX.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-2JXOAZ2R.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-2OZK443Y.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-3BDTL55L.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-3MG57Y6I.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-3MQAJ6XX.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-3TUUBJPP.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-45Z34LBQ.mjs +140 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-4GJE2IXL.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-4HLOIRQU.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-55PSJJ75.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-5OTFTK2Y.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-7OFWNBZN.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-7R2IP55E.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-7SBOEN6U.mjs +24 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-A35CQWF4.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-A3ZCURGS.mjs +11 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-BC2LX3QU.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-C2Z26E6U.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-CHJGU2RU.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-D4LGE7UI.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-D5OUJS46.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-D6RZM5OT.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-DOK2R3GV.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-EAHVOUKK.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-FZUNFGZV.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-GGBPBQ6D.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-HFDX2GP6.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-HZ2NRMAG.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-IJKPDKXC.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-JEOOTEUX.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-JF3E72HZ.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-KRHOCS3C.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-LG5MJS2A.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-ML4PMB7C.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-MSCWMPU5.mjs +63 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-NJOFXS7P.mjs +137 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-NORNV3B2.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-PBU2HSKP.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-PG6LGVVW.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-PGYGDY3J.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-QFUQW6LE.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-QI32NI7M.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-R4HD7XOO.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-REHSM3G2.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-S22YDVTM.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-S5P4ZNUQ.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-SCK2RF6V.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-SWFLYM3O.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-TA7RY5MY.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-TM5WG7GR.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-TMVJHK37.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-TPDQAH7C.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-U2KO7ULM.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-U3ISMYJU.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-UKSDAS73.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-UNTPHSZO.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-V4MIRRUB.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-WNXOXX3Z.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-WQGTDRK7.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-WZJIRYT6.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-XED4KYQL.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-XEXCFKHI.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-XJJFARY4.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-XQOFL3K3.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-YAWUSDPM.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-YEUY7TMM.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-Z5X23XXT.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-Z7H2BHYQ.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/chunks/chunk-ZOGCYGYB.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/lifecycle-records.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ar.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-az.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-be.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-bg.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-bn.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ca.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ckb.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-cs.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-da.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-de.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-el.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-en.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-eo.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-es.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-fa.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-fi.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-fr-CA.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-fr.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-gu.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-he.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-hi.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-hr.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-hu.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-hy.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-id.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-is.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-it.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ja.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ka.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-kh.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-km.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-kn.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ko.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-lt.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-mk.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ms.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ne.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-nl.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-nn.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-no.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ota.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-pl.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ps.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-pt-BR.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-pt.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ro.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ru.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-sk.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-sl.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-sv.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ta.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-tg.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-th.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-tk.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-tr.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ua.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-uk.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-ur.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-uz.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-vi.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-yo.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-zh-CN.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/locale-zh-TW.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/manifest.json +565 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/native-authority.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/proof.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/run-records.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/yaml-runtime.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-runtime/zod-runtime.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof-schema.mjs +2 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/publication-proof.test.mjs +79 -0
- package/templates/.agents/skills/zaip-skill-github-setup/SKILL.md +14 -11
- package/templates/.agents/skills/zaip-skill-github-setup/references/bounded-setup.md +42 -0
- package/templates/.agents/skills/zaip-skill-github-setup/scripts/setup.mjs +365 -0
- package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/SKILL.md +13 -3
- package/templates/.agents/skills/zaip-skill-github-setup-ssh-folder/references/operational-procedure.md +4 -4
- package/templates/.agents/skills/zaip-skill-google-ads-conversions/SKILL.md +18 -0
- package/templates/.agents/skills/zaip-skill-google-ads-conversions/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-google-ads-conversions/references/implementation.md +61 -0
- package/templates/.agents/skills/zaip-skill-google-analytics/SKILL.md +24 -0
- package/templates/.agents/skills/zaip-skill-google-analytics/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-google-analytics/references/implementation.md +64 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/SKILL.md +24 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/references/implementation.md +71 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/references/operator-checklist.md +51 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/references/operator-fixtures.json +93 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/scripts/check-runbook-links.mjs +103 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/scripts/google-runbooks.test.mjs +247 -0
- package/templates/.agents/skills/zaip-skill-google-tag-manager/scripts/operator-model.mjs +221 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/SKILL.md +8 -2
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/autonomous-cloud-inputs.example.json +3 -3
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/autonomous-runner.md +4 -2
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/cloudflare-agent-setup.md +23 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/cloudflare-dns.md +36 -0
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/guia-iniciante-hostinger-vps.md +4 -4
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/operational-contract.md +3 -3
- package/templates/.agents/skills/zaip-skill-hostinger-cloudflare-terraform/references/vps-onboarding.md +97 -0
- package/templates/.agents/skills/zaip-skill-image-optimization/SKILL.md +31 -0
- package/templates/.agents/skills/zaip-skill-image-optimization/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-image-optimization/references/adapters.md +36 -0
- package/templates/.agents/skills/zaip-skill-image-optimization/references/pipeline.md +35 -0
- package/templates/.agents/skills/zaip-skill-image-optimization/scripts/images.mjs +370 -0
- package/templates/.agents/skills/zaip-skill-image-optimization/scripts/images.test.mjs +385 -0
- package/templates/.agents/skills/zaip-skill-infisical/SKILL.md +20 -0
- package/templates/.agents/skills/zaip-skill-infisical/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-infisical/assets/compose.yaml +62 -0
- package/templates/.agents/skills/zaip-skill-infisical/assets/terraform/infisical.tf +57 -0
- package/templates/.agents/skills/zaip-skill-infisical/references/credential-workflow.md +88 -0
- package/templates/.agents/skills/zaip-skill-infisical/references/first-initialization.md +51 -0
- package/templates/.agents/skills/zaip-skill-infisical/references/security-and-edition.md +19 -0
- package/templates/.agents/skills/zaip-skill-infisical/references/self-hosting.md +71 -0
- package/templates/.agents/skills/zaip-skill-infisical/references/terraform.md +54 -0
- package/templates/.agents/skills/zaip-skill-infisical/scripts/prepare-self-host.mjs +92 -0
- package/templates/.agents/skills/zaip-skill-infisical/scripts/prepare-self-host.test.mjs +69 -0
- package/templates/.agents/skills/zaip-skill-infisical/scripts/preview-terraform.mjs +70 -0
- package/templates/.agents/skills/zaip-skill-infisical/scripts/preview-terraform.test.mjs +51 -0
- package/templates/.agents/skills/zaip-skill-infisical/scripts/terraform-plan-integration.test.mjs +83 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/SKILL.md +37 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/accessibility.md +29 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/contact-then-qualification.example.json +83 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/contracts.md +70 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/examples.md +21 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/journey.md +30 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/multistep.example.json +84 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/single-screen.example.json +76 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/references/verification.md +24 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/scripts/validate-plan.mjs +306 -0
- package/templates/.agents/skills/zaip-skill-landing-page-forms/scripts/validate-plan.test.mjs +183 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/SKILL.md +32 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/architecture.md +51 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/authority.md +49 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/bant-contract.md +36 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/consent-contract.md +48 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/delivery-contract.md +65 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/event-contract.md +47 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/examples/escola.json +180 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/examples/moradigna-regression.json +158 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/examples/solar.json +165 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/identity-contract.md +53 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/implementation-plan.md +60 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/kommo-contract.md +83 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/meta-mapping.md +28 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/migration.md +65 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/operations.md +125 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/persistence-reference.md +65 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/questionnaire-v2.schema.json +136 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/synthetic-config.json +24 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/references/synthetic-event.json +19 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/check-questionnaire.mjs +314 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/check-questionnaire.test.mjs +338 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/consent-cases-core.mjs +144 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/consent-cases-privacy.mjs +183 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/consent-fixtures.mjs +60 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/consent-rollback-support.mjs +114 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/consent.mjs +222 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/consent.test.mjs +294 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-ledger.mjs +179 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-case-fixtures.mjs +118 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-cases.mjs +6 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-contract-cases.mjs +218 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-contract.mjs +182 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-proof-support.mjs +104 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-proof.mjs +272 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2-state-cases.mjs +248 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/delivery-v2.mjs +234 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/lead-measurement.mjs +277 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/lead-measurement.test.mjs +288 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/questionnaire-ast-cases.mjs +127 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/questionnaire-test-support.mjs +25 -0
- package/templates/.agents/skills/zaip-skill-lead-measurement/scripts/questionnaire-validation.mjs +155 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/SKILL.md +30 -2
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/references/empty-usage-lock.md +56 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/references/late-finalization.md +158 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/references/local-catalog-closure.md +37 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/references/post-publication-task-first.md +1 -1
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/scripts/empty-lock-native.cs +113 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/scripts/empty-lock-native.ps1 +9 -0
- package/templates/.agents/skills/zaip-skill-lifecycle-closure/scripts/recover-empty-usage-lock.mjs +194 -0
- package/templates/.agents/skills/zaip-skill-local-credentials/SKILL.md +27 -0
- package/templates/.agents/skills/zaip-skill-maintenance-enter/SKILL.md +8 -6
- package/templates/.agents/skills/zaip-skill-maintenance-enter/scripts/maintenance.mjs +4 -4
- package/templates/.agents/skills/zaip-skill-maintenance-enter/scripts/maintenance.test.mjs +2 -2
- package/templates/.agents/skills/zaip-skill-maintenance-exit/SKILL.md +3 -3
- package/templates/.agents/skills/zaip-skill-marketing/SKILL.md +11 -0
- package/templates/.agents/skills/zaip-skill-marketing/references/search-content.md +17 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/SKILL.md +23 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/references/implementation.md +88 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/references/synthetic-meta.json +27 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/scripts/check-meta-links.mjs +88 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/scripts/meta-model.mjs +369 -0
- package/templates/.agents/skills/zaip-skill-meta-conversions/scripts/meta-model.test.mjs +394 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/SKILL.md +26 -1
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/astro-islands.md +41 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/controlled-runner.md +38 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/google-diagnostics.md +46 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/report-contract.md +99 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/site-budgets.json +25 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/site-performance.md +83 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/references/third-party-performance.md +57 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/assess-reports.mjs +42 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/capture-site.mjs +155 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/local-preview.mjs +84 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/performance-report.mjs +142 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/performance-report.test.mjs +122 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/report-fixtures.test-support.mjs +51 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/report-import.mjs +209 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/report-import.test.mjs +164 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/run-lighthouse.mjs +151 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/series-gate.mjs +225 -0
- package/templates/.agents/skills/zaip-skill-performance-engineering/scripts/series-gate.test.mjs +143 -0
- package/templates/.agents/skills/zaip-skill-qa/SKILL.md +54 -0
- package/templates/.agents/skills/zaip-skill-qa/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-qa/references/host-protocol.md +125 -0
- package/templates/.agents/skills/zaip-skill-qa/references/landing-page-forms.md +23 -0
- package/templates/.agents/skills/zaip-skill-qa/references/proof-adapters.md +92 -0
- package/templates/.agents/skills/zaip-skill-qa/references/scenarios.md +73 -0
- package/templates/.agents/skills/zaip-skill-qa/references/seo-geo.md +33 -0
- package/templates/.agents/skills/zaip-skill-qa/references/site-performance.md +20 -0
- package/templates/.agents/skills/zaip-skill-qa/scripts/observe-dashboard-ui.mjs +152 -0
- package/templates/.agents/skills/zaip-skill-qa/scripts/observe-dashboard-ui.test.mjs +65 -0
- package/templates/.agents/skills/zaip-skill-qa/scripts/qa-contract.test.mjs +203 -0
- package/templates/.agents/skills/zaip-skill-qa/scripts/run-behavior-tests.mjs +369 -0
- package/templates/.agents/skills/zaip-skill-qa/scripts/run-behavior-tests.test.mjs +168 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/SKILL.md +33 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-local-telemetry.mjs +42 -62
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-native-window.mjs +115 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-native-window.test.mjs +123 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-optional-timing.test.mjs +34 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-reviewed-pairs-fixture.mjs +130 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-deduplicate-apply.mjs +106 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.mjs +22 -45
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-lib.test.mjs +0 -24
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-remeasurement.mjs +73 -9
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-reviewed-order.mjs +48 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-reviewed-pairs.mjs +255 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-telemetry-reviewed-pairs.test.mjs +329 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-token-snapshots.mjs +49 -0
- package/templates/.agents/skills/zaip-skill-reconcile-telemetry/scripts/reconcile-token-snapshots.test.mjs +33 -0
- package/templates/.agents/skills/zaip-skill-refactor-landing-page/SKILL.md +6 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +19 -1
- package/templates/.agents/skills/zaip-skill-release-qualification/references/frozen-task-recovery.md +47 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-catalog.md +136 -0
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +7 -5
- package/templates/.agents/skills/zaip-skill-release-qualification/references/remote-validation.md +147 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-sales-methodology/references/bant-discovery.md +28 -0
- package/templates/.agents/skills/zaip-skill-screenshot-intake/SKILL.md +40 -0
- package/templates/.agents/skills/zaip-skill-screenshot-intake/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-screenshot-intake/references/request-example.json +36 -0
- package/templates/.agents/skills/zaip-skill-screenshot-intake/references/runtime-workflow.md +110 -0
- package/templates/.agents/skills/zaip-skill-search-observability/SKILL.md +27 -0
- package/templates/.agents/skills/zaip-skill-search-observability/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-search-observability/references/report-template.md +32 -0
- package/templates/.agents/skills/zaip-skill-search-observability/references/workflow.md +56 -0
- package/templates/.agents/skills/zaip-skill-search-observability/scripts/search-report.mjs +139 -0
- package/templates/.agents/skills/zaip-skill-search-observability/scripts/search-report.test.mjs +72 -0
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +51 -44
- package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +1 -1
- package/templates/.agents/skills/zaip-skill-setup/references/basic-onboarding.md +41 -0
- package/templates/.agents/skills/zaip-skill-setup/references/codex-activation.md +40 -0
- package/templates/.agents/skills/zaip-skill-setup/scripts/onboarding-contract.test.mjs +41 -0
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-sqlite-read-model/SKILL.md +4 -3
- package/templates/.agents/skills/zaip-skill-task/SKILL.md +1 -0
- package/templates/.agents/skills/zaip-skill-task/references/commit-policy.md +1 -1
- package/templates/.agents/skills/zaip-skill-testing-strategy/SKILL.md +18 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/references/frontend-impact.md +81 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/references/verification-adoption.md +31 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/scripts/validation-plan.mjs +168 -0
- package/templates/.agents/skills/zaip-skill-testing-strategy/scripts/validation-plan.test.mjs +146 -0
- package/templates/.agents/skills/zaip-skill-tool-setup/scripts/tool-state.mjs +1 -1
- package/templates/.agents/skills/zaip-skill-use-connectors/SKILL.md +8 -0
- package/templates/.agents/skills/zaip-skill-use-connectors/scripts/select-connector.mjs +73 -0
- package/templates/.agents/skills/zaip-skill-use-connectors/scripts/select-connector.test.mjs +85 -0
- package/templates/.agents/skills/zaip-skill-visual-report/SKILL.md +41 -0
- package/templates/.agents/skills/zaip-skill-visual-report/agents/openai.yaml +6 -0
- package/templates/.agents/skills/zaip-skill-visual-report/references/fidelity-proof.md +56 -0
- package/templates/.agents/skills/zaip-skill-visual-report/references/intake-state.md +64 -0
- package/templates/.agents/skills/zaip-skill-visual-report/references/source-contract.md +79 -0
- package/templates/.agents/skills/zaip-skill-visual-report/references/synthesis-template.md +67 -0
- package/templates/.agents/skills/zaip-skill-visual-report/references/visual-contract.json +40 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/SKILL.md +73 -17
- package/templates/.agents/skills/zaip-skill-website-readiness/agents/openai.yaml +2 -2
- package/templates/.agents/skills/zaip-skill-website-readiness/references/capability-checklist.md +8 -4
- package/templates/.agents/skills/zaip-skill-website-readiness/references/change-discovery.md +22 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/content-and-agents.md +25 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/crawler-policy.md +35 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/schema-matrix.md +23 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/search-evidence.md +36 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/site-quality.example.json +14 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/site-quality.md +109 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/site-validation.md +60 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/sources.md +37 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/references/visual-preservation.md +84 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/agent-content.mjs +116 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/agent-content.test.mjs +83 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/audit-site.mjs +136 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/html-facts.mjs +56 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/index-directives.mjs +29 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/quality-plan.mjs +62 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/robots-policy.mjs +63 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/search-policy.test.mjs +183 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/site-audit.mjs +243 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/site-audit.test.mjs +287 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/sitemap-policy.mjs +111 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/verify-site-design.mjs +130 -0
- package/templates/.agents/skills/zaip-skill-website-readiness/scripts/visual-preservation.mjs +160 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/SKILL.md +70 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/agents/openai.yaml +4 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/references/complete-preservation.md +70 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/references/default-policy.md +53 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/references/lifecycle-roots.md +106 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/references/metadata-overlay.md +45 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/references/procedure.md +49 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/complete-preservation.mjs +252 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-local-archive.mjs +162 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-local-git.mjs +111 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-acl.ps1 +37 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-activate.ps1 +66 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-alias.mjs +202 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-batches.mjs +88 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-copy-session.mjs +84 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-cutover.mjs +350 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-files.mjs +109 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-generation-posix.mjs +194 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-generation.mjs +173 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-journal.mjs +88 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-layout.mjs +102 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-lock.mjs +106 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-migration.mjs +234 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-observation-tail.mjs +148 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-permissions.mjs +52 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-plan.mjs +143 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-preparation.mjs +110 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-process-start.ps1 +7 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-quiescence.ps1 +11 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-receipt-lease.mjs +67 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-reuse.mjs +68 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/durable-state-telemetry-version.mjs +187 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/git-process.mjs +85 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/metadata-overlay.mjs +302 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/metadata-secrets.mjs +44 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/migrate-durable-state.mjs +49 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/recovery.mjs +247 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/retention-marker.mjs +44 -0
- package/templates/.agents/skills/zaip-skill-worktree-recovery/scripts/worktree-proof.mjs +148 -0
- package/templates/.agents/tools/api/kommo-crm/README.md +13 -9
- package/templates/.agents/tools/cloud-onboarding-architecture.mjs +273 -0
- package/templates/.agents/tools/cloud-onboarding-bootstrap.test.mjs +176 -0
- package/templates/.agents/tools/cloud-onboarding-configure.mjs +146 -0
- package/templates/.agents/tools/cloud-onboarding-credentials.mjs +279 -0
- package/templates/.agents/tools/cloud-onboarding-files.mjs +190 -0
- package/templates/.agents/tools/cloud-onboarding-files.test.mjs +72 -0
- package/templates/.agents/tools/cloud-onboarding-generation.mjs +161 -0
- package/templates/.agents/tools/cloud-onboarding-generation.test.mjs +129 -0
- package/templates/.agents/tools/cloud-onboarding-policy.mjs +196 -0
- package/templates/.agents/tools/cloud-onboarding-provider.mjs +228 -0
- package/templates/.agents/tools/cloud-onboarding-provider.test.mjs +144 -0
- package/templates/.agents/tools/cloud-onboarding-recovery.test.mjs +306 -0
- package/templates/.agents/tools/cloud-onboarding-ssh.mjs +223 -0
- package/templates/.agents/tools/cloud-onboarding-terraform.mjs +80 -0
- package/templates/.agents/tools/cloud-onboarding-test-fixture.mjs +184 -0
- package/templates/.agents/tools/cloud-onboarding-test-fixtures.mjs +117 -0
- package/templates/.agents/tools/cloud-onboarding.mjs +196 -0
- package/templates/.agents/tools/cloud-onboarding.ssh.integration.test.mjs +391 -0
- package/templates/.agents/tools/cloud-onboarding.test.mjs +237 -0
- package/templates/.agents/tools/cloud-runner-arguments.mjs +37 -0
- package/templates/.agents/tools/cloud-runner-dns.mjs +234 -11
- package/templates/.agents/tools/cloud-runner-dns.test.mjs +256 -0
- package/templates/.agents/tools/cloud-runner-process.mjs +61 -0
- package/templates/.agents/tools/cloud-runner-process.test.mjs +43 -0
- package/templates/.agents/tools/cloud-runner.integration.test.mjs +19 -3
- package/templates/.agents/tools/cloud-runner.mjs +49 -169
- package/templates/.agents/tools/cloud-runner.test.mjs +7 -42
- package/templates/.agents/tools/historical-local-archive.mjs +89 -0
- package/templates/.agents/tools/infisical-bootstrap-windows.test.mjs +12 -0
- package/templates/.agents/tools/infisical-bootstrap.mjs +240 -0
- package/templates/.agents/tools/infisical-bootstrap.test-support.mjs +39 -0
- package/templates/.agents/tools/infisical-bootstrap.test.mjs +193 -0
- package/templates/.agents/tools/infisical-policy.mjs +134 -0
- package/templates/.agents/tools/infisical-runner.mjs +349 -0
- package/templates/.agents/tools/infisical-runner.test.mjs +266 -0
- package/templates/.agents/tools/mcp/infra/cloudflare/README.md +3 -17
- package/templates/.agents/tools/mcp/infra/cloudflare/manifest.yaml +6 -10
- package/templates/.agents/tools/repository-cloud-boundary.test.mjs +41 -0
- package/templates/.agents/tools/repository-policy.mjs +257 -0
- package/templates/.agents/tools/repository-profile.mjs +116 -0
- package/templates/.agents/tools/repository-profile.test.mjs +67 -0
- package/templates/.agents/tools/secret-inventory.mjs +150 -0
- package/templates/.agents/tools/secret-inventory.test.mjs +60 -0
- package/templates/.agents/tools/visual-intake/cli.mjs +72 -0
- package/templates/.agents/tools/visual-intake/fs.mjs +137 -0
- package/templates/.agents/tools/visual-intake/lock.mjs +98 -0
- package/templates/.agents/tools/visual-intake/report.mjs +69 -0
- package/templates/.agents/tools/visual-intake/runtime.mjs +330 -0
- package/templates/.agents/tools/visual-intake/schema.mjs +235 -0
- package/templates/.agents/tools/visual-intake/transaction.mjs +206 -0
- package/templates/.agents/tools/visual-url/browser-cdp.mjs +167 -0
- package/templates/.agents/tools/visual-url/browser-page-evidence.mjs +111 -0
- package/templates/.agents/tools/visual-url/browser-proxy.mjs +194 -0
- package/templates/.agents/tools/visual-url/browser-rendered-sample.mjs +312 -0
- package/templates/.agents/tools/visual-url/browser-source.mjs +398 -0
- package/templates/.agents/tools/visual-url/capture.mjs +119 -0
- package/templates/.agents/tools/visual-url/captured-visual.mjs +301 -0
- package/templates/.agents/tools/visual-url/cli.mjs +29 -0
- package/templates/.agents/tools/visual-url/color-candidates.mjs +161 -0
- package/templates/.agents/tools/visual-url/colors.mjs +98 -0
- package/templates/.agents/tools/visual-url/contrast.mjs +40 -0
- package/templates/.agents/tools/visual-url/css-sample.mjs +109 -0
- package/templates/.agents/tools/visual-url/design-lint.mjs +83 -0
- package/templates/.agents/tools/visual-url/design-score.mjs +217 -0
- package/templates/.agents/tools/visual-url/failure.mjs +56 -0
- package/templates/.agents/tools/visual-url/files.mjs +176 -0
- package/templates/.agents/tools/visual-url/generated-tokens.mjs +369 -0
- package/templates/.agents/tools/visual-url/handoff.mjs +85 -0
- package/templates/.agents/tools/visual-url/icon.mjs +110 -0
- package/templates/.agents/tools/visual-url/local-source.mjs +63 -0
- package/templates/.agents/tools/visual-url/parser.mjs +288 -0
- package/templates/.agents/tools/visual-url/policy.mjs +201 -0
- package/templates/.agents/tools/visual-url/proposal-markdown.mjs +39 -0
- package/templates/.agents/tools/visual-url/proposal.mjs +388 -0
- package/templates/.agents/tools/visual-url/report.mjs +305 -0
- package/templates/.agents/tools/visual-url/runtime.mjs +218 -0
- package/templates/.agents/tools/visual-url/safe-visual-value.mjs +49 -0
- package/templates/.agents/tools/visual-url/transport.mjs +187 -0
- package/templates/.agents/tools/visual-url/visual-model.mjs +393 -0
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/.agents/zaip-aios/guides/06-execucao.md +1 -1
- package/templates/.agents/zaip-aios/guides/16-lifecycle-e-reconciliacao.md +1 -1
- package/templates/.agents/zaip-aios/guides/19-assurance-e-autonomia.md +2 -2
- package/templates/.agents/zaip-aios/guides/20-instalacao-detalhada.md +60 -18
- package/templates/.agents/zaip-aios/guides/26-qualidade-e-release.md +8 -0
- package/templates/.agents/zaip-aios/guides/27-telemetria-git-native.md +2 -2
- package/templates/.agents/zaip-aios/guides/28-lifecycle-completo.md +2 -2
- package/templates/infra/terraform/README.md +2 -0
- package/templates/infra/terraform/infisical.tf +57 -0
- package/templates/infra/terraform/terraform.tfvars.example +5 -0
- package/templates/infra/terraform/variables.tf +1 -1
- package/templates/scripts/validate-cloud-hostinger-contract.mjs +4 -1
- package/templates/template-manifest.json +3848 -1119
- package/templates/.agents/architecture/hostinger-cloudflare-terraform.md +0 -90
- package/templates/.agents/dashboard/apps/frontend/dist/assets/CostCalculationGuidePage-uR-asJv_.js +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-1gE8RHel.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-B0Jwz_rk.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DZhppOIk.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DtLrd13g.js +0 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-kxWwSKin.js +0 -146
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFilters.stories-Chm_dXV7.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFiltersSpecimen-9CaCbGIZ.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-DQnSS6s9.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-Do9sjqiW.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-NrUxok8K.js +0 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## Preflight de autonomia
|
|
4
4
|
|
|
5
|
-
Leia `.env` local ignorado na raiz antes de uma alternativa `.agents/.env` explicitamente selecionada. Leia-o como dados com parser dotenv; nunca use `source` ou `eval`. Com o mandato da Task e a arquitetura, o agente deriva e preenche o contrato neutro; não exige JSON manual nem nova autorização para cada passo dentro do escopo. Verifique
|
|
5
|
+
Leia `.env` local ignorado na raiz antes de uma alternativa `.agents/.env` explicitamente selecionada. Leia-o como dados com parser dotenv; nunca use `source` ou `eval`. Com o mandato da Task e a arquitetura, o agente deriva e preenche o contrato neutro; não exige JSON manual nem nova autorização para cada passo dentro do escopo. Verifique somente os módulos usados: DNS requer conta/zona/token Cloudflare; API VPS requer seus IDs/token; SSH requer os hosts e fingerprints declarados; Terraform requer seu backend. Quantidade de VPS vem da topologia aprovada. A derivação combinada legada exige seus dois papéis e não deve ser usada para DNS-only ou topologia diferente. Compare os identificadores com a Task/Execution; não descubra um alvo por token e depois o trate como autorizado.
|
|
6
6
|
|
|
7
|
-
Uma credencial Cloudflare deve ter
|
|
7
|
+
Uma credencial Cloudflare deve ter Zone Read para conferir a identidade da zona e DNS Read para leitura ou DNS Write/Edit para escrita, restritos à zona delimitada. Permissões de Pages, Workers e R2 são separadas. A credencial Hostinger deve se limitar às VPS delimitadas. `ZAIP_HOSTINGER_ACCOUNT_ID` é um rótulo declarado do escopo: a API de VPS confirma a visibilidade dos IDs pelo token, mas não prova esse rótulo. O acesso SSH usa caminho local ignorado e fingerprint de host conhecido; não armazene chave privada em `.env`, Terraform, state ou evidência.
|
|
8
8
|
|
|
9
9
|
Antes de `plan` ou `apply`, a descoberta de leitura consulta a identidade da zona Cloudflare e confirma seu `zone_id` e `account_id`, depois consulta as VPS Hostinger delimitadas e confirma a visibilidade de seus IDs pelo token. Registre somente os identificadores e momento observados. A resposta da API, token e conteúdo de state não entram em logs. O validador de plano recebe esse contrato observado como entrada; um output escrito pelo próprio plano não prova a conta nem torna a integração pronta para uso real.
|
|
10
10
|
|
|
@@ -16,4 +16,4 @@ Antes de executar uma função de provider, confira a documentação da versão
|
|
|
16
16
|
|
|
17
17
|
## Provas esperadas
|
|
18
18
|
|
|
19
|
-
Após apply, compare recursos com read-after-write
|
|
19
|
+
Após apply, compare recursos com read-after-write e aplique [as provas DNS/TLS/domínio](cloudflare-dns.md). Teste que serviços privados recusam conexões públicas e que o ingress só aceita origem e administração permitidas, conforme a topologia declarada. Execute restore de uma cópia de backup e confirme que parar beta não afeta produção quando esses serviços estiverem no escopo. Registre IDs não secretos, horários, hash de plano, resultado e limitações.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Onboarding modular de VPS existente
|
|
2
|
+
|
|
3
|
+
Esta é uma capacidade genérica. IDs, contas, hosts, chaves, inventários e decisões pertencem ao consumidor. Exemplos usam nomes fictícios. Não há conexão ou implantação implícita. Nunca reinicie/desligue o computador local.
|
|
4
|
+
|
|
5
|
+
| Etapa | Pré-requisitos próprios | Operação do runner |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Capacidades locais | Node e instalação íntegra | `vps:capabilities` |
|
|
8
|
+
| Arquitetura/decisão | Contexto e decisão autorizada | `vps:prepare`, `vps:architecture` |
|
|
9
|
+
| Chave externa/agente/importação/geração | Identidade nomeada e modalidade autorizada | `vps:credential:prepare` |
|
|
10
|
+
| Descoberta Hostinger | Conta de referência, seletor ID/IP/hostname e token local | `vps:discover` |
|
|
11
|
+
| Confiança do servidor | Host/porta e fingerprint pública verificada por canal confiável | `vps:ssh:trust` |
|
|
12
|
+
| Teste e inventário SSH | Chave/agente selecionado e confiança já preparada | `vps:ssh:test`, `vps:ssh:inventory` |
|
|
13
|
+
| Host ou containers | Inventário, script/reversão revisados e readback delimitado | `vps:host:configure`, `vps:containers:configure` |
|
|
14
|
+
| Pública de login root | API disponível, VPS exata e cadastro explicitamente autorizado | `vps:public-key:register` |
|
|
15
|
+
| DNS/TLS | Conta/zona/registros Cloudflare e autoridade de escrita | Contrato `autonomous-cloud` de DNS |
|
|
16
|
+
| Preparo de adoção Terraform | IDs observados, fonte pública/hash e mapeamento de recursos | `vps:terraform:prepare`; import genérico ainda indisponível |
|
|
17
|
+
| Monitoramento/backup | Host inventariado, script revisado, restore/health por evidência | Configuração delimitada e readback; testes de restore próprios |
|
|
18
|
+
|
|
19
|
+
SSH não exige token Hostinger, Cloudflare, Terraform ou segundo host. A ausência de API não bloqueia arquitetura, preparo local ou SSH autorizado. Uma ou várias VPS seguem a escolha do consumidor. Nenhuma operação `vps:*` cria, reinstala ou exclui VPS. O runner não remove acesso anterior: uma restrição de acesso exige fluxo próprio com novo acesso comprovado antes de restringir o antigo.
|
|
20
|
+
|
|
21
|
+
## O agente prepara os artefatos
|
|
22
|
+
|
|
23
|
+
Descubra primeiro o que já é conhecido e verificável. Reaproveite autorização e contexto. O usuário fornece somente uma lacuna real, agrupada em uma pergunta curta. Nunca peça JSON, hashes, IDs internos, chave privada ou passphrase. O agente produz `.agents/config/vps-onboarding-request.json`, sem segredos, e executa:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
node .agents/tools/cloud-runner.mjs --operation vps:capabilities
|
|
27
|
+
node .agents/tools/cloud-runner.mjs --operation vps:prepare --request .agents/config/vps-onboarding-request.json
|
|
28
|
+
node .agents/tools/cloud-runner.mjs --operation vps:architecture --contract .agents/config/vps-onboarding-contract.json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
O request versão 1 contém `authorization: {confirmed:true,reference:<autorização real>,architecture:true|false}`, `targets` e, quando aplicável, `architecture`. Não registre uma sugestão exploratória como confirmação humana. O contrato resultante vincula a raiz física do projeto e devolve os hashes de cada alvo. Estes hashes são gerados e utilizados pelo agente; `BINDING_GERADO` abaixo é somente uma indicação documental:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
node .agents/tools/cloud-runner.mjs --operation vps:credential:prepare --contract .agents/config/vps-onboarding-contract.json --target primary --binding BINDING_GERADO
|
|
35
|
+
node .agents/tools/cloud-runner.mjs --operation vps:ssh:trust --contract .agents/config/vps-onboarding-contract.json --target primary --binding BINDING_GERADO
|
|
36
|
+
node .agents/tools/cloud-runner.mjs --operation vps:ssh:test --contract .agents/config/vps-onboarding-contract.json --target primary --binding BINDING_GERADO
|
|
37
|
+
node .agents/tools/cloud-runner.mjs --operation vps:ssh:inventory --contract .agents/config/vps-onboarding-contract.json --target primary --binding BINDING_GERADO
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Cada target possui `name`, `purpose`, `allowed_operations` e somente os módulos disponíveis. `ssh` contém `host`, `user`, `port`, `host_fingerprint` e `trust: {source,reference}`. As fontes aceitas são `previously-verified`, `authenticated-provider` e `human-public-confirmation`. `host_public_key` pode conter a pública autenticada. Sem ela, keyscan apenas coleta candidatas e o pin anterior seleciona a identidade; nunca autentica por conta própria. Divergência preserva known_hosts e bloqueia. Sem canal autenticado automatizável, solicite somente a fingerprint/pública indispensável e explique o motivo; Terminal Web é último recurso.
|
|
41
|
+
|
|
42
|
+
## Quatro modalidades de credencial
|
|
43
|
+
|
|
44
|
+
Todos os caminhos são literais, ligados ao alvo e verificados fisicamente; symlinks, junctions, hardlinks de chave e troca após validação são negados. O runner não percorre diretórios nem tenta chaves alternativas. A privada externa é passada ao OpenSSH, sem leitura de bytes privados pelo JavaScript.
|
|
45
|
+
|
|
46
|
+
| `credential.mode` | Campos e comportamento |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| `external-key` | `name`, `path` absoluto fora do projeto; conferir permissões existentes sem alterá-las. Preferir chave protegida. |
|
|
49
|
+
| `agent` | `name`, `path` da identidade **pública**, `agent_endpoint` explícito. Agente pode conter várias identidades; `IdentitiesOnly` e a pública selecionam somente a autorizada. |
|
|
50
|
+
| `import` | `name`, `path` da dedicada original, `import_authorized:true`. Copiar exclusivamente para `.agents/private/state/ssh/<name>/identity`; preservar original, bytes e passphrase, sem sobrescrever. |
|
|
51
|
+
| `generate` | `name`; geração protegida usa terminal interativo disponível, com passphrase digitada no OpenSSH, nunca no chat/contrato. Em host sem TTY, retornar dependência humana concreta. |
|
|
52
|
+
|
|
53
|
+
Geração não assistida exige `unprotected:true` **e** `unprotected_acceptance:true`. Uma geração interativa que resultar sem frase também exige aceitação específica antes de habilitar uso. `ssh-keygen` verifica proteção efetiva; não remover passphrase. A chave privada permanece somente no armazenamento protegido, nunca em `.env`, contratos, Terraform, state, Git, logs, telemetria ou chat. Apenas sua referência/pública/fingerprint pode ser registrada. O preparo retorna somente a pública verificada do sidecar selecionado, quando disponível; importação copia também essa pública e cadastro pode resolvê-la internamente após geração, sem exigir JSON manual. Criptografia de disco é sondada por BitLocker no Windows, distinguindo observada, permissão negada e indisponível; ausência de consulta não significa “disco sem criptografia”.
|
|
54
|
+
|
|
55
|
+
O runner prepara exclusão Git e permissões de `.agents/private/state/ssh`, conhecido host e referências públicas. No Windows aplica somente a DACL necessária, preservando owner/auditoria e verificando-a em seguida; falha fecha o acesso. Se a chave externa tem permissões largas, diagnosticar sem alterá-la silenciosamente.
|
|
56
|
+
|
|
57
|
+
## Evolução e retomada
|
|
58
|
+
|
|
59
|
+
Chave protegida em `external-key`, `import` ou `generate` não autentica em modo batch sem agente. Após preparar/importar, carregue somente a identidade autorizada pelo mecanismo interativo seguro disponível e revise o contrato para `mode:agent`, apontando à pública local verificada e ao endpoint selecionado. O agente prepara a revisão e os hashes; o operador só intervém no prompt TTY quando inevitável, nunca com passphrase no chat. Sem agente disponível, o teste retorna diagnóstico sanitizado e não tenta outra chave.
|
|
60
|
+
|
|
61
|
+
Para referências existentes, `vps:prepare` deriva automaticamente `public_fingerprint` por OpenSSH no caminho autorizado, após validar mandato, permissões e identidade física. Se o agente já conhece essa fingerprint, pode fornecê-la; divergência bloqueia. Não pedir ao usuário calcular hash nem ler privada no JavaScript.
|
|
62
|
+
|
|
63
|
+
O mesmo request é idempotente. Quando descoberta, geração ou confirmação pública completar o contexto, o agente atualiza o request com `expected_previous_hash` igual ao `contract_sha256` observado e a autorização vigente. `vps:prepare` salva snapshot protegido do contrato anterior e faz substituição atômica sob lock. Um hash antigo ou mudança concorrente bloqueia; não peça ao usuário apagar o contrato. As referências físicas de chave e hashes dos alvos são regeneradas a partir dos dados presentes.
|
|
64
|
+
|
|
65
|
+
Locks carregam PID e operação. Um dono ainda existente mantém `onboarding_writer_busy`; somente dono comprovadamente morto admite recuperação automática, com readback antes de qualquer repetição externa. Lock malformado exige diagnóstico delimitado do agente; nunca limpeza global.
|
|
66
|
+
|
|
67
|
+
Geração interrompida com chave existente não é sobrescrita/adotada automaticamente. O agente verifica pública, proteção, ACL e autorização e prepara uma revisão com `credential.reconcile_existing_generation: {public_fingerprint,authorization_reference}`. Sem essa evidência, permanece `key_generation_requires_reconciliation`. Importação compara bytes e pode retomar uma cópia idêntica; conflitos preservam ambos os arquivos.
|
|
68
|
+
|
|
69
|
+
Cadastro público e configuração registram tentativa antes do efeito. Depois de timeout/resposta perdida, leem o estado. Ausência de confirmação bloqueia um segundo POST/script; não cria duplicatas. Distinguir autorizado, preparado, tentado, executado e comprovado. Uma tentativa pendente é uma condição de observação, não uma instrução para reenviar.
|
|
70
|
+
|
|
71
|
+
## Arquitetura e configuração
|
|
72
|
+
|
|
73
|
+
Reutilize `.agents/architecture/software-architecture.md` quando principal; outra principal existente pode ser indicada em `architecture.principal`. Ambiguidade exige descoberta. `architecture` registra `id`, `origin:human|agent`, `kind:confirmed|technical|exploration`, referência de autorização, razão disponível (ou null), alternativas, consequências e pendências. Para documento existente, fornecer `previous_sha256` e `document` completo revisado, preservando conteúdo não afetado e removendo instruções antigas incompatíveis. `hosts` e `sections` cobrem topologia, redes/portas, dados, capacidade, backup, observabilidade, recuperação, dependências e sequência. O original integral e a decisão ficam no histórico explicitamente superado, com uma única principal vigente.
|
|
74
|
+
|
|
75
|
+
Proposta, planejado, código/configuração e implantação verificada são estados distintos. Referência de implementação possui caminho/hash e interpretação de quantidade de hosts informada pelo agente; o hash não demonstra essa interpretação. Duas VPS no Terraform diante de uma escolhida resultam em adaptação pendente. Não aplicar o plano antigo. Documento não concede compra, deploy ou migração.
|
|
76
|
+
|
|
77
|
+
Para `vps:host:configure` ou `vps:containers:configure`, preencher o módulo correspondente de `target.configuration.host|containers`: referência de autorização, `previous_access_preserved:true`, locator/hash do inventário SSH, scripts e hashes de aplicação/readback, e `expected_marker` público. Inventário precisa corresponder ao mesmo acesso. Scripts são revisados e vinculados ao alvo; não há comando remoto arbitrário por argumento. A verificação consulta o estado antes e depois e descarta saída bruta. Rollback/restore fazem parte do plano revisado; teste de configuração não prova restauração sem execução própria.
|
|
78
|
+
|
|
79
|
+
## Dados SSH e provider
|
|
80
|
+
|
|
81
|
+
SO e versão possuem probes independentes. `findmnt` observa metadados de mounts de `/srv`, `/opt` e `/var/lib/docker/volumes`; `docker volume ls` lista apenas nome/driver. Ausência de ferramenta ou diretório permanece lacuna explícita. Configuração exige esses campos ou aceitação específica de cada lacuna com razão, sem presumir sucesso de um probe composto parcialmente falho.
|
|
82
|
+
|
|
83
|
+
Inventário SSH usa probes fixos de SO/arquitetura, CPU/RAM/disco/livre, hostname/interfaces, identidade/privilégio efetivo, Docker/Compose, serviços, portas, firewall e metadados dos diretórios pertinentes. Não lê ambientes de processos, configurações secretas, logs ou árvores arbitrárias. `sudo` não é sondado nem presumido. Saída/tempo são limitados; ferramenta ausente ou privilégio insuficiente é indisponível. Inventário fica em `.agents/private/state/cloud/onboarding` do consumidor, com fonte e momento; arquitetura usa referência mínima.
|
|
84
|
+
|
|
85
|
+
Plano/cobrança/ID/backups do painel não são inferidos de SSH. O adapter Hostinger usa a [OpenAPI oficial](https://developers.hostinger.com/openapi/openapi.json), versão observada 1.66.0 em 2026-10-15, e a [visão geral](https://docs.hostinger.com/api-reference/overview). A coleção VM é array, sem paginação declarada. Match por ID/IP/hostname exige unicidade e consulta o ID real; hostname numérico não é ID. Metadados ausentes permanecem null. Não existe capacidade de fingerprint de host demonstrada nessa spec.
|
|
86
|
+
|
|
87
|
+
`GET/POST /api/vps/v1/virtual-machines/{id}/ssh-keys` cadastra **públicas de login root**, com body `keys:[<OpenSSH pública>]`, e não a identidade do servidor. Não configura outro usuário por inferência. Token fica no dotenv selecionado e é enviado só ao request mínimo. Credencial não amplia a VPS autorizada.
|
|
88
|
+
|
|
89
|
+
## Atualização e prova
|
|
90
|
+
|
|
91
|
+
`vps:terraform:prepare` prepara adoção **local** por alvo: `target.terraform` identifica endereço de recurso, observação provider/hash, fonte pública `.tf`/hash e contagem interpretada. O recibo vincula ID existente, conta, autorização e topologia de um ou vários hosts, apontando divergência. Não carrega credenciais nem executa init/import/plan/apply. Backend/locking e schema do provider são verificações próprias pendentes. Import efetivo genérico ainda não é suportado: nunca encaminhar um host ao executor legado de duas funções/Cloudflare; SSH e preparo documental continuam independentes.
|
|
92
|
+
|
|
93
|
+
Observações de inventário não comprovam deploy. Readback de configuração atualiza o estado operacional somente no escopo host/containers e data referenciados; decisão posterior preserva essas referências sem transformar aplicação em implantada. A fonte de implementação aceita somente configuração pública pertinente em `infra/` ou `infrastructure/`, sem state/plan/env/chaves.
|
|
94
|
+
|
|
95
|
+
Use o tarball local candidato realmente produzido/testado, ou a versão publicada que já contenha esta capacidade. Ciclo aberto não significa pacote publicado: não afirmar que `@latest` já inclui uma mudança local. Primeiro dry-run e revisão de conflitos/backup; depois init autorizado normal ou force, e `doctor --json`/`hook status --json`. Updates normais e force preservam arquitetura, histórico e configurações do consumidor; não copiar arquitetura ou dados do mantenedor. O runner e todos os módulos são distribuídos em paridade e conferidos pelo hook contra o lock gerenciado. Fonte alterada, wrappers, argumentos extras e acesso genérico a segredos permanecem negados. Contratos locais não são uma barreira contra quem já pode editar o próprio código/mandato; preservar vínculo com autorização humana e revisão do diff.
|
|
96
|
+
|
|
97
|
+
Provas locais do consumidor: `node --test .agents/tools/cloud-onboarding.test.mjs`; `node --test .agents/tools/cloud-onboarding.ssh.integration.test.mjs`. No checkout mantenedor, qualificação por `scripts/qualify-vps-onboarding.mjs`. SSH real loopback usa dependência test-only explicitamente instalada e fixada (`ssh2@1.17.0` em `.local/temp/vps-ssh-test-server`, instalação sem scripts). Inventário do servidor de teste é resposta sintética sobre protocolo real, não medição Linux nem implantação. Não ocultar dependência ausente como teste aprovado. Não instalar serviço global ou reiniciar o SO para obter evidência.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: zaip-skill-image-optimization
|
|
3
|
+
description: Inventory, generate and verify responsive images when creating any site or landing page, optimizing images, or auditing image delivery while preserving the design.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Otimização de imagens
|
|
7
|
+
|
|
8
|
+
Componha performance-engineering: torne a imagem LCP descoberta no HTML inicial,
|
|
9
|
+
priorize somente o hero necessário e verifique CPU/LCP além de bytes. Preserve o design;
|
|
10
|
+
uma medição isolada de transferência não prova performance completa.
|
|
11
|
+
|
|
12
|
+
Aplique automaticamente na criação de qualquer site/LP, sem exigir pedido separado. Preserve identidade, composição, crop, alpha, cores, acessibilidade e conversão. Não use geração de imagens para compressão/conversão.
|
|
13
|
+
|
|
14
|
+
1. Escolha o modo: **criação** integra assets desde o início; **auditoria** apenas lê; **correção** mede antes e altera o gargalo observado; **verificação de publicação** confere assets do candidato já autorizado. Esta skill não autoriza deploy.
|
|
15
|
+
2. Inventarie originais, dimensões, bytes, formato, alpha, hashes/duplicatas e referências no código. Classifique LCP/hero, galeria, logo, ícone e social; referências estáticas não comprovam uso/download no navegador.
|
|
16
|
+
3. Leia [pipeline e configuração](references/pipeline.md). Prefira o otimizador nativo da stack quando adequado. O script usa `sharp` previamente instalado pelo projeto; não instala dependências. Preserve originais e gere somente larguras úteis ao layout/DPR, sem ampliar. Se o codec estiver ausente, declare a limitação.
|
|
17
|
+
4. Integre com [adaptadores](references/adapters.md): `srcset`/`sizes`, dimensões intrínsecas, `picture` para art direction e uma única imagem por viewport. Hero/LCP não usa lazy; prioridade/preload só com justificativa e seleção consistente. Demais imagens fora da dobra usam lazy. Alt descreve informação; decoração usa alt vazio.
|
|
18
|
+
5. Valide manifesto e budgets; cache longo/immutable fica restrito aos derivados com hash. Não aplique ao HTML, manifesto ou nomes mutáveis. Não envie o inventário completo como JavaScript ao cliente.
|
|
19
|
+
6. Examine screenshots mobile/desktop equivalentes, primeira dobra, galerias e formulário. Verifique waterfall: PNG pesado ainda requisitado, viewport oposto baixado e preload duplicado são falhas de integração mesmo com manifesto válido. Preserve `object-fit`/`object-position` e não aceite screenshots apenas por existirem.
|
|
20
|
+
7. Registre comando, codec/versão, candidato, data, viewport/DPR, CPU/rede/cache e URL para medições no navegador. Separe bytes em disco, transferência inicial e página percorrida; o script não mede Lighthouse, PageSpeed, CWV ou qualidade visual. Compare antes/depois sob condições equivalentes e teste conversão com mocks/sandbox.
|
|
21
|
+
|
|
22
|
+
Comandos da raiz do consumidor; caminhos de configuração são relativos a essa raiz:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
node .agents/skills/zaip-skill-image-optimization/scripts/images.mjs inventory image-config.json
|
|
26
|
+
node .agents/skills/zaip-skill-image-optimization/scripts/images.mjs generate image-config.json
|
|
27
|
+
node .agents/skills/zaip-skill-image-optimization/scripts/images.mjs verify image-manifest.json
|
|
28
|
+
node --test .agents/skills/zaip-skill-image-optimization/scripts/images.test.mjs
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Use `$zaip-skill-website-readiness` para SEO/GEO e verificação conjunta; `$zaip-skill-performance-engineering` para diagnóstico de performance. Alterações pequenas validam assets e rotas afetados; criação e revisão ampla incluem integração visual/funcional proporcional.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Integração por stack
|
|
2
|
+
|
|
3
|
+
Use URLs reais do manifesto; `HASH` abaixo representa o SHA gerado. Confira waterfall em viewports e DPR representativos. Não use dois elementos `<img>` desktop/mobile ocultos por CSS: ambos podem baixar.
|
|
4
|
+
|
|
5
|
+
## HTML estático
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<picture>
|
|
9
|
+
<source media="(max-width: 640px)" srcset="/images/derived/hero-mobile-480-HASH.webp 480w, /images/derived/hero-mobile-960-HASH.webp 960w" sizes="100vw" width="960" height="1200">
|
|
10
|
+
<img src="https://example.com/images/derived/hero-960-HASH.webp"
|
|
11
|
+
srcset="/images/derived/hero-480-HASH.webp 480w, /images/derived/hero-960-HASH.webp 960w"
|
|
12
|
+
sizes="(max-width: 640px) 100vw, 960px" width="960" height="540"
|
|
13
|
+
loading="eager" fetchpriority="high" alt="Descrição do conteúdo informativo">
|
|
14
|
+
</picture>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Fontes distintas só para art direction aprovada. Preserve dimensões/aspect-ratio de cada crop, `object-fit` e `object-position`. Imagem descoberta cedo no HTML costuma dispensar preload. Quando medido como necessário, `imagesrcset`/`imagesizes` correspondem à imagem selecionada, com `media` mutuamente exclusivo para art direction. Não preload WebP e AVIF simultaneamente; escolha um formato suportado ou dispense preload. Confira que o navegador não baixou também o fallback. Fora da primeira dobra: `loading="lazy"`, sem prioridade alta; reserve espaço.
|
|
18
|
+
|
|
19
|
+
## React/Vite
|
|
20
|
+
|
|
21
|
+
Gere antes de `vite build`; copie somente o fragmento necessário do manifesto para cada componente no build, ou gere módulos de props por imagem. Inventário não pertence ao bundle global.
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
export function Hero({ image }) {
|
|
25
|
+
const props = { src: image.fallback.url, srcSet: image.srcset.webp,
|
|
26
|
+
sizes: image.sizes, width: image.fallback.width, height: image.fallback.height,
|
|
27
|
+
loading: "eager", fetchPriority: "high", alt: "Descrição real do conteúdo" };
|
|
28
|
+
return <img {...props} />;
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Escolha `fallback` do formato correspondente ao `srcSet`. Verifique links diretos/reload, HTML de metadados sociais e ausência de URLs dos originais pesados no waterfall. SSR/SSG/prerender é decisão de stack/indexabilidade, não requisito da compressão.
|
|
33
|
+
|
|
34
|
+
## Frameworks com otimização nativa
|
|
35
|
+
|
|
36
|
+
Em Astro use componentes/serviços nativos; em Next o componente/loader configurado; em Nuxt o módulo de imagens já adotado. Leia a documentação da versão instalada para props, prioridade/preload e formatos. Passe dimensões e sizes reais, preserve crop e política de domínios remotos. Não pré-converta todos os originais só para alimentar outro otimizador. Audite URLs geradas, variantes, cache e bytes com requests reais. Não afirme teste na aplicação só porque o exemplo compila.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Pipeline reproduzível
|
|
2
|
+
|
|
3
|
+
O CLI usa Node ESM e resolve `sharp` da raiz do projeto. Não instala nem baixa nada. `--sharp-root PATH` permite usar uma instalação já autorizada; mantenha a versão de sharp/libvips no lock do projeto. A mesma fonte/configuração/versão gera bytes e nomes iguais. Mudanças de codec podem produzir outros hashes. O manifesto registra versões, sem timestamp para preservar idempotência.
|
|
4
|
+
|
|
5
|
+
Exemplo de `image-config.json`; adapte fontes, larguras e limites ao produto:
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"outputDir": "public/images/derived",
|
|
10
|
+
"manifest": "image-manifest.json",
|
|
11
|
+
"publicBase": "/images/derived/",
|
|
12
|
+
"budgets": { "maxImageBytes": 250000, "maxTotalBytes": 1500000 },
|
|
13
|
+
"usageFiles": ["src/Hero.tsx", "index.html"],
|
|
14
|
+
"images": [{
|
|
15
|
+
"source": "assets/originals/hero.png",
|
|
16
|
+
"role": "hero",
|
|
17
|
+
"widths": [480, 960, 1440],
|
|
18
|
+
"formats": ["webp"],
|
|
19
|
+
"quality": 82,
|
|
20
|
+
"sizes": "(max-width: 640px) 100vw, 960px"
|
|
21
|
+
}]
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`inventory` lê fontes declaradas e `usageFiles`, retorna dimensões orientadas, formato detectado, MIME, bytes, alpha, SHA-256, duplicatas e referências literais. Inclua todas as fontes; complete referências dinâmicas com rede observada. `generate` aceita raster estático, mantém proporção sem crop, aplica orientação EXIF e saída sRGB; nunca amplia, remove alpha ou altera originais. SVG/logos vetoriais e animações permanecem no pipeline próprio: inventário aceita, conversão recusa. AVIF/WebP servem fotos/alpha; PNG lossless favorece gráficos sensíveis; JPEG só sem alpha. Preserve PNG/SVG ou use WebP lossless (`lossless: true`) quando necessário para legibilidade. PNG ignora quality; escolher formato demanda comparação visual.
|
|
26
|
+
|
|
27
|
+
Larguras acima da fonte são descartadas; a largura original só é adicionada quando todas as solicitadas excedem a fonte. Evite dezenas de variantes. Para art direction crie fontes separadas com recortes aprovados; a ferramenta não inventa crop. Favicon, app icon e imagem social são produtos diferentes: use dimensões/composição específicas, não resize deformado. Mantenha imagem social acessível por URL absoluta.
|
|
28
|
+
|
|
29
|
+
`verify` falha para arquivo ausente, MIME/extensão/formato incorretos, hash/dimensões alterados, orçamento excedido, duplicatas no manifesto e configuração inválida. Lê os arquivos reais. `maxTotalBytes` soma derivados em disco, não prevê download por viewport. Não reduza budgets para obter PASS; registre exceção/evidência. Cache HTTP, downloads/preload e UI exigem teste real do site.
|
|
30
|
+
|
|
31
|
+
Saída usa `nome-WIDTH-SHA256.ext`, SHA completo dos bytes. Somente essa família recebe immutable. Manifesto e HTML revalidam conforme hosting; não aplique regra genérica para `/images/`. A ferramenta conserva derivados antigos para rollback e não faz limpeza destrutiva. Publicação preserva referências do candidato anterior enquanto necessário.
|
|
32
|
+
|
|
33
|
+
Gere antes do build em checkout limpo, depois verifique. Versione configuração/fontes e automatize geração no build; não dependa de manifesto que existe apenas na máquina local. Com otimização nativa, teste o build e sua saída com gates equivalentes; não execute dois pipelines em paralelo.
|
|
34
|
+
|
|
35
|
+
O caso de referência Moradigna reduziu transferência local ao percorrer a página de 29,97 MB para 1,34 MB mobile e 32,42 MB para 1,89 MB desktop. Não eram Lighthouse, PageSpeed ou GTmetrix; valores não são meta, baseline universal nem promessa para outro projeto.
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
|
|
7
|
+
const MIME = {
|
|
8
|
+
png: "image/png",
|
|
9
|
+
jpeg: "image/jpeg",
|
|
10
|
+
webp: "image/webp",
|
|
11
|
+
avif: "image/avif",
|
|
12
|
+
svg: "image/svg+xml",
|
|
13
|
+
gif: "image/gif",
|
|
14
|
+
tiff: "image/tiff",
|
|
15
|
+
heif: "image/heif",
|
|
16
|
+
};
|
|
17
|
+
const digest = (bytes) => crypto.createHash("sha256").update(bytes).digest("hex");
|
|
18
|
+
const fail = (message) => {
|
|
19
|
+
throw new Error(message);
|
|
20
|
+
};
|
|
21
|
+
const positive = (value) => Number.isSafeInteger(value) && value > 0;
|
|
22
|
+
const relative = (root, target) => path.relative(root, target).split(path.sep).join("/");
|
|
23
|
+
|
|
24
|
+
export function loadSharp(root = process.cwd()) {
|
|
25
|
+
try {
|
|
26
|
+
return createRequire(path.join(path.resolve(root), "package.json"))("sharp");
|
|
27
|
+
} catch {
|
|
28
|
+
fail(
|
|
29
|
+
"sharp is unavailable. Use a project-installed, approved dependency or --sharp-root PATH; no installation was performed.",
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Resolve existing ancestors as well as lexical paths to reject symlink escapes.
|
|
35
|
+
async function contained(root, value) {
|
|
36
|
+
if (typeof value !== "string" || !value || path.isAbsolute(value))
|
|
37
|
+
fail("Path must be relative to project root");
|
|
38
|
+
const target = path.resolve(root, value);
|
|
39
|
+
const check = (candidate) => {
|
|
40
|
+
const rel = path.relative(root, candidate);
|
|
41
|
+
if (rel === ".." || rel.startsWith(`..${path.sep}`) || path.isAbsolute(rel))
|
|
42
|
+
fail(`Path escapes project root: ${value}`);
|
|
43
|
+
};
|
|
44
|
+
check(target);
|
|
45
|
+
let ancestor = target;
|
|
46
|
+
while (true) {
|
|
47
|
+
try {
|
|
48
|
+
check(await fs.realpath(ancestor));
|
|
49
|
+
break;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
if (error.code !== "ENOENT") throw error;
|
|
52
|
+
const parent = path.dirname(ancestor);
|
|
53
|
+
if (parent === ancestor) throw error;
|
|
54
|
+
ancestor = parent;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return target;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Canonicalize missing destinations through their nearest existing ancestor,
|
|
61
|
+
// so aliases in parent directories (including Windows junctions) also match.
|
|
62
|
+
async function fileIdentity(file) {
|
|
63
|
+
let ancestor = file;
|
|
64
|
+
const missing = [];
|
|
65
|
+
while (true) {
|
|
66
|
+
try {
|
|
67
|
+
const real = await fs.realpath(ancestor);
|
|
68
|
+
const canonical = path.join(real, ...missing);
|
|
69
|
+
const stat = missing.length ? null : await fs.stat(file, { bigint: true });
|
|
70
|
+
return {
|
|
71
|
+
canonical: process.platform === "win32" ? canonical.toLowerCase() : canonical,
|
|
72
|
+
inode: stat && stat.ino !== 0n ? `${stat.dev}:${stat.ino}` : null,
|
|
73
|
+
};
|
|
74
|
+
} catch (error) {
|
|
75
|
+
if (error.code !== "ENOENT") throw error;
|
|
76
|
+
const parent = path.dirname(ancestor);
|
|
77
|
+
if (parent === ancestor) throw error;
|
|
78
|
+
missing.unshift(path.basename(ancestor));
|
|
79
|
+
ancestor = parent;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const sameIdentity = (a, b) =>
|
|
85
|
+
a.canonical === b.canonical || (a.inode !== null && a.inode === b.inode);
|
|
86
|
+
|
|
87
|
+
async function protectOriginals(file, sources) {
|
|
88
|
+
const target = await fileIdentity(file);
|
|
89
|
+
if (sources.some((source) => sameIdentity(source, target)))
|
|
90
|
+
fail("Destination would overwrite an original through a path alias");
|
|
91
|
+
return target;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function budgets(value) {
|
|
95
|
+
if (!value || !positive(value.maxImageBytes) || !positive(value.maxTotalBytes))
|
|
96
|
+
fail("Explicit positive integer maxImageBytes and maxTotalBytes budgets are required");
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function checkBudget(entries, limits) {
|
|
101
|
+
budgets(limits);
|
|
102
|
+
for (const entry of entries)
|
|
103
|
+
if (entry.bytes > limits.maxImageBytes) fail(`Image budget exceeded: ${entry.file}`);
|
|
104
|
+
if (entries.reduce((sum, entry) => sum + entry.bytes, 0) > limits.maxTotalBytes)
|
|
105
|
+
fail("Total derivative budget exceeded");
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async function inspect(file, sharp) {
|
|
109
|
+
const bytes = await fs.readFile(file);
|
|
110
|
+
const meta = await sharp(bytes, { animated: true }).metadata();
|
|
111
|
+
const rotated = [5, 6, 7, 8].includes(meta.orientation);
|
|
112
|
+
const format = meta.format === "heif" && meta.compression === "av1" ? "avif" : meta.format;
|
|
113
|
+
return {
|
|
114
|
+
width: rotated ? meta.height : meta.width,
|
|
115
|
+
height: rotated ? meta.width : meta.height,
|
|
116
|
+
format,
|
|
117
|
+
mime: MIME[format] ?? "application/octet-stream",
|
|
118
|
+
alpha: Boolean(meta.hasAlpha),
|
|
119
|
+
pages: meta.pages ?? 1,
|
|
120
|
+
bytes: bytes.length,
|
|
121
|
+
sha256: digest(bytes),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export async function inventory(config, { root = process.cwd(), sharp = loadSharp(root) } = {}) {
|
|
126
|
+
root = await fs.realpath(root);
|
|
127
|
+
if (!Array.isArray(config.images) || !config.images.length)
|
|
128
|
+
fail("images must be a non-empty array");
|
|
129
|
+
const usage = await Promise.all(
|
|
130
|
+
(config.usageFiles ?? []).map(async (file) => ({
|
|
131
|
+
file,
|
|
132
|
+
text: await fs.readFile(await contained(root, file), "utf8"),
|
|
133
|
+
})),
|
|
134
|
+
);
|
|
135
|
+
const seen = new Set();
|
|
136
|
+
const images = [];
|
|
137
|
+
for (const entry of config.images) {
|
|
138
|
+
const file = await contained(root, entry.source);
|
|
139
|
+
const real = await fs.realpath(file);
|
|
140
|
+
if (seen.has(real)) fail(`Duplicate source: ${entry.source}`);
|
|
141
|
+
seen.add(real);
|
|
142
|
+
const meta = await inspect(file, sharp);
|
|
143
|
+
images.push({
|
|
144
|
+
source: entry.source,
|
|
145
|
+
role: entry.role ?? "unclassified",
|
|
146
|
+
...meta,
|
|
147
|
+
references: usage
|
|
148
|
+
.filter(
|
|
149
|
+
(item) =>
|
|
150
|
+
item.text.includes(entry.source) || item.text.includes(path.basename(entry.source)),
|
|
151
|
+
)
|
|
152
|
+
.map((item) => item.file),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
const duplicates = [...new Set(images.map((item) => item.sha256))]
|
|
156
|
+
.map((hash) => images.filter((item) => item.sha256 === hash).map((item) => item.source))
|
|
157
|
+
.filter((group) => group.length > 1);
|
|
158
|
+
return {
|
|
159
|
+
schemaVersion: 1,
|
|
160
|
+
referenceMethod: "literal source or basename; dynamic use requires browser evidence",
|
|
161
|
+
images,
|
|
162
|
+
duplicates,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
async function writeChanged(file, bytes) {
|
|
167
|
+
try {
|
|
168
|
+
if ((await fs.readFile(file)).equals(Buffer.from(bytes))) return;
|
|
169
|
+
} catch (error) {
|
|
170
|
+
if (error.code !== "ENOENT") throw error;
|
|
171
|
+
}
|
|
172
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
173
|
+
// Replace directory entries instead of following an existing symlink/hardlink.
|
|
174
|
+
const temporary = `${file}.${crypto.randomUUID()}.tmp`;
|
|
175
|
+
try {
|
|
176
|
+
await fs.writeFile(temporary, bytes, { flag: "wx" });
|
|
177
|
+
await fs.rename(temporary, file);
|
|
178
|
+
} finally {
|
|
179
|
+
await fs.rm(temporary, { force: true });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export async function generate(config, { root = process.cwd(), sharp = loadSharp(root) } = {}) {
|
|
184
|
+
root = await fs.realpath(root);
|
|
185
|
+
budgets(config.budgets);
|
|
186
|
+
const outputDir = await contained(root, config.outputDir);
|
|
187
|
+
const manifestFile = await contained(root, config.manifest);
|
|
188
|
+
if (
|
|
189
|
+
typeof config.publicBase !== "string" ||
|
|
190
|
+
!/^\/(?!\/)[^?#\\\s]*\/$/.test(config.publicBase) ||
|
|
191
|
+
config.publicBase.includes("..")
|
|
192
|
+
)
|
|
193
|
+
fail("publicBase must be a root-relative URL directory");
|
|
194
|
+
const originals = await inventory(config, { root, sharp });
|
|
195
|
+
const plans = config.images.map((entry, index) => {
|
|
196
|
+
const meta = originals.images[index];
|
|
197
|
+
if (!["png", "jpeg", "webp", "avif", "tiff"].includes(meta.format) || meta.pages !== 1)
|
|
198
|
+
fail(
|
|
199
|
+
"Conversion requires a static raster image; preserve vectors/animations in their native pipeline",
|
|
200
|
+
);
|
|
201
|
+
if (!Array.isArray(entry.widths) || !entry.widths.length || !entry.widths.every(positive))
|
|
202
|
+
fail("widths must be positive integers");
|
|
203
|
+
if (
|
|
204
|
+
!Array.isArray(entry.formats) ||
|
|
205
|
+
!entry.formats.length ||
|
|
206
|
+
!entry.formats.every((format) => ["webp", "avif", "png", "jpeg"].includes(format))
|
|
207
|
+
)
|
|
208
|
+
fail("Unsupported output formats");
|
|
209
|
+
if (meta.alpha && entry.formats.includes("jpeg"))
|
|
210
|
+
fail("JPEG would discard alpha; select an alpha-capable format");
|
|
211
|
+
if (entry.quality !== undefined && (!positive(entry.quality) || entry.quality > 100))
|
|
212
|
+
fail("quality must be an integer from 1 to 100");
|
|
213
|
+
if (entry.lossless !== undefined && typeof entry.lossless !== "boolean")
|
|
214
|
+
fail("lossless must be boolean");
|
|
215
|
+
if (typeof entry.sizes !== "string" || !entry.sizes.trim())
|
|
216
|
+
fail("Explicit layout sizes is required");
|
|
217
|
+
const widths = [...new Set(entry.widths.filter((width) => width <= meta.width))].sort(
|
|
218
|
+
(a, b) => a - b,
|
|
219
|
+
);
|
|
220
|
+
if (!widths.length) widths.push(meta.width);
|
|
221
|
+
return { entry, meta, widths, formats: [...new Set(entry.formats)].sort() };
|
|
222
|
+
});
|
|
223
|
+
const sourceIdentities = await Promise.all(
|
|
224
|
+
config.images.map(async (entry) => fileIdentity(await contained(root, entry.source))),
|
|
225
|
+
);
|
|
226
|
+
const manifestIdentity = await protectOriginals(manifestFile, sourceIdentities);
|
|
227
|
+
const manifest = {
|
|
228
|
+
schemaVersion: 1,
|
|
229
|
+
generator: { name: "zaip-images", sharp: sharp.versions.sharp, vips: sharp.versions.vips },
|
|
230
|
+
budgets: config.budgets,
|
|
231
|
+
images: [],
|
|
232
|
+
};
|
|
233
|
+
const pending = new Map();
|
|
234
|
+
for (const { entry, meta, widths, formats } of plans) {
|
|
235
|
+
const image = {
|
|
236
|
+
source: entry.source,
|
|
237
|
+
sourceSha256: meta.sha256,
|
|
238
|
+
role: entry.role ?? "unclassified",
|
|
239
|
+
sizes: entry.sizes,
|
|
240
|
+
variants: [],
|
|
241
|
+
srcset: {},
|
|
242
|
+
};
|
|
243
|
+
for (const format of formats) {
|
|
244
|
+
for (const width of widths) {
|
|
245
|
+
const file = await contained(root, entry.source);
|
|
246
|
+
const bytes = await sharp(file)
|
|
247
|
+
.rotate()
|
|
248
|
+
.resize({ width, withoutEnlargement: true })
|
|
249
|
+
.toColourspace("srgb")
|
|
250
|
+
.toFormat(format, { quality: entry.quality ?? 82, lossless: entry.lossless ?? false })
|
|
251
|
+
.toBuffer();
|
|
252
|
+
const actual = await sharp(bytes).metadata();
|
|
253
|
+
const hash = digest(bytes);
|
|
254
|
+
const stem = path
|
|
255
|
+
.basename(entry.source, path.extname(entry.source))
|
|
256
|
+
.replace(/[^a-zA-Z0-9_-]/g, "-");
|
|
257
|
+
const name = `${stem}-${actual.width}-${hash}.${format}`;
|
|
258
|
+
const target = await contained(root, relative(root, path.join(outputDir, name)));
|
|
259
|
+
const targetIdentity = await protectOriginals(target, sourceIdentities);
|
|
260
|
+
if (sameIdentity(targetIdentity, manifestIdentity))
|
|
261
|
+
fail("Output would overwrite the manifest through a path alias");
|
|
262
|
+
pending.set(target, bytes);
|
|
263
|
+
image.variants.push({
|
|
264
|
+
file: relative(root, target),
|
|
265
|
+
url: config.publicBase + name,
|
|
266
|
+
format,
|
|
267
|
+
mime: MIME[format],
|
|
268
|
+
width: actual.width,
|
|
269
|
+
height: actual.height,
|
|
270
|
+
alpha: Boolean(actual.hasAlpha),
|
|
271
|
+
bytes: bytes.length,
|
|
272
|
+
sha256: hash,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
image.srcset[format] = image.variants
|
|
276
|
+
.filter((item) => item.format === format)
|
|
277
|
+
.map((item) => `${item.url} ${item.width}w`)
|
|
278
|
+
.join(", ");
|
|
279
|
+
}
|
|
280
|
+
image.fallback = image.variants.filter((item) => item.format === entry.formats[0]).at(-1);
|
|
281
|
+
manifest.images.push(image);
|
|
282
|
+
}
|
|
283
|
+
const unique = [
|
|
284
|
+
...new Map(
|
|
285
|
+
manifest.images.flatMap((item) => item.variants).map((item) => [item.file, item]),
|
|
286
|
+
).values(),
|
|
287
|
+
];
|
|
288
|
+
checkBudget(unique, config.budgets);
|
|
289
|
+
// Recheck aliases before writing; do not rely solely on lexical config paths.
|
|
290
|
+
for (const file of [...pending.keys(), manifestFile])
|
|
291
|
+
await protectOriginals(file, sourceIdentities);
|
|
292
|
+
for (const [file, bytes] of pending) await writeChanged(file, bytes);
|
|
293
|
+
await writeChanged(manifestFile, JSON.stringify(manifest, null, 2) + "\n");
|
|
294
|
+
return manifest;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export async function verify(manifest, { root = process.cwd(), sharp = loadSharp(root) } = {}) {
|
|
298
|
+
root = await fs.realpath(root);
|
|
299
|
+
if (manifest.schemaVersion !== 1 || !Array.isArray(manifest.images) || !manifest.images.length)
|
|
300
|
+
fail("Invalid or empty image manifest");
|
|
301
|
+
const actualFiles = new Map();
|
|
302
|
+
const seenSources = new Set();
|
|
303
|
+
for (const image of manifest.images) {
|
|
304
|
+
if (seenSources.has(image.source)) fail("Duplicate source in manifest");
|
|
305
|
+
seenSources.add(image.source);
|
|
306
|
+
const source = await inspect(await contained(root, image.source), sharp);
|
|
307
|
+
if (source.sha256 !== image.sourceSha256) fail(`Source changed: ${image.source}`);
|
|
308
|
+
if (!Array.isArray(image.variants) || !image.variants.length) fail("Missing variants");
|
|
309
|
+
const seen = new Set();
|
|
310
|
+
for (const variant of image.variants) {
|
|
311
|
+
if (seen.has(variant.file)) fail("Duplicate variant");
|
|
312
|
+
seen.add(variant.file);
|
|
313
|
+
const file = await contained(root, variant.file);
|
|
314
|
+
const actual = await inspect(file, sharp);
|
|
315
|
+
for (const key of ["width", "height", "format", "mime", "alpha", "bytes", "sha256"]) {
|
|
316
|
+
if (variant[key] !== actual[key]) fail(`Asset ${key} mismatch: ${variant.file}`);
|
|
317
|
+
}
|
|
318
|
+
if (actual.width > source.width || actual.height > source.height) fail("Upscaled asset");
|
|
319
|
+
if (Math.abs(actual.height - (source.height * actual.width) / source.width) > 1)
|
|
320
|
+
fail("Asset aspect ratio changed");
|
|
321
|
+
if (source.alpha && !actual.alpha) fail("Asset lost alpha");
|
|
322
|
+
if (!path.basename(file).endsWith(`-${actual.width}-${actual.sha256}.${actual.format}`))
|
|
323
|
+
fail("Asset filename hash/extension mismatch");
|
|
324
|
+
if (typeof variant.url !== "string" || !variant.url.endsWith("/" + path.basename(file)))
|
|
325
|
+
fail("Asset URL mismatch");
|
|
326
|
+
actualFiles.set(file, { file: variant.file, bytes: actual.bytes });
|
|
327
|
+
}
|
|
328
|
+
for (const format of new Set(image.variants.map((item) => item.format))) {
|
|
329
|
+
const expected = image.variants
|
|
330
|
+
.filter((item) => item.format === format)
|
|
331
|
+
.map((item) => `${item.url} ${item.width}w`)
|
|
332
|
+
.join(", ");
|
|
333
|
+
if (image.srcset?.[format] !== expected) fail("srcset mismatch");
|
|
334
|
+
}
|
|
335
|
+
if (
|
|
336
|
+
!image.sizes?.trim() ||
|
|
337
|
+
!image.variants.some((item) => JSON.stringify(item) === JSON.stringify(image.fallback))
|
|
338
|
+
)
|
|
339
|
+
fail("Invalid sizes/fallback");
|
|
340
|
+
}
|
|
341
|
+
checkBudget([...actualFiles.values()], manifest.budgets);
|
|
342
|
+
return {
|
|
343
|
+
valid: true,
|
|
344
|
+
files: actualFiles.size,
|
|
345
|
+
totalBytes: [...actualFiles.values()].reduce((sum, item) => sum + item.bytes, 0),
|
|
346
|
+
scope: "local asset integrity; browser/HTTP/visual validation required separately",
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export async function main(args = process.argv.slice(2)) {
|
|
351
|
+
const [command, input, option, sharpRoot] = args;
|
|
352
|
+
if (
|
|
353
|
+
!["inventory", "generate", "verify"].includes(command) ||
|
|
354
|
+
!input ||
|
|
355
|
+
(option && (option !== "--sharp-root" || !sharpRoot)) ||
|
|
356
|
+
args.length > 4
|
|
357
|
+
)
|
|
358
|
+
fail("Usage: images.mjs inventory|generate|verify FILE.json [--sharp-root PATH]");
|
|
359
|
+
const value = JSON.parse(await fs.readFile(input, "utf8"));
|
|
360
|
+
const sharp = loadSharp(sharpRoot ?? process.cwd());
|
|
361
|
+
const result = await { inventory, generate, verify }[command](value, { sharp });
|
|
362
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
366
|
+
main().catch((error) => {
|
|
367
|
+
process.stderr.write(`${error.message}\n`);
|
|
368
|
+
process.exitCode = 1;
|
|
369
|
+
});
|
|
370
|
+
}
|