@noodleseed/one 0.152.0 → 0.154.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/agent-product-skill-state.d.ts +2 -2
- package/dist/agent-product-skill-state.d.ts.map +1 -1
- package/dist/agent-product-skill-state.js.map +1 -1
- package/dist/agent-skills-state.d.ts +2 -2
- package/dist/agent-skills-state.d.ts.map +1 -1
- package/dist/agent-skills-state.js +1 -1
- package/dist/agent-skills-state.js.map +1 -1
- package/dist/agents.d.ts +2 -3
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js.map +1 -1
- package/dist/checklist.d.ts +2 -1
- package/dist/checklist.d.ts.map +1 -1
- package/dist/commands/app-purge-reconciliation-args.d.ts +28 -0
- package/dist/commands/app-purge-reconciliation-args.d.ts.map +1 -0
- package/dist/commands/app-purge-reconciliation-args.js +124 -0
- package/dist/commands/app-purge-reconciliation-args.js.map +1 -0
- package/dist/commands/app-purge-reconciliation-files.d.ts +8 -0
- package/dist/commands/app-purge-reconciliation-files.d.ts.map +1 -0
- package/dist/commands/app-purge-reconciliation-files.js +109 -0
- package/dist/commands/app-purge-reconciliation-files.js.map +1 -0
- package/dist/commands/app-purge-reconciliation-ops.d.ts +3 -0
- package/dist/commands/app-purge-reconciliation-ops.d.ts.map +1 -0
- package/dist/commands/app-purge-reconciliation-ops.js +190 -0
- package/dist/commands/app-purge-reconciliation-ops.js.map +1 -0
- package/dist/commands/apps-ops.d.ts +0 -4
- package/dist/commands/apps-ops.d.ts.map +1 -1
- package/dist/commands/apps-ops.js +3 -3
- package/dist/commands/apps-ops.js.map +1 -1
- package/dist/commands/auth-ops.d.ts +0 -14
- package/dist/commands/auth-ops.d.ts.map +1 -1
- package/dist/commands/auth-ops.js +1 -1
- package/dist/commands/auth-ops.js.map +1 -1
- package/dist/commands/author-loop.d.ts +0 -2
- package/dist/commands/author-loop.d.ts.map +1 -1
- package/dist/commands/author-loop.js +2 -2
- package/dist/commands/author-loop.js.map +1 -1
- package/dist/commands/billing-ops.d.ts.map +1 -1
- package/dist/commands/billing-ops.js +7 -0
- package/dist/commands/billing-ops.js.map +1 -1
- package/dist/commands/billing-org-transfer-files.d.ts +12 -0
- package/dist/commands/billing-org-transfer-files.d.ts.map +1 -0
- package/dist/commands/billing-org-transfer-files.js +112 -0
- package/dist/commands/billing-org-transfer-files.js.map +1 -0
- package/dist/commands/billing-org-transfer-ops.d.ts +4 -0
- package/dist/commands/billing-org-transfer-ops.d.ts.map +1 -0
- package/dist/commands/billing-org-transfer-ops.js +534 -0
- package/dist/commands/billing-org-transfer-ops.js.map +1 -0
- package/dist/commands/catalog.d.ts +1 -7
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +3 -3
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/config-values.d.ts +1 -47
- package/dist/commands/config-values.d.ts.map +1 -1
- package/dist/commands/config-values.js +11 -11
- package/dist/commands/config-values.js.map +1 -1
- package/dist/commands/connect-oauth.d.ts +0 -1
- package/dist/commands/connect-oauth.d.ts.map +1 -1
- package/dist/commands/connect-oauth.js +1 -1
- package/dist/commands/connect-oauth.js.map +1 -1
- package/dist/commands/connect.d.ts +0 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +1 -1
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/customer-auth-smoke.d.ts +2 -1
- package/dist/commands/customer-auth-smoke.d.ts.map +1 -1
- package/dist/commands/customer-auth-smoke.js +3 -2
- package/dist/commands/customer-auth-smoke.js.map +1 -1
- package/dist/commands/deploy-ops.d.ts +0 -9
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +3 -4
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-resume.d.ts +0 -1
- package/dist/commands/deploy-resume.d.ts.map +1 -1
- package/dist/commands/deploy-resume.js +1 -1
- package/dist/commands/deploy-resume.js.map +1 -1
- package/dist/commands/deploy-version-resolution.d.ts +0 -2
- package/dist/commands/deploy-version-resolution.d.ts.map +1 -1
- package/dist/commands/deploy-version-resolution.js +1 -1
- package/dist/commands/deploy-version-resolution.js.map +1 -1
- package/dist/commands/deployments-ops.d.ts +0 -2
- package/dist/commands/deployments-ops.d.ts.map +1 -1
- package/dist/commands/deployments-ops.js +2 -2
- package/dist/commands/deployments-ops.js.map +1 -1
- package/dist/commands/envs-ops.d.ts +0 -3
- package/dist/commands/envs-ops.d.ts.map +1 -1
- package/dist/commands/envs-ops.js +3 -3
- package/dist/commands/envs-ops.js.map +1 -1
- package/dist/commands/feedback-ops.d.ts +0 -8
- package/dist/commands/feedback-ops.d.ts.map +1 -1
- package/dist/commands/feedback-ops.js +1 -1
- package/dist/commands/feedback-ops.js.map +1 -1
- package/dist/commands/github-ops.d.ts +0 -2
- package/dist/commands/github-ops.d.ts.map +1 -1
- package/dist/commands/github-ops.js +2 -2
- package/dist/commands/github-ops.js.map +1 -1
- package/dist/commands/mcp-apps.d.ts +0 -1
- package/dist/commands/mcp-apps.d.ts.map +1 -1
- package/dist/commands/org-admin.d.ts +0 -17
- package/dist/commands/org-admin.d.ts.map +1 -1
- package/dist/commands/org-admin.js +1 -2
- package/dist/commands/org-admin.js.map +1 -1
- package/dist/commands/output.d.ts +3 -12
- package/dist/commands/output.d.ts.map +1 -1
- package/dist/commands/output.js.map +1 -1
- package/dist/commands/platform-account-reset-files.d.ts +0 -3
- package/dist/commands/platform-account-reset-files.d.ts.map +1 -1
- package/dist/commands/platform-account-reset-files.js +1 -1
- package/dist/commands/platform-account-reset-files.js.map +1 -1
- package/dist/commands/platform-auth-rollout-acceleration-files.d.ts +0 -3
- package/dist/commands/platform-auth-rollout-acceleration-files.d.ts.map +1 -1
- package/dist/commands/platform-auth-rollout-acceleration-files.js +1 -1
- package/dist/commands/platform-auth-rollout-acceleration-files.js.map +1 -1
- package/dist/commands/project-setup.d.ts +0 -1
- package/dist/commands/project-setup.d.ts.map +1 -1
- package/dist/commands/project-setup.js +1 -1
- package/dist/commands/project-setup.js.map +1 -1
- package/dist/commands/resource-shared.d.ts +0 -6
- package/dist/commands/resource-shared.d.ts.map +1 -1
- package/dist/commands/resource-shared.js +1 -1
- package/dist/commands/resource-shared.js.map +1 -1
- package/dist/commands/service-ops.d.ts.map +1 -1
- package/dist/commands/service-ops.js +4 -1
- package/dist/commands/service-ops.js.map +1 -1
- package/dist/commands/session.d.ts +3 -13
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +2 -2
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/target-picker.d.ts +0 -2
- package/dist/commands/target-picker.d.ts.map +1 -1
- package/dist/commands/target-picker.js +1 -1
- package/dist/commands/target-picker.js.map +1 -1
- package/dist/commands/update-ops.d.ts +0 -8
- package/dist/commands/update-ops.d.ts.map +1 -1
- package/dist/commands/update-ops.js +1 -1
- package/dist/commands/update-ops.js.map +1 -1
- package/dist/control-plane.d.ts +1 -1
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js.map +1 -1
- package/dist/deploy.d.ts +0 -12
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +2 -2
- package/dist/deploy.js.map +1 -1
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +2 -3
- package/dist/dev.js.map +1 -1
- package/dist/devtools-auth-session.d.ts +0 -1
- package/dist/devtools-auth-session.d.ts.map +1 -1
- package/dist/devtools-auth-session.js.map +1 -1
- package/dist/devtools-chat.d.ts +1 -1
- package/dist/devtools-chat.d.ts.map +1 -1
- package/dist/devtools-chat.js.map +1 -1
- package/dist/devtools-delegated-exchange-state.d.ts +1 -1
- package/dist/devtools-delegated-exchange-state.d.ts.map +1 -1
- package/dist/devtools-design-contract.d.ts +3 -3
- package/dist/devtools-design-contract.d.ts.map +1 -1
- package/dist/devtools-design-contract.js +1 -1
- package/dist/devtools-design-contract.js.map +1 -1
- package/dist/devtools-preview.d.ts +1 -1
- package/dist/devtools-preview.d.ts.map +1 -1
- package/dist/devtools-rpc-forwarder.d.ts +2 -1
- package/dist/devtools-rpc-forwarder.d.ts.map +1 -1
- package/dist/devtools-rpc-forwarder.js +11 -12
- package/dist/devtools-rpc-forwarder.js.map +1 -1
- package/dist/gradient.d.ts +0 -3
- package/dist/gradient.d.ts.map +1 -1
- package/dist/gradient.js +1 -3
- package/dist/gradient.js.map +1 -1
- package/dist/local-compile.d.ts +2 -1
- package/dist/local-compile.d.ts.map +1 -1
- package/dist/local-target.d.ts +2 -1
- package/dist/local-target.d.ts.map +1 -1
- package/dist/node-version.d.ts +0 -2
- package/dist/node-version.d.ts.map +1 -1
- package/dist/node-version.js +2 -2
- package/dist/node-version.js.map +1 -1
- package/dist/plugin-mode/build-readiness-tools.d.ts +5 -4
- package/dist/plugin-mode/build-readiness-tools.d.ts.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.d.ts +0 -35
- package/dist/plugin-mode/plugin-operation-contract.d.ts.map +1 -1
- package/dist/plugin-mode/plugin-operation-contract.js +1 -1
- package/dist/plugin-mode/plugin-operation-contract.js.map +1 -1
- package/dist/project-entrypoint.d.ts +2 -1
- package/dist/project-entrypoint.d.ts.map +1 -1
- package/dist/project.d.ts +3 -3
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js.map +1 -1
- package/dist/skills-update.d.ts +0 -1
- package/dist/skills-update.d.ts.map +1 -1
- package/dist/skills-update.js +1 -1
- package/dist/skills-update.js.map +1 -1
- package/dist/status.d.ts +0 -9
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -16
- package/dist/status.js.map +1 -1
- package/dist/update-binary.d.ts +3 -2
- package/dist/update-binary.d.ts.map +1 -1
- package/dist/update-check.d.ts +0 -3
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js +1 -1
- package/dist/update-check.js.map +1 -1
- package/dist/validate.d.ts +2 -1
- package/dist/validate.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +5 -3
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.d.ts +0 -2
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bootstrap-skill.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +5 -5
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.d.ts +2 -3
- package/node_modules/@noodle-borg/agent-kit/dist/skill-router.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/agent-packaging/dist/host-package-assets.js +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/dist/assistant-configuration.js +2 -1
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/assistant.d.ts +2 -1
- package/node_modules/@noodle-borg/authoring/dist/connections.d.ts +0 -2
- package/node_modules/@noodle-borg/authoring/dist/connections.js +1 -1
- package/node_modules/@noodle-borg/authoring/dist/load-authored.js +2 -2
- package/node_modules/@noodle-borg/authoring/dist/react/bridge.d.ts +3 -2
- package/node_modules/@noodle-borg/authoring/dist/react/form-components.d.ts +0 -8
- package/node_modules/@noodle-borg/authoring/dist/react/form-components.js +2 -4
- package/node_modules/@noodle-borg/authoring/dist/react/hooks.d.ts +2 -2
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-account.js +96 -0
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.js +116 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +11 -11
- package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +0 -1
- package/node_modules/@noodle-borg/compiler/dist/fulfilment-structural.d.ts +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/expression.d.ts +14 -14
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.d.ts +0 -2
- package/node_modules/@noodle-borg/compiler/dist/manifest/naming.js +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/website-projection.d.ts +2 -1
- package/node_modules/@noodle-borg/compiler/package.json +1 -4
- package/node_modules/@noodle-borg/connector-defs/dist/credential-profiles.js +1 -1
- package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +0 -6
- package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -2
- package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts +2 -1
- package/node_modules/@noodle-borg/connector-http/dist/mcp/config.js +1 -1
- package/node_modules/@noodle-borg/control-plane/dist/app-purge-reconciliation-port.d.ts +25 -0
- package/node_modules/@noodle-borg/control-plane/dist/app-purge-reconciliation-port.js +10 -0
- package/node_modules/@noodle-borg/control-plane/dist/deploy-auth.d.ts +0 -1
- package/node_modules/@noodle-borg/control-plane/dist/portable.d.ts +1 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.js +1 -0
- package/node_modules/@noodle-borg/control-plane/package.json +3 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js +1 -1
- package/node_modules/@noodle-borg/knowledge-operations/dist/crawl-lifecycle.d.ts +2 -1
- package/node_modules/@noodle-borg/knowledge-operations/package.json +1 -2
- package/node_modules/@noodle-borg/observability/dist/request-events-postgres.js +3 -1
- package/node_modules/@noodle-borg/plugin-distribution/dist/openai-submission-render.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.js +2 -2
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +1 -1
- package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +4 -6
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/observation.d.ts +0 -9
- package/node_modules/@noodle-borg/protocol/dist/observation.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/handler.d.ts +2 -1
- package/node_modules/@noodle-borg/protocol/dist/v2/versions.d.ts +4 -0
- package/node_modules/@noodle-borg/protocol/dist/v2/versions.js +2 -0
- package/node_modules/@noodle-borg/protocol/dist/widget/domain-projection.d.ts +2 -1
- package/node_modules/@noodle-borg/protocol/package.json +0 -1
- package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +2 -2
- package/node_modules/@noodle-borg/service/dist/app-package-snapshot.d.ts +1 -2
- package/node_modules/@noodle-borg/service/dist/app-package-snapshot.js +1 -2
- package/node_modules/@noodle-borg/service/dist/archive-preflight.js +1 -1
- package/node_modules/@noodle-borg/service/dist/assets.js +1 -1
- package/node_modules/@noodle-borg/service/dist/assistant-bindings.js +2 -2
- package/node_modules/@noodle-borg/service/dist/client-compatibility.js +1 -2
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +2 -2
- package/node_modules/@noodle-borg/service/dist/external-credential-exchange.d.ts +0 -1
- package/node_modules/@noodle-borg/service/dist/external-credential-exchange.js +1 -1
- package/node_modules/@noodle-borg/service/dist/http-util.js +1 -72
- package/node_modules/@noodle-borg/service/dist/managed-config-expressions.d.ts +0 -1
- package/node_modules/@noodle-borg/service/dist/managed-config-expressions.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +2 -2
- package/node_modules/@noodle-borg/service/dist/observability-runtime.js +2 -3
- package/node_modules/@noodle-borg/service/dist/registry-targets.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/access-mode.js +0 -4
- package/node_modules/@noodle-borg/service/dist/routes/access.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/alerts.js +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/app-purge-reconciliation.js +72 -0
- package/node_modules/@noodle-borg/service/dist/routes/apps.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/archive.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/asset-control-plane.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-appearance.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-clients.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-doctor.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-elevation.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-embeds.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-replay.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-configuration.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-public-session.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-route-http.js +4 -3
- package/node_modules/@noodle-borg/service/dist/routes/assistant-sandbox.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-suggestions.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant-usage.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/assistant.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/auth-discovery.js +2 -2
- package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values-paths.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/config-values.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +17 -5
- package/node_modules/@noodle-borg/service/dist/routes/deploy-preflight.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-activation-response.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-lock.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployment-package.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/environment-production.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/envs.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/google-workload-identity.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/intent-capture.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/openai-apps-challenge.js +1 -2
- package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/org-domains.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/org-mcp-subdomain.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +0 -39
- package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/service-principals-dispatch.js +2 -3
- package/node_modules/@noodle-borg/service/dist/routes/service-principals.js +1 -1
- package/node_modules/@noodle-borg/service/dist/service-config.d.ts +3 -2
- package/node_modules/@noodle-borg/service/dist/service-config.js +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +29 -3
- package/node_modules/@noodle-borg/service/dist/store/alert-rules.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store/audit.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store/in-memory.js +4 -8
- package/node_modules/@noodle-borg/service/dist/store/json-file.js +6 -3
- package/node_modules/@noodle-borg/service/dist/store/records.js +21 -1
- package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/store/validate.js +1 -1
- package/node_modules/@noodle-borg/service/dist/store.d.ts +5 -4
- package/node_modules/@noodle-borg/service/dist/store.js +1 -1
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/client-identity.js +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +1 -2
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts +51 -0
- package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js +7 -7
- package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +4 -2
- package/node_modules/@noodle-borg/transport-http/dist/index.js +3 -1
- package/node_modules/@noodle-borg/transport-http/dist/request-body.d.ts +29 -0
- package/node_modules/@noodle-borg/transport-http/dist/request-body.js +64 -0
- package/node_modules/@noodle-borg/transport-http/dist/responses.d.ts +28 -0
- package/node_modules/@noodle-borg/transport-http/dist/routing.d.ts +2 -4
- package/node_modules/@noodle-borg/transport-http/dist/routing.js +3 -3
- package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +2 -13
- package/node_modules/@noodle-borg/transport-http/package.json +0 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/app-purge-reconciliation.d.ts +177 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/app-purge-reconciliation.js +189 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-org-transfer.d.ts +629 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-org-transfer.js +259 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/control-plane.d.ts +21 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/control-plane.js +23 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +2 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +2 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/platform-account-reset.d.ts +4 -4
- package/node_modules/@noodleseed/assistant/package.json +2 -1
- package/package.json +2 -2
- package/dist/commands/catalog-data-billing.d.ts +0 -3
- package/dist/commands/catalog-data-billing.d.ts.map +0 -1
- package/dist/commands/catalog-data-billing.js +0 -3
- package/dist/commands/catalog-data-billing.js.map +0 -1
- package/dist/commands/catalog-data-policy.d.ts +0 -3
- package/dist/commands/catalog-data-policy.d.ts.map +0 -1
- package/dist/commands/catalog-data-policy.js +0 -3
- package/dist/commands/catalog-data-policy.js.map +0 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts +0 -50
- package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts +0 -17
- package/node_modules/@noodle-borg/transport-http/dist/module-http.d.ts +0 -13
- package/node_modules/@noodle-borg/transport-http/dist/module-http.js +0 -28
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { applySecurityHeaders, effectiveProto, enforceHttps, } from './front-door.js';
|
|
2
2
|
export { createMcpHttpHandler, createMcpRouter, } from './handler.js';
|
|
3
|
+
export { bearerToken } from './identity-authorization.js';
|
|
3
4
|
export { createLogger, noopLogger, stderrSink, stdoutSink, } from './logging.js';
|
|
4
|
-
export { readModuleJsonBody, sendModuleJson, } from './module-http.js';
|
|
5
5
|
export { resolveTrustedPublicOrg, resolveTrustedTenantMcpResource, trustedPublicMcpRef, trustedPublicOrgWellKnownRef, } from './public-routing.js';
|
|
6
|
+
export { readBody, readDeployBody, readJsonBody } from './request-body.js';
|
|
7
|
+
export { sendJson } from './responses.js';
|
|
6
8
|
export { serveHttp } from './serve.js';
|
|
7
9
|
export { preflightServicePrincipalToolCall, sendServicePrincipalToolDenial, } from './service-principal-authorization.js';
|
|
8
10
|
export { toWebRequest, writeWebResponse } from './web-bridge.js';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'node:http';
|
|
2
|
+
export declare function readBody(req: IncomingMessage, max: number): Promise<{
|
|
3
|
+
ok: true;
|
|
4
|
+
text: string;
|
|
5
|
+
} | {
|
|
6
|
+
ok: false;
|
|
7
|
+
receivedBytes: number;
|
|
8
|
+
maxBytes: number;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function readDeployBody(req: IncomingMessage, max: number): Promise<{
|
|
11
|
+
ok: true;
|
|
12
|
+
text: string;
|
|
13
|
+
encoding: 'identity' | 'gzip';
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
status: 400 | 413 | 415;
|
|
17
|
+
error: string;
|
|
18
|
+
receivedBytes?: number;
|
|
19
|
+
maxBytes?: number;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function readJsonBody(req: IncomingMessage, max: number): Promise<{
|
|
22
|
+
ok: true;
|
|
23
|
+
value: unknown;
|
|
24
|
+
} | {
|
|
25
|
+
ok: false;
|
|
26
|
+
status: 400 | 413;
|
|
27
|
+
error: string;
|
|
28
|
+
}>;
|
|
29
|
+
//# sourceMappingURL=request-body.d.ts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { gunzipSync } from 'node:zlib';
|
|
2
|
+
export async function readBody(req, max) {
|
|
3
|
+
const body = await readBodyBuffer(req, max);
|
|
4
|
+
return body.ok ? { ok: true, text: body.buffer.toString('utf8') } : body;
|
|
5
|
+
}
|
|
6
|
+
async function readBodyBuffer(req, max) {
|
|
7
|
+
const chunks = [];
|
|
8
|
+
let size = 0;
|
|
9
|
+
for await (const chunk of req) {
|
|
10
|
+
const buf = chunk;
|
|
11
|
+
size += buf.length;
|
|
12
|
+
if (size > max)
|
|
13
|
+
return { ok: false, receivedBytes: size, maxBytes: max };
|
|
14
|
+
chunks.push(buf);
|
|
15
|
+
}
|
|
16
|
+
return { ok: true, buffer: Buffer.concat(chunks) };
|
|
17
|
+
}
|
|
18
|
+
export async function readDeployBody(req, max) {
|
|
19
|
+
const encoding = (req.headers['content-encoding'] ?? 'identity').trim().toLowerCase();
|
|
20
|
+
if (encoding !== 'identity' && encoding !== 'gzip') {
|
|
21
|
+
return { ok: false, status: 415, error: `unsupported content encoding "${encoding}"` };
|
|
22
|
+
}
|
|
23
|
+
const body = await readBodyBuffer(req, max);
|
|
24
|
+
if (!body.ok) {
|
|
25
|
+
return {
|
|
26
|
+
ok: false,
|
|
27
|
+
status: 413,
|
|
28
|
+
error: `${encoding === 'gzip' ? 'compressed deploy' : 'deploy'} request exceeds the ${body.maxBytes} byte limit (received at least ${body.receivedBytes} bytes)`,
|
|
29
|
+
receivedBytes: body.receivedBytes,
|
|
30
|
+
maxBytes: body.maxBytes,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (encoding === 'identity') {
|
|
34
|
+
return { ok: true, text: body.buffer.toString('utf8'), encoding };
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const expanded = gunzipSync(body.buffer, { maxOutputLength: max });
|
|
38
|
+
return { ok: true, text: expanded.toString('utf8'), encoding };
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const code = error instanceof Error && 'code' in error ? String(error.code) : '';
|
|
42
|
+
if (code === 'ERR_BUFFER_TOO_LARGE') {
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
status: 413,
|
|
46
|
+
error: `expanded deploy request exceeds the ${max} byte limit`,
|
|
47
|
+
maxBytes: max,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return { ok: false, status: 400, error: 'invalid gzip deploy request' };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function readJsonBody(req, max) {
|
|
54
|
+
const body = await readBody(req, max);
|
|
55
|
+
if (!body.ok)
|
|
56
|
+
return { ok: false, status: 413, error: 'request body too large' };
|
|
57
|
+
try {
|
|
58
|
+
return { ok: true, value: JSON.parse(body.text) };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return { ok: false, status: 400, error: `invalid JSON: ${error.message}` };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=request-body.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { AdmissionContext, AdmissionGate } from '@noodle-borg/module';
|
|
3
|
+
import type { Logger } from './logging.js';
|
|
4
|
+
/** Emit one `mcp.request` lifecycle line with safe scalar fields only. */
|
|
5
|
+
export declare function logRequest(logger: Logger, routeId: string, req: IncomingMessage, res: ServerResponse, start: number): void;
|
|
6
|
+
export declare function guard(res: ServerResponse, fn: Promise<void>): Promise<void>;
|
|
7
|
+
export declare function sendJson(res: ServerResponse, status: number, body: unknown): void;
|
|
8
|
+
/** A transport-level JSON-RPC error response with no id (per the Streamable HTTP spec). */
|
|
9
|
+
export declare function rpcError(code: number, message: string): {
|
|
10
|
+
jsonrpc: '2.0';
|
|
11
|
+
id: null;
|
|
12
|
+
error: {
|
|
13
|
+
code: number;
|
|
14
|
+
message: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export declare function admissionRpcError(context: AdmissionContext, decision: Exclude<Awaited<ReturnType<AdmissionGate>>, {
|
|
18
|
+
allow: true;
|
|
19
|
+
}>): {
|
|
20
|
+
jsonrpc: '2.0';
|
|
21
|
+
id: string | number | null;
|
|
22
|
+
error: {
|
|
23
|
+
code: number;
|
|
24
|
+
message: string;
|
|
25
|
+
data: Record<string, string | number>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=responses.d.ts.map
|
|
@@ -5,7 +5,7 @@ export interface PublicTenantRouting {
|
|
|
5
5
|
readonly edgeToken: string;
|
|
6
6
|
readonly resolveTenant: (ref: PublicMcpRouteRef) => Promise<TenantRouteRef | undefined>;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
type ParsedRoute = {
|
|
9
9
|
readonly kind: 'tenant';
|
|
10
10
|
readonly ref: TenantRouteRef;
|
|
11
11
|
readonly logId: string;
|
|
@@ -23,7 +23,5 @@ export type RouteResolution = {
|
|
|
23
23
|
readonly status: 403;
|
|
24
24
|
};
|
|
25
25
|
export declare function resolveRoute(req: IncomingMessage, pathname: string, publicTenantRouting: PublicTenantRouting | undefined): Promise<RouteResolution>;
|
|
26
|
-
export
|
|
27
|
-
export declare function tenantLogId(ref: TenantRouteRef): string;
|
|
28
|
-
export declare function safeDecode(value: string): string | null;
|
|
26
|
+
export {};
|
|
29
27
|
//# sourceMappingURL=routing.d.ts.map
|
|
@@ -27,7 +27,7 @@ export async function resolveRoute(req, pathname, publicTenantRouting) {
|
|
|
27
27
|
}
|
|
28
28
|
return { ok: true, route: parseRoute(pathname) };
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
function parseRoute(pathname) {
|
|
31
31
|
const tenant = parseLegacyTenantMcpPath(pathname);
|
|
32
32
|
if (tenant !== undefined) {
|
|
33
33
|
return { kind: 'tenant', ref: tenant, logId: tenantLogId(tenant) };
|
|
@@ -41,10 +41,10 @@ export function parseRoute(pathname) {
|
|
|
41
41
|
}
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
function tenantLogId(ref) {
|
|
45
45
|
return `${ref.org}/${ref.app}/${ref.env}${ref.serverVersion !== undefined ? `@${ref.serverVersion}` : ''}`;
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
function safeDecode(value) {
|
|
48
48
|
try {
|
|
49
49
|
return decodeURIComponent(value);
|
|
50
50
|
}
|
|
@@ -3,6 +3,7 @@ import { createDualEraMcpHandler, handleStatelessHttp, JSON_RPC, } from '@noodle
|
|
|
3
3
|
import { admissionContexts, requestsInvocationContext } from './admission-context.js';
|
|
4
4
|
import { authorizeIdentityMode, authorizeMixedMode, authorizePublicServiceMode, canonicalResourceUrl, isIdentityMode, } from './identity-authorization.js';
|
|
5
5
|
import { invocationClientHint } from './invocation-client-hints.js';
|
|
6
|
+
import { readBody } from './request-body.js';
|
|
6
7
|
import { emitDeniedRequestEvent, emitIntentEvents, emitRequestEvent, header, } from './request-capture.js';
|
|
7
8
|
import { admissionRpcError, rpcError, sendJson } from './responses.js';
|
|
8
9
|
import { preflightServicePrincipalToolCall, sendServicePrincipalToolDenial, } from './service-principal-authorization.js';
|
|
@@ -284,21 +285,9 @@ function boundedReason(reason) {
|
|
|
284
285
|
.slice(0, 32);
|
|
285
286
|
return token.length === 0 ? 'denied' : token;
|
|
286
287
|
}
|
|
287
|
-
|
|
288
|
+
function originAllowed(origin, allowed) {
|
|
288
289
|
if (allowed === undefined)
|
|
289
290
|
return true;
|
|
290
291
|
return typeof allowed === 'function' ? allowed(origin) : allowed.includes(origin);
|
|
291
292
|
}
|
|
292
|
-
export async function readBody(req, max) {
|
|
293
|
-
const chunks = [];
|
|
294
|
-
let size = 0;
|
|
295
|
-
for await (const chunk of req) {
|
|
296
|
-
const buf = chunk;
|
|
297
|
-
size += buf.length;
|
|
298
|
-
if (size > max)
|
|
299
|
-
return { ok: false };
|
|
300
|
-
chunks.push(buf);
|
|
301
|
-
}
|
|
302
|
-
return { ok: true, text: Buffer.concat(chunks).toString('utf8') };
|
|
303
|
-
}
|
|
304
293
|
//# sourceMappingURL=serve-request.js.map
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const APP_PURGE_RECONCILIATION_SCHEMA_VERSION: 1;
|
|
3
|
+
export declare const APP_PURGE_RECONCILIATION_MAX_CANDIDATES = 100;
|
|
4
|
+
export declare const APP_PURGE_RECONCILIATION_PREVIEW_TTL_MS: number;
|
|
5
|
+
export declare const AppPurgeReconciliationEnvironmentSchema: z.ZodObject<{
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
isProduction: z.ZodBoolean;
|
|
8
|
+
createdAt: z.ZodISODateTime;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
export type AppPurgeReconciliationEnvironmentV1 = z.infer<typeof AppPurgeReconciliationEnvironmentSchema>;
|
|
11
|
+
export declare const AppPurgeReconciliationCandidateSchema: z.ZodObject<{
|
|
12
|
+
org: z.ZodString;
|
|
13
|
+
app: z.ZodString;
|
|
14
|
+
anchorCreatedAt: z.ZodISODateTime;
|
|
15
|
+
purgeAuditId: z.ZodString;
|
|
16
|
+
environments: z.ZodArray<z.ZodObject<{
|
|
17
|
+
name: z.ZodString;
|
|
18
|
+
isProduction: z.ZodBoolean;
|
|
19
|
+
createdAt: z.ZodISODateTime;
|
|
20
|
+
}, z.core.$strict>>;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
export type AppPurgeReconciliationCandidateV1 = z.infer<typeof AppPurgeReconciliationCandidateSchema>;
|
|
23
|
+
export declare const AppPurgeReconciliationPreviewRequestSchema: z.ZodObject<{
|
|
24
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
25
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
}, z.core.$strict>;
|
|
27
|
+
export type AppPurgeReconciliationPreviewRequestV1 = z.infer<typeof AppPurgeReconciliationPreviewRequestSchema>;
|
|
28
|
+
export declare const AppPurgeReconciliationPreviewArtifactSchema: z.ZodObject<{
|
|
29
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
30
|
+
releaseSha: z.ZodString;
|
|
31
|
+
createdAt: z.ZodISODateTime;
|
|
32
|
+
expiresAt: z.ZodISODateTime;
|
|
33
|
+
candidateCount: z.ZodNumber;
|
|
34
|
+
truncated: z.ZodBoolean;
|
|
35
|
+
candidates: z.ZodArray<z.ZodObject<{
|
|
36
|
+
org: z.ZodString;
|
|
37
|
+
app: z.ZodString;
|
|
38
|
+
anchorCreatedAt: z.ZodISODateTime;
|
|
39
|
+
purgeAuditId: z.ZodString;
|
|
40
|
+
environments: z.ZodArray<z.ZodObject<{
|
|
41
|
+
name: z.ZodString;
|
|
42
|
+
isProduction: z.ZodBoolean;
|
|
43
|
+
createdAt: z.ZodISODateTime;
|
|
44
|
+
}, z.core.$strict>>;
|
|
45
|
+
}, z.core.$strict>>;
|
|
46
|
+
checksum: z.ZodString;
|
|
47
|
+
}, z.core.$strict>;
|
|
48
|
+
export type AppPurgeReconciliationPreviewArtifactV1 = z.infer<typeof AppPurgeReconciliationPreviewArtifactSchema>;
|
|
49
|
+
type ReadonlyDeep<Value> = Value extends readonly (infer Item)[] ? readonly ReadonlyDeep<Item>[] : Value extends object ? {
|
|
50
|
+
readonly [Key in keyof Value]: ReadonlyDeep<Value[Key]>;
|
|
51
|
+
} : Value;
|
|
52
|
+
export type AppPurgeReconciliationUnsignedPreviewArtifactV1 = Omit<ReadonlyDeep<AppPurgeReconciliationPreviewArtifactV1>, 'checksum'>;
|
|
53
|
+
export declare const AppPurgeReconciliationPreviewResponseSchema: z.ZodObject<{
|
|
54
|
+
ok: z.ZodLiteral<true>;
|
|
55
|
+
artifact: z.ZodObject<{
|
|
56
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
57
|
+
releaseSha: z.ZodString;
|
|
58
|
+
createdAt: z.ZodISODateTime;
|
|
59
|
+
expiresAt: z.ZodISODateTime;
|
|
60
|
+
candidateCount: z.ZodNumber;
|
|
61
|
+
truncated: z.ZodBoolean;
|
|
62
|
+
candidates: z.ZodArray<z.ZodObject<{
|
|
63
|
+
org: z.ZodString;
|
|
64
|
+
app: z.ZodString;
|
|
65
|
+
anchorCreatedAt: z.ZodISODateTime;
|
|
66
|
+
purgeAuditId: z.ZodString;
|
|
67
|
+
environments: z.ZodArray<z.ZodObject<{
|
|
68
|
+
name: z.ZodString;
|
|
69
|
+
isProduction: z.ZodBoolean;
|
|
70
|
+
createdAt: z.ZodISODateTime;
|
|
71
|
+
}, z.core.$strict>>;
|
|
72
|
+
}, z.core.$strict>>;
|
|
73
|
+
checksum: z.ZodString;
|
|
74
|
+
}, z.core.$strict>;
|
|
75
|
+
}, z.core.$strict>;
|
|
76
|
+
export type AppPurgeReconciliationPreviewResponseV1 = z.infer<typeof AppPurgeReconciliationPreviewResponseSchema>;
|
|
77
|
+
export declare const AppPurgeReconciliationApplyRequestSchema: z.ZodObject<{
|
|
78
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
79
|
+
preview: z.ZodObject<{
|
|
80
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
81
|
+
releaseSha: z.ZodString;
|
|
82
|
+
createdAt: z.ZodISODateTime;
|
|
83
|
+
expiresAt: z.ZodISODateTime;
|
|
84
|
+
candidateCount: z.ZodNumber;
|
|
85
|
+
truncated: z.ZodBoolean;
|
|
86
|
+
candidates: z.ZodArray<z.ZodObject<{
|
|
87
|
+
org: z.ZodString;
|
|
88
|
+
app: z.ZodString;
|
|
89
|
+
anchorCreatedAt: z.ZodISODateTime;
|
|
90
|
+
purgeAuditId: z.ZodString;
|
|
91
|
+
environments: z.ZodArray<z.ZodObject<{
|
|
92
|
+
name: z.ZodString;
|
|
93
|
+
isProduction: z.ZodBoolean;
|
|
94
|
+
createdAt: z.ZodISODateTime;
|
|
95
|
+
}, z.core.$strict>>;
|
|
96
|
+
}, z.core.$strict>>;
|
|
97
|
+
checksum: z.ZodString;
|
|
98
|
+
}, z.core.$strict>;
|
|
99
|
+
releaseSha: z.ZodString;
|
|
100
|
+
approvalReference: z.ZodString;
|
|
101
|
+
recoveryCheckpoint: z.ZodString;
|
|
102
|
+
reason: z.ZodString;
|
|
103
|
+
idempotencyKey: z.ZodString;
|
|
104
|
+
confirmed: z.ZodLiteral<true>;
|
|
105
|
+
}, z.core.$strict>;
|
|
106
|
+
export type AppPurgeReconciliationApplyRequestV1 = z.infer<typeof AppPurgeReconciliationApplyRequestSchema>;
|
|
107
|
+
export declare const AppPurgeReconciliationApplyResultSchema: z.ZodObject<{
|
|
108
|
+
operationId: z.ZodString;
|
|
109
|
+
previewChecksum: z.ZodString;
|
|
110
|
+
releaseSha: z.ZodString;
|
|
111
|
+
candidateCount: z.ZodNumber;
|
|
112
|
+
deletedCount: z.ZodNumber;
|
|
113
|
+
appliedAt: z.ZodISODateTime;
|
|
114
|
+
}, z.core.$strict>;
|
|
115
|
+
export type AppPurgeReconciliationApplyResultV1 = z.infer<typeof AppPurgeReconciliationApplyResultSchema>;
|
|
116
|
+
export declare const AppPurgeReconciliationApplyResponseSchema: z.ZodObject<{
|
|
117
|
+
ok: z.ZodLiteral<true>;
|
|
118
|
+
replayed: z.ZodBoolean;
|
|
119
|
+
result: z.ZodObject<{
|
|
120
|
+
operationId: z.ZodString;
|
|
121
|
+
previewChecksum: z.ZodString;
|
|
122
|
+
releaseSha: z.ZodString;
|
|
123
|
+
candidateCount: z.ZodNumber;
|
|
124
|
+
deletedCount: z.ZodNumber;
|
|
125
|
+
appliedAt: z.ZodISODateTime;
|
|
126
|
+
}, z.core.$strict>;
|
|
127
|
+
}, z.core.$strict>;
|
|
128
|
+
export type AppPurgeReconciliationApplyResponseV1 = z.infer<typeof AppPurgeReconciliationApplyResponseSchema>;
|
|
129
|
+
/** Client reader strips additive fields at every response layer while service output stays strict. */
|
|
130
|
+
export declare const AppPurgeReconciliationClientResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
131
|
+
ok: z.ZodLiteral<true>;
|
|
132
|
+
artifact: z.ZodObject<{
|
|
133
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
134
|
+
releaseSha: z.ZodString;
|
|
135
|
+
createdAt: z.ZodISODateTime;
|
|
136
|
+
expiresAt: z.ZodISODateTime;
|
|
137
|
+
candidateCount: z.ZodNumber;
|
|
138
|
+
truncated: z.ZodBoolean;
|
|
139
|
+
candidates: z.ZodArray<z.ZodObject<{
|
|
140
|
+
org: z.ZodString;
|
|
141
|
+
app: z.ZodString;
|
|
142
|
+
anchorCreatedAt: z.ZodISODateTime;
|
|
143
|
+
purgeAuditId: z.ZodString;
|
|
144
|
+
environments: z.ZodArray<z.ZodObject<{
|
|
145
|
+
name: z.ZodString;
|
|
146
|
+
isProduction: z.ZodBoolean;
|
|
147
|
+
createdAt: z.ZodISODateTime;
|
|
148
|
+
}, z.core.$strip>>;
|
|
149
|
+
}, z.core.$strip>>;
|
|
150
|
+
checksum: z.ZodString;
|
|
151
|
+
}, z.core.$strip>;
|
|
152
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
153
|
+
ok: z.ZodLiteral<true>;
|
|
154
|
+
replayed: z.ZodBoolean;
|
|
155
|
+
result: z.ZodObject<{
|
|
156
|
+
operationId: z.ZodString;
|
|
157
|
+
previewChecksum: z.ZodString;
|
|
158
|
+
releaseSha: z.ZodString;
|
|
159
|
+
candidateCount: z.ZodNumber;
|
|
160
|
+
deletedCount: z.ZodNumber;
|
|
161
|
+
appliedAt: z.ZodISODateTime;
|
|
162
|
+
}, z.core.$strip>;
|
|
163
|
+
}, z.core.$strip>]>;
|
|
164
|
+
export type AppPurgeReconciliationClientResponseV1 = z.infer<typeof AppPurgeReconciliationClientResponseSchema>;
|
|
165
|
+
export declare const AppPurgeReconciliationErrorCodeSchema: z.ZodEnum<{
|
|
166
|
+
app_purge_preview_expired: "app_purge_preview_expired";
|
|
167
|
+
app_purge_release_mismatch: "app_purge_release_mismatch";
|
|
168
|
+
app_purge_preview_mismatch: "app_purge_preview_mismatch";
|
|
169
|
+
app_purge_candidate_drift: "app_purge_candidate_drift";
|
|
170
|
+
app_purge_idempotency_conflict: "app_purge_idempotency_conflict";
|
|
171
|
+
app_purge_reconciliation_unavailable: "app_purge_reconciliation_unavailable";
|
|
172
|
+
}>;
|
|
173
|
+
export type AppPurgeReconciliationErrorCodeV1 = z.infer<typeof AppPurgeReconciliationErrorCodeSchema>;
|
|
174
|
+
/** Exact unsigned bytes hashed for a preview checksum. */
|
|
175
|
+
export declare function appPurgeReconciliationChecksumPayload(unsignedArtifact: AppPurgeReconciliationUnsignedPreviewArtifactV1): string;
|
|
176
|
+
export {};
|
|
177
|
+
//# sourceMappingURL=app-purge-reconciliation.d.ts.map
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
|
|
3
|
+
const slug = z.string().regex(SLUG_PATTERN);
|
|
4
|
+
const timestamp = z.iso.datetime({ offset: true });
|
|
5
|
+
const releaseSha = z.string().regex(/^[0-9a-f]{40}$/);
|
|
6
|
+
const checksum = z.string().regex(/^sha256:[0-9a-f]{64}$/);
|
|
7
|
+
export const APP_PURGE_RECONCILIATION_SCHEMA_VERSION = 1;
|
|
8
|
+
export const APP_PURGE_RECONCILIATION_MAX_CANDIDATES = 100;
|
|
9
|
+
export const APP_PURGE_RECONCILIATION_PREVIEW_TTL_MS = 15 * 60 * 1000;
|
|
10
|
+
export const AppPurgeReconciliationEnvironmentSchema = z.strictObject({
|
|
11
|
+
name: slug,
|
|
12
|
+
isProduction: z.boolean(),
|
|
13
|
+
createdAt: timestamp,
|
|
14
|
+
});
|
|
15
|
+
export const AppPurgeReconciliationCandidateSchema = z.strictObject({
|
|
16
|
+
org: slug,
|
|
17
|
+
app: slug,
|
|
18
|
+
anchorCreatedAt: timestamp,
|
|
19
|
+
purgeAuditId: z.string().uuid(),
|
|
20
|
+
environments: z.array(AppPurgeReconciliationEnvironmentSchema),
|
|
21
|
+
});
|
|
22
|
+
export const AppPurgeReconciliationPreviewRequestSchema = z.strictObject({
|
|
23
|
+
schemaVersion: z.literal(APP_PURGE_RECONCILIATION_SCHEMA_VERSION),
|
|
24
|
+
limit: z.number().int().min(1).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES).optional(),
|
|
25
|
+
});
|
|
26
|
+
function checkArtifactInvariants(artifact, context) {
|
|
27
|
+
if (Date.parse(artifact.expiresAt) - Date.parse(artifact.createdAt) !==
|
|
28
|
+
APP_PURGE_RECONCILIATION_PREVIEW_TTL_MS) {
|
|
29
|
+
context.addIssue({
|
|
30
|
+
code: 'custom',
|
|
31
|
+
path: ['expiresAt'],
|
|
32
|
+
message: 'expiresAt must be exactly 15 minutes after createdAt',
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (artifact.candidateCount !== artifact.candidates.length) {
|
|
36
|
+
context.addIssue({
|
|
37
|
+
code: 'custom',
|
|
38
|
+
path: ['candidateCount'],
|
|
39
|
+
message: 'candidateCount must equal candidates.length',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (artifact.candidateCount === 0 && artifact.truncated) {
|
|
43
|
+
context.addIssue({
|
|
44
|
+
code: 'custom',
|
|
45
|
+
path: ['truncated'],
|
|
46
|
+
message: 'a zero-candidate artifact cannot be truncated',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
let previousCandidateKey;
|
|
50
|
+
for (const [candidateIndex, candidate] of artifact.candidates.entries()) {
|
|
51
|
+
const candidateKey = `${candidate.org}\u0000${candidate.app}`;
|
|
52
|
+
if (previousCandidateKey !== undefined && previousCandidateKey >= candidateKey) {
|
|
53
|
+
context.addIssue({
|
|
54
|
+
code: 'custom',
|
|
55
|
+
path: ['candidates', candidateIndex],
|
|
56
|
+
message: 'candidates must be unique and lexically ordered by org and app',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
previousCandidateKey = candidateKey;
|
|
60
|
+
let previousEnvironmentName;
|
|
61
|
+
for (const [environmentIndex, environment] of candidate.environments.entries()) {
|
|
62
|
+
if (previousEnvironmentName !== undefined && previousEnvironmentName >= environment.name) {
|
|
63
|
+
context.addIssue({
|
|
64
|
+
code: 'custom',
|
|
65
|
+
path: ['candidates', candidateIndex, 'environments', environmentIndex],
|
|
66
|
+
message: 'environments must be unique and lexically ordered by name',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
previousEnvironmentName = environment.name;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const previewArtifactShape = {
|
|
74
|
+
schemaVersion: z.literal(APP_PURGE_RECONCILIATION_SCHEMA_VERSION),
|
|
75
|
+
releaseSha,
|
|
76
|
+
createdAt: timestamp,
|
|
77
|
+
expiresAt: timestamp,
|
|
78
|
+
candidateCount: z.number().int().min(0).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES),
|
|
79
|
+
truncated: z.boolean(),
|
|
80
|
+
candidates: z.array(AppPurgeReconciliationCandidateSchema),
|
|
81
|
+
checksum,
|
|
82
|
+
};
|
|
83
|
+
export const AppPurgeReconciliationPreviewArtifactSchema = z
|
|
84
|
+
.strictObject(previewArtifactShape)
|
|
85
|
+
.superRefine(checkArtifactInvariants);
|
|
86
|
+
export const AppPurgeReconciliationPreviewResponseSchema = z.strictObject({
|
|
87
|
+
ok: z.literal(true),
|
|
88
|
+
artifact: AppPurgeReconciliationPreviewArtifactSchema,
|
|
89
|
+
});
|
|
90
|
+
export const AppPurgeReconciliationApplyRequestSchema = z.strictObject({
|
|
91
|
+
schemaVersion: z.literal(APP_PURGE_RECONCILIATION_SCHEMA_VERSION),
|
|
92
|
+
preview: AppPurgeReconciliationPreviewArtifactSchema,
|
|
93
|
+
releaseSha,
|
|
94
|
+
approvalReference: z.string().trim().min(1).max(256),
|
|
95
|
+
recoveryCheckpoint: z.string().trim().min(1).max(256),
|
|
96
|
+
reason: z.string().trim().min(1).max(500),
|
|
97
|
+
idempotencyKey: z.string().min(8).max(256),
|
|
98
|
+
confirmed: z.literal(true),
|
|
99
|
+
});
|
|
100
|
+
export const AppPurgeReconciliationApplyResultSchema = z.strictObject({
|
|
101
|
+
operationId: z.string().uuid(),
|
|
102
|
+
previewChecksum: checksum,
|
|
103
|
+
releaseSha,
|
|
104
|
+
candidateCount: z.number().int().min(0).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES),
|
|
105
|
+
deletedCount: z.number().int().min(0).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES),
|
|
106
|
+
appliedAt: timestamp,
|
|
107
|
+
});
|
|
108
|
+
export const AppPurgeReconciliationApplyResponseSchema = z.strictObject({
|
|
109
|
+
ok: z.literal(true),
|
|
110
|
+
replayed: z.boolean(),
|
|
111
|
+
result: AppPurgeReconciliationApplyResultSchema,
|
|
112
|
+
});
|
|
113
|
+
const ClientEnvironmentSchema = z.object({
|
|
114
|
+
name: slug,
|
|
115
|
+
isProduction: z.boolean(),
|
|
116
|
+
createdAt: timestamp,
|
|
117
|
+
});
|
|
118
|
+
const ClientCandidateSchema = z.object({
|
|
119
|
+
org: slug,
|
|
120
|
+
app: slug,
|
|
121
|
+
anchorCreatedAt: timestamp,
|
|
122
|
+
purgeAuditId: z.string().uuid(),
|
|
123
|
+
environments: z.array(ClientEnvironmentSchema),
|
|
124
|
+
});
|
|
125
|
+
const ClientPreviewArtifactSchema = z
|
|
126
|
+
.object({
|
|
127
|
+
schemaVersion: z.literal(APP_PURGE_RECONCILIATION_SCHEMA_VERSION),
|
|
128
|
+
releaseSha,
|
|
129
|
+
createdAt: timestamp,
|
|
130
|
+
expiresAt: timestamp,
|
|
131
|
+
candidateCount: z.number().int().min(0).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES),
|
|
132
|
+
truncated: z.boolean(),
|
|
133
|
+
candidates: z.array(ClientCandidateSchema),
|
|
134
|
+
checksum,
|
|
135
|
+
})
|
|
136
|
+
.superRefine(checkArtifactInvariants);
|
|
137
|
+
const ClientPreviewResponseSchema = z.object({
|
|
138
|
+
ok: z.literal(true),
|
|
139
|
+
artifact: ClientPreviewArtifactSchema,
|
|
140
|
+
});
|
|
141
|
+
const ClientApplyResultSchema = z.object({
|
|
142
|
+
operationId: z.string().uuid(),
|
|
143
|
+
previewChecksum: checksum,
|
|
144
|
+
releaseSha,
|
|
145
|
+
candidateCount: z.number().int().min(0).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES),
|
|
146
|
+
deletedCount: z.number().int().min(0).max(APP_PURGE_RECONCILIATION_MAX_CANDIDATES),
|
|
147
|
+
appliedAt: timestamp,
|
|
148
|
+
});
|
|
149
|
+
const ClientApplyResponseSchema = z.object({
|
|
150
|
+
ok: z.literal(true),
|
|
151
|
+
replayed: z.boolean(),
|
|
152
|
+
result: ClientApplyResultSchema,
|
|
153
|
+
});
|
|
154
|
+
/** Client reader strips additive fields at every response layer while service output stays strict. */
|
|
155
|
+
export const AppPurgeReconciliationClientResponseSchema = z.union([
|
|
156
|
+
ClientPreviewResponseSchema,
|
|
157
|
+
ClientApplyResponseSchema,
|
|
158
|
+
]);
|
|
159
|
+
export const AppPurgeReconciliationErrorCodeSchema = z.enum([
|
|
160
|
+
'app_purge_preview_expired',
|
|
161
|
+
'app_purge_release_mismatch',
|
|
162
|
+
'app_purge_preview_mismatch',
|
|
163
|
+
'app_purge_candidate_drift',
|
|
164
|
+
'app_purge_idempotency_conflict',
|
|
165
|
+
'app_purge_reconciliation_unavailable',
|
|
166
|
+
]);
|
|
167
|
+
/** Exact unsigned bytes hashed for a preview checksum. */
|
|
168
|
+
export function appPurgeReconciliationChecksumPayload(unsignedArtifact) {
|
|
169
|
+
return JSON.stringify({
|
|
170
|
+
schemaVersion: unsignedArtifact.schemaVersion,
|
|
171
|
+
releaseSha: unsignedArtifact.releaseSha,
|
|
172
|
+
createdAt: unsignedArtifact.createdAt,
|
|
173
|
+
expiresAt: unsignedArtifact.expiresAt,
|
|
174
|
+
candidateCount: unsignedArtifact.candidateCount,
|
|
175
|
+
truncated: unsignedArtifact.truncated,
|
|
176
|
+
candidates: unsignedArtifact.candidates.map((candidate) => ({
|
|
177
|
+
org: candidate.org,
|
|
178
|
+
app: candidate.app,
|
|
179
|
+
anchorCreatedAt: candidate.anchorCreatedAt,
|
|
180
|
+
purgeAuditId: candidate.purgeAuditId,
|
|
181
|
+
environments: candidate.environments.map((environment) => ({
|
|
182
|
+
name: environment.name,
|
|
183
|
+
isProduction: environment.isProduction,
|
|
184
|
+
createdAt: environment.createdAt,
|
|
185
|
+
})),
|
|
186
|
+
})),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=app-purge-reconciliation.js.map
|
|
@@ -204,11 +204,11 @@ export declare const assistantWireEventSchema: z.ZodUnion<readonly [z.ZodObject<
|
|
|
204
204
|
}, z.core.$strip>, z.ZodObject<{
|
|
205
205
|
event: z.ZodLiteral<string>;
|
|
206
206
|
data: z.ZodObject<{
|
|
207
|
+
result: z.ZodJSONSchema;
|
|
207
208
|
tool: z.ZodString;
|
|
208
209
|
id: z.ZodString;
|
|
209
210
|
resourceUri: z.ZodString;
|
|
210
211
|
title: z.ZodOptional<z.ZodString>;
|
|
211
|
-
result: z.ZodJSONSchema;
|
|
212
212
|
arguments: z.ZodOptional<z.ZodJSONSchema>;
|
|
213
213
|
resourceMeta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
214
214
|
allowedOpenDomains: z.ZodOptional<z.ZodArray<z.ZodURL>>;
|