@noodleseed/one 0.57.0 → 0.59.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/cli.d.ts.map +1 -1
- package/dist/cli.js +72 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/alerts-ops.d.ts +2 -1
- package/dist/commands/alerts-ops.d.ts.map +1 -1
- package/dist/commands/alerts-ops.js.map +1 -1
- package/dist/commands/analytics-ops.d.ts +4 -3
- package/dist/commands/analytics-ops.d.ts.map +1 -1
- package/dist/commands/analytics-ops.js.map +1 -1
- package/dist/commands/apps-ops.d.ts +5 -4
- package/dist/commands/apps-ops.d.ts.map +1 -1
- package/dist/commands/apps-ops.js.map +1 -1
- package/dist/commands/archive-ops.d.ts +3 -2
- package/dist/commands/archive-ops.d.ts.map +1 -1
- package/dist/commands/archive-ops.js.map +1 -1
- package/dist/commands/assistant-embed-ops.d.ts +9 -1
- package/dist/commands/assistant-embed-ops.d.ts.map +1 -1
- package/dist/commands/assistant-embed-ops.js.map +1 -1
- package/dist/commands/assistant-ops.d.ts +2 -1
- package/dist/commands/assistant-ops.d.ts.map +1 -1
- package/dist/commands/assistant-ops.js +3 -2
- package/dist/commands/assistant-ops.js.map +1 -1
- package/dist/commands/audit-ops.d.ts +2 -1
- package/dist/commands/audit-ops.d.ts.map +1 -1
- package/dist/commands/audit-ops.js.map +1 -1
- package/dist/commands/auth-ops.d.ts +2 -1
- package/dist/commands/auth-ops.d.ts.map +1 -1
- package/dist/commands/auth-ops.js.map +1 -1
- package/dist/commands/author-loop.d.ts +4 -3
- package/dist/commands/author-loop.d.ts.map +1 -1
- package/dist/commands/author-loop.js.map +1 -1
- package/dist/commands/billing-apply-ops.d.ts +2 -1
- package/dist/commands/billing-apply-ops.d.ts.map +1 -1
- package/dist/commands/billing-apply-ops.js.map +1 -1
- package/dist/commands/billing-enforcement-activation-ops.d.ts +2 -1
- package/dist/commands/billing-enforcement-activation-ops.d.ts.map +1 -1
- package/dist/commands/billing-enforcement-activation-ops.js.map +1 -1
- package/dist/commands/billing-enforcement-ops.d.ts +2 -1
- package/dist/commands/billing-enforcement-ops.d.ts.map +1 -1
- package/dist/commands/billing-enforcement-ops.js.map +1 -1
- package/dist/commands/billing-metering-ops.d.ts +2 -1
- package/dist/commands/billing-metering-ops.d.ts.map +1 -1
- package/dist/commands/billing-metering-ops.js.map +1 -1
- package/dist/commands/billing-metering-validation-ops.d.ts +2 -1
- package/dist/commands/billing-metering-validation-ops.d.ts.map +1 -1
- package/dist/commands/billing-metering-validation-ops.js.map +1 -1
- package/dist/commands/billing-ops.d.ts +2 -1
- package/dist/commands/billing-ops.d.ts.map +1 -1
- package/dist/commands/billing-ops.js.map +1 -1
- package/dist/commands/billing-read-ops.d.ts +3 -2
- package/dist/commands/billing-read-ops.d.ts.map +1 -1
- package/dist/commands/billing-read-ops.js.map +1 -1
- package/dist/commands/billing-stripe-ops.d.ts +2 -1
- package/dist/commands/billing-stripe-ops.d.ts.map +1 -1
- package/dist/commands/billing-stripe-ops.js.map +1 -1
- package/dist/commands/config-values.d.ts +2 -1
- package/dist/commands/config-values.d.ts.map +1 -1
- package/dist/commands/config-values.js.map +1 -1
- package/dist/commands/deploy-github-hint.d.ts +6 -0
- package/dist/commands/deploy-github-hint.d.ts.map +1 -0
- package/dist/commands/deploy-github-hint.js +53 -0
- package/dist/commands/deploy-github-hint.js.map +1 -0
- package/dist/commands/deploy-ops.d.ts +5 -7
- package/dist/commands/deploy-ops.d.ts.map +1 -1
- package/dist/commands/deploy-ops.js +14 -54
- package/dist/commands/deploy-ops.js.map +1 -1
- package/dist/commands/deploy-status-ops.d.ts +5 -3
- package/dist/commands/deploy-status-ops.d.ts.map +1 -1
- package/dist/commands/deploy-status-ops.js +9 -1
- package/dist/commands/deploy-status-ops.js.map +1 -1
- package/dist/commands/deploy-target.d.ts +2 -1
- package/dist/commands/deploy-target.d.ts.map +1 -1
- package/dist/commands/deploy-target.js.map +1 -1
- package/dist/commands/deployments-ops.d.ts +5 -4
- package/dist/commands/deployments-ops.d.ts.map +1 -1
- package/dist/commands/deployments-ops.js.map +1 -1
- package/dist/commands/devtools.d.ts +2 -1
- package/dist/commands/devtools.d.ts.map +1 -1
- package/dist/commands/devtools.js.map +1 -1
- package/dist/commands/diagnostics-ops.d.ts +3 -2
- package/dist/commands/diagnostics-ops.d.ts.map +1 -1
- package/dist/commands/diagnostics-ops.js.map +1 -1
- package/dist/commands/envs-ops.d.ts +4 -3
- package/dist/commands/envs-ops.d.ts.map +1 -1
- package/dist/commands/envs-ops.js.map +1 -1
- package/dist/commands/feedback-ops.d.ts +2 -1
- package/dist/commands/feedback-ops.d.ts.map +1 -1
- package/dist/commands/feedback-ops.js.map +1 -1
- package/dist/commands/github-ops.d.ts +5 -4
- package/dist/commands/github-ops.d.ts.map +1 -1
- package/dist/commands/github-ops.js.map +1 -1
- package/dist/commands/github-runs-ops.d.ts +2 -1
- package/dist/commands/github-runs-ops.d.ts.map +1 -1
- package/dist/commands/github-runs-ops.js.map +1 -1
- package/dist/commands/github-shared.d.ts +2 -1
- package/dist/commands/github-shared.d.ts.map +1 -1
- package/dist/commands/github-shared.js.map +1 -1
- package/dist/commands/logs-ops.d.ts +2 -1
- package/dist/commands/logs-ops.d.ts.map +1 -1
- package/dist/commands/logs-ops.js.map +1 -1
- package/dist/commands/org-admin.d.ts +3 -2
- package/dist/commands/org-admin.d.ts.map +1 -1
- package/dist/commands/org-admin.js.map +1 -1
- package/dist/commands/org-openai-challenge.d.ts +2 -1
- package/dist/commands/org-openai-challenge.d.ts.map +1 -1
- package/dist/commands/org-openai-challenge.js.map +1 -1
- package/dist/commands/policy-ops.d.ts +2 -1
- package/dist/commands/policy-ops.d.ts.map +1 -1
- package/dist/commands/policy-ops.js.map +1 -1
- package/dist/commands/resource-shared.d.ts +2 -1
- package/dist/commands/resource-shared.d.ts.map +1 -1
- package/dist/commands/resource-shared.js.map +1 -1
- package/dist/commands/service-ops.d.ts +2 -1
- package/dist/commands/service-ops.d.ts.map +1 -1
- package/dist/commands/service-ops.js.map +1 -1
- package/dist/commands/session.d.ts +12 -4
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +40 -9
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/shared.d.ts +2 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js.map +1 -1
- package/dist/config.d.ts +17 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/control-plane.d.ts +10 -3
- package/dist/control-plane.d.ts.map +1 -1
- package/dist/control-plane.js +38 -2
- package/dist/control-plane.js.map +1 -1
- package/dist/doctor.d.ts +2 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js.map +1 -1
- package/dist/first-run-entry.d.ts +2 -1
- package/dist/first-run-entry.d.ts.map +1 -1
- package/dist/first-run-entry.js.map +1 -1
- package/dist/first-run.d.ts +2 -1
- package/dist/first-run.d.ts.map +1 -1
- package/dist/first-run.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/local-target.d.ts +2 -1
- package/dist/local-target.d.ts.map +1 -1
- package/dist/local-target.js.map +1 -1
- package/dist/plugin-mode/build-readiness-contract.d.ts +36 -0
- package/dist/plugin-mode/build-readiness-contract.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-contract.js +107 -0
- package/dist/plugin-mode/build-readiness-contract.js.map +1 -0
- package/dist/plugin-mode/build-readiness-fingerprint.d.ts +7 -0
- package/dist/plugin-mode/build-readiness-fingerprint.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-fingerprint.js +83 -0
- package/dist/plugin-mode/build-readiness-fingerprint.js.map +1 -0
- package/dist/plugin-mode/build-readiness-recorder.d.ts +15 -0
- package/dist/plugin-mode/build-readiness-recorder.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-recorder.js +150 -0
- package/dist/plugin-mode/build-readiness-recorder.js.map +1 -0
- package/dist/plugin-mode/build-readiness-server.d.ts +22 -0
- package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-server.js +322 -0
- package/dist/plugin-mode/build-readiness-server.js.map +1 -0
- package/dist/plugin-mode/build-readiness-store.d.ts +16 -0
- package/dist/plugin-mode/build-readiness-store.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-store.js +198 -0
- package/dist/plugin-mode/build-readiness-store.js.map +1 -0
- package/dist/plugin-mode/build-readiness-tools.d.ts +47 -0
- package/dist/plugin-mode/build-readiness-tools.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-tools.js +159 -0
- package/dist/plugin-mode/build-readiness-tools.js.map +1 -0
- package/dist/plugin-mode/build-readiness-widget.css.d.ts +2 -0
- package/dist/plugin-mode/build-readiness-widget.css.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-widget.css.js +217 -0
- package/dist/plugin-mode/build-readiness-widget.css.js.map +1 -0
- package/dist/plugin-mode/build-readiness-widget.d.ts +28 -0
- package/dist/plugin-mode/build-readiness-widget.d.ts.map +1 -0
- package/dist/plugin-mode/build-readiness-widget.js +60 -0
- package/dist/plugin-mode/build-readiness-widget.js.map +1 -0
- package/dist/plugin-mode/compatibility.d.ts +22 -0
- package/dist/plugin-mode/compatibility.d.ts.map +1 -0
- package/dist/plugin-mode/compatibility.js +59 -0
- package/dist/plugin-mode/compatibility.js.map +1 -0
- package/dist/plugin-mode/plugin-mcp-bootstrap.d.ts +13 -0
- package/dist/plugin-mode/plugin-mcp-bootstrap.d.ts.map +1 -0
- package/dist/plugin-mode/plugin-mcp-bootstrap.js +90 -0
- package/dist/plugin-mode/plugin-mcp-bootstrap.js.map +1 -0
- package/dist/plugin-mode/profile.d.ts +16 -0
- package/dist/plugin-mode/profile.d.ts.map +1 -0
- package/dist/plugin-mode/profile.js +66 -0
- package/dist/plugin-mode/profile.js.map +1 -0
- package/dist/plugin-mode/service-compatibility.d.ts +15 -0
- package/dist/plugin-mode/service-compatibility.d.ts.map +1 -0
- package/dist/plugin-mode/service-compatibility.js +57 -0
- package/dist/plugin-mode/service-compatibility.js.map +1 -0
- package/dist/update-check.d.ts +2 -16
- package/dist/update-check.d.ts.map +1 -1
- package/dist/update-check.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts +3 -0
- package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/index.js +3 -0
- package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts +5 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +106 -28
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.d.ts +22 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.js +100 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts +8 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js +55 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.d.ts +27 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js +108 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts +9 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +121 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.d.ts +130 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.d.ts.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js +220 -0
- package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +2 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +5 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +4 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +2 -0
- package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts +4 -0
- package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
- package/node_modules/@noodle-borg/auth/dist/verify.js +10 -0
- package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.d.ts +9 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.js +41 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts +637 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js +364 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.d.ts +79 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.js +138 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/index.d.ts +12 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/index.js +12 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/index.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts +16 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/port.js +9 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/port.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts +16 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js +51 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts +13 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.js +90 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/resources.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts +31 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/results.js +80 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/results.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts +19 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/server.js +79 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/server.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts +43 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js +77 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts +4 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js +21 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts +61 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js +37 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts +29 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js +83 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.d.ts +7 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.js +7 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts +138 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js +99 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts +24 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js +59 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.d.ts +16 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.js +20 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.d.ts +2 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js +6 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.d.ts +2 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.js +6 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.d.ts +2 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.js +7 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.d.ts +2 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.js +6 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.d.ts +37 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.js +76 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.d.ts +30 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js +23 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.d.ts +2 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.d.ts.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.js +153 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.js.map +1 -0
- package/node_modules/@noodle-borg/developer-mcp/package.json +37 -0
- package/node_modules/@noodle-borg/module/dist/contract.d.ts +4 -0
- package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +7 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +17 -5
- package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts +16 -0
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js +40 -0
- package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/meter-runtime-config.d.ts +6 -0
- package/node_modules/@noodle-borg/service/dist/billing/meter-runtime-config.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/meter-runtime-config.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.d.ts +45 -0
- package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.js +175 -0
- package/node_modules/@noodle-borg/service/dist/billing/overage-window-closure.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.js +17 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-admission-ledger.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.js +8 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-reconciliation.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.js +10 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-runtime.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js +2 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-meter-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.js +94 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-evidence-schema.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.d.ts +10 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.js +204 -0
- package/node_modules/@noodle-borg/service/dist/billing/postgres-overage-window-close.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/build-info.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/build-info.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/build-info.js +11 -0
- package/node_modules/@noodle-borg/service/dist/build-info.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts +30 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js +311 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.d.ts +69 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.js +118 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts +29 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +223 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js +26 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts +5 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +5 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/main.js +1 -0
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/app.js +5 -0
- package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +6 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js +28 -0
- package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts +48 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js +90 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts +18 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js +29 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts +22 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +144 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts +12 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +61 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js +89 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts +48 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +123 -0
- package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js +2 -0
- package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +6 -1
- package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js +53 -0
- package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +17 -6
- package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +3 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/store.js +2 -0
- package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js +8 -0
- package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.d.ts +52 -0
- package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.js +120 -0
- package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts +7 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js +4 -4
- package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts +4 -3
- package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js +7 -7
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/apps.js +28 -7
- package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +12 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +36 -4
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +4 -3
- package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js +26 -18
- package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +8 -105
- package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts +3 -2
- package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/envs.js +9 -5
- package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/logs.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/plans.js +3 -14
- package/node_modules/@noodle-borg/service/dist/routes/plans.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/policies.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/policies.js +3 -14
- package/node_modules/@noodle-borg/service/dist/routes/policies.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js +51 -0
- package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js +6 -6
- package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js +25 -86
- package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve-resource-auth.d.ts +11 -0
- package/node_modules/@noodle-borg/service/dist/serve-resource-auth.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js +62 -0
- package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +19 -62
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +25 -45
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +35 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/package.json +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
export const BUILD_READINESS_WIDGET_STYLES = `
|
|
2
|
+
@layer reset, tokens, base, components, responsive, motion;
|
|
3
|
+
|
|
4
|
+
@layer reset {
|
|
5
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
6
|
+
html, body { margin: 0; min-width: 0; padding: 0; }
|
|
7
|
+
button { font: inherit; }
|
|
8
|
+
h1, h2, p, ol, ul { margin: 0; }
|
|
9
|
+
ol, ul { list-style: none; padding: 0; }
|
|
10
|
+
[hidden] { display: none !important; }
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@layer tokens {
|
|
14
|
+
:root {
|
|
15
|
+
color-scheme: light dark;
|
|
16
|
+
--ns-bg: var(--color-background-primary, #ffffff);
|
|
17
|
+
--ns-surface: var(--color-background-secondary, #f7f7f8);
|
|
18
|
+
--ns-text: var(--color-text-primary, #17171a);
|
|
19
|
+
--ns-muted: var(--color-text-secondary, #6b6b73);
|
|
20
|
+
--ns-border: var(--color-border-secondary, #e4e4e8);
|
|
21
|
+
--ns-action: #0b0b0c;
|
|
22
|
+
--ns-on-action: #ffffff;
|
|
23
|
+
--ns-ok: var(--color-text-success, #16845b);
|
|
24
|
+
--ns-warn: var(--color-text-warning, #9a6700);
|
|
25
|
+
--ns-error: var(--color-text-danger, #c13c37);
|
|
26
|
+
--ns-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", Roboto, "Segoe UI", system-ui, sans-serif;
|
|
27
|
+
--ns-radius: 22px;
|
|
28
|
+
--ns-radius-sm: 14px;
|
|
29
|
+
--ns-shadow: 0 1px 2px rgb(0 0 0 / 0.04), 0 12px 34px rgb(0 0 0 / 0.06);
|
|
30
|
+
}
|
|
31
|
+
@media (prefers-color-scheme: dark) {
|
|
32
|
+
:root {
|
|
33
|
+
--ns-bg: var(--color-background-primary, #18181b);
|
|
34
|
+
--ns-surface: var(--color-background-secondary, #202024);
|
|
35
|
+
--ns-text: var(--color-text-primary, #f5f5f6);
|
|
36
|
+
--ns-muted: var(--color-text-secondary, #a7a7af);
|
|
37
|
+
--ns-border: var(--color-border-secondary, #35353b);
|
|
38
|
+
--ns-action: #f4f4f5;
|
|
39
|
+
--ns-on-action: #111113;
|
|
40
|
+
--ns-shadow: none;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@layer base {
|
|
46
|
+
body {
|
|
47
|
+
background: transparent;
|
|
48
|
+
color: var(--ns-text);
|
|
49
|
+
font-family: var(--ns-font);
|
|
50
|
+
font-size: 15px;
|
|
51
|
+
font-weight: 400;
|
|
52
|
+
line-height: 1.45;
|
|
53
|
+
text-rendering: optimizeLegibility;
|
|
54
|
+
}
|
|
55
|
+
button:focus-visible {
|
|
56
|
+
outline: 2px solid var(--ns-text);
|
|
57
|
+
outline-offset: 3px;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@layer components {
|
|
62
|
+
.readiness-card {
|
|
63
|
+
background: var(--ns-bg);
|
|
64
|
+
border: 1px solid var(--ns-border);
|
|
65
|
+
border-radius: var(--ns-radius);
|
|
66
|
+
box-shadow: var(--ns-shadow);
|
|
67
|
+
display: grid;
|
|
68
|
+
gap: 20px;
|
|
69
|
+
max-width: 560px;
|
|
70
|
+
min-width: 0;
|
|
71
|
+
overflow: hidden;
|
|
72
|
+
padding: 22px;
|
|
73
|
+
position: relative;
|
|
74
|
+
width: 100%;
|
|
75
|
+
}
|
|
76
|
+
.loading-shader {
|
|
77
|
+
background: linear-gradient(90deg, transparent 0%, rgb(120 119 198 / 0.16) 38%, rgb(255 255 255 / 0.5) 50%, rgb(120 119 198 / 0.16) 62%, transparent 100%);
|
|
78
|
+
height: 3px;
|
|
79
|
+
inset: 0 0 auto;
|
|
80
|
+
pointer-events: none;
|
|
81
|
+
position: absolute;
|
|
82
|
+
transform: translateX(-100%);
|
|
83
|
+
}
|
|
84
|
+
.brand-row, .decision-row, .action-row, .stage-row, .finding-row {
|
|
85
|
+
align-items: center;
|
|
86
|
+
display: flex;
|
|
87
|
+
min-width: 0;
|
|
88
|
+
}
|
|
89
|
+
.brand-row { color: var(--ns-muted); gap: 8px; }
|
|
90
|
+
.brand-mark {
|
|
91
|
+
align-items: center;
|
|
92
|
+
background: var(--ns-text);
|
|
93
|
+
border-radius: 7px;
|
|
94
|
+
color: var(--ns-bg);
|
|
95
|
+
display: inline-flex;
|
|
96
|
+
height: 24px;
|
|
97
|
+
justify-content: center;
|
|
98
|
+
width: 24px;
|
|
99
|
+
}
|
|
100
|
+
.brand-row p { font-size: 13px; letter-spacing: 0.01em; }
|
|
101
|
+
.decision { display: grid; gap: 10px; }
|
|
102
|
+
.decision-row { align-items: flex-start; gap: 12px; justify-content: space-between; }
|
|
103
|
+
.decision-copy { display: grid; gap: 6px; min-width: 0; }
|
|
104
|
+
h1 { font-size: clamp(22px, 6vw, 28px); font-weight: 500; letter-spacing: -0.035em; line-height: 1.12; }
|
|
105
|
+
h2 { font-size: 13px; font-weight: 500; letter-spacing: 0.01em; }
|
|
106
|
+
.summary { color: var(--ns-muted); max-width: 46ch; overflow-wrap: anywhere; }
|
|
107
|
+
.decision-badge {
|
|
108
|
+
align-items: center;
|
|
109
|
+
background: var(--ns-surface);
|
|
110
|
+
border: 1px solid var(--ns-border);
|
|
111
|
+
border-radius: 999px;
|
|
112
|
+
color: var(--ns-muted);
|
|
113
|
+
display: inline-flex;
|
|
114
|
+
flex: none;
|
|
115
|
+
font-size: 12px;
|
|
116
|
+
gap: 6px;
|
|
117
|
+
max-width: 44%;
|
|
118
|
+
min-height: 30px;
|
|
119
|
+
overflow-wrap: anywhere;
|
|
120
|
+
padding: 5px 10px;
|
|
121
|
+
}
|
|
122
|
+
.decision-badge::before, .stage-dot {
|
|
123
|
+
background: currentColor;
|
|
124
|
+
border-radius: 999px;
|
|
125
|
+
content: "";
|
|
126
|
+
flex: none;
|
|
127
|
+
height: 7px;
|
|
128
|
+
width: 7px;
|
|
129
|
+
}
|
|
130
|
+
[data-tone="ok"] { color: var(--ns-ok); }
|
|
131
|
+
[data-tone="warn"] { color: var(--ns-warn); }
|
|
132
|
+
[data-tone="error"] { color: var(--ns-error); }
|
|
133
|
+
[data-tone="neutral"] { color: var(--ns-muted); }
|
|
134
|
+
.section { border-top: 1px solid var(--ns-border); display: grid; gap: 12px; padding-top: 18px; }
|
|
135
|
+
.section-heading { align-items: baseline; display: flex; justify-content: space-between; }
|
|
136
|
+
.section-note { color: var(--ns-muted); font-size: 12px; }
|
|
137
|
+
.stage-list { display: grid; gap: 2px; }
|
|
138
|
+
.stage-row {
|
|
139
|
+
border-radius: 10px;
|
|
140
|
+
color: var(--ns-text);
|
|
141
|
+
gap: 10px;
|
|
142
|
+
justify-content: space-between;
|
|
143
|
+
min-height: 36px;
|
|
144
|
+
padding: 7px 8px;
|
|
145
|
+
}
|
|
146
|
+
.stage-row:hover { background: var(--ns-surface); }
|
|
147
|
+
.stage-label { align-items: center; display: flex; gap: 10px; min-width: 0; }
|
|
148
|
+
.stage-label span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
149
|
+
.stage-status { color: var(--ns-muted); font-size: 12px; text-transform: capitalize; }
|
|
150
|
+
.stage-row[data-tone="ok"] .stage-dot { background: var(--ns-ok); }
|
|
151
|
+
.stage-row[data-tone="warn"] .stage-dot { background: var(--ns-warn); }
|
|
152
|
+
.stage-row[data-tone="error"] .stage-dot { background: var(--ns-error); }
|
|
153
|
+
.stage-row[data-tone="neutral"] .stage-dot { background: var(--ns-muted); }
|
|
154
|
+
.finding-list { display: grid; gap: 8px; }
|
|
155
|
+
.finding-row {
|
|
156
|
+
align-items: flex-start;
|
|
157
|
+
background: var(--ns-surface);
|
|
158
|
+
border-radius: var(--ns-radius-sm);
|
|
159
|
+
gap: 10px;
|
|
160
|
+
padding: 11px 12px;
|
|
161
|
+
}
|
|
162
|
+
.finding-row svg { color: var(--ns-warn); flex: none; margin-top: 2px; }
|
|
163
|
+
.finding-copy { display: grid; gap: 2px; min-width: 0; }
|
|
164
|
+
.finding-code { font-size: 12px; font-weight: 500; overflow-wrap: anywhere; }
|
|
165
|
+
.finding-message { color: var(--ns-muted); font-size: 13px; overflow-wrap: anywhere; }
|
|
166
|
+
.empty-findings { color: var(--ns-muted); font-size: 13px; padding: 4px 0; }
|
|
167
|
+
.action-row { flex-wrap: wrap; gap: 8px; }
|
|
168
|
+
.action {
|
|
169
|
+
align-items: center;
|
|
170
|
+
border: 1px solid var(--ns-border);
|
|
171
|
+
border-radius: 999px;
|
|
172
|
+
cursor: pointer;
|
|
173
|
+
display: inline-flex;
|
|
174
|
+
font-weight: 500;
|
|
175
|
+
gap: 8px;
|
|
176
|
+
justify-content: center;
|
|
177
|
+
min-height: 44px;
|
|
178
|
+
padding: 10px 17px;
|
|
179
|
+
transition: transform 140ms ease, background-color 140ms ease, opacity 140ms ease;
|
|
180
|
+
}
|
|
181
|
+
.action:hover { transform: translateY(-1px); }
|
|
182
|
+
.action:active { transform: translateY(0); }
|
|
183
|
+
.action[aria-busy="true"] { cursor: wait; opacity: 0.62; }
|
|
184
|
+
.action-primary { background: var(--ns-action); border-color: var(--ns-action); color: var(--ns-on-action); }
|
|
185
|
+
.action-secondary { background: transparent; color: var(--ns-text); }
|
|
186
|
+
.action-cancel { color: var(--ns-error); }
|
|
187
|
+
.action-status { color: var(--ns-muted); font-size: 12px; min-height: 18px; }
|
|
188
|
+
.icon { display: block; height: 16px; width: 16px; }
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@layer responsive {
|
|
192
|
+
@media (max-width: 430px) {
|
|
193
|
+
body { font-size: 14px; }
|
|
194
|
+
.readiness-card { border-radius: 18px; gap: 18px; padding: 18px 16px; }
|
|
195
|
+
.decision-row { align-items: stretch; flex-direction: column; }
|
|
196
|
+
.decision-badge { align-self: flex-start; max-width: 100%; }
|
|
197
|
+
.action-row { align-items: stretch; flex-direction: column; }
|
|
198
|
+
.action { width: 100%; }
|
|
199
|
+
.stage-row { padding-inline: 4px; }
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@layer motion {
|
|
204
|
+
.loading-shader { animation: readiness-shader 1.25s cubic-bezier(.22,.72,.22,1) 1 forwards; }
|
|
205
|
+
@keyframes readiness-shader {
|
|
206
|
+
0% { opacity: 0; transform: translateX(-100%); }
|
|
207
|
+
18% { opacity: 1; }
|
|
208
|
+
82% { opacity: 1; }
|
|
209
|
+
100% { opacity: 0; transform: translateX(100%); }
|
|
210
|
+
}
|
|
211
|
+
@media (prefers-reduced-motion: reduce) {
|
|
212
|
+
.loading-shader { animation: none; display: none; }
|
|
213
|
+
.action { transition: none; }
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
`;
|
|
217
|
+
//# sourceMappingURL=build-readiness-widget.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-readiness-widget.css.js","sourceRoot":"","sources":["../../src/plugin-mode/build-readiness-widget.css.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuN5C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const BUILD_READINESS_WIDGET_URI: "ui://noodle-developer/build-readiness/v1";
|
|
2
|
+
export declare const BUILD_READINESS_WIDGET_MIME_TYPE: "text/html;profile=mcp-app";
|
|
3
|
+
declare const CLOSED_WIDGET_META: {
|
|
4
|
+
ui: {
|
|
5
|
+
csp: {
|
|
6
|
+
connectDomains: never[];
|
|
7
|
+
resourceDomains: never[];
|
|
8
|
+
};
|
|
9
|
+
prefersBorder: true;
|
|
10
|
+
};
|
|
11
|
+
'openai/widgetDescription': string;
|
|
12
|
+
};
|
|
13
|
+
export declare function BuildReadinessWidget(): import("react").JSX.Element;
|
|
14
|
+
export interface RenderedBuildReadinessWidget {
|
|
15
|
+
readonly uri: typeof BUILD_READINESS_WIDGET_URI;
|
|
16
|
+
readonly mimeType: typeof BUILD_READINESS_WIDGET_MIME_TYPE;
|
|
17
|
+
readonly text: string;
|
|
18
|
+
readonly _meta: typeof CLOSED_WIDGET_META;
|
|
19
|
+
}
|
|
20
|
+
export declare function renderBuildReadinessWidget(): RenderedBuildReadinessWidget;
|
|
21
|
+
export declare function buildReadinessWidgetToolMeta(): {
|
|
22
|
+
ui: {
|
|
23
|
+
resourceUri: "ui://noodle-developer/build-readiness/v1";
|
|
24
|
+
};
|
|
25
|
+
'openai/outputTemplate': "ui://noodle-developer/build-readiness/v1";
|
|
26
|
+
};
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=build-readiness-widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-readiness-widget.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/build-readiness-widget.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,EAAG,0CAAmD,CAAC;AAC9F,eAAO,MAAM,gCAAgC,EAAG,2BAAoC,CAAC;AAErF,QAAA,MAAM,kBAAkB;;;;;;;;;CAOvB,CAAC;AAUF,wBAAgB,oBAAoB,gCAqHnC;AA+GD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,OAAO,0BAA0B,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,gCAAgC,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,kBAAkB,CAAC;CAC3C;AAED,wBAAgB,0BAA0B,IAAI,4BAA4B,CASzE;AAED,wBAAgB,4BAA4B;;;;;EAK3C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { injectWidgetBridge } from '@noodle-borg/protocol';
|
|
3
|
+
import { renderToStaticMarkup } from 'react-dom/server';
|
|
4
|
+
import { BUILD_READINESS_WIDGET_STYLES } from './build-readiness-widget.css.js';
|
|
5
|
+
export const BUILD_READINESS_WIDGET_URI = 'ui://noodle-developer/build-readiness/v1';
|
|
6
|
+
export const BUILD_READINESS_WIDGET_MIME_TYPE = 'text/html;profile=mcp-app';
|
|
7
|
+
const CLOSED_WIDGET_META = {
|
|
8
|
+
ui: {
|
|
9
|
+
csp: { connectDomains: [], resourceDomains: [] },
|
|
10
|
+
prefersBorder: true,
|
|
11
|
+
},
|
|
12
|
+
'openai/widgetDescription': 'A compact Noodle build decision with live local gates, bounded findings, and the next safe action.',
|
|
13
|
+
};
|
|
14
|
+
const GATE_ARGUMENTS = (operation) => JSON.stringify({ workspaceHandle: '{{data.workspaceHandle}}', operation });
|
|
15
|
+
const WORKSPACE_ARGUMENTS = JSON.stringify({ workspaceHandle: '{{data.workspaceHandle}}' });
|
|
16
|
+
const CANCEL_ARGUMENTS = JSON.stringify({
|
|
17
|
+
workspaceHandle: '{{data.workspaceHandle}}',
|
|
18
|
+
runId: '{{data.activeRunId}}',
|
|
19
|
+
});
|
|
20
|
+
export function BuildReadinessWidget() {
|
|
21
|
+
return (_jsxs("main", { className: "readiness-card", "data-build-readiness": "", children: [_jsx("div", { className: "loading-shader", "aria-hidden": "true" }), _jsxs("header", { className: "decision", children: [_jsxs("div", { className: "brand-row", children: [_jsx("span", { className: "brand-mark", "aria-hidden": "true", children: _jsx(NoodleIcon, {}) }), _jsx("p", { children: "Noodle Seed \u00B7 Build readiness" })] }), _jsxs("div", { className: "decision-row", children: [_jsxs("div", { className: "decision-copy", children: [_jsx("h1", { "data-bind": "data.title", children: "Checking project" }), _jsx("p", { className: "summary", "data-bind": "data.summary", children: "Resolving trustworthy local build evidence." })] }), _jsx("p", { className: "decision-badge", role: "status", "data-bind-tone": "data.tone", children: _jsx("span", { "data-bind": "data.decision", children: "Loading" }) })] })] }), _jsxs("section", { className: "section", "aria-labelledby": "readiness-stages", children: [_jsxs("div", { className: "section-heading", children: [_jsx("h2", { id: "readiness-stages", children: "Build path" }), _jsx("p", { className: "section-note", children: "Current source" })] }), _jsx("ol", { className: "stage-list", "data-collection": "data.stages", "data-collection-item": "stage", children: _jsx("template", { "data-collection-template": "", children: _jsxs("li", { className: "stage-row", "data-bind-tone": "stage.tone", children: [_jsxs("span", { className: "stage-label", children: [_jsx("span", { className: "stage-dot", "aria-hidden": "true" }), _jsx("span", { "data-bind": "stage.label", children: "Stage" })] }), _jsx("span", { className: "stage-status", "data-bind": "stage.status", children: "Not run" })] }) }) })] }), _jsxs("section", { className: "section", "aria-labelledby": "readiness-findings", children: [_jsxs("div", { className: "section-heading", children: [_jsx("h2", { id: "readiness-findings", children: "What needs attention" }), _jsx("p", { className: "section-note", children: "Up to 3" })] }), _jsxs("ul", { className: "finding-list", "data-collection": "data.findings", "data-collection-item": "finding", children: [_jsx("template", { "data-collection-template": "", children: _jsxs("li", { className: "finding-row", children: [_jsx(AlertIcon, {}), _jsxs("div", { className: "finding-copy", children: [_jsx("p", { className: "finding-code", "data-bind": "finding.code", children: "Finding" }), _jsx("p", { className: "finding-message", "data-bind": "finding.message", children: "Review this item." })] })] }) }), _jsx("p", { className: "empty-findings", "data-collection-empty": "", children: "No blocking findings in the latest bounded result." })] })] }), _jsxs("footer", { className: "section", children: [_jsxs("div", { className: "action-row", children: [_jsx(GateButton, { action: "validate", label: "Validate project", operation: "validate" }), _jsx(GateButton, { action: "test", label: "Run tests", operation: "test" }), _jsx(GateButton, { action: "targetCheck", label: "Check target", operation: "target-check" }), _jsxs("button", { type: "button", className: "action action-primary", "data-action": "call", "data-action-tool": "deploy_build", "data-action-args": WORKSPACE_ARGUMENTS, "data-bind-if": "data.actions.deploy", hidden: true, children: [_jsx(DeployIcon, {}), "Deploy build"] }), _jsxs("button", { type: "button", className: "action action-secondary", "data-action": "call", "data-action-tool": "run_build_gate", "data-action-args": GATE_ARGUMENTS('preview'), "data-bind-if": "data.actions.preview", hidden: true, children: [_jsx(PreviewIcon, {}), "Open preview"] }), _jsxs("button", { type: "button", className: "action action-secondary action-cancel", "data-action": "call", "data-action-tool": "cancel_build_run", "data-action-args": CANCEL_ARGUMENTS, "data-bind-if": "data.actions.cancel", hidden: true, children: [_jsx(StopIcon, {}), "Cancel run"] })] }), _jsx("output", { className: "action-status", "aria-live": "polite", "data-noodle-action-status": "", children: "Ready for the next decision." })] })] }));
|
|
22
|
+
}
|
|
23
|
+
function GateButton(props) {
|
|
24
|
+
return (_jsxs("button", { type: "button", className: "action action-primary", "data-action": "call", "data-action-tool": "run_build_gate", "data-action-args": GATE_ARGUMENTS(props.operation), "data-bind-if": `data.actions.${props.action}`, hidden: true, children: [_jsx(RunIcon, {}), props.label] }));
|
|
25
|
+
}
|
|
26
|
+
function NoodleIcon() {
|
|
27
|
+
return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M5 6.5h6.25a3.75 3.75 0 1 1 0 7.5H8.5", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round" }), _jsx("path", { d: "M5 10h6.1a2 2 0 1 1 0 4H10", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round" })] }));
|
|
28
|
+
}
|
|
29
|
+
function RunIcon() {
|
|
30
|
+
return (_jsx("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "m7.25 5 6 5-6 5V5Z", stroke: "currentColor", strokeWidth: "1.5", strokeLinejoin: "round" }) }));
|
|
31
|
+
}
|
|
32
|
+
function PreviewIcon() {
|
|
33
|
+
return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M2.75 10s2.5-4 7.25-4 7.25 4 7.25 4-2.5 4-7.25 4-7.25-4-7.25-4Z", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("circle", { cx: "10", cy: "10", r: "1.75", stroke: "currentColor", strokeWidth: "1.5" })] }));
|
|
34
|
+
}
|
|
35
|
+
function DeployIcon() {
|
|
36
|
+
return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M10 14.75v-9.5m0 0L6.5 8.75M10 5.25l3.5 3.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }), _jsx("path", { d: "M4 13.5v2.25h12V13.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" })] }));
|
|
37
|
+
}
|
|
38
|
+
function StopIcon() {
|
|
39
|
+
return (_jsx("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: _jsx("rect", { x: "6", y: "6", width: "8", height: "8", rx: "1.5", stroke: "currentColor", strokeWidth: "1.5" }) }));
|
|
40
|
+
}
|
|
41
|
+
function AlertIcon() {
|
|
42
|
+
return (_jsxs("svg", { className: "icon", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: [_jsx("path", { d: "M10 3.25 17 16H3l7-12.75Z", stroke: "currentColor", strokeWidth: "1.4", strokeLinejoin: "round" }), _jsx("path", { d: "M10 7.25v4.25m0 2.25v.1", stroke: "currentColor", strokeWidth: "1.4", strokeLinecap: "round" })] }));
|
|
43
|
+
}
|
|
44
|
+
export function renderBuildReadinessWidget() {
|
|
45
|
+
const body = renderToStaticMarkup(_jsx(BuildReadinessWidget, {}));
|
|
46
|
+
const document = `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Noodle build readiness</title><style>${BUILD_READINESS_WIDGET_STYLES}</style></head><body>${body}</body></html>`;
|
|
47
|
+
return {
|
|
48
|
+
uri: BUILD_READINESS_WIDGET_URI,
|
|
49
|
+
mimeType: BUILD_READINESS_WIDGET_MIME_TYPE,
|
|
50
|
+
text: injectWidgetBridge(BUILD_READINESS_WIDGET_MIME_TYPE, document),
|
|
51
|
+
_meta: CLOSED_WIDGET_META,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function buildReadinessWidgetToolMeta() {
|
|
55
|
+
return {
|
|
56
|
+
ui: { resourceUri: BUILD_READINESS_WIDGET_URI },
|
|
57
|
+
'openai/outputTemplate': BUILD_READINESS_WIDGET_URI,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=build-readiness-widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-readiness-widget.js","sourceRoot":"","sources":["../../src/plugin-mode/build-readiness-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type PluginCompatibilityManifest } from '@noodle-borg/agent-kit';
|
|
2
|
+
export type { PluginCompatibilityManifest } from '@noodle-borg/agent-kit';
|
|
3
|
+
export declare function readPluginCompatibility(path: string): PluginCompatibilityManifest;
|
|
4
|
+
export declare function pluginServiceOrigin(manifest: PluginCompatibilityManifest): string;
|
|
5
|
+
export declare function assertPluginServiceOrigin(manifest: PluginCompatibilityManifest, serviceUrl: string): void;
|
|
6
|
+
export declare function assertPluginCompatibility(input: {
|
|
7
|
+
readonly manifest: PluginCompatibilityManifest;
|
|
8
|
+
readonly cliVersion: string;
|
|
9
|
+
readonly serviceUrl?: string;
|
|
10
|
+
readonly developerMcpCapabilityVersion?: string;
|
|
11
|
+
}): void;
|
|
12
|
+
export interface PluginCompatibilityMismatch {
|
|
13
|
+
readonly kind: 'cli' | 'server';
|
|
14
|
+
readonly cause: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function pluginCompatibilityMismatch(input: {
|
|
17
|
+
readonly manifest: PluginCompatibilityManifest;
|
|
18
|
+
readonly cliVersion: string;
|
|
19
|
+
readonly serviceUrl?: string;
|
|
20
|
+
readonly developerMcpCapabilityVersion?: string;
|
|
21
|
+
}): PluginCompatibilityMismatch | undefined;
|
|
22
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/compatibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,2BAA2B,EAA4B,MAAM,wBAAwB,CAAC;AAEpG,YAAY,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CAOjF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,MAAM,CAEjF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,2BAA2B,EACrC,UAAU,EAAE,MAAM,GACjB,IAAI,CAMN;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACjD,GAAG,IAAI,CAGP;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACjD,GAAG,2BAA2B,GAAG,SAAS,CAgC1C"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { parsePluginCompatibility } from '@noodle-borg/agent-kit';
|
|
3
|
+
export function readPluginCompatibility(path) {
|
|
4
|
+
try {
|
|
5
|
+
return parsePluginCompatibility(JSON.parse(readFileSync(path, 'utf8')));
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
9
|
+
throw new Error(`Could not read plugin compatibility metadata: ${detail}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function pluginServiceOrigin(manifest) {
|
|
13
|
+
return new URL(manifest.developerMcpUrl).origin;
|
|
14
|
+
}
|
|
15
|
+
export function assertPluginServiceOrigin(manifest, serviceUrl) {
|
|
16
|
+
const pinned = pluginServiceOrigin(manifest);
|
|
17
|
+
const selected = new URL(serviceUrl).origin;
|
|
18
|
+
if (selected !== pinned) {
|
|
19
|
+
throw new Error(`The installed Noodle plugin is pinned to ${pinned}, not ${selected}.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function assertPluginCompatibility(input) {
|
|
23
|
+
const mismatch = pluginCompatibilityMismatch(input);
|
|
24
|
+
if (mismatch !== undefined)
|
|
25
|
+
throw new Error(mismatch.cause);
|
|
26
|
+
}
|
|
27
|
+
export function pluginCompatibilityMismatch(input) {
|
|
28
|
+
if (input.manifest.cliVersion !== input.cliVersion) {
|
|
29
|
+
return {
|
|
30
|
+
kind: 'cli',
|
|
31
|
+
cause: `The plugin pins CLI ${input.manifest.cliVersion}, but the launcher resolved ${input.cliVersion}.`,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (input.serviceUrl !== undefined) {
|
|
35
|
+
let serviceOrigin;
|
|
36
|
+
try {
|
|
37
|
+
serviceOrigin = new URL(input.serviceUrl).origin;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return { kind: 'server', cause: 'The selected Noodle Cloud service URL is invalid.' };
|
|
41
|
+
}
|
|
42
|
+
const pinnedOrigin = pluginServiceOrigin(input.manifest);
|
|
43
|
+
if (serviceOrigin !== pinnedOrigin) {
|
|
44
|
+
return {
|
|
45
|
+
kind: 'server',
|
|
46
|
+
cause: `The plugin is pinned to ${pinnedOrigin}, not ${serviceOrigin}.`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (input.developerMcpCapabilityVersion !== undefined &&
|
|
51
|
+
input.manifest.developerMcpCapabilityVersion !== input.developerMcpCapabilityVersion) {
|
|
52
|
+
return {
|
|
53
|
+
kind: 'server',
|
|
54
|
+
cause: `The plugin requires Developer MCP capability ${input.manifest.developerMcpCapabilityVersion}, but Noodle Cloud provides ${input.developerMcpCapabilityVersion}.`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/plugin-mode/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAoC,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIpG,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC;QACH,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,iDAAiD,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAqC;IACvE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAqC,EACrC,UAAkB;IAElB,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,SAAS,QAAQ,GAAG,CAAC,CAAC;IAC1F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAKzC;IACC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAOD,MAAM,UAAU,2BAA2B,CAAC,KAK3C;IACC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,uBAAuB,KAAK,CAAC,QAAQ,CAAC,UAAU,+BAA+B,KAAK,CAAC,UAAU,GAAG;SAC1G,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,aAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC;QACxF,CAAC;QACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,2BAA2B,YAAY,SAAS,aAAa,GAAG;aACxE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IACE,KAAK,CAAC,6BAA6B,KAAK,SAAS;QACjD,KAAK,CAAC,QAAQ,CAAC,6BAA6B,KAAK,KAAK,CAAC,6BAA6B,EACpF,CAAC;QACD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,gDAAgD,KAAK,CAAC,QAAQ,CAAC,6BAA6B,+BAA+B,KAAK,CAAC,6BAA6B,GAAG;SACzK,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface BootstrapOptions {
|
|
2
|
+
readonly env: NodeJS.ProcessEnv;
|
|
3
|
+
readonly home: string;
|
|
4
|
+
readonly cliVersion: string;
|
|
5
|
+
}
|
|
6
|
+
interface BootstrappedInvocation {
|
|
7
|
+
readonly argv: readonly string[];
|
|
8
|
+
readonly env: NodeJS.ProcessEnv;
|
|
9
|
+
}
|
|
10
|
+
/** Materialize the signed plugin tuple when a host launches the exact pinned CLI package. */
|
|
11
|
+
export declare function bootstrapPluginMcpInvocation(argv: readonly string[], options: BootstrapOptions): Promise<BootstrappedInvocation | undefined>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=plugin-mcp-bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-mcp-bootstrap.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/plugin-mcp-bootstrap.ts"],"names":[],"mappings":"AAcA,UAAU,gBAAgB;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACjC;AAED,6FAA6F;AAC7F,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAuC7C"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { chmod, mkdir, rename, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { createPluginCompatibility, renderPluginCompatibilityJson } from '@noodle-borg/agent-kit';
|
|
5
|
+
import { PluginModeError, resolvePluginMode } from './profile.js';
|
|
6
|
+
const BOOTSTRAP_FLAGS = [
|
|
7
|
+
'--plugin-host',
|
|
8
|
+
'--plugin-version',
|
|
9
|
+
'--developer-mcp-url',
|
|
10
|
+
'--developer-mcp-capability-version',
|
|
11
|
+
];
|
|
12
|
+
/** Materialize the signed plugin tuple when a host launches the exact pinned CLI package. */
|
|
13
|
+
export async function bootstrapPluginMcpInvocation(argv, options) {
|
|
14
|
+
if (argv[0] !== 'plugin-mcp' || hasManagedPluginEnvironment(options.env))
|
|
15
|
+
return undefined;
|
|
16
|
+
const values = parseBootstrapArguments(argv.slice(1));
|
|
17
|
+
const host = pluginHost(values.get('--plugin-host'));
|
|
18
|
+
let compatibility;
|
|
19
|
+
try {
|
|
20
|
+
compatibility = createPluginCompatibility({
|
|
21
|
+
mode: 'release',
|
|
22
|
+
pluginVersion: requiredValue(values, '--plugin-version'),
|
|
23
|
+
cliVersion: options.cliVersion,
|
|
24
|
+
developerMcpUrl: requiredValue(values, '--developer-mcp-url'),
|
|
25
|
+
developerMcpCapabilityVersion: requiredValue(values, '--developer-mcp-capability-version'),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
throw bootstrapError(error instanceof Error ? error.message : String(error));
|
|
30
|
+
}
|
|
31
|
+
const configHome = join(options.home, '.noodle', 'plugin-profiles', host);
|
|
32
|
+
const compatibilityFile = join(configHome, 'plugin-mcp-compatibility.json');
|
|
33
|
+
const env = {
|
|
34
|
+
...options.env,
|
|
35
|
+
NOODLE_PLUGIN_HOST: host,
|
|
36
|
+
NOODLE_CONFIG_HOME: configHome,
|
|
37
|
+
NOODLE_PLUGIN_COMPATIBILITY_FILE: compatibilityFile,
|
|
38
|
+
};
|
|
39
|
+
resolvePluginMode(env);
|
|
40
|
+
await mkdir(configHome, { recursive: true, mode: 0o700 });
|
|
41
|
+
await chmod(configHome, 0o700);
|
|
42
|
+
const temporaryFile = join(configHome, `.plugin-mcp-compatibility.${randomUUID()}.tmp`);
|
|
43
|
+
await writeFile(temporaryFile, renderPluginCompatibilityJson(compatibility), {
|
|
44
|
+
encoding: 'utf8',
|
|
45
|
+
flag: 'wx',
|
|
46
|
+
mode: 0o600,
|
|
47
|
+
});
|
|
48
|
+
await rename(temporaryFile, compatibilityFile);
|
|
49
|
+
await chmod(compatibilityFile, 0o600);
|
|
50
|
+
return { argv: ['plugin-mcp'], env };
|
|
51
|
+
}
|
|
52
|
+
function hasManagedPluginEnvironment(env) {
|
|
53
|
+
return (env.NOODLE_PLUGIN_HOST !== undefined ||
|
|
54
|
+
env.NOODLE_CONFIG_HOME !== undefined ||
|
|
55
|
+
env.NOODLE_PLUGIN_COMPATIBILITY_FILE !== undefined);
|
|
56
|
+
}
|
|
57
|
+
function parseBootstrapArguments(argv) {
|
|
58
|
+
if (argv.length !== BOOTSTRAP_FLAGS.length * 2) {
|
|
59
|
+
throw bootstrapError('expected one value for every supported flag');
|
|
60
|
+
}
|
|
61
|
+
const supported = new Set(BOOTSTRAP_FLAGS);
|
|
62
|
+
const values = new Map();
|
|
63
|
+
for (let index = 0; index < argv.length; index += 2) {
|
|
64
|
+
const flag = argv[index];
|
|
65
|
+
const value = argv[index + 1];
|
|
66
|
+
if (flag === undefined || !supported.has(flag) || values.has(flag) || value === undefined) {
|
|
67
|
+
throw bootstrapError('arguments must be unique supported flag-value pairs');
|
|
68
|
+
}
|
|
69
|
+
values.set(flag, value);
|
|
70
|
+
}
|
|
71
|
+
for (const flag of BOOTSTRAP_FLAGS)
|
|
72
|
+
requiredValue(values, flag);
|
|
73
|
+
return values;
|
|
74
|
+
}
|
|
75
|
+
function requiredValue(values, flag) {
|
|
76
|
+
const value = values.get(flag);
|
|
77
|
+
if (value === undefined || value === '')
|
|
78
|
+
throw bootstrapError(`${flag} requires a value`);
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
function pluginHost(value) {
|
|
82
|
+
if (value !== 'codex' && value !== 'claude-code' && value !== 'cursor') {
|
|
83
|
+
throw bootstrapError('--plugin-host must be codex, claude-code, or cursor');
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
function bootstrapError(reason) {
|
|
88
|
+
return new PluginModeError('plugin_mcp_bootstrap_invalid', `Plugin MCP bootstrap: ${reason}.`);
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=plugin-mcp-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-mcp-bootstrap.js","sourceRoot":"","sources":["../../src/plugin-mode/plugin-mcp-bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type PluginHost = 'codex' | 'claude-code' | 'cursor';
|
|
2
|
+
export interface PluginMode {
|
|
3
|
+
readonly host: PluginHost;
|
|
4
|
+
readonly configHome: string;
|
|
5
|
+
readonly compatibilityFile: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class PluginModeError extends Error {
|
|
8
|
+
readonly code: string;
|
|
9
|
+
constructor(code: string, message: string);
|
|
10
|
+
}
|
|
11
|
+
/** Resolve the launcher's complete fail-closed environment tuple exactly once. */
|
|
12
|
+
export declare function resolvePluginMode(env: NodeJS.ProcessEnv): PluginMode | undefined;
|
|
13
|
+
/** Plugin credentials and service selection are owned exclusively by the signed release tuple. */
|
|
14
|
+
export declare function assertPluginInvocation(argv: readonly string[]): void;
|
|
15
|
+
export declare function splitPluginPathComponents(path: string, root: string, separator: string): readonly string[];
|
|
16
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/plugin-mode/profile.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAQD,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK1C;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS,CAwBhF;AAED,kGAAkG;AAClG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAQpE;AA+BD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,SAAS,MAAM,EAAE,CAEnB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { existsSync, lstatSync } from 'node:fs';
|
|
2
|
+
import { isAbsolute, normalize, parse, resolve, sep } from 'node:path';
|
|
3
|
+
const PLUGIN_VARIABLES = [
|
|
4
|
+
'NOODLE_PLUGIN_HOST',
|
|
5
|
+
'NOODLE_CONFIG_HOME',
|
|
6
|
+
'NOODLE_PLUGIN_COMPATIBILITY_FILE',
|
|
7
|
+
];
|
|
8
|
+
export class PluginModeError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
constructor(code, message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'PluginModeError';
|
|
13
|
+
this.code = code;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Resolve the launcher's complete fail-closed environment tuple exactly once. */
|
|
17
|
+
export function resolvePluginMode(env) {
|
|
18
|
+
const values = PLUGIN_VARIABLES.map((name) => env[name]);
|
|
19
|
+
if (values.every((value) => value === undefined))
|
|
20
|
+
return undefined;
|
|
21
|
+
if (values.some((value) => value === undefined || value === '')) {
|
|
22
|
+
throw new PluginModeError('plugin_environment_incomplete', `Plugin mode requires all three variables: ${PLUGIN_VARIABLES.join(', ')}.`);
|
|
23
|
+
}
|
|
24
|
+
const host = env.NOODLE_PLUGIN_HOST;
|
|
25
|
+
if (host !== 'codex' && host !== 'claude-code' && host !== 'cursor') {
|
|
26
|
+
throw new PluginModeError('plugin_host_invalid', `Unknown plugin host: ${host ?? '(missing)'}.`);
|
|
27
|
+
}
|
|
28
|
+
const configHome = canonicalAbsolutePath('NOODLE_CONFIG_HOME', env.NOODLE_CONFIG_HOME);
|
|
29
|
+
rejectSymlinkComponents(configHome);
|
|
30
|
+
const compatibilityFile = canonicalAbsolutePath('NOODLE_PLUGIN_COMPATIBILITY_FILE', env.NOODLE_PLUGIN_COMPATIBILITY_FILE);
|
|
31
|
+
return { host, configHome, compatibilityFile };
|
|
32
|
+
}
|
|
33
|
+
/** Plugin credentials and service selection are owned exclusively by the signed release tuple. */
|
|
34
|
+
export function assertPluginInvocation(argv) {
|
|
35
|
+
const forbidden = argv.find((arg) => arg === '--auth-token' || arg === '--service');
|
|
36
|
+
if (forbidden !== undefined) {
|
|
37
|
+
throw new PluginModeError('plugin_override_forbidden', `${forbidden} is not allowed in plugin mode; use the service and OAuth grant pinned by the installed plugin.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function canonicalAbsolutePath(name, value) {
|
|
41
|
+
if (value === undefined ||
|
|
42
|
+
value.includes('\0') ||
|
|
43
|
+
!isAbsolute(value) ||
|
|
44
|
+
normalize(value) !== value ||
|
|
45
|
+
resolve(value) !== value) {
|
|
46
|
+
throw new PluginModeError('plugin_path_invalid', `${name} must be a canonical absolute path.`);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
function rejectSymlinkComponents(path) {
|
|
51
|
+
const root = parse(path).root;
|
|
52
|
+
const parts = splitPluginPathComponents(path, root, sep);
|
|
53
|
+
let cursor = root;
|
|
54
|
+
for (const part of parts) {
|
|
55
|
+
cursor = resolve(cursor, part);
|
|
56
|
+
if (!existsSync(cursor))
|
|
57
|
+
continue;
|
|
58
|
+
if (lstatSync(cursor).isSymbolicLink()) {
|
|
59
|
+
throw new PluginModeError('plugin_profile_symlink', `NOODLE_CONFIG_HOME must not traverse a symbolic link (${cursor}).`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function splitPluginPathComponents(path, root, separator) {
|
|
64
|
+
return path.slice(root.length).split(separator).filter(Boolean);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/plugin-mode/profile.ts"],"names":[],"mappings":"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"}
|