@zaip-ai/cli 3.3.0 → 3.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/dist/services/adapters.d.ts +1 -1
- package/dist/services/adapters.d.ts.map +1 -1
- package/dist/services/adapters.js +4 -3
- package/dist/services/adapters.js.map +1 -1
- package/dist/services/agent-catalog-upgrade.d.ts +3 -0
- package/dist/services/agent-catalog-upgrade.d.ts.map +1 -0
- package/dist/services/agent-catalog-upgrade.js +35 -0
- package/dist/services/agent-catalog-upgrade.js.map +1 -0
- package/dist/services/install-agents-template.d.ts.map +1 -1
- package/dist/services/install-agents-template.js +22 -22
- package/dist/services/install-agents-template.js.map +1 -1
- package/dist/services/install-template-policy.d.ts +3 -0
- package/dist/services/install-template-policy.d.ts.map +1 -0
- package/dist/services/install-template-policy.js +21 -0
- package/dist/services/install-template-policy.js.map +1 -0
- package/dist/services/logger.test.js +12 -2
- package/dist/services/logger.test.js.map +1 -1
- package/dist/services/sqlite-bootstrap.d.ts +1 -0
- package/dist/services/sqlite-bootstrap.d.ts.map +1 -1
- package/dist/services/sqlite-bootstrap.js +10 -1
- package/dist/services/sqlite-bootstrap.js.map +1 -1
- package/package.json +2 -2
- package/templates/.agents/config/agents/discovery.json +1 -1
- package/templates/.agents/dashboard/.zaip-managed.json +286 -126
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{CostCalculationGuidePage-BBFDrn64.js → CostCalculationGuidePage-C5NgEcVh.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{DashboardHelpDialog-Cd-qo9w7.js → DashboardHelpDialog-CCMVnkkI.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{PricingSettingsDialog-J7L5m8lk.js → PricingSettingsDialog-CGYcJ5EB.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{ProjectSettingsPage-B9GWkEyN.css → ProjectSettingsPage-CQMhvzvJ.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-D46WWIKr.js +3 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{TraceabilityWorkspace-BzVtGLWS.js → TraceabilityWorkspace-BKBpJyLh.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{cost-monitor-PoJA2PI1.css → cost-monitor-BsMfGfQi.css} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor-j3aUYH5G.js +68 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{icons-vendor-CWzf_RiP.js → icons-vendor-x8xxL9yW.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Bas2TVju.js +2 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-CxrG_wRI.css +1 -0
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{react-vendor-CtHdbZk3.js → react-vendor-CNOXIJHN.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/{traceability-BKrDH2TR.js → traceability-CcpbpT1s.js} +1 -1
- package/templates/.agents/dashboard/apps/frontend/dist/index.html +7 -7
- package/templates/.agents/dashboard/apps/frontend/package.json +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/App.tsx +12 -1
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsCard.tsx +5 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsField.tsx +21 -0
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.dom.test.ts +12 -1
- package/templates/.agents/dashboard/apps/frontend/src/ProjectSettingsPage.tsx +16 -28
- package/templates/.agents/dashboard/apps/frontend/src/ProjectStackEditor.tsx +25 -4
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.test.tsx +51 -0
- package/templates/.agents/dashboard/apps/frontend/src/WorkspaceStatus.tsx +39 -0
- package/templates/.agents/dashboard/apps/frontend/src/app-work-board-options.ts +41 -0
- package/templates/.agents/dashboard/apps/frontend/src/dashboard-runtime-status.ts +25 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-copy.ts +13 -4
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-model.ts +25 -1
- package/templates/.agents/dashboard/apps/frontend/src/project-settings-workspace.css +28 -0
- package/templates/.agents/dashboard/apps/frontend/src/project-settings.test.ts +39 -0
- package/templates/.agents/dashboard/apps/frontend/src/snapshot-coherence.test.ts +1 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-cost-loaders.ts +5 -1
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.test.ts +140 -0
- package/templates/.agents/dashboard/apps/frontend/src/use-app-work-board.ts +28 -41
- package/templates/.agents/dashboard/apps/frontend/src/use-runtime-status.ts +38 -0
- package/templates/.agents/dashboard/apps/frontend/src/workspace-status.css +20 -0
- package/templates/.agents/dashboard/modules/cost-monitor/package.json +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.test.ts +25 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CompactLifecycleCostTable.tsx +17 -19
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostFilters.tsx +13 -167
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostGroupsTable.tsx +2 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.test.ts +8 -8
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostMonitorPage.tsx +29 -52
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTableLoading.test.ts +1 -1
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables-keeps-legacy-codex-identity-fields-blank.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/CostTables.test.ts +4 -27
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.test.ts +2 -2
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/MacroCostTable.tsx +4 -3
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/agent-model-presentation.test.ts +26 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-embedded.css +7 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-loaders.ts +173 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-props.ts +47 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-monitor-page-selectors.ts +1 -7
- package/templates/.agents/dashboard/modules/cost-monitor/src/react/cost-page-range.ts +3 -9
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.test.ts +44 -83
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-monitor-projection.ts +11 -111
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.test.ts +47 -181
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/build-cost-summary-projection.ts +63 -91
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-monitor-unavailable.test.ts +55 -0
- package/templates/.agents/dashboard/modules/cost-monitor/src/server/cost-summary-duration.test.ts +189 -0
- package/templates/.agents/dashboard/modules/operations/package.json +1 -1
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsEntityFilters.tsx +82 -0
- package/templates/.agents/dashboard/modules/operations/src/react/OperationsPage.tsx +22 -31
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.test.tsx +13 -1
- package/templates/.agents/dashboard/modules/operations/src/react/PagedWorkList.tsx +16 -3
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.test.ts +11 -27
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportAction.tsx +44 -193
- package/templates/.agents/dashboard/modules/operations/src/react/export/ExcelExportColumns.ts +186 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/excel-agent-participations.test.ts +28 -0
- package/templates/.agents/dashboard/modules/operations/src/react/export/export-layout.test.ts +2 -1
- package/templates/.agents/dashboard/modules/operations/src/react/operations-export-duration.ts +13 -0
- package/templates/.agents/dashboard/modules/operations/src/react/operations-filter-panel.css +4 -0
- package/templates/.agents/dashboard/modules/operations/src/react/use-operation-filter-feedback.ts +18 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.test.ts +11 -0
- package/templates/.agents/dashboard/modules/operations/src/react/work-board-model.ts +10 -2
- package/templates/.agents/dashboard/modules/operations/src/work-board-model.ts +1 -1
- 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 +1 -1
- package/templates/.agents/dashboard/packages/data-export/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/dist/server.cjs +395 -341
- package/templates/.agents/dashboard/packages/local-runtime/dist/sqlite-read-model.cjs +346 -294
- package/templates/.agents/dashboard/packages/local-runtime/package.json +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/rebuild-sqlite-read-model.mjs +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/scripts/validate-sqlite-read-model.mjs +42 -8
- package/templates/.agents/dashboard/packages/local-runtime/server.mjs +395 -341
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.test.ts +95 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/active-codex-telemetry.ts +102 -12
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.test.ts +2 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/project-settings.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server-board.test.ts +75 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server-costs-routes.ts +10 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-lifecycle-diagnostics.ts +50 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-macro-population.test.ts +165 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-page-filters.ts +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.test.ts +111 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-pages.ts +53 -63
- package/templates/.agents/dashboard/packages/local-runtime/src/server-operations-runs-route.ts +19 -5
- package/templates/.agents/dashboard/packages/local-runtime/src/server-period-macro-metric.ts +11 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-read-projections.ts +16 -9
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-refresh.test.ts +46 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.test.ts +10 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/server-snapshot-synchronization.ts +4 -3
- package/templates/.agents/dashboard/packages/local-runtime/src/server.test.ts +43 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/server.ts +46 -11
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-filter-matrix.test.ts +188 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.test.ts +85 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-cost-summary-details.ts +147 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-first-fold-cache.ts +64 -54
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-macro-classification.test.ts +172 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-materialize-projections.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-projection.ts +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.test.ts +7 -7
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-operations-work-list.ts +2 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-period-averages.ts +10 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-pricing-provenance.test.ts +39 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-agent-dimension.ts +18 -82
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-cached-cost-page.ts +169 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-developer.ts +205 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-entity-group.ts +13 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-filtered-dimension.ts +22 -23
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-financial.ts +42 -209
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-model-dimension.ts +18 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-provider-dimension.ts +9 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-summary.ts +76 -83
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-query-view-page.ts +25 -161
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-canonical.ts +20 -47
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-counts-every-root-execution-day-returns.test.ts +2 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-filesystem.ts +16 -16
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-multi-provider.test.ts +1 -1
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-rebuild.ts +47 -22
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model-schema.ts +3 -2
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-read-model.test.ts +11 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-rebuild-result.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-base-views.ts +4 -4
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-dashboard-views.ts +15 -56
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-schema-macro-classification.ts +48 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-summary-cursor.ts +15 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-token-active-allocation.ts +46 -0
- package/templates/.agents/dashboard/packages/local-runtime/src/sqlite-work-stages.ts +60 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-history.mjs +5 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-claims.test.mjs +7 -1
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-launch-page.mjs +17 -2
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.mjs +65 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-ownership.test.mjs +72 -0
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard-processes.mjs +32 -9
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.mjs +39 -45
- package/templates/.agents/dashboard/packages/local-runtime/start-dashboard.test.mjs +5 -2
- package/templates/.agents/dashboard/packages/ui/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/package.json +1 -1
- package/templates/.agents/dashboard/tests/e2e/specs/dashboard-performance-matrix.spec.ts +1 -18
- package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.spec.ts +20 -0
- package/templates/.agents/dashboard/tests/e2e/specs/export-row-identity.ts +20 -0
- package/templates/.agents/design/.zaip-managed.json +105 -69
- package/templates/.agents/design/apps/catalog/dist/assets/index-0W0Gj_Gs.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-32GZO95T.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/{index-D_lfqoyx.js → index-BP8IxOxt.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/assets/index-D1JaPXfV.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/assets/index-D2miO4-O.js +72 -0
- package/templates/.agents/design/apps/catalog/dist/assets/{index-BOjCcUaU.js → index-QJsgr9Ht.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/assets/{index-CqtYXZfV.js → index-mvD5mwcC.js} +3 -3
- package/templates/.agents/design/apps/catalog/dist/index.html +2 -2
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-BJ8b4xZr.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{Color-6AOWCN3U-Cm-yJJz_.js → Color-6AOWCN3U-CQLHzznn.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-kxWwSKin.js +146 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFilters.stories-Chm_dXV7.js +9 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DashboardFiltersSpecimen-9CaCbGIZ.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-ED52wFjY.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{DocsRenderer-JROSPFPF-Belk4jRr.js → DocsRenderer-JROSPFPF-BcLgM80v.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Primitives-DV6Bpudf.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{WithTooltip-7X4HQR7L-DoPvjkS1.js → WithTooltip-7X4HQR7L-BKNiAz_E.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatus.stories-BL19HGOo.js +17 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/WorkspaceStatusSpecimen-DQnSS6s9.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-DRQKCCAG-B1itKXEN.js → chunk-DRQKCCAG-DZBcXL-p.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{chunk-W22LQPXL-C-Eb5SPY.js → chunk-W22LQPXL-CF3y2mfo.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{components-DnyKLwhj.js → components-BVjxMRGq.js} +5 -5
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-Do9sjqiW.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-0W0Gj_Gs.css +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{iframe-DcXBsFPz.js → iframe-CTWGZcEe.js} +4 -4
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{react-18-CRM89QRf.js → react-18-B9_a4mHb.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-NrUxok8K.js +1 -0
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{syntaxhighlighter-YFXUGROL-B03jQGTF.js → syntaxhighlighter-YFXUGROL-F_p8E2xc.js} +1 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/{theming-4ZyufAga.js → theming-fbSD9ZLF.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/storybook-core-server-presets-0/common-manager-bundle.js +3 -3
- package/templates/.agents/design/apps/catalog/package.json +1 -1
- package/templates/.agents/design/apps/catalog/src/components/DashboardFiltersSpecimen.tsx +61 -0
- package/templates/.agents/design/apps/catalog/src/components/Primitives.tsx +24 -0
- package/templates/.agents/design/apps/catalog/src/components/StackVersionFieldSpecimen.tsx +70 -0
- package/templates/.agents/design/apps/catalog/src/components/WorkspaceStatusSpecimen.tsx +42 -0
- package/templates/.agents/design/apps/catalog/src/design-contract.test.ts +27 -13
- package/templates/.agents/design/apps/catalog/src/pages/ComponentsPage.tsx +52 -0
- package/templates/.agents/design/apps/catalog/src/pages/DesignSystemPage.tsx +15 -1
- package/templates/.agents/design/apps/catalog/src/stories/Components.stories.tsx +32 -0
- package/templates/.agents/design/apps/catalog/src/stories/DashboardFilters.stories.tsx +7 -0
- package/templates/.agents/design/apps/catalog/src/stories/WorkspaceStatus.stories.tsx +12 -0
- package/templates/.agents/design/apps/catalog/src/styles/components.css +84 -3
- package/templates/.agents/design/apps/catalog/src/styles/stack-version-field.css +17 -0
- package/templates/.agents/design/apps/catalog/src/styles.css +2 -0
- package/templates/.agents/design/packages/local-runtime/package.json +1 -1
- package/templates/.agents/design/tokens.json +32 -0
- package/templates/.agents/requirements/autonomous-assurance.md +1 -1
- package/templates/.agents/requirements/cloud-hostinger-autonomy.md +1 -1
- package/templates/.agents/requirements/comparative-audit.md +1 -1
- package/templates/.agents/requirements/context-engine.md +1 -1
- package/templates/.agents/requirements/cost-observability.md +1 -1
- package/templates/.agents/requirements/dashboard-launch.md +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 +1 -1
- package/templates/.agents/requirements/model-orchestration.md +1 -1
- package/templates/.agents/requirements/public-distribution.md +9 -3
- package/templates/.agents/requirements/software-architecture.md +1 -1
- package/templates/.agents/requirements/strategic-improvements.md +1 -1
- package/templates/.agents/requirements/work-lifecycle.md +1 -1
- package/templates/.agents/requirements/zaip-strategic-95.md +1 -1
- package/templates/.agents/rules/autonomy-decision.md +1 -0
- package/templates/.agents/rules/workflow.md +2 -2
- package/templates/.agents/runtime/VERSION +1 -1
- package/templates/.agents/runtime/bin/zaip.mjs +27 -26
- package/templates/.agents/runtime/checksums.sha256 +5 -5
- package/templates/.agents/runtime/manifest.json +1 -1
- package/templates/.agents/runtime/provenance.json +4 -4
- package/templates/.agents/runtime/sbom.cdx.json +1 -1
- package/templates/.agents/skills/zaip-skill-execution/SKILL.md +13 -0
- package/templates/.agents/skills/zaip-skill-execution/references/autonomous-continuation.md +17 -0
- package/templates/.agents/skills/zaip-skill-execution/references/correction-cycle.md +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/SKILL.md +9 -6
- package/templates/.agents/skills/zaip-skill-github-deploy/agents/openai.yaml +1 -1
- package/templates/.agents/skills/zaip-skill-github-deploy/references/deployment-workflow.md +11 -9
- package/templates/.agents/skills/zaip-skill-github-deploy/references/release-identity.md +2 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs +1 -2
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs +9 -1
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs +23 -0
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.mjs +2 -6
- package/templates/.agents/skills/zaip-skill-github-deploy/scripts/preflight.test.mjs +15 -1
- package/templates/.agents/skills/zaip-skill-move-prd/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-move-spec/SKILL.md +4 -0
- package/templates/.agents/skills/zaip-skill-prd/SKILL.md +3 -3
- package/templates/.agents/skills/zaip-skill-release-qualification/SKILL.md +11 -8
- package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md +13 -12
- package/templates/.agents/skills/zaip-skill-setup/SKILL.md +17 -2
- package/templates/.agents/skills/zaip-skill-setup/agents/openai.yaml +1 -1
- package/templates/.agents/skills/zaip-skill-spec/SKILL.md +2 -2
- package/templates/.agents/zaip-aios/VERSION +1 -1
- package/templates/template-manifest.json +445 -245
- package/templates/.agents/dashboard/apps/frontend/dist/assets/ProjectSettingsPage-BpsAFy0g.js +0 -3
- package/templates/.agents/dashboard/apps/frontend/dist/assets/cost-monitor--iPcnZdx.js +0 -68
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-Cmlx8OYH.css +0 -1
- package/templates/.agents/dashboard/apps/frontend/dist/assets/index-DfdlGa7c.js +0 -2
- package/templates/.agents/design/apps/catalog/dist/assets/index-BEmIE7WE.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/assets/index-BJV597iq.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-B_WhrCZe.js +0 -72
- package/templates/.agents/design/apps/catalog/dist/assets/index-CqqYWY2f.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/assets/index-D9pj7Jlf.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/assets/index-i_PO2k9R.js +0 -9
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/CatalogShell-Cstn1UwA.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/Components.stories-D1WopB2L.js +0 -137
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/DesignSystem.stories-DQ9PJ3N3.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/formatter-L2YTDE3Q-D0OSgxWz.js +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/iframe-BEmIE7WE.css +0 -1
- package/templates/.agents/design/apps/catalog/dist/storybook/assets/react-C3tkVMIp.js +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
b146bd0c7c60b1ab43c4f71e0b1d2262c6df6da6f7053a0425f834ccb77a6b48 LICENSE
|
|
2
2
|
bc02cba77e8d51e5c580f43668863dc868eda66f1ff663bfaa49fcf3ca16320e THIRD_PARTY_NOTICES.md
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
76120c1f2c4311c2154c22a6b58e00e411e0ebe76afae0daf608d9196c61f114 VERSION
|
|
4
|
+
cbff3ad8c72113f0dc488435be4fc09422dc7917dff2aeb00916aa1d1a1a9015 bin/zaip.mjs
|
|
5
|
+
a88665505d09788febe6df78f48803e84a6869dc14dcb84af6369c029ea95c96 manifest.json
|
|
6
6
|
7f89219d7c567c82a51679ad136d84364bded7ac659492537e125d33b1d58a7a migrations/001-layout-v1.json
|
|
7
7
|
5f8c48b286d0b44d8fbb57a9a5d009a8a500439aa3148d750b8f193f72995c9f migrations/002-layout-v2.json
|
|
8
8
|
2d738247131a923ea6e3a32d0d1d6de763866fd96a8a8dc75d127a343809b0aa pnpm-lock.sha256
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
1a4556299d5ac62fe6e010a166697b772309543d2aefdb55c2f161dfc4e58016 provenance.json
|
|
10
|
+
043030cee5e42466be7b771992b6a83d390babdfecdcc69f0babc329ac8a0def sbom.cdx.json
|
|
11
11
|
b3ffedf9e146be802a15b4009f33e031dec3071ca1525e12c67606fd964a3067 schemas/contracts.schema.json
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"statement_type": "self_reported_build_integrity",
|
|
4
4
|
"authenticity": "unverified",
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.5.0",
|
|
6
6
|
"source_origin": "zaip-aios:local-build",
|
|
7
7
|
"lockfile_sha256": "f8557f3600849eb880b8f245b63b80fed9a3e9addf2c5f2c6d492547af900219",
|
|
8
|
-
"sbom_sha256": "
|
|
9
|
-
"runtime_sha256": "
|
|
10
|
-
"statement_sha256": "
|
|
8
|
+
"sbom_sha256": "043030cee5e42466be7b771992b6a83d390babdfecdcc69f0babc329ac8a0def",
|
|
9
|
+
"runtime_sha256": "85e40f8049e1bd81b58ea491c44ea76471432a86c866a5820d15ce8e0a34a0ae",
|
|
10
|
+
"statement_sha256": "bf42821431565815e19d8f6f66f3a2450078322b38739ac707efbbb5c87e9ae9"
|
|
11
11
|
}
|
|
@@ -11,6 +11,19 @@ Carregue [a governança de execução e delegação](references/runtime-governan
|
|
|
11
11
|
|
|
12
12
|
Use esta skill somente quando o usuário pedir execução. `prepare` não autoriza mutação nem promoção para `ready`; quando a execução foi pedida explicitamente, prepare o PRD/SPEC ainda em `draft`, se necessário, e então execute sem exigir outra confirmação intermediária.
|
|
13
13
|
|
|
14
|
+
## Continuidade do pedido de execução
|
|
15
|
+
|
|
16
|
+
“Execute esta SPEC/este PRD” autoriza finalizar a preparação necessária, materializar, ativar e executar toda a DAG selecionada até verificação e finalização. Essa autorização permanece durante a preparação e o rework necessário dentro do mesmo escopo; um sucessor canônico preserva o vínculo e a autorização existente. Pedido somente de planejamento ou de `ready` continua sem autorizar implementação.
|
|
17
|
+
|
|
18
|
+
- Não encerre após criar/validar plano, sucessor, DAG ou Execution ativa. Não peça “continue execução” nem outra confirmação só porque a preparação consumiu tempo ou contexto; faça checkpoint/refresh e prossiga.
|
|
19
|
+
- `spec execute`/`prd execute` ativam o macro e retornam `continuation.required`; isso é handoff obrigatório, não prova de implementação. Em runtime gerenciado, acione `execution run EXEC`; na colaboração nativa Codex, siga a seção de DAG nativa abaixo. Use somente um caminho de dispatch, com a mesma Execution e atribuição válida.
|
|
20
|
+
- Depois de cada Task, execute as próximas elegíveis; ao terminar a DAG, realize os gates parentais e Gui. Só encerre com resultado observado ou impedimento concreto após recuperação permitida. Ramos independentes continuam somente quando a política de falha da DAG permitir.
|
|
21
|
+
- Falta real de autoridade, informação essencial, capacidade do host ou gates continua sendo bloqueio. Informe a causa e a condição de retomada; não invente sucesso, nova autorização, identidade ou ancestralidade para continuar.
|
|
22
|
+
|
|
23
|
+
Antes de encerrar com trabalho pendente ou responder a uma falha, aplique [continuidade automática e parada justificada](references/autonomous-continuation.md). O perfil congelado e seu ledger decidem recuperação; reparação elegível usa a autorização existente, sem pedir outro turno.
|
|
24
|
+
|
|
25
|
+
## Passos de execução
|
|
26
|
+
|
|
14
27
|
1. Carregue o PreparedPlan e valide hash, origem, Requirements/AC, DAG, write scopes e estado atual. Antes de selecionar executor, carregue as Rules aplicáveis; para decisão comercial, use `$RULE-SPECIALIST-ROUTING` como fonte única da matriz de roteamento. Ao construir ou diagnosticar o plano externo, leia [o contrato compacto](references/prepared-plan.md).
|
|
15
28
|
2. Materialize idempotentemente Change, Tasks e Execution antes da primeira alteração do produto.
|
|
16
29
|
3. A partir da tentativa explícita de `execute`, classifique uso como `execution`; inicie Execution, Changes, Tasks elegíveis e Runs com atribuição ao nível de entrada (`task`, `spec` ou `prd`). Ausência de diff não retroage a fase: registre `changed_files` vazio e o resultado real.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Continuidade automática e parada justificada
|
|
2
|
+
|
|
3
|
+
O desenvolvimento autorizado continua automaticamente. Antes de terminar um turno com trabalho pendente, o orquestrador aplica esta sequência:
|
|
4
|
+
|
|
5
|
+
1. Consulte o estado real, a autorização vigente, a política da DAG e o perfil congelado da Task. Use o ledger persistente existente; na ausência de autonomy-v1, respeite os limites legados. Configuração nova não renova tentativas antigas; valores desconhecidos não significam zero ou ilimitado.
|
|
6
|
+
2. Havendo trabalho elegível, implemente, valide e continue as próximas Tasks. Agente ativo, lease ocupado, checkpoint de contexto e transição de fase exigem espera ou refresh, não uma mensagem “continue execução”. Não duplique invocações pendentes.
|
|
7
|
+
3. Falha recuperável dentro do escopo aciona diagnóstico, retry operacional, reparação ou replanejamento permitido pelo perfil, sem nova confirmação. Registre cada tentativa e reserve o orçamento antes do dispatch. Os comandos explícitos de resume/rework são operações canônicas que o agente executa com a autorização já vigente; não significam exigir outro pedido humano.
|
|
8
|
+
4. Pare quando houver cancelamento humano, impedimento de autoridade/segurança, dependência ou capacidade essencial indisponível após recuperação permitida, falha impeditiva ou esgotamento real da política. Nunca contorne esses motivos, apague contadores, aumente perfil, reabra completed/cancelled ou invente prova. Perfil Persistente não remove esses limites, embora não tenha teto numérico de tentativas.
|
|
9
|
+
5. Respeite failure_policy: continue_independent permite ramos elegíveis independentes; stop_on_terminal_failure impede novo dispatch enquanto o motivo terminal permanecer. Nenhuma política autoriza executar dependentes sem aceite da dependência.
|
|
10
|
+
6. Após a última Task, avance para gates parentais e finalização. A resposta terminal deve ser conclusão comprovada ou parada justificada; quantidade de trabalho, duração e tamanho de contexto não são falhas do produto.
|
|
11
|
+
|
|
12
|
+
## Saídas e papéis
|
|
13
|
+
|
|
14
|
+
- Em progresso, informe o resultado observado e a próxima ação que está executando. Não termine com “envie continue”, “posso prosseguir?” ou “aguardo autorização” quando a autorização e a recuperação aplicável já existem.
|
|
15
|
+
- Em parada real, informe Task/Execution afetada, motivo comprovado, perfil e consumo observado quando disponíveis, recuperação tentada, condição objetiva de retomada e a única ação humana necessária, se houver. Não sugira uma nova tentativa que ultrapasse o perfil.
|
|
16
|
+
- Executor termina sua unidade e devolve evidências ao orquestrador; reviewer/finalizer devolvem sua decisão e não implementam nem criam filhos. O término de um filho não autoriza o orquestrador a abandonar a entrega.
|
|
17
|
+
- Stop do host é sinal de término físico, não autorização para fabricar dispatch, reabrir registros ou aprovar trabalho. Preserve recibos, idempotência e a proteção contra loops do hook. Continuidade é realizada pela invocação viva ou pelo coordenador autorizado.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Ciclo de correção e bloqueio
|
|
2
2
|
|
|
3
|
-
Carregue esta referência somente antes de uma nova correção. Falha operacional transitória, cuja recuperação é esperada, recebe retry limitado; impedimento essencial deixa a Task `blocked`; falha lógica exige correção localizada ou repair/rework
|
|
3
|
+
Carregue esta referência somente antes de uma nova correção. Falha operacional transitória, cuja recuperação é esperada, recebe retry limitado; impedimento essencial deixa a Task `blocked`; falha lógica exige correção localizada ou comando canônico de repair/rework dentro da autorização vigente. Operação explícita não exige nova autorização humana quando escopo, perfil e ledger permitem recuperação automática.
|
|
4
4
|
|
|
5
5
|
Registre nos findings, Change ou Run existentes somente resultados observáveis: falha, tentativa e resultado, aprendizado ou hipótese nova, e próxima ação e teste discriminante; não registre raciocínio privado. Se a mesma falha reaparecer após uma correção, revise a hipótese antes de editar novamente. Evidência pode refutá-la mesmo quando o teste não passa. Diff, ID cosmético ou mera ausência de erro não demonstram avanço.
|
|
6
6
|
|
|
7
|
-
Preserve escopo e critérios de aceite; evite melhorias opcionais e valide primeiro a hipótese específica, repetindo validação ampla somente por mudança relevante ou gate exigido. Respeite os limites e contadores existentes, sem criar paralelos; um replanejamento não os reinicia nem cria identidades novas para ganhar tentativas.
|
|
7
|
+
Preserve escopo e critérios de aceite; evite melhorias opcionais e valide primeiro a hipótese específica, repetindo validação ampla somente por mudança relevante ou gate exigido. Respeite os limites e contadores existentes, sem criar paralelos; um replanejamento não os reinicia nem cria identidades novas para ganhar tentativas. Esgotada a recuperação, use `failed` somente para impedimento técnico comprovado; falta de acesso, prova, autoridade ou conclusão segura usa `blocked`, com a condição objetiva de retomada. Não peça “continue execução” para repetir uma tentativa vedada. Antes de uma parada, aplique [o contrato de continuidade](autonomous-continuation.md). Astra só é usado onde a política atual permite; Task avulsa preserva modelo e effort selecionados pelo host.
|
|
@@ -13,6 +13,7 @@ Read [the deployment workflow](references/deployment-workflow.md) for the detail
|
|
|
13
13
|
|
|
14
14
|
- The exact command “faça deploy” authorizes commits covering all versionable pending changes in the selected worktree, followed by push and Release, after secret, size and ignore checks. The selected worktree is the complete publication scope; other worktrees remain outside it.
|
|
15
15
|
- Resolve dirty state, untracked files, generated projections, branch divergence and repairable local/remote failures automatically within that scope. Limit repairs to the evidenced cause, with up to five repair cycles; stop when the same root cause remains after two repairs.
|
|
16
|
+
- Treat the selected worktree's local branch, recovery branch or detached state as the source candidate only. The configured deploy branch is the remote target; a mismatch between source and target is not a blocker and never requires checking out the target locally.
|
|
16
17
|
- Stop only for an unresolved index conflict after bounded repair, secrets, files at or above GitHub's 100 MB limit, unavailable authentication/authority, external outage, destructive requirement, or ambiguous scope expansion.
|
|
17
18
|
- Never force push, rewrite history, replace remotes, change credentials or Git/SSH configuration, bypass checks, or deploy to another service.
|
|
18
19
|
- Git-only publication of existing commits needs no artificial Task. Product edits or new product commits require real Task ownership; materialize missing authorized work before editing. Records/local-only snapshots are exempt.
|
|
@@ -24,9 +25,9 @@ Before the first Git mutation, retain sanitized authority in progress and the te
|
|
|
24
25
|
## Prepare the selected worktree
|
|
25
26
|
|
|
26
27
|
1. Inspect Git status, pending paths and diff summary. Review every inventoried versionable file for secrets, size and ignore policy.
|
|
27
|
-
2. Read `.agents/config/project.yaml`. Resolve the explicit frontend/backend
|
|
28
|
-
3. Prove folder-scoped SSH using `scripts/preflight.mjs --repository . --remote origin --scope frontend` (or the actual authorized scope). Run at most once per cycle; recheck only after an evidenced repair or changed target. Require SSH origin, configured key, Git identity and successful `ls-remote`; no process overrides or credential/config edits.
|
|
29
|
-
4. Fetch once per cycle and compute ahead/behind. Before reconciliation, create a recoverable branch reference and preserve tracked plus untracked changes in a named stash. Use bounded rebase by default. Restore with `git stash apply`; verify preservation, retain the stash until success, and combine conflicts from observed intent. Never reset or force.
|
|
28
|
+
2. Read `.agents/config/project.yaml`. Resolve the explicit frontend/backend target from `deploy.frontend.branch` or `deploy.backend.branch`; configured `main` is permitted. `deploy.database.branch` must remain literal `beta`. The legacy `deploy.branch` fallback remains non-production. Record the local source branch or detached state separately from this target.
|
|
29
|
+
3. Prove folder-scoped SSH using `scripts/preflight.mjs --repository . --remote origin --scope frontend` (or the actual authorized scope). Run at most once per cycle; recheck only after an evidenced repair or changed target. Require SSH origin, configured key, Git identity and successful `ls-remote`; no process overrides or credential/config edits. Preflight accepts a named recovery branch or detached source and returns it separately from the configured target.
|
|
30
|
+
4. Fetch once per cycle and compute ahead/behind between the source candidate and configured remote target. Before reconciliation, create and verify a recoverable branch reference, including for detached HEAD, and preserve tracked plus untracked changes in a named stash. Use bounded rebase by default without switching to the target branch. Restore with `git stash apply`; verify preservation, retain the stash until success, and combine conflicts from observed intent. Never reset or force.
|
|
30
31
|
5. Re-inventory after reconciliation. Stage the reviewed paths with `git add -- <explicit-pathspecs>`; never use `git add -A`, `git add -u`, broad globs or ignored files. Explicit deploy permits the whole inventoried selected worktree, without mandatory functional partitioning.
|
|
31
32
|
6. Run required or evidenced gates only. Reuse unchanged valid evidence; bypass Turbo cache for the failed remote gate when repairing CI. A failed gate starts a new cycle only after a concrete repair or new remote evidence.
|
|
32
33
|
|
|
@@ -42,15 +43,17 @@ Every product commit requires causal Task/Change/Execution records and matching
|
|
|
42
43
|
|
|
43
44
|
1. Compose `$zaip-skill-release-qualification` and follow [local preparation](../zaip-skill-release-qualification/references/local-preparation.md). Synchronize and commit before preparing the clean exact SHA. Failed or stale evidence is not qualification.
|
|
44
45
|
2. Resolve the previous Release, next canonical version and package identity using [release identity](references/release-identity.md). For the framework, `vN.N` maps to package `N.N.0`; only GitHub Actions publishes `@zaip-ai/cli` to npm.
|
|
45
|
-
3. For `zaip-ai/zaip-aios`, use `scripts/local-release-deploy.mjs`. It prepares/verifies, pushes the exact SHA to configured `main`, uploads verified assets to a draft, then publishes the Release. Enable the thin publisher only after explicit rollout authority, public trust enrollment and signed
|
|
46
|
+
3. For `zaip-ai/zaip-aios`, use `scripts/local-release-deploy.mjs`. It prepares/verifies, pushes the exact SHA to configured `main`, uploads verified assets to a draft, then publishes the Release. Enable the thin publisher only after explicit rollout authority, public trust enrollment and signed local qualification. It validates published assets and runs one read-only installation smoke before npm; no private-draft pilot or write token is needed. GitHub Release publication and npm completion remain separate.
|
|
46
47
|
4. Consumers use `scripts/consumer-release-preparation.mjs guarded-push` with their own policy and explicit branch, SHA and trusted receipt. They have no framework npm/TGZ requirement. See the preparation guide for bootstrap and guarded commands.
|
|
47
|
-
5. Immediately before delivery, reread the configured target; if changed, restart preparation. Helpers bind the exact candidate to `HEAD:refs/heads/<configured branch>` (or its equivalent immutable-SHA refspec); do not bypass them with a manual push.
|
|
48
|
+
5. Immediately before delivery, reread the configured target; if changed, restart preparation. Helpers bind the exact candidate to `HEAD:refs/heads/<configured branch>` (or its equivalent immutable-SHA refspec) independently of the local source branch; do not bypass them with a manual push.
|
|
48
49
|
6. After qualification, a missing Release is normal. Unless explicitly push-only, automatically create the draft for that SHA or resume a verified draft for the same SHA. Verify an already-published exact Release as a no-op; an API/authentication error never proves absence. Refuse conflicting tags/assets without overwrite.
|
|
49
50
|
7. Review complete categorized UTF-8 notes and their exact-range inventory under [release notes](references/release-notes.md). Never use `--generate-notes` as the Release body. Validate the notes, publish with the reviewed notes file, and compare the published body byte-for-byte on readback. Preserve a configured human-only review policy where applicable.
|
|
50
51
|
|
|
51
52
|
## Proportional validation
|
|
52
53
|
|
|
53
|
-
Guarded local framework delivery requires a valid `
|
|
54
|
+
Guarded local framework delivery requires a valid `essential-v3` receipt for the exact candidate.
|
|
55
|
+
It runs the fixed essential integrity, build/type, package and clean-consumer doctor/SQLite/API
|
|
56
|
+
smoke checks. Dashboard-per-tab and XLSX certification are reserved for explicit `--profile full`.
|
|
54
57
|
Without explicit thin-path activation, the default GitHub publisher separately requires the legacy workflow's
|
|
55
58
|
exact-candidate qualification receipt after its full gate and TGZ matrix.
|
|
56
59
|
Rapid impact checks have no test-count ceiling and cannot substitute for release evidence.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "ZAIP GitHub Deploy"
|
|
3
3
|
short_description: "Publicacao GitHub explicita, Git-only e verificavel"
|
|
4
|
-
default_prompt: "Use $zaip-skill-github-deploy para pedidos explicitos de deploy, push, publicar ou publicacao GitHub; quando o usuario disser 'faca deploy', trate o worktree selecionado inteiro como escopo autorizado, incluindo arquivos novos, apos os gates de segredos, tamanho, conflitos e SSH;
|
|
4
|
+
default_prompt: "Use $zaip-skill-github-deploy para pedidos explicitos de deploy, push, publicar ou publicacao GitHub; quando o usuario disser 'faca deploy', trate o worktree selecionado inteiro como escopo autorizado, incluindo arquivos novos, apos os gates de segredos, tamanho, conflitos e SSH; trate a branch local ou detached como origem e a branch configurada como alvo remoto, publicando por refspec explicito via SSH da pasta sem force push nem reescrita de historico."
|
|
5
5
|
policy:
|
|
6
6
|
allow_implicit_invocation: true
|
|
@@ -30,12 +30,12 @@ For publication of existing commits, the conversation and terminal deploy report
|
|
|
30
30
|
## Multiple worktrees and divergent history
|
|
31
31
|
|
|
32
32
|
1. Resolve the selected publishing worktree and inspect its `git status --porcelain`; use `git worktree list --porcelain` only to detect a path collision, never to scan every worktree.
|
|
33
|
-
2. Select exactly one publishing worktree.
|
|
34
|
-
3. Report a detected path collision, but do not block solely because the selected worktree is dirty or contains mixed changes; the explicit “faça deploy” authorization includes those changes. Stop only for an unresolved index conflict, secret/oversize file, authentication failure, or destructive/rewrite requirement.
|
|
35
|
-
4. Prunable or missing worktrees are reported but never pruned automatically.
|
|
36
|
-
5. Fetch once and compute ahead/behind
|
|
33
|
+
2. Select exactly one publishing worktree. Its named branch, recovery branch or detached HEAD is the source candidate; `deploy.<scope>.branch` is the remote target. A different local branch or detached source does not join another worktree and is not a blocker. The selected worktree is the complete publication scope.
|
|
34
|
+
3. Report a detected path collision, but do not block solely because the selected worktree is dirty, detached, on a recovery branch or contains mixed changes; the explicit “faça deploy” authorization includes those changes. Stop only for an unresolved index conflict, secret/oversize file, authentication failure, or destructive/rewrite requirement.
|
|
35
|
+
4. Prunable or missing worktrees are reported but never pruned automatically. Unselected dirty detached or temporary worktrees are never deleted, reset, stashed or copied into the publishing worktree implicitly.
|
|
36
|
+
5. Fetch once and compute ahead/behind between the source candidate and the configured remote target. If it is behind or diverged, automatically reconcile only the selected source under this deploy authorization and continue; divergence is not a blocker by itself.
|
|
37
37
|
6. Before reconciliation, create a recoverable branch reference and preserve tracked plus untracked changes in a named stash. Verify both references before proceeding. Use `rebase` unless the user explicitly selected `merge`.
|
|
38
|
-
7. Apply the bounded reconciliation without force. Restore with `git stash apply`, retain the stash until publication succeeds, and resolve generated aggregate conflicts by regenerating them from canonical sources. For ordinary textual conflicts, combine both sides when safe; use the selected worktree's intended version only when the diff and commit history establish that it supersedes the remote version.
|
|
38
|
+
7. Apply the bounded reconciliation without force and without checking out the configured target branch locally. Restore with `git stash apply`, retain the stash until publication succeeds, and resolve generated aggregate conflicts by regenerating them from canonical sources. For ordinary textual conflicts, combine both sides when safe; use the selected worktree's intended version only when the diff and commit history establish that it supersedes the remote version.
|
|
39
39
|
8. After restoration, prove that no unmerged paths remain, re-inventory the diff, and only then begin functional partitioning. Continue automatically through recoverable conflicts and pending repairs; stop only for a genuine terminal blocker defined below.
|
|
40
40
|
|
|
41
41
|
## Repair-loop integrity
|
|
@@ -49,7 +49,7 @@ For publication of existing commits, the conversation and terminal deploy report
|
|
|
49
49
|
|
|
50
50
|
## Prove folder-scoped SSH first
|
|
51
51
|
|
|
52
|
-
From the repository root, read `.agents/config/project.yaml` immediately before deployment. `deploy.frontend.branch` and `deploy.backend.branch` are persistent authorization and may be `main`; pass their explicit `--scope`. `deploy.database.branch` is literal `beta`, never falls back to `main`, and requires `--scope database`. The internal `--scope framework` and a legacy preflight without `--scope` use `deploy.branch`, which must remain non-production. A malformed config is a terminal preflight failure. Preflight never creates, renames
|
|
52
|
+
From the repository root, read `.agents/config/project.yaml` immediately before deployment. `deploy.frontend.branch` and `deploy.backend.branch` are persistent authorization and may be `main`; pass their explicit `--scope`. `deploy.database.branch` is literal `beta`, never falls back to `main`, and requires `--scope database`. The internal `--scope framework` and a legacy preflight without `--scope` use `deploy.branch`, which must remain non-production. A malformed config is a terminal preflight failure. Preflight reports the local source branch or detached state separately, treats the configured branch only as the remote target, and never creates, renames or switches a branch.
|
|
53
53
|
|
|
54
54
|
For a database migration request, the database worktree may push only `HEAD:refs/heads/request/<id>` to open its PR against `beta`. That route never targets `main`, never applies SQL, and does not provision a beta branch or Supabase resource.
|
|
55
55
|
|
|
@@ -70,9 +70,11 @@ Run preflight once at the start of the authorized deployment. Classify a failure
|
|
|
70
70
|
|
|
71
71
|
## Validation budget
|
|
72
72
|
|
|
73
|
-
Guarded local framework preparation requires `
|
|
73
|
+
Guarded local framework preparation requires the signed `essential-v3` receipt. It excludes
|
|
74
|
+
dashboard-tab and XLSX certification; select `--profile full` explicitly when that extended
|
|
75
|
+
coverage is required.
|
|
74
76
|
The default legacy GitHub publisher accepts its separate exact-candidate qualification
|
|
75
|
-
receipt only after the remote full gate and TGZ matrix. Explicit administrator activation after signed
|
|
77
|
+
receipt only after the remote full gate and TGZ matrix. Explicit administrator activation after signed local qualification switches the
|
|
76
78
|
publisher to the verified local receipt. One read-only install smoke then gates npm;
|
|
77
79
|
no private-draft pilot is required. Activation is never implicit.
|
|
78
80
|
Follow [local preparation](../../zaip-skill-release-qualification/references/local-preparation.md)
|
|
@@ -103,7 +105,7 @@ For a consumer repository, bootstrap its own Ed25519 trust store and define `con
|
|
|
103
105
|
|
|
104
106
|
## Synchronize and publish each cycle
|
|
105
107
|
|
|
106
|
-
Fetch the selected remote and configured branch once per publication cycle, without SSH overrides. Compute ahead/behind against `<selected remote>/<configured branch>`. When
|
|
108
|
+
Fetch the selected remote and configured target branch once per publication cycle, without SSH overrides. Compute ahead/behind from the selected source candidate against `<selected remote>/<configured branch>`. When the source is behind or diverged, apply the recorded bounded reconciliation strategy in place and continue after successful verification; do not switch to the target branch merely to satisfy publication. Stop only if reconciliation cannot be completed safely within the bounded repair cycles. Never reset or force.
|
|
107
109
|
|
|
108
110
|
Commits created during Task execution use `[CODEX|CLAUDE] [P:XXXX] [S:XXXX] [T:XXXX] <Task title>`: the effective executing-agent prefix followed by compact lineage.
|
|
109
111
|
|
|
@@ -34,10 +34,10 @@ current head `sha` and matching `npm_channel`. This extended path qualifies sour
|
|
|
34
34
|
and the runtime matrix; it does not publish npm or create a Release.
|
|
35
35
|
|
|
36
36
|
With explicitly enabled `ZAIP_LOCAL_RELEASE_ENABLED=true`, guarded delivery uses
|
|
37
|
-
the signed local `
|
|
37
|
+
the signed local `essential-v3` receipt and enrolled public trust. It does not require a
|
|
38
38
|
legacy `qualify-cli.yml` receipt or a private-draft pilot. GitHub verifies the
|
|
39
39
|
published assets and runs one read-only exact-TGZ installation/doctor smoke before
|
|
40
|
-
the separate npm publication job.
|
|
40
|
+
the separate npm publication job. Extended full qualification remains an explicit local option.
|
|
41
41
|
|
|
42
42
|
Only when the reduced path is disabled does the legacy publisher require
|
|
43
43
|
`github-readiness.mjs` with `--workflow-path .github/workflows/qualify-cli.yml`
|
package/templates/.agents/skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs
CHANGED
|
@@ -185,8 +185,7 @@ export async function prepare(input) {
|
|
|
185
185
|
fail("SHA and GitHub version vN.N are required");
|
|
186
186
|
const repository = resolve(input.repository),
|
|
187
187
|
branch = await configuredBranch(repository, input.scope ?? "frontend");
|
|
188
|
-
if (branch !== input.branch
|
|
189
|
-
fail("checked out branch does not match configured branch");
|
|
188
|
+
if (branch !== input.branch) fail("requested target branch does not match configured branch");
|
|
190
189
|
const policyDigest = await hash(input.policy),
|
|
191
190
|
before = identity(repository, input.sha),
|
|
192
191
|
required = policyFor(await json(input.policy), input);
|
|
@@ -46,7 +46,7 @@ test("resolves only the selected application scope from nested deploy configurat
|
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
test("GitHub-only guard binds
|
|
49
|
+
test("GitHub-only guard binds target config and fixed refspec independently of source branch", async () => {
|
|
50
50
|
const root = await mkdtemp(join(tmpdir(), "zaip-consumer-"));
|
|
51
51
|
try {
|
|
52
52
|
const repo = join(root, "repo");
|
|
@@ -96,6 +96,10 @@ test("GitHub-only guard binds parsed config, policy, receipt expiry and fixed re
|
|
|
96
96
|
}),
|
|
97
97
|
);
|
|
98
98
|
await bootstrap({ trustStore: trust, publicKey: pub, keyId: "consumer" });
|
|
99
|
+
git(repo, "checkout", "-qb", "codex/recovery");
|
|
100
|
+
const recoveryPrepared = await prepare(input);
|
|
101
|
+
await verifyPreparation({ ...input, receipt: recoveryPrepared.receiptPath });
|
|
102
|
+
git(repo, "checkout", "--detach", sha);
|
|
99
103
|
const prepared = await prepare(input);
|
|
100
104
|
await verifyPreparation({ ...input, receipt: prepared.receiptPath });
|
|
101
105
|
const calls = [];
|
|
@@ -105,6 +109,10 @@ test("GitHub-only guard binds parsed config, policy, receipt expiry and fixed re
|
|
|
105
109
|
["preflight", "push"],
|
|
106
110
|
);
|
|
107
111
|
assert.equal(calls[1].refspec, sha + ":refs/heads/main");
|
|
112
|
+
await assert.rejects(
|
|
113
|
+
() => prepare({ ...input, branch: "beta" }),
|
|
114
|
+
/requested target branch does not match configured branch/,
|
|
115
|
+
);
|
|
108
116
|
await assert.rejects(
|
|
109
117
|
() => prepare({ ...input, commands: [{ command: "node", args: ["-e", "process.exit(2)"] }] }),
|
|
110
118
|
/differ/,
|
package/templates/.agents/skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs
CHANGED
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
2
3
|
import { readFile } from "node:fs/promises";
|
|
3
4
|
import { resolve } from "node:path";
|
|
4
5
|
import test from "node:test";
|
|
5
6
|
|
|
6
7
|
const root = resolve(import.meta.dirname, "..", "..", "..");
|
|
7
8
|
const skillRoot = resolve(root, "skills", "zaip-skill-github-deploy");
|
|
9
|
+
const managedDeployFiles = [
|
|
10
|
+
"rules/workflow.md",
|
|
11
|
+
"skills/zaip-skill-github-deploy/SKILL.md",
|
|
12
|
+
"skills/zaip-skill-github-deploy/agents/openai.yaml",
|
|
13
|
+
"skills/zaip-skill-github-deploy/references/deployment-workflow.md",
|
|
14
|
+
"skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.mjs",
|
|
15
|
+
"skills/zaip-skill-github-deploy/scripts/consumer-release-preparation.test.mjs",
|
|
16
|
+
"skills/zaip-skill-github-deploy/scripts/github-deploy-contract.test.mjs",
|
|
17
|
+
"skills/zaip-skill-github-deploy/scripts/preflight.mjs",
|
|
18
|
+
"skills/zaip-skill-github-deploy/scripts/preflight.test.mjs",
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
test("framework lock matches the deploy guidance and executable contract", async () => {
|
|
22
|
+
const lock = await readFile(resolve(root, "config", "framework.lock.yaml"), "utf8");
|
|
23
|
+
for (const path of managedDeployFiles) {
|
|
24
|
+
const digest = createHash("sha256").update(await readFile(resolve(root, path))).digest("hex");
|
|
25
|
+
assert.ok(lock.includes(` .agents/${path}: ${digest}\n`), `${path} lock hash is stale`);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
8
28
|
|
|
9
29
|
test("explicit Git publication verbs select the guarded deploy skill", async () => {
|
|
10
30
|
const [skill, openai, core] = await Promise.all([
|
|
@@ -49,7 +69,10 @@ test("deploy permission and reconciliation remain explicit and recoverable", asy
|
|
|
49
69
|
assert.match(skill, /recoverable branch reference/);
|
|
50
70
|
assert.match(skill, /preserve tracked plus untracked changes in a named stash/);
|
|
51
71
|
assert.match(skill, /Restore with `git stash apply`/);
|
|
72
|
+
assert.match(skill, /local branch, recovery branch or detached state as the source candidate/);
|
|
73
|
+
assert.match(skill, /configured deploy branch is the remote target/);
|
|
52
74
|
assert.match(openai, /worktree selecionado inteiro como escopo autorizado/);
|
|
75
|
+
assert.match(openai, /branch local ou detached como origem/);
|
|
53
76
|
});
|
|
54
77
|
|
|
55
78
|
test("workflow retains the explicit publication routing contract", async () => {
|
|
@@ -31,12 +31,7 @@ try {
|
|
|
31
31
|
);
|
|
32
32
|
process.exit(0);
|
|
33
33
|
}
|
|
34
|
-
const checkedOutBranch = git(repository, ["branch", "--show-current"]).trim();
|
|
35
|
-
if (checkedOutBranch === "") fail("detached HEAD is not deployable");
|
|
36
|
-
if (checkedOutBranch !== configuredBranch)
|
|
37
|
-
fail(
|
|
38
|
-
`checked out branch ${checkedOutBranch} does not match validation deploy.branch ${configuredBranch}; switch or create the configured validation branch manually before publishing`,
|
|
39
|
-
);
|
|
34
|
+
const checkedOutBranch = git(repository, ["branch", "--show-current"]).trim() || null;
|
|
40
35
|
|
|
41
36
|
for (const variable of ["GIT_SSH", "GIT_SSH_COMMAND"]) {
|
|
42
37
|
if (process.env[variable]?.trim()) fail(`${variable} overrides folder-scoped Git SSH config`);
|
|
@@ -90,6 +85,7 @@ try {
|
|
|
90
85
|
configured_branch: configuredBranch,
|
|
91
86
|
production_branch: deployment.productionBranch,
|
|
92
87
|
checked_out_branch: checkedOutBranch,
|
|
88
|
+
source_detached: checkedOutBranch === null,
|
|
93
89
|
caller_branch: options.branch,
|
|
94
90
|
upstream: upstream || null,
|
|
95
91
|
remote: {
|
|
@@ -23,6 +23,8 @@ test("standalone consumer resolves fresh project targets without node_modules",
|
|
|
23
23
|
windowsHide: true,
|
|
24
24
|
env: { ...process.env, NODE_PATH: "" },
|
|
25
25
|
});
|
|
26
|
+
const git = (...args) =>
|
|
27
|
+
spawnSync("git", args, { cwd: root, encoding: "utf8", windowsHide: true });
|
|
26
28
|
const target = () => {
|
|
27
29
|
const result = run("--resolve-branch");
|
|
28
30
|
assert.equal(result.status, 0, result.stderr);
|
|
@@ -90,7 +92,19 @@ test("standalone consumer resolves fresh project targets without node_modules",
|
|
|
90
92
|
assert.match(run("--resolve-branch").stderr, /non-empty|unsupported keys|malformed/);
|
|
91
93
|
}
|
|
92
94
|
config("deploy: { branch: staging, production_branch: production }\n");
|
|
93
|
-
|
|
95
|
+
const recoveryBranch = run();
|
|
96
|
+
assert.notEqual(recoveryBranch.status, 0);
|
|
97
|
+
assert.doesNotMatch(recoveryBranch.stderr, /checked out branch|detached HEAD/i);
|
|
98
|
+
assert.match(recoveryBranch.stderr, /No such remote|remote get-url|push URL|core\.sshCommand/i);
|
|
99
|
+
assert.equal(git("config", "user.email", "x@y.invalid").status, 0);
|
|
100
|
+
assert.equal(git("config", "user.name", "x").status, 0);
|
|
101
|
+
assert.equal(git("add", ".").status, 0);
|
|
102
|
+
assert.equal(git("commit", "--quiet", "-m", "fixture").status, 0);
|
|
103
|
+
assert.equal(git("checkout", "--detach", "HEAD").status, 0);
|
|
104
|
+
const detached = run();
|
|
105
|
+
assert.notEqual(detached.status, 0);
|
|
106
|
+
assert.doesNotMatch(detached.stderr, /checked out branch|detached HEAD/i);
|
|
107
|
+
assert.match(detached.stderr, /No such remote|remote get-url|push URL|core\.sshCommand/i);
|
|
94
108
|
for (const branch of [
|
|
95
109
|
"bad..branch",
|
|
96
110
|
"bad.lock/child",
|
|
@@ -33,6 +33,10 @@ Use apenas comandos canônicos ZAIP. Não edite status diretamente no frontmatte
|
|
|
33
33
|
- `desenvolva|melhore|aprimore` sempre cria refinamento ou rework e nunca executa automaticamente. Preserve snapshots e tentativas; depois do novo plano, exija nova promoção.
|
|
34
34
|
- PRD `cancelled` é imutável. Use `prd rework <ID-CANCELADO>` para criar sucessor `draft` com tag `rework` e vínculo `rework_of_prd_id`; nunca reabra ou reescreva o cancelado.
|
|
35
35
|
|
|
36
|
+
## Continuidade após execute
|
|
37
|
+
|
|
38
|
+
Após ativar, siga imediatamente o contrato de continuidade de `$zaip-skill-execution`: execute as Tasks elegíveis e os gates parentais no mesmo fluxo. A resposta `continuation.required` da CLI indica trabalho pendente; ativação e materialização não comprovam implementação. Não solicite “continue execução” nem encerre por ter consumido o turno preparando o plano. Preserve bloqueios reais, escopo e autoridade.
|
|
39
|
+
|
|
36
40
|
## Verificar
|
|
37
41
|
|
|
38
42
|
Na continuação de um PRD preparado, reutilize a Execution de `plan_ref`/PreparedPlan. Para `blocked` ou `paused`, inspecione a causa e use a retomada canônica autorizada antes da captura; não repita `prd execute` contra um macro já materializado. `conversation start --intent continue --prd ID --execution EXEC` deve resolver a mesma Execution e fase `execution`, rejeitando divergências antes de escrever. Para colaboração nativa Codex, siga a seção de DAG nativa da skill de execução; `native-next` prepara envelopes e não substitui o spawn/capture observado nem os gates de entrega.
|
|
@@ -32,6 +32,10 @@ Use apenas comandos canônicos ZAIP. Não edite status diretamente no frontmatte
|
|
|
32
32
|
- `implemente` em `draft` finaliza o plano sem executar; em `ready` autoriza `execute`; em `active` continua; em `blocked|failed` usa resume/rework.
|
|
33
33
|
- `desenvolva|melhore|aprimore` sempre cria refinamento ou rework, preserva snapshots/tentativas e nunca executa automaticamente.
|
|
34
34
|
|
|
35
|
+
## Continuidade após execute
|
|
36
|
+
|
|
37
|
+
Após ativar, siga imediatamente o contrato de continuidade de `$zaip-skill-execution`: execute as Tasks elegíveis e os gates parentais no mesmo fluxo. A resposta `continuation.required` da CLI indica trabalho pendente; ativação e materialização não comprovam implementação. Não solicite “continue execução” nem encerre por ter consumido o turno preparando o plano. Preserve bloqueios reais, escopo e autoridade.
|
|
38
|
+
|
|
35
39
|
## Verificar
|
|
36
40
|
|
|
37
41
|
1. Leia novamente a SPEC após o comando.
|
|
@@ -46,13 +46,13 @@ Durante essa etapa, a Execution universal `interaction` e sua Run raiz continuam
|
|
|
46
46
|
1. Bloqueie PRD sem SPEC, SPEC de outro PRD, referência quebrada, AC vago, DAG cíclica, dependência entre SPECs ou write scopes concorrentes.
|
|
47
47
|
2. Construa uma DAG por SPEC; dependências nunca atravessam SPECs. Mantenha integração e outcomes como gates parentais do PRD.
|
|
48
48
|
3. Gere e valide o PreparedPlan conforme [o contrato compacto](../zaip-skill-execution/references/prepared-plan.md), persista-o e pré-aloque IDs sem materializar trabalho executável nem mudar `draft` para `ready`. Um pedido explícito posterior de `prd ready` materializa, na mesma operação idempotente, a DAG selecionada em Execution, Changes e Tasks `planned`, sem iniciar a execução.
|
|
49
|
-
4. Após `prepare`,
|
|
49
|
+
4. Após `prepare`, pare em Definição somente quando o pedido se limitar a planejamento. Se o usuário já pediu execução, essa autorização cobre a preparação necessária: prossiga imediatamente com $zaip-skill-execution, sem nova confirmação.
|
|
50
50
|
|
|
51
51
|
## Handoff e analyze
|
|
52
52
|
|
|
53
|
-
Ao receber “execute esse PRD
|
|
53
|
+
Ao receber “execute esse PRD”, inclusive no mesmo turno da preparação, reutilize o ID canônico e delegue à skill de execução a captura inicial como continuação desse PRD. Não repita o intake `conversation --definition prd,spec` da autoria anterior e não recrie o pacote. Se o documento citado existir apenas como rascunho local, informe essa diferença: a existência de um arquivo de planejamento não comprova PRD canônico nem Run de delivery.
|
|
54
54
|
|
|
55
|
-
1. Pare em Definição após `prepare
|
|
55
|
+
1. Pare em Definição após `prepare` somente sem autorização de execução vigente. Somente após pedido explícito de promoção, use `$zaip-skill-move-prd`: `prd ready` deixa PRD/SPECs selecionadas em `ready` e materializa a DAG sem executá-la; cada Task materializada `planned` e nunca iniciada aparece em Pronto para Executar, mesmo vinculada a SPEC. Somente após pedido explícito de execução, delegue a persistência da continuação, ativação e orquestração para `$zaip-skill-execution`.
|
|
56
56
|
2. Na análise, mostre visão macro por PRD: SPECs, Tasks, Executions, Runs, outcomes, AC/evidência, retrabalho, tokens e custo por fase/total.
|
|
57
57
|
|
|
58
58
|
## Assurance de outcomes
|
|
@@ -21,7 +21,7 @@ their configured branch (default `beta`) and no framework npm requirements.
|
|
|
21
21
|
The deployment skill must call the guarded helper, which prepares and verifies before sending.
|
|
22
22
|
A changed candidate or invalid evidence requires new qualification.
|
|
23
23
|
Full source qualification runs locally. Extended GitHub qualification is manual;
|
|
24
|
-
the reduced publisher requires enrolled public trust and signed
|
|
24
|
+
the reduced publisher requires enrolled public trust and signed local qualification.
|
|
25
25
|
|
|
26
26
|
The only public npm package is `@zaip-ai/cli`; the installation entry point is
|
|
27
27
|
`npx @zaip-ai/cli@latest init`. Verify that release automation, manifests, and
|
|
@@ -29,19 +29,22 @@ registry checks target only this package before qualifying the next publication.
|
|
|
29
29
|
|
|
30
30
|
## Proportional validation
|
|
31
31
|
|
|
32
|
-
Local framework preparation
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
Local framework preparation defaults to signed `essential-v3`: deterministic source, lock,
|
|
33
|
+
build/type checks, package/SBOM/TGZ integrity, dependency audit and one clean installed-consumer
|
|
34
|
+
doctor/SQLite/API smoke. It deliberately does not certify every dashboard tab or XLSX export.
|
|
35
|
+
Use `--profile full` only for an explicit extended `full-v2` qualification; it retains
|
|
36
|
+
`pnpm qualify:full`, browser and XLSX coverage. The profile, fixed gate list and artifact digests
|
|
37
|
+
are signed, so an old `full-v2` or rapid receipt cannot satisfy the new default by accident.
|
|
38
|
+
The default legacy GitHub path retains its separate full receipt and exact-TGZ matrix. Rapid
|
|
39
|
+
checks remain diagnostics, never release receipts; timeouts fail visibly.
|
|
37
40
|
Follow [local preparation](references/local-preparation.md) for budgets, exact-candidate
|
|
38
41
|
evidence and cache validity. A failed or timed-out gate emits no success receipt.
|
|
39
42
|
Report local qualification, runtime matrix, GitHub and publication outcomes separately.
|
|
40
43
|
|
|
41
44
|
## Guarded local qualification and single remote smoke
|
|
42
45
|
|
|
43
|
-
An administrator explicitly enables `ZAIP_LOCAL_RELEASE_ENABLED=true` after
|
|
44
|
-
qualification and public trust enrollment. The guarded helper publishes the exact signed
|
|
46
|
+
An administrator explicitly enables `ZAIP_LOCAL_RELEASE_ENABLED=true` after signed essential
|
|
47
|
+
local qualification and public trust enrollment. The guarded helper publishes the exact signed
|
|
45
48
|
GitHub Release assets. The read-only verifier validates receipt, policy, SHA and TGZ,
|
|
46
49
|
then runs one Linux installation/doctor smoke before the isolated npm job receives
|
|
47
50
|
publication credentials. No private-draft pilot or contents-write token is required.
|
package/templates/.agents/skills/zaip-skill-release-qualification/references/local-preparation.md
CHANGED
|
@@ -13,18 +13,19 @@ to tag `vN.N` and package version `N.N.0`.
|
|
|
13
13
|
```text
|
|
14
14
|
node scripts/local-release-preparation.mjs keygen --output-dir <new-key-directory>
|
|
15
15
|
node scripts/local-release-preparation.mjs bootstrap --trust-store <trust-directory> --public-key <public-key.pem> --key-id maintainer --channels latest
|
|
16
|
-
node scripts/local-release-preparation.mjs prepare --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory>
|
|
16
|
+
node scripts/local-release-preparation.mjs prepare --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory> --profile essential
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
The framework policy is an administrator-reviewed file whose bytes must match the protected
|
|
20
20
|
GitHub policy. Gates are fixed in the versioned helper, not supplied by the caller. Preparation
|
|
21
|
-
fails at the first failed gate.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
fails at the first failed gate. The default `essential-v3` profile validates source size, locks,
|
|
22
|
+
build/type integrity, package/SBOM/TGZ binding, dependency audit and one clean installed-consumer
|
|
23
|
+
doctor/SQLite/API smoke. It does not run browser navigation across every dashboard tab or XLSX
|
|
24
|
+
exports. `--profile full` explicitly selects `full-v2`, which also runs the full source suite,
|
|
25
|
+
browser and XLSX qualification. Essential preparation has a 15-minute deadline; full preparation
|
|
26
|
+
has a 60-minute deadline. Both use process-tree
|
|
27
|
+
termination and cleanup after expiry. A failure never produces a successful receipt. Receipts bind
|
|
28
|
+
the selected profile and its fixed gate list, so former receipts require requalification.
|
|
28
29
|
Successful preparation emits receipt, manifest, SBOM and TGZ.
|
|
29
30
|
|
|
30
31
|
The separate rapid preparation helper has an eight-minute deadline and emits no signed
|
|
@@ -41,7 +42,7 @@ is refused. Choose a new output path after repair instead of deleting or overwri
|
|
|
41
42
|
For an authorized release, call this command with the same arguments and paths:
|
|
42
43
|
|
|
43
44
|
```text
|
|
44
|
-
node scripts/local-release-deploy.mjs --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --branch main --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory> --notes-file <reviewed-notes.md> --inventory-file <release-inventory.json> --from <previous-release-tag>
|
|
45
|
+
node scripts/local-release-deploy.mjs --repository <absolute-repository> --expected-repository zaip-ai/zaip-aios --sha <40-character-sha> --branch main --output-dir <candidate-artifacts> --policy <policy.json> --private-key <private-key.pem> --key-id maintainer --channel latest --version <N.N> --expires-at <future-ISO-within-seven-days> --trust-store <trust-directory> --notes-file <reviewed-notes.md> --inventory-file <release-inventory.json> --from <previous-release-tag> --profile essential
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
`--dry-run` prepares and verifies without sending. The live command verifies again around
|
|
@@ -86,7 +87,7 @@ verified SHA. This flow does not require a TGZ, npm version, npm channel or npm
|
|
|
86
87
|
|
|
87
88
|
## Activate the reduced GitHub path
|
|
88
89
|
|
|
89
|
-
After explicit rollout authority, complete signed
|
|
90
|
+
After explicit rollout authority, complete signed essential-v3 local preparation and enroll
|
|
90
91
|
only the reviewed public key, exact policy and key ID. Then explicitly enable
|
|
91
92
|
`ZAIP_LOCAL_RELEASE_ENABLED=true` and use guarded delivery. The GitHub Release is published
|
|
92
93
|
with its four signed assets before Actions validates them; the verifier needs only
|
|
@@ -99,8 +100,8 @@ The registry digest and channel are always verified by the isolated publisher.
|
|
|
99
100
|
The default legacy publisher validates `qualification-receipt.json` from the successful
|
|
100
101
|
GitHub qualification run, bound to candidate SHA, run/attempt, channel and exact TGZ. That
|
|
101
102
|
workflow requires the full gate and runtime matrix before issuing its receipt. This is a
|
|
102
|
-
separate accepted remote policy, not
|
|
103
|
-
The guarded local helper
|
|
103
|
+
separate accepted remote policy, not an `essential-v3` local receipt or a rapid-only exemption.
|
|
104
|
+
The guarded local helper requires `essential-v3` even while legacy remote checks are enabled.
|
|
104
105
|
|
|
105
106
|
An administrator enrolls the public key, exact policy bytes and key ID in protected repository
|
|
106
107
|
variables `ZAIP_LOCAL_RELEASE_TRUSTED_PUBLIC_KEY_B64`, `ZAIP_LOCAL_RELEASE_POLICY_B64` and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: zaip-skill-setup
|
|
3
|
-
description: Install ZAIP-AIOS and format the final chat response after init, including installations started before this skill was available.
|
|
3
|
+
description: Install or update ZAIP-AIOS and format the final chat response after init, including installations started before this skill was available.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Instalar ZAIP-AIOS
|
|
@@ -12,11 +12,26 @@ Para Supabase, a instalação nunca cria branch, preview ou custo hospedado. O f
|
|
|
12
12
|
Use somente o pacote público `@zaip-ai/cli`: `npx @zaip-ai/cli@latest init`.
|
|
13
13
|
Para escolher o perfil, acrescente `--profile full|dev-lite|lite` ao comando `init`.
|
|
14
14
|
|
|
15
|
+
## Atualização solicitada
|
|
16
|
+
|
|
17
|
+
Pedido simples de “update”, “atualize o ZAIP” ou equivalente em projeto instalado usa, por padrão,
|
|
18
|
+
`npx --yes @zaip-ai/cli@latest init --force --yes --profile full` (Windows: `npx.cmd`).
|
|
19
|
+
O pedido autoriza a reinstalação com backup automático e a instalação das dependências e
|
|
20
|
+
pré-requisitos do perfil completo, sem nova confirmação ou dry-run obrigatório. Versão, perfil,
|
|
21
|
+
dry-run ou restrições explícitas prevalecem. O primeiro `--yes` aceita baixar a CLI; o segundo
|
|
22
|
+
confirma o force. Preserve as proteções transacionais e de ownership do instalador.
|
|
23
|
+
Se houver falha, diagnostique o erro concreto; não apague arquivos para contorná-la.
|
|
24
|
+
Valide pelo resultado do init e `doctor --json` do runtime instalado, sem auditar abas do
|
|
25
|
+
Dashboard ou exportações XLSX. Informe versão, backup, dependências e pendências observadas.
|
|
26
|
+
Esse fluxo instala dependências ausentes e preserva as já instaladas; não executa `npm update`.
|
|
27
|
+
|
|
28
|
+
## Instalação inicial
|
|
29
|
+
|
|
15
30
|
For the isolated SQLite dashboard, also discover and use `$zaip-skill-sqlite-read-model`.
|
|
16
31
|
Create the disposable dashboard database only from canonical `.agents/records` and
|
|
17
32
|
`.agents/config` sources.
|
|
18
33
|
|
|
19
|
-
1. Se o `init` acabou de concluir neste turno, vá diretamente ao modelo obrigatório de resposta abaixo; não reinstale nem inicie configuração. Para uma nova instalação,
|
|
34
|
+
1. Se o `init` acabou de concluir neste turno, vá diretamente ao modelo obrigatório de resposta abaixo; não reinstale nem inicie configuração. Para uma nova instalação, use o pedido explícito de instalação como autorização. Se já houver `.agents/config/project.yaml` e o pedido for atualização, aplique o fluxo acima; encaminhe configuração, personalização ou primeiros passos para `$zaip-skill-config`.
|
|
20
35
|
2. Faça dry-run e detecte apenas conflitos que impeçam a instalação inicial, como checksum, ownership ou arquivos do usuário que seriam sobrescritos.
|
|
21
36
|
3. Verifique Node.js 22+; instale a versão LTS com `winget` somente quando o usuário tiver autorizado a instalação automática do pré-requisito.
|
|
22
37
|
4. Instale e valide o conteúdo do release: `config/project.yaml`, `config/framework.lock.yaml`, Rules core, Requirements e skills gerenciados pelo manifest, raízes V3 de `records` e, quando distribuído, o dashboard frontend-only em `.agents/dashboard`. Preserve arquivos e Rules locais do projeto.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "ZAIP Setup"
|
|
3
|
-
short_description: "Install ZAIP-AIOS and
|
|
3
|
+
short_description: "Install or update ZAIP-AIOS and report the result."
|
|
4
4
|
default_prompt: "Use $zaip-skill-setup to install ZAIP-AIOS or format the final reply after init with Markdown bullets, the installed-version npm link and the final setup question."
|