@tickernelz/paperclip-pro-shared 2026.925.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/.paperclip-build-complete +1 -0
- package/dist/account-handle.d.ts +26 -0
- package/dist/account-handle.d.ts.map +1 -0
- package/dist/account-handle.js +48 -0
- package/dist/account-handle.js.map +1 -0
- package/dist/account-handle.test.d.ts +2 -0
- package/dist/account-handle.test.d.ts.map +1 -0
- package/dist/account-handle.test.js +62 -0
- package/dist/account-handle.test.js.map +1 -0
- package/dist/adapter-agnostic-keys.test.d.ts +2 -0
- package/dist/adapter-agnostic-keys.test.d.ts.map +1 -0
- package/dist/adapter-agnostic-keys.test.js +33 -0
- package/dist/adapter-agnostic-keys.test.js.map +1 -0
- package/dist/adapter-auth-check-code.d.ts +13 -0
- package/dist/adapter-auth-check-code.d.ts.map +1 -0
- package/dist/adapter-auth-check-code.js +13 -0
- package/dist/adapter-auth-check-code.js.map +1 -0
- package/dist/adapter-auth-check-code.test.d.ts +2 -0
- package/dist/adapter-auth-check-code.test.d.ts.map +1 -0
- package/dist/adapter-auth-check-code.test.js +8 -0
- package/dist/adapter-auth-check-code.test.js.map +1 -0
- package/dist/adapter-auth-session.d.ts +16 -0
- package/dist/adapter-auth-session.d.ts.map +1 -0
- package/dist/adapter-auth-session.js +37 -0
- package/dist/adapter-auth-session.js.map +1 -0
- package/dist/adapter-type.d.ts +4 -0
- package/dist/adapter-type.d.ts.map +1 -0
- package/dist/adapter-type.js +14 -0
- package/dist/adapter-type.js.map +1 -0
- package/dist/adapter-types.test.d.ts +2 -0
- package/dist/adapter-types.test.d.ts.map +1 -0
- package/dist/adapter-types.test.js +46 -0
- package/dist/adapter-types.test.js.map +1 -0
- package/dist/agent-appearance.d.ts +53 -0
- package/dist/agent-appearance.d.ts.map +1 -0
- package/dist/agent-appearance.js +51 -0
- package/dist/agent-appearance.js.map +1 -0
- package/dist/agent-appearance.test.d.ts +2 -0
- package/dist/agent-appearance.test.d.ts.map +1 -0
- package/dist/agent-appearance.test.js +32 -0
- package/dist/agent-appearance.test.js.map +1 -0
- package/dist/agent-eligibility.d.ts +67 -0
- package/dist/agent-eligibility.d.ts.map +1 -0
- package/dist/agent-eligibility.js +171 -0
- package/dist/agent-eligibility.js.map +1 -0
- package/dist/agent-eligibility.test.d.ts +2 -0
- package/dist/agent-eligibility.test.d.ts.map +1 -0
- package/dist/agent-eligibility.test.js +187 -0
- package/dist/agent-eligibility.test.js.map +1 -0
- package/dist/agent-url-key.d.ts +4 -0
- package/dist/agent-url-key.d.ts.map +1 -0
- package/dist/agent-url-key.js +22 -0
- package/dist/agent-url-key.js.map +1 -0
- package/dist/ai-connections.d.ts +220 -0
- package/dist/ai-connections.d.ts.map +1 -0
- package/dist/ai-connections.js +152 -0
- package/dist/ai-connections.js.map +1 -0
- package/dist/announcements.d.ts +146 -0
- package/dist/announcements.d.ts.map +1 -0
- package/dist/announcements.js +72 -0
- package/dist/announcements.js.map +1 -0
- package/dist/announcements.test.d.ts +2 -0
- package/dist/announcements.test.d.ts.map +1 -0
- package/dist/announcements.test.js +53 -0
- package/dist/announcements.test.js.map +1 -0
- package/dist/api.d.ts +69 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +69 -0
- package/dist/api.js.map +1 -0
- package/dist/app-definitions/agentmail.json +49 -0
- package/dist/app-definitions/airtable.json +41 -0
- package/dist/app-definitions/anthropic.json +75 -0
- package/dist/app-definitions/api-key-generic.json +43 -0
- package/dist/app-definitions/arcade.json +36 -0
- package/dist/app-definitions/asana.json +42 -0
- package/dist/app-definitions/beehiiv.json +41 -0
- package/dist/app-definitions/bitly.json +78 -0
- package/dist/app-definitions/box.json +42 -0
- package/dist/app-definitions/brex.json +43 -0
- package/dist/app-definitions/candid.json +41 -0
- package/dist/app-definitions/clickhouse.json +59 -0
- package/dist/app-definitions/cloudflare.json +78 -0
- package/dist/app-definitions/cloudinary.json +42 -0
- package/dist/app-definitions/coda.json +80 -0
- package/dist/app-definitions/composio.json +39 -0
- package/dist/app-definitions/context7.json +33 -0
- package/dist/app-definitions/discord.json +66 -0
- package/dist/app-definitions/egnyte.json +41 -0
- package/dist/app-definitions/embat.json +41 -0
- package/dist/app-definitions/executor.json +36 -0
- package/dist/app-definitions/fireflies.json +82 -0
- package/dist/app-definitions/github.json +124 -0
- package/dist/app-definitions/gmail.json +182 -0
- package/dist/app-definitions/google-calendar.json +188 -0
- package/dist/app-definitions/google-chat.json +189 -0
- package/dist/app-definitions/google-docs.json +187 -0
- package/dist/app-definitions/google-drive.json +183 -0
- package/dist/app-definitions/google-people.json +110 -0
- package/dist/app-definitions/google-sheets.json +211 -0
- package/dist/app-definitions/google-slides.json +187 -0
- package/dist/app-definitions/google-workspace-search.json +113 -0
- package/dist/app-definitions/hugging-face.json +44 -0
- package/dist/app-definitions/imessage-photon.json +50 -0
- package/dist/app-definitions/jira.json +65 -0
- package/dist/app-definitions/kernel.json +78 -0
- package/dist/app-definitions/linear.json +62 -0
- package/dist/app-definitions/local-falcon.json +41 -0
- package/dist/app-definitions/make.json +42 -0
- package/dist/app-definitions/manufact.json +42 -0
- package/dist/app-definitions/mem0.json +56 -0
- package/dist/app-definitions/microsoft-teams.json +67 -0
- package/dist/app-definitions/miro.json +41 -0
- package/dist/app-definitions/mixpanel.json +43 -0
- package/dist/app-definitions/netlify.json +42 -0
- package/dist/app-definitions/notion.json +57 -0
- package/dist/app-definitions/oauth-generic.json +47 -0
- package/dist/app-definitions/openai.json +74 -0
- package/dist/app-definitions/openrouter.json +53 -0
- package/dist/app-definitions/oreilly.json +78 -0
- package/dist/app-definitions/pagerduty.json +93 -0
- package/dist/app-definitions/planetscale.json +91 -0
- package/dist/app-definitions/posthog.json +278 -0
- package/dist/app-definitions/postman.json +224 -0
- package/dist/app-definitions/railway.json +61 -0
- package/dist/app-definitions/razorpay.json +81 -0
- package/dist/app-definitions/resend.json +42 -0
- package/dist/app-definitions/sanity.json +79 -0
- package/dist/app-definitions/sentry.json +42 -0
- package/dist/app-definitions/shopify.json +117 -0
- package/dist/app-definitions/similarweb.json +57 -0
- package/dist/app-definitions/slack.json +86 -0
- package/dist/app-definitions/stripe.json +80 -0
- package/dist/app-definitions/supabase.json +164 -0
- package/dist/app-definitions/telegram.json +53 -0
- package/dist/app-definitions/ticket-tailor.json +42 -0
- package/dist/app-definitions/ticktick.json +41 -0
- package/dist/app-definitions/todoist.json +41 -0
- package/dist/app-definitions/vercel.json +43 -0
- package/dist/app-definitions/webflow.json +41 -0
- package/dist/app-definitions/wix.json +42 -0
- package/dist/app-definitions/xai.json +74 -0
- package/dist/app-definitions/xero.json +53 -0
- package/dist/app-definitions/youcom.json +100 -0
- package/dist/app-definitions/zapier.json +32 -0
- package/dist/app-definitions-url.test.d.ts +2 -0
- package/dist/app-definitions-url.test.d.ts.map +1 -0
- package/dist/app-definitions-url.test.js +43 -0
- package/dist/app-definitions-url.test.js.map +1 -0
- package/dist/app-definitions.d.ts +41 -0
- package/dist/app-definitions.d.ts.map +1 -0
- package/dist/app-definitions.generated.d.ts +3 -0
- package/dist/app-definitions.generated.d.ts.map +1 -0
- package/dist/app-definitions.generated.js +77 -0
- package/dist/app-definitions.generated.js.map +1 -0
- package/dist/app-definitions.js +212 -0
- package/dist/app-definitions.js.map +1 -0
- package/dist/app-definitions.test.d.ts +2 -0
- package/dist/app-definitions.test.d.ts.map +1 -0
- package/dist/app-definitions.test.js +774 -0
- package/dist/app-definitions.test.js.map +1 -0
- package/dist/cliplab/LICENSE +22 -0
- package/dist/cliplab/PROVENANCE.md +18 -0
- package/dist/cliplab/character.d.ts +4 -0
- package/dist/cliplab/character.d.ts.map +1 -0
- package/dist/cliplab/character.js +2324 -0
- package/dist/cliplab/character.js.map +1 -0
- package/dist/cliplab/definition.d.ts +13 -0
- package/dist/cliplab/definition.d.ts.map +1 -0
- package/dist/cliplab/definition.js +28 -0
- package/dist/cliplab/definition.js.map +1 -0
- package/dist/cliplab/face-morph.d.ts +26 -0
- package/dist/cliplab/face-morph.d.ts.map +1 -0
- package/dist/cliplab/face-morph.js +301 -0
- package/dist/cliplab/face-morph.js.map +1 -0
- package/dist/cliplab/gaze.d.ts +42 -0
- package/dist/cliplab/gaze.d.ts.map +1 -0
- package/dist/cliplab/gaze.js +57 -0
- package/dist/cliplab/gaze.js.map +1 -0
- package/dist/cliplab/model.d.ts +176 -0
- package/dist/cliplab/model.d.ts.map +1 -0
- package/dist/cliplab/model.js +337 -0
- package/dist/cliplab/model.js.map +1 -0
- package/dist/cliplab/palette-tokens.d.ts +75 -0
- package/dist/cliplab/palette-tokens.d.ts.map +1 -0
- package/dist/cliplab/palette-tokens.js +76 -0
- package/dist/cliplab/palette-tokens.js.map +1 -0
- package/dist/cliplab/particles.d.ts +15 -0
- package/dist/cliplab/particles.d.ts.map +1 -0
- package/dist/cliplab/particles.js +23 -0
- package/dist/cliplab/particles.js.map +1 -0
- package/dist/cliplab/renderer.d.ts +129 -0
- package/dist/cliplab/renderer.d.ts.map +1 -0
- package/dist/cliplab/renderer.js +762 -0
- package/dist/cliplab/renderer.js.map +1 -0
- package/dist/cliplab/runtime.d.ts +21 -0
- package/dist/cliplab/runtime.d.ts.map +1 -0
- package/dist/cliplab/runtime.js +140 -0
- package/dist/cliplab/runtime.js.map +1 -0
- package/dist/cliplab/static.d.ts +4 -0
- package/dist/cliplab/static.d.ts.map +1 -0
- package/dist/cliplab/static.js +16 -0
- package/dist/cliplab/static.js.map +1 -0
- package/dist/cliplab/svg-canvas.d.ts +56 -0
- package/dist/cliplab/svg-canvas.d.ts.map +1 -0
- package/dist/cliplab/svg-canvas.js +134 -0
- package/dist/cliplab/svg-canvas.js.map +1 -0
- package/dist/cliplab/svg-path.d.ts +24 -0
- package/dist/cliplab/svg-path.d.ts.map +1 -0
- package/dist/cliplab/svg-path.js +151 -0
- package/dist/cliplab/svg-path.js.map +1 -0
- package/dist/cliplab/svg-snapshot.d.ts +28 -0
- package/dist/cliplab/svg-snapshot.d.ts.map +1 -0
- package/dist/cliplab/svg-snapshot.js +168 -0
- package/dist/cliplab/svg-snapshot.js.map +1 -0
- package/dist/company-import-transfer.d.ts +80 -0
- package/dist/company-import-transfer.d.ts.map +1 -0
- package/dist/company-import-transfer.js +63 -0
- package/dist/company-import-transfer.js.map +1 -0
- package/dist/company-import-transfer.test.d.ts +2 -0
- package/dist/company-import-transfer.test.d.ts.map +1 -0
- package/dist/company-import-transfer.test.js +15 -0
- package/dist/company-import-transfer.test.js.map +1 -0
- package/dist/config-schema.d.ts +252 -0
- package/dist/config-schema.d.ts.map +1 -0
- package/dist/config-schema.js +268 -0
- package/dist/config-schema.js.map +1 -0
- package/dist/config-schema.test.d.ts +2 -0
- package/dist/config-schema.test.d.ts.map +1 -0
- package/dist/config-schema.test.js +126 -0
- package/dist/config-schema.test.js.map +1 -0
- package/dist/connection-intent-guidance.d.ts +12 -0
- package/dist/connection-intent-guidance.d.ts.map +1 -0
- package/dist/connection-intent-guidance.js +35 -0
- package/dist/connection-intent-guidance.js.map +1 -0
- package/dist/connection-intent-guidance.test.d.ts +2 -0
- package/dist/connection-intent-guidance.test.d.ts.map +1 -0
- package/dist/connection-intent-guidance.test.js +60 -0
- package/dist/connection-intent-guidance.test.js.map +1 -0
- package/dist/constants.d.ts +556 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +1363 -0
- package/dist/constants.js.map +1 -0
- package/dist/decision.test.d.ts +2 -0
- package/dist/decision.test.d.ts.map +1 -0
- package/dist/decision.test.js +142 -0
- package/dist/decision.test.js.map +1 -0
- package/dist/document-anchors.d.ts +37 -0
- package/dist/document-anchors.d.ts.map +1 -0
- package/dist/document-anchors.js +351 -0
- package/dist/document-anchors.js.map +1 -0
- package/dist/document-anchors.test.d.ts +2 -0
- package/dist/document-anchors.test.d.ts.map +1 -0
- package/dist/document-anchors.test.js +151 -0
- package/dist/document-anchors.test.js.map +1 -0
- package/dist/document-export.d.ts +4 -0
- package/dist/document-export.d.ts.map +1 -0
- package/dist/document-export.js +27 -0
- package/dist/document-export.js.map +1 -0
- package/dist/env-file.d.ts +16 -0
- package/dist/env-file.d.ts.map +1 -0
- package/dist/env-file.js +149 -0
- package/dist/env-file.js.map +1 -0
- package/dist/env-file.test.d.ts +2 -0
- package/dist/env-file.test.d.ts.map +1 -0
- package/dist/env-file.test.js +72 -0
- package/dist/env-file.test.js.map +1 -0
- package/dist/environment-custom-images.d.ts +17 -0
- package/dist/environment-custom-images.d.ts.map +1 -0
- package/dist/environment-custom-images.js +88 -0
- package/dist/environment-custom-images.js.map +1 -0
- package/dist/environment-custom-images.test.d.ts +2 -0
- package/dist/environment-custom-images.test.d.ts.map +1 -0
- package/dist/environment-custom-images.test.js +136 -0
- package/dist/environment-custom-images.test.js.map +1 -0
- package/dist/environment-support.d.ts +58 -0
- package/dist/environment-support.d.ts.map +1 -0
- package/dist/environment-support.js +128 -0
- package/dist/environment-support.js.map +1 -0
- package/dist/environment-support.test.d.ts +2 -0
- package/dist/environment-support.test.d.ts.map +1 -0
- package/dist/environment-support.test.js +77 -0
- package/dist/environment-support.test.js.map +1 -0
- package/dist/execution-workspace-guards.d.ts +6 -0
- package/dist/execution-workspace-guards.d.ts.map +1 -0
- package/dist/execution-workspace-guards.js +12 -0
- package/dist/execution-workspace-guards.js.map +1 -0
- package/dist/external-objects-server.d.ts +12 -0
- package/dist/external-objects-server.d.ts.map +1 -0
- package/dist/external-objects-server.js +176 -0
- package/dist/external-objects-server.js.map +1 -0
- package/dist/external-objects.d.ts +32 -0
- package/dist/external-objects.d.ts.map +1 -0
- package/dist/external-objects.js +17 -0
- package/dist/external-objects.js.map +1 -0
- package/dist/external-objects.test.d.ts +2 -0
- package/dist/external-objects.test.d.ts.map +1 -0
- package/dist/external-objects.test.js +93 -0
- package/dist/external-objects.test.js.map +1 -0
- package/dist/feature-catalog.d.ts +59 -0
- package/dist/feature-catalog.d.ts.map +1 -0
- package/dist/feature-catalog.js +301 -0
- package/dist/feature-catalog.js.map +1 -0
- package/dist/feature-catalog.test.d.ts +2 -0
- package/dist/feature-catalog.test.d.ts.map +1 -0
- package/dist/feature-catalog.test.js +89 -0
- package/dist/feature-catalog.test.js.map +1 -0
- package/dist/frontmatter-runner-contract.test.d.ts +2 -0
- package/dist/frontmatter-runner-contract.test.d.ts.map +1 -0
- package/dist/frontmatter-runner-contract.test.js +10 -0
- package/dist/frontmatter-runner-contract.test.js.map +1 -0
- package/dist/frontmatter.d.ts +68 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +559 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/frontmatter.test.d.ts +2 -0
- package/dist/frontmatter.test.d.ts.map +1 -0
- package/dist/frontmatter.test.js +297 -0
- package/dist/frontmatter.test.js.map +1 -0
- package/dist/github-connectors.d.ts +10 -0
- package/dist/github-connectors.d.ts.map +1 -0
- package/dist/github-connectors.js +15 -0
- package/dist/github-connectors.js.map +1 -0
- package/dist/gitignore-runtime.test.d.ts +2 -0
- package/dist/gitignore-runtime.test.d.ts.map +1 -0
- package/dist/gitignore-runtime.test.js +14 -0
- package/dist/gitignore-runtime.test.js.map +1 -0
- package/dist/google-workspace-connectors.d.ts +10 -0
- package/dist/google-workspace-connectors.d.ts.map +1 -0
- package/dist/google-workspace-connectors.js +31 -0
- package/dist/google-workspace-connectors.js.map +1 -0
- package/dist/home-paths.d.ts +41 -0
- package/dist/home-paths.d.ts.map +1 -0
- package/dist/home-paths.js +57 -0
- package/dist/home-paths.js.map +1 -0
- package/dist/home-paths.test.d.ts +2 -0
- package/dist/home-paths.test.d.ts.map +1 -0
- package/dist/home-paths.test.js +25 -0
- package/dist/home-paths.test.js.map +1 -0
- package/dist/humanize-connection.d.ts +36 -0
- package/dist/humanize-connection.d.ts.map +1 -0
- package/dist/humanize-connection.js +95 -0
- package/dist/humanize-connection.js.map +1 -0
- package/dist/humanize-connection.test.d.ts +2 -0
- package/dist/humanize-connection.test.d.ts.map +1 -0
- package/dist/humanize-connection.test.js +48 -0
- package/dist/humanize-connection.test.js.map +1 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/issue-attribution.d.ts +27 -0
- package/dist/issue-attribution.d.ts.map +1 -0
- package/dist/issue-attribution.js +25 -0
- package/dist/issue-attribution.js.map +1 -0
- package/dist/issue-attribution.test.d.ts +2 -0
- package/dist/issue-attribution.test.d.ts.map +1 -0
- package/dist/issue-attribution.test.js +72 -0
- package/dist/issue-attribution.test.js.map +1 -0
- package/dist/issue-references.d.ts +16 -0
- package/dist/issue-references.d.ts.map +1 -0
- package/dist/issue-references.js +160 -0
- package/dist/issue-references.js.map +1 -0
- package/dist/issue-references.test.d.ts +2 -0
- package/dist/issue-references.test.d.ts.map +1 -0
- package/dist/issue-references.test.js +56 -0
- package/dist/issue-references.test.js.map +1 -0
- package/dist/issue-thread-interactions.test.d.ts +2 -0
- package/dist/issue-thread-interactions.test.d.ts.map +1 -0
- package/dist/issue-thread-interactions.test.js +546 -0
- package/dist/issue-thread-interactions.test.js.map +1 -0
- package/dist/issue-write-denial.d.ts +92 -0
- package/dist/issue-write-denial.d.ts.map +1 -0
- package/dist/issue-write-denial.js +227 -0
- package/dist/issue-write-denial.js.map +1 -0
- package/dist/issue-write-denial.test.d.ts +2 -0
- package/dist/issue-write-denial.test.d.ts.map +1 -0
- package/dist/issue-write-denial.test.js +159 -0
- package/dist/issue-write-denial.test.js.map +1 -0
- package/dist/markdown-work-products.d.ts +26 -0
- package/dist/markdown-work-products.d.ts.map +1 -0
- package/dist/markdown-work-products.js +70 -0
- package/dist/markdown-work-products.js.map +1 -0
- package/dist/markdown-work-products.test.d.ts +2 -0
- package/dist/markdown-work-products.test.d.ts.map +1 -0
- package/dist/markdown-work-products.test.js +122 -0
- package/dist/markdown-work-products.test.js.map +1 -0
- package/dist/mcp-config-help-prompt.d.ts +21 -0
- package/dist/mcp-config-help-prompt.d.ts.map +1 -0
- package/dist/mcp-config-help-prompt.js +56 -0
- package/dist/mcp-config-help-prompt.js.map +1 -0
- package/dist/mcp-remote-headers.d.ts +49 -0
- package/dist/mcp-remote-headers.d.ts.map +1 -0
- package/dist/mcp-remote-headers.js +127 -0
- package/dist/mcp-remote-headers.js.map +1 -0
- package/dist/mcp-remote-headers.test.d.ts +2 -0
- package/dist/mcp-remote-headers.test.d.ts.map +1 -0
- package/dist/mcp-remote-headers.test.js +112 -0
- package/dist/mcp-remote-headers.test.js.map +1 -0
- package/dist/network-bind.d.ts +27 -0
- package/dist/network-bind.d.ts.map +1 -0
- package/dist/network-bind.js +75 -0
- package/dist/network-bind.js.map +1 -0
- package/dist/node-version.d.ts +6 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +48 -0
- package/dist/node-version.js.map +1 -0
- package/dist/oauth-endpoint-url.d.ts +74 -0
- package/dist/oauth-endpoint-url.d.ts.map +1 -0
- package/dist/oauth-endpoint-url.js +142 -0
- package/dist/oauth-endpoint-url.js.map +1 -0
- package/dist/oauth-endpoint-url.test.d.ts +2 -0
- package/dist/oauth-endpoint-url.test.d.ts.map +1 -0
- package/dist/oauth-endpoint-url.test.js +163 -0
- package/dist/oauth-endpoint-url.test.js.map +1 -0
- package/dist/pipeline-case-type.d.ts +23 -0
- package/dist/pipeline-case-type.d.ts.map +1 -0
- package/dist/pipeline-case-type.js +26 -0
- package/dist/pipeline-case-type.js.map +1 -0
- package/dist/pipeline-health.d.ts +80 -0
- package/dist/pipeline-health.d.ts.map +1 -0
- package/dist/pipeline-health.js +249 -0
- package/dist/pipeline-health.js.map +1 -0
- package/dist/pipeline-health.test.d.ts +2 -0
- package/dist/pipeline-health.test.d.ts.map +1 -0
- package/dist/pipeline-health.test.js +140 -0
- package/dist/pipeline-health.test.js.map +1 -0
- package/dist/portability-fidelity.d.ts +19 -0
- package/dist/portability-fidelity.d.ts.map +1 -0
- package/dist/portability-fidelity.js +46 -0
- package/dist/portability-fidelity.js.map +1 -0
- package/dist/portability-fidelity.test.d.ts +2 -0
- package/dist/portability-fidelity.test.d.ts.map +1 -0
- package/dist/portability-fidelity.test.js +66 -0
- package/dist/portability-fidelity.test.js.map +1 -0
- package/dist/portability-hash.d.ts +5 -0
- package/dist/portability-hash.d.ts.map +1 -0
- package/dist/portability-hash.js +20 -0
- package/dist/portability-hash.js.map +1 -0
- package/dist/portability-zip.d.ts +15 -0
- package/dist/portability-zip.d.ts.map +1 -0
- package/dist/portability-zip.js +262 -0
- package/dist/portability-zip.js.map +1 -0
- package/dist/portability-zip.test.d.ts +2 -0
- package/dist/portability-zip.test.d.ts.map +1 -0
- package/dist/portability-zip.test.js +227 -0
- package/dist/portability-zip.test.js.map +1 -0
- package/dist/project-mentions.d.ts +47 -0
- package/dist/project-mentions.d.ts.map +1 -0
- package/dist/project-mentions.js +291 -0
- package/dist/project-mentions.js.map +1 -0
- package/dist/project-mentions.test.d.ts +2 -0
- package/dist/project-mentions.test.d.ts.map +1 -0
- package/dist/project-mentions.test.js +43 -0
- package/dist/project-mentions.test.js.map +1 -0
- package/dist/project-url-key.d.ts +5 -0
- package/dist/project-url-key.d.ts.map +1 -0
- package/dist/project-url-key.js +39 -0
- package/dist/project-url-key.js.map +1 -0
- package/dist/railway-connection.d.ts +20 -0
- package/dist/railway-connection.d.ts.map +1 -0
- package/dist/railway-connection.js +7 -0
- package/dist/railway-connection.js.map +1 -0
- package/dist/remote-mcp-connectors.d.ts +11 -0
- package/dist/remote-mcp-connectors.d.ts.map +1 -0
- package/dist/remote-mcp-connectors.js +14 -0
- package/dist/remote-mcp-connectors.js.map +1 -0
- package/dist/remote-mcp-connectors.test.d.ts +2 -0
- package/dist/remote-mcp-connectors.test.d.ts.map +1 -0
- package/dist/remote-mcp-connectors.test.js +39 -0
- package/dist/remote-mcp-connectors.test.js.map +1 -0
- package/dist/resource-memberships.test.d.ts +2 -0
- package/dist/resource-memberships.test.d.ts.map +1 -0
- package/dist/resource-memberships.test.js +23 -0
- package/dist/resource-memberships.test.js.map +1 -0
- package/dist/responsible-user-denial.d.ts +46 -0
- package/dist/responsible-user-denial.d.ts.map +1 -0
- package/dist/responsible-user-denial.js +66 -0
- package/dist/responsible-user-denial.js.map +1 -0
- package/dist/responsible-user-denial.test.d.ts +2 -0
- package/dist/responsible-user-denial.test.d.ts.map +1 -0
- package/dist/responsible-user-denial.test.js +65 -0
- package/dist/responsible-user-denial.test.js.map +1 -0
- package/dist/retired-composio.d.ts +7 -0
- package/dist/retired-composio.d.ts.map +1 -0
- package/dist/retired-composio.js +7 -0
- package/dist/retired-composio.js.map +1 -0
- package/dist/routine-variables.d.ts +23 -0
- package/dist/routine-variables.d.ts.map +1 -0
- package/dist/routine-variables.js +127 -0
- package/dist/routine-variables.js.map +1 -0
- package/dist/routine-variables.test.d.ts +2 -0
- package/dist/routine-variables.test.d.ts.map +1 -0
- package/dist/routine-variables.test.js +98 -0
- package/dist/routine-variables.test.js.map +1 -0
- package/dist/runner-goal.d.ts +105 -0
- package/dist/runner-goal.d.ts.map +1 -0
- package/dist/runner-goal.js +74 -0
- package/dist/runner-goal.js.map +1 -0
- package/dist/runtime-exposure/loopback-bind.d.ts +52 -0
- package/dist/runtime-exposure/loopback-bind.d.ts.map +1 -0
- package/dist/runtime-exposure/loopback-bind.js +93 -0
- package/dist/runtime-exposure/loopback-bind.js.map +1 -0
- package/dist/runtime-exposure/loopback-bind.test.d.ts +2 -0
- package/dist/runtime-exposure/loopback-bind.test.d.ts.map +1 -0
- package/dist/runtime-exposure/loopback-bind.test.js +94 -0
- package/dist/runtime-exposure/loopback-bind.test.js.map +1 -0
- package/dist/runtime-exposure/ports.d.ts +61 -0
- package/dist/runtime-exposure/ports.d.ts.map +1 -0
- package/dist/runtime-exposure/ports.js +96 -0
- package/dist/runtime-exposure/ports.js.map +1 -0
- package/dist/runtime-exposure/ports.test.d.ts +2 -0
- package/dist/runtime-exposure/ports.test.d.ts.map +1 -0
- package/dist/runtime-exposure/ports.test.js +46 -0
- package/dist/runtime-exposure/ports.test.js.map +1 -0
- package/dist/self-serve-mcp-research.d.ts +5 -0
- package/dist/self-serve-mcp-research.d.ts.map +1 -0
- package/dist/self-serve-mcp-research.js +5 -0
- package/dist/self-serve-mcp-research.js.map +1 -0
- package/dist/self-serve-mcp-research.json +54 -0
- package/dist/setting-defaults.d.ts +72 -0
- package/dist/setting-defaults.d.ts.map +1 -0
- package/dist/setting-defaults.js +132 -0
- package/dist/setting-defaults.js.map +1 -0
- package/dist/setting-defaults.test.d.ts +2 -0
- package/dist/setting-defaults.test.d.ts.map +1 -0
- package/dist/setting-defaults.test.js +102 -0
- package/dist/setting-defaults.test.js.map +1 -0
- package/dist/settings-visibility.d.ts +86 -0
- package/dist/settings-visibility.d.ts.map +1 -0
- package/dist/settings-visibility.js +138 -0
- package/dist/settings-visibility.js.map +1 -0
- package/dist/settings-visibility.test.d.ts +2 -0
- package/dist/settings-visibility.test.d.ts.map +1 -0
- package/dist/settings-visibility.test.js +85 -0
- package/dist/settings-visibility.test.js.map +1 -0
- package/dist/slack-tools.d.ts +557 -0
- package/dist/slack-tools.d.ts.map +1 -0
- package/dist/slack-tools.js +146 -0
- package/dist/slack-tools.js.map +1 -0
- package/dist/summary-slot.test.d.ts +2 -0
- package/dist/summary-slot.test.d.ts.map +1 -0
- package/dist/summary-slot.test.js +76 -0
- package/dist/summary-slot.test.js.map +1 -0
- package/dist/telemetry/client-contract.test.d.ts +2 -0
- package/dist/telemetry/client-contract.test.d.ts.map +1 -0
- package/dist/telemetry/client-contract.test.js +166 -0
- package/dist/telemetry/client-contract.test.js.map +1 -0
- package/dist/telemetry/client-types.test.d.ts +2 -0
- package/dist/telemetry/client-types.test.d.ts.map +1 -0
- package/dist/telemetry/client-types.test.js +18 -0
- package/dist/telemetry/client-types.test.js.map +1 -0
- package/dist/telemetry/client.d.ts +101 -0
- package/dist/telemetry/client.d.ts.map +1 -0
- package/dist/telemetry/client.js +426 -0
- package/dist/telemetry/client.js.map +1 -0
- package/dist/telemetry/client.test.d.ts +2 -0
- package/dist/telemetry/client.test.d.ts.map +1 -0
- package/dist/telemetry/client.test.js +507 -0
- package/dist/telemetry/client.test.js.map +1 -0
- package/dist/telemetry/config.d.ts +35 -0
- package/dist/telemetry/config.d.ts.map +1 -0
- package/dist/telemetry/config.js +51 -0
- package/dist/telemetry/config.js.map +1 -0
- package/dist/telemetry/events.d.ts +103 -0
- package/dist/telemetry/events.d.ts.map +1 -0
- package/dist/telemetry/events.js +121 -0
- package/dist/telemetry/events.js.map +1 -0
- package/dist/telemetry/generated/paperclip-telemetry.d.ts +406 -0
- package/dist/telemetry/generated/paperclip-telemetry.d.ts.map +1 -0
- package/dist/telemetry/generated/paperclip-telemetry.js +297 -0
- package/dist/telemetry/generated/paperclip-telemetry.js.map +1 -0
- package/dist/telemetry/index.d.ts +10 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +6 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/proposed-connector-events.test.d.ts +2 -0
- package/dist/telemetry/proposed-connector-events.test.d.ts.map +1 -0
- package/dist/telemetry/proposed-connector-events.test.js +96 -0
- package/dist/telemetry/proposed-connector-events.test.js.map +1 -0
- package/dist/telemetry/readme-contract.test.d.ts +2 -0
- package/dist/telemetry/readme-contract.test.d.ts.map +1 -0
- package/dist/telemetry/readme-contract.test.js +17 -0
- package/dist/telemetry/readme-contract.test.js.map +1 -0
- package/dist/telemetry/retention.d.ts +44 -0
- package/dist/telemetry/retention.d.ts.map +1 -0
- package/dist/telemetry/retention.js +46 -0
- package/dist/telemetry/retention.js.map +1 -0
- package/dist/telemetry/retention.test.d.ts +2 -0
- package/dist/telemetry/retention.test.d.ts.map +1 -0
- package/dist/telemetry/retention.test.js +20 -0
- package/dist/telemetry/retention.test.js.map +1 -0
- package/dist/telemetry/state.d.ts +3 -0
- package/dist/telemetry/state.d.ts.map +1 -0
- package/dist/telemetry/state.js +28 -0
- package/dist/telemetry/state.js.map +1 -0
- package/dist/telemetry/types.d.ts +62 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +2 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/trust-policy.d.ts +68 -0
- package/dist/trust-policy.d.ts.map +1 -0
- package/dist/trust-policy.js +11 -0
- package/dist/trust-policy.js.map +1 -0
- package/dist/types/access.d.ts +142 -0
- package/dist/types/access.d.ts.map +1 -0
- package/dist/types/access.js +2 -0
- package/dist/types/access.js.map +1 -0
- package/dist/types/activity.d.ts +15 -0
- package/dist/types/activity.d.ts.map +1 -0
- package/dist/types/activity.js +2 -0
- package/dist/types/activity.js.map +1 -0
- package/dist/types/adapter-registry.d.ts +31 -0
- package/dist/types/adapter-registry.d.ts.map +1 -0
- package/dist/types/adapter-registry.js +2 -0
- package/dist/types/adapter-registry.js.map +1 -0
- package/dist/types/adapter-skills.d.ts +38 -0
- package/dist/types/adapter-skills.d.ts.map +1 -0
- package/dist/types/adapter-skills.js +2 -0
- package/dist/types/adapter-skills.js.map +1 -0
- package/dist/types/agent.adapter-auth-session.test.d.ts +2 -0
- package/dist/types/agent.adapter-auth-session.test.d.ts.map +1 -0
- package/dist/types/agent.adapter-auth-session.test.js +103 -0
- package/dist/types/agent.adapter-auth-session.test.js.map +1 -0
- package/dist/types/agent.d.ts +194 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +51 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/app-definition.d.ts +153 -0
- package/dist/types/app-definition.d.ts.map +1 -0
- package/dist/types/app-definition.js +2 -0
- package/dist/types/app-definition.js.map +1 -0
- package/dist/types/approval.d.ts +26 -0
- package/dist/types/approval.d.ts.map +1 -0
- package/dist/types/approval.js +2 -0
- package/dist/types/approval.js.map +1 -0
- package/dist/types/artifact.d.ts +52 -0
- package/dist/types/artifact.d.ts.map +1 -0
- package/dist/types/artifact.js +2 -0
- package/dist/types/artifact.js.map +1 -0
- package/dist/types/asset.d.ts +16 -0
- package/dist/types/asset.d.ts.map +1 -0
- package/dist/types/asset.js +2 -0
- package/dist/types/asset.js.map +1 -0
- package/dist/types/attention.d.ts +222 -0
- package/dist/types/attention.d.ts.map +1 -0
- package/dist/types/attention.js +15 -0
- package/dist/types/attention.js.map +1 -0
- package/dist/types/budget.d.ts +86 -0
- package/dist/types/budget.d.ts.map +1 -0
- package/dist/types/budget.js +2 -0
- package/dist/types/budget.js.map +1 -0
- package/dist/types/chat-channels.d.ts +402 -0
- package/dist/types/chat-channels.d.ts.map +1 -0
- package/dist/types/chat-channels.js +105 -0
- package/dist/types/chat-channels.js.map +1 -0
- package/dist/types/chat-github.d.ts +123 -0
- package/dist/types/chat-github.d.ts.map +1 -0
- package/dist/types/chat-github.js +55 -0
- package/dist/types/chat-github.js.map +1 -0
- package/dist/types/company-portability.d.ts +408 -0
- package/dist/types/company-portability.d.ts.map +1 -0
- package/dist/types/company-portability.js +2 -0
- package/dist/types/company-portability.js.map +1 -0
- package/dist/types/company-skill.d.ts +623 -0
- package/dist/types/company-skill.d.ts.map +1 -0
- package/dist/types/company-skill.js +2 -0
- package/dist/types/company-skill.js.map +1 -0
- package/dist/types/company.d.ts +30 -0
- package/dist/types/company.d.ts.map +1 -0
- package/dist/types/company.js +2 -0
- package/dist/types/company.js.map +1 -0
- package/dist/types/connection-intent.d.ts +53 -0
- package/dist/types/connection-intent.d.ts.map +1 -0
- package/dist/types/connection-intent.js +2 -0
- package/dist/types/connection-intent.js.map +1 -0
- package/dist/types/cost.d.ts +126 -0
- package/dist/types/cost.d.ts.map +1 -0
- package/dist/types/cost.js +2 -0
- package/dist/types/cost.js.map +1 -0
- package/dist/types/dashboard.d.ts +54 -0
- package/dist/types/dashboard.d.ts.map +1 -0
- package/dist/types/dashboard.js +2 -0
- package/dist/types/dashboard.js.map +1 -0
- package/dist/types/decision-queue.d.ts +55 -0
- package/dist/types/decision-queue.d.ts.map +1 -0
- package/dist/types/decision-queue.js +2 -0
- package/dist/types/decision-queue.js.map +1 -0
- package/dist/types/decision-training.d.ts +65 -0
- package/dist/types/decision-training.d.ts.map +1 -0
- package/dist/types/decision-training.js +2 -0
- package/dist/types/decision-training.js.map +1 -0
- package/dist/types/decision.d.ts +100 -0
- package/dist/types/decision.d.ts.map +1 -0
- package/dist/types/decision.js +15 -0
- package/dist/types/decision.js.map +1 -0
- package/dist/types/document-annotation.d.ts +223 -0
- package/dist/types/document-annotation.d.ts.map +1 -0
- package/dist/types/document-annotation.js +2 -0
- package/dist/types/document-annotation.js.map +1 -0
- package/dist/types/email.d.ts +50 -0
- package/dist/types/email.d.ts.map +1 -0
- package/dist/types/email.js +2 -0
- package/dist/types/email.js.map +1 -0
- package/dist/types/environment.d.ts +150 -0
- package/dist/types/environment.d.ts.map +1 -0
- package/dist/types/environment.js +2 -0
- package/dist/types/environment.js.map +1 -0
- package/dist/types/execution-continuation.d.ts +67 -0
- package/dist/types/execution-continuation.d.ts.map +1 -0
- package/dist/types/execution-continuation.js +2 -0
- package/dist/types/execution-continuation.js.map +1 -0
- package/dist/types/execution-projection.d.ts +33 -0
- package/dist/types/execution-projection.d.ts.map +1 -0
- package/dist/types/execution-projection.js +24 -0
- package/dist/types/execution-projection.js.map +1 -0
- package/dist/types/external-object.d.ts +84 -0
- package/dist/types/external-object.d.ts.map +1 -0
- package/dist/types/external-object.js +2 -0
- package/dist/types/external-object.js.map +1 -0
- package/dist/types/feedback.d.ts +95 -0
- package/dist/types/feedback.d.ts.map +1 -0
- package/dist/types/feedback.js +7 -0
- package/dist/types/feedback.js.map +1 -0
- package/dist/types/finance.d.ts +57 -0
- package/dist/types/finance.d.ts.map +1 -0
- package/dist/types/finance.js +2 -0
- package/dist/types/finance.js.map +1 -0
- package/dist/types/folder.d.ts +52 -0
- package/dist/types/folder.d.ts.map +1 -0
- package/dist/types/folder.js +2 -0
- package/dist/types/folder.js.map +1 -0
- package/dist/types/goal.d.ts +14 -0
- package/dist/types/goal.d.ts.map +1 -0
- package/dist/types/goal.js +2 -0
- package/dist/types/goal.js.map +1 -0
- package/dist/types/heartbeat.d.ts +325 -0
- package/dist/types/heartbeat.d.ts.map +1 -0
- package/dist/types/heartbeat.js +2 -0
- package/dist/types/heartbeat.js.map +1 -0
- package/dist/types/inbox-agent-policy.d.ts +12 -0
- package/dist/types/inbox-agent-policy.d.ts.map +1 -0
- package/dist/types/inbox-agent-policy.js +2 -0
- package/dist/types/inbox-agent-policy.js.map +1 -0
- package/dist/types/inbox-dismissal.d.ts +13 -0
- package/dist/types/inbox-dismissal.d.ts.map +1 -0
- package/dist/types/inbox-dismissal.js +2 -0
- package/dist/types/inbox-dismissal.js.map +1 -0
- package/dist/types/index.d.ts +69 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +17 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/instance.d.ts +170 -0
- package/dist/types/instance.d.ts.map +1 -0
- package/dist/types/instance.js +10 -0
- package/dist/types/instance.js.map +1 -0
- package/dist/types/issue-tree-control.d.ts +109 -0
- package/dist/types/issue-tree-control.d.ts.map +1 -0
- package/dist/types/issue-tree-control.js +2 -0
- package/dist/types/issue-tree-control.js.map +1 -0
- package/dist/types/issue.d.ts +1312 -0
- package/dist/types/issue.d.ts.map +1 -0
- package/dist/types/issue.js +2 -0
- package/dist/types/issue.js.map +1 -0
- package/dist/types/live.d.ts +9 -0
- package/dist/types/live.d.ts.map +1 -0
- package/dist/types/live.js +2 -0
- package/dist/types/live.js.map +1 -0
- package/dist/types/native-finalization.d.ts +29 -0
- package/dist/types/native-finalization.d.ts.map +1 -0
- package/dist/types/native-finalization.js +2 -0
- package/dist/types/native-finalization.js.map +1 -0
- package/dist/types/pipeline.d.ts +268 -0
- package/dist/types/pipeline.d.ts.map +1 -0
- package/dist/types/pipeline.js +2 -0
- package/dist/types/pipeline.js.map +1 -0
- package/dist/types/plugin.d.ts +894 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +2 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/project.d.ts +116 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +2 -0
- package/dist/types/project.js.map +1 -0
- package/dist/types/quota.d.ts +28 -0
- package/dist/types/quota.d.ts.map +1 -0
- package/dist/types/quota.js +2 -0
- package/dist/types/quota.js.map +1 -0
- package/dist/types/resource-memberships.d.ts +26 -0
- package/dist/types/resource-memberships.d.ts.map +1 -0
- package/dist/types/resource-memberships.js +2 -0
- package/dist/types/resource-memberships.js.map +1 -0
- package/dist/types/routine.d.ts +237 -0
- package/dist/types/routine.d.ts.map +1 -0
- package/dist/types/routine.js +2 -0
- package/dist/types/routine.js.map +1 -0
- package/dist/types/runtime-exposure.d.ts +74 -0
- package/dist/types/runtime-exposure.d.ts.map +1 -0
- package/dist/types/runtime-exposure.js +12 -0
- package/dist/types/runtime-exposure.js.map +1 -0
- package/dist/types/search.d.ts +135 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +6 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/secrets.d.ts +374 -0
- package/dist/types/secrets.d.ts.map +1 -0
- package/dist/types/secrets.js +2 -0
- package/dist/types/secrets.js.map +1 -0
- package/dist/types/server-info.d.ts +27 -0
- package/dist/types/server-info.d.ts.map +1 -0
- package/dist/types/server-info.js +2 -0
- package/dist/types/server-info.js.map +1 -0
- package/dist/types/sidebar-badges.d.ts +7 -0
- package/dist/types/sidebar-badges.d.ts.map +1 -0
- package/dist/types/sidebar-badges.js +2 -0
- package/dist/types/sidebar-badges.js.map +1 -0
- package/dist/types/sidebar-preferences.d.ts +5 -0
- package/dist/types/sidebar-preferences.d.ts.map +1 -0
- package/dist/types/sidebar-preferences.js +2 -0
- package/dist/types/sidebar-preferences.js.map +1 -0
- package/dist/types/smoke-lab.d.ts +41 -0
- package/dist/types/smoke-lab.d.ts.map +1 -0
- package/dist/types/smoke-lab.js +5 -0
- package/dist/types/smoke-lab.js.map +1 -0
- package/dist/types/summary-slot.d.ts +91 -0
- package/dist/types/summary-slot.d.ts.map +1 -0
- package/dist/types/summary-slot.js +2 -0
- package/dist/types/summary-slot.js.map +1 -0
- package/dist/types/teams-catalog.d.ts +163 -0
- package/dist/types/teams-catalog.d.ts.map +1 -0
- package/dist/types/teams-catalog.js +2 -0
- package/dist/types/teams-catalog.js.map +1 -0
- package/dist/types/tool-access.d.ts +1515 -0
- package/dist/types/tool-access.d.ts.map +1 -0
- package/dist/types/tool-access.js +13 -0
- package/dist/types/tool-access.js.map +1 -0
- package/dist/types/user-profile.d.ts +81 -0
- package/dist/types/user-profile.d.ts.map +1 -0
- package/dist/types/user-profile.js +2 -0
- package/dist/types/user-profile.js.map +1 -0
- package/dist/types/work-product.d.ts +57 -0
- package/dist/types/work-product.d.ts.map +1 -0
- package/dist/types/work-product.js +2 -0
- package/dist/types/work-product.js.map +1 -0
- package/dist/types/work-timeline.d.ts +77 -0
- package/dist/types/work-timeline.d.ts.map +1 -0
- package/dist/types/work-timeline.js +2 -0
- package/dist/types/work-timeline.js.map +1 -0
- package/dist/types/workspace-file-resource.d.ts +138 -0
- package/dist/types/workspace-file-resource.d.ts.map +1 -0
- package/dist/types/workspace-file-resource.js +2 -0
- package/dist/types/workspace-file-resource.js.map +1 -0
- package/dist/types/workspace-operation.d.ts +27 -0
- package/dist/types/workspace-operation.d.ts.map +1 -0
- package/dist/types/workspace-operation.js +2 -0
- package/dist/types/workspace-operation.js.map +1 -0
- package/dist/types/workspace-readiness.d.ts +74 -0
- package/dist/types/workspace-readiness.d.ts.map +1 -0
- package/dist/types/workspace-readiness.js +28 -0
- package/dist/types/workspace-readiness.js.map +1 -0
- package/dist/types/workspace-runtime.d.ts +365 -0
- package/dist/types/workspace-runtime.d.ts.map +1 -0
- package/dist/types/workspace-runtime.js +2 -0
- package/dist/types/workspace-runtime.js.map +1 -0
- package/dist/validators/access.d.ts +215 -0
- package/dist/validators/access.d.ts.map +1 -0
- package/dist/validators/access.js +146 -0
- package/dist/validators/access.js.map +1 -0
- package/dist/validators/access.test.d.ts +2 -0
- package/dist/validators/access.test.d.ts.map +1 -0
- package/dist/validators/access.test.js +166 -0
- package/dist/validators/access.test.js.map +1 -0
- package/dist/validators/adapter-auth-session.d.ts +118 -0
- package/dist/validators/adapter-auth-session.d.ts.map +1 -0
- package/dist/validators/adapter-auth-session.js +37 -0
- package/dist/validators/adapter-auth-session.js.map +1 -0
- package/dist/validators/adapter-registry.d.ts +21 -0
- package/dist/validators/adapter-registry.d.ts.map +1 -0
- package/dist/validators/adapter-registry.js +14 -0
- package/dist/validators/adapter-registry.js.map +1 -0
- package/dist/validators/adapter-registry.test.d.ts +2 -0
- package/dist/validators/adapter-registry.test.d.ts.map +1 -0
- package/dist/validators/adapter-registry.test.js +31 -0
- package/dist/validators/adapter-registry.test.js.map +1 -0
- package/dist/validators/adapter-skills.d.ts +114 -0
- package/dist/validators/adapter-skills.d.ts.map +1 -0
- package/dist/validators/adapter-skills.js +62 -0
- package/dist/validators/adapter-skills.js.map +1 -0
- package/dist/validators/agent.d.ts +884 -0
- package/dist/validators/agent.d.ts.map +1 -0
- package/dist/validators/agent.js +224 -0
- package/dist/validators/agent.js.map +1 -0
- package/dist/validators/app-definition.d.ts +965 -0
- package/dist/validators/app-definition.d.ts.map +1 -0
- package/dist/validators/app-definition.js +39 -0
- package/dist/validators/app-definition.js.map +1 -0
- package/dist/validators/approval.d.ts +30 -0
- package/dist/validators/approval.d.ts.map +1 -0
- package/dist/validators/approval.js +22 -0
- package/dist/validators/approval.js.map +1 -0
- package/dist/validators/approval.test.d.ts +2 -0
- package/dist/validators/approval.test.d.ts.map +1 -0
- package/dist/validators/approval.test.js +25 -0
- package/dist/validators/approval.test.js.map +1 -0
- package/dist/validators/artifact.d.ts +305 -0
- package/dist/validators/artifact.d.ts.map +1 -0
- package/dist/validators/artifact.js +71 -0
- package/dist/validators/artifact.js.map +1 -0
- package/dist/validators/artifact.test.d.ts +2 -0
- package/dist/validators/artifact.test.d.ts.map +1 -0
- package/dist/validators/artifact.test.js +76 -0
- package/dist/validators/artifact.test.js.map +1 -0
- package/dist/validators/asset.d.ts +21 -0
- package/dist/validators/asset.d.ts.map +1 -0
- package/dist/validators/asset.js +70 -0
- package/dist/validators/asset.js.map +1 -0
- package/dist/validators/asset.test.d.ts +2 -0
- package/dist/validators/asset.test.d.ts.map +1 -0
- package/dist/validators/asset.test.js +130 -0
- package/dist/validators/asset.test.js.map +1 -0
- package/dist/validators/budget.d.ts +32 -0
- package/dist/validators/budget.d.ts.map +1 -0
- package/dist/validators/budget.js +27 -0
- package/dist/validators/budget.js.map +1 -0
- package/dist/validators/chat-channels.d.ts +215 -0
- package/dist/validators/chat-channels.d.ts.map +1 -0
- package/dist/validators/chat-channels.js +181 -0
- package/dist/validators/chat-channels.js.map +1 -0
- package/dist/validators/chat-channels.test.d.ts +2 -0
- package/dist/validators/chat-channels.test.d.ts.map +1 -0
- package/dist/validators/chat-channels.test.js +84 -0
- package/dist/validators/chat-channels.test.js.map +1 -0
- package/dist/validators/chat-github.d.ts +315 -0
- package/dist/validators/chat-github.d.ts.map +1 -0
- package/dist/validators/chat-github.js +149 -0
- package/dist/validators/chat-github.js.map +1 -0
- package/dist/validators/claude-setup-token-session.d.ts +160 -0
- package/dist/validators/claude-setup-token-session.d.ts.map +1 -0
- package/dist/validators/claude-setup-token-session.js +131 -0
- package/dist/validators/claude-setup-token-session.js.map +1 -0
- package/dist/validators/claude-setup-token-session.test.d.ts +2 -0
- package/dist/validators/claude-setup-token-session.test.d.ts.map +1 -0
- package/dist/validators/claude-setup-token-session.test.js +107 -0
- package/dist/validators/claude-setup-token-session.test.js.map +1 -0
- package/dist/validators/company-portability.d.ts +913 -0
- package/dist/validators/company-portability.d.ts.map +1 -0
- package/dist/validators/company-portability.js +301 -0
- package/dist/validators/company-portability.js.map +1 -0
- package/dist/validators/company-skill.d.ts +1450 -0
- package/dist/validators/company-skill.d.ts.map +1 -0
- package/dist/validators/company-skill.js +520 -0
- package/dist/validators/company-skill.js.map +1 -0
- package/dist/validators/company-skill.test.d.ts +2 -0
- package/dist/validators/company-skill.test.d.ts.map +1 -0
- package/dist/validators/company-skill.test.js +165 -0
- package/dist/validators/company-skill.test.js.map +1 -0
- package/dist/validators/company.d.ts +198 -0
- package/dist/validators/company.d.ts.map +1 -0
- package/dist/validators/company.js +46 -0
- package/dist/validators/company.js.map +1 -0
- package/dist/validators/company.test.d.ts +2 -0
- package/dist/validators/company.test.d.ts.map +1 -0
- package/dist/validators/company.test.js +60 -0
- package/dist/validators/company.test.js.map +1 -0
- package/dist/validators/connection-intent.d.ts +18 -0
- package/dist/validators/connection-intent.d.ts.map +1 -0
- package/dist/validators/connection-intent.js +14 -0
- package/dist/validators/connection-intent.js.map +1 -0
- package/dist/validators/connection-intent.test.d.ts +2 -0
- package/dist/validators/connection-intent.test.d.ts.map +1 -0
- package/dist/validators/connection-intent.test.js +55 -0
- package/dist/validators/connection-intent.test.js.map +1 -0
- package/dist/validators/cost.d.ts +69 -0
- package/dist/validators/cost.d.ts.map +1 -0
- package/dist/validators/cost.js +27 -0
- package/dist/validators/cost.js.map +1 -0
- package/dist/validators/decision-queue.d.ts +90 -0
- package/dist/validators/decision-queue.d.ts.map +1 -0
- package/dist/validators/decision-queue.js +60 -0
- package/dist/validators/decision-queue.js.map +1 -0
- package/dist/validators/decision.d.ts +403 -0
- package/dist/validators/decision.d.ts.map +1 -0
- package/dist/validators/decision.js +130 -0
- package/dist/validators/decision.js.map +1 -0
- package/dist/validators/document-annotation.d.ts +74 -0
- package/dist/validators/document-annotation.d.ts.map +1 -0
- package/dist/validators/document-annotation.js +53 -0
- package/dist/validators/document-annotation.js.map +1 -0
- package/dist/validators/email.d.ts +43 -0
- package/dist/validators/email.d.ts.map +1 -0
- package/dist/validators/email.js +70 -0
- package/dist/validators/email.js.map +1 -0
- package/dist/validators/environment-custom-images.d.ts +140 -0
- package/dist/validators/environment-custom-images.d.ts.map +1 -0
- package/dist/validators/environment-custom-images.js +80 -0
- package/dist/validators/environment-custom-images.js.map +1 -0
- package/dist/validators/environment.d.ts +129 -0
- package/dist/validators/environment.d.ts.map +1 -0
- package/dist/validators/environment.js +35 -0
- package/dist/validators/environment.js.map +1 -0
- package/dist/validators/execution-workspace.d.ts +304 -0
- package/dist/validators/execution-workspace.d.ts.map +1 -0
- package/dist/validators/execution-workspace.js +161 -0
- package/dist/validators/execution-workspace.js.map +1 -0
- package/dist/validators/external-object.d.ts +70 -0
- package/dist/validators/external-object.d.ts.map +1 -0
- package/dist/validators/external-object.js +25 -0
- package/dist/validators/external-object.js.map +1 -0
- package/dist/validators/feedback.d.ts +35 -0
- package/dist/validators/feedback.d.ts.map +1 -0
- package/dist/validators/feedback.js +14 -0
- package/dist/validators/feedback.js.map +1 -0
- package/dist/validators/finance.d.ts +126 -0
- package/dist/validators/finance.d.ts.map +1 -0
- package/dist/validators/finance.js +32 -0
- package/dist/validators/finance.js.map +1 -0
- package/dist/validators/folder.d.ts +108 -0
- package/dist/validators/folder.d.ts.map +1 -0
- package/dist/validators/folder.js +56 -0
- package/dist/validators/folder.js.map +1 -0
- package/dist/validators/goal.d.ts +40 -0
- package/dist/validators/goal.d.ts.map +1 -0
- package/dist/validators/goal.js +13 -0
- package/dist/validators/goal.js.map +1 -0
- package/dist/validators/inbox-agent-policy.d.ts +16 -0
- package/dist/validators/inbox-agent-policy.d.ts.map +1 -0
- package/dist/validators/inbox-agent-policy.js +15 -0
- package/dist/validators/inbox-agent-policy.js.map +1 -0
- package/dist/validators/index.d.ts +50 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +50 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/instance.d.ts +200 -0
- package/dist/validators/instance.d.ts.map +1 -0
- package/dist/validators/instance.js +112 -0
- package/dist/validators/instance.js.map +1 -0
- package/dist/validators/instance.test.d.ts +2 -0
- package/dist/validators/instance.test.d.ts.map +1 -0
- package/dist/validators/instance.test.js +137 -0
- package/dist/validators/instance.test.js.map +1 -0
- package/dist/validators/issue-tree-control.d.ts +61 -0
- package/dist/validators/issue-tree-control.d.ts.map +1 -0
- package/dist/validators/issue-tree-control.js +31 -0
- package/dist/validators/issue-tree-control.js.map +1 -0
- package/dist/validators/issue.d.ts +3028 -0
- package/dist/validators/issue.d.ts.map +1 -0
- package/dist/validators/issue.js +1824 -0
- package/dist/validators/issue.js.map +1 -0
- package/dist/validators/issue.test.d.ts +2 -0
- package/dist/validators/issue.test.d.ts.map +1 -0
- package/dist/validators/issue.test.js +454 -0
- package/dist/validators/issue.test.js.map +1 -0
- package/dist/validators/native-finalization.d.ts +91 -0
- package/dist/validators/native-finalization.d.ts.map +1 -0
- package/dist/validators/native-finalization.js +33 -0
- package/dist/validators/native-finalization.js.map +1 -0
- package/dist/validators/native-finalization.test.d.ts +2 -0
- package/dist/validators/native-finalization.test.d.ts.map +1 -0
- package/dist/validators/native-finalization.test.js +52 -0
- package/dist/validators/native-finalization.test.js.map +1 -0
- package/dist/validators/onboarding-seed.d.ts +30 -0
- package/dist/validators/onboarding-seed.d.ts.map +1 -0
- package/dist/validators/onboarding-seed.js +33 -0
- package/dist/validators/onboarding-seed.js.map +1 -0
- package/dist/validators/partial.d.ts +4 -0
- package/dist/validators/partial.d.ts.map +1 -0
- package/dist/validators/partial.js +35 -0
- package/dist/validators/partial.js.map +1 -0
- package/dist/validators/pipeline.d.ts +358 -0
- package/dist/validators/pipeline.d.ts.map +1 -0
- package/dist/validators/pipeline.js +133 -0
- package/dist/validators/pipeline.js.map +1 -0
- package/dist/validators/plugin.d.ts +1257 -0
- package/dist/validators/plugin.d.ts.map +1 -0
- package/dist/validators/plugin.js +1067 -0
- package/dist/validators/plugin.js.map +1 -0
- package/dist/validators/plugin.test.d.ts +2 -0
- package/dist/validators/plugin.test.d.ts.map +1 -0
- package/dist/validators/plugin.test.js +352 -0
- package/dist/validators/plugin.test.js.map +1 -0
- package/dist/validators/project.d.ts +510 -0
- package/dist/validators/project.d.ts.map +1 -0
- package/dist/validators/project.js +111 -0
- package/dist/validators/project.js.map +1 -0
- package/dist/validators/provider-trace.d.ts +135 -0
- package/dist/validators/provider-trace.d.ts.map +1 -0
- package/dist/validators/provider-trace.js +108 -0
- package/dist/validators/provider-trace.js.map +1 -0
- package/dist/validators/resource-memberships.d.ts +18 -0
- package/dist/validators/resource-memberships.d.ts.map +1 -0
- package/dist/validators/resource-memberships.js +16 -0
- package/dist/validators/resource-memberships.js.map +1 -0
- package/dist/validators/routine.d.ts +566 -0
- package/dist/validators/routine.d.ts.map +1 -0
- package/dist/validators/routine.js +151 -0
- package/dist/validators/routine.js.map +1 -0
- package/dist/validators/routine.test.d.ts +2 -0
- package/dist/validators/routine.test.d.ts.map +1 -0
- package/dist/validators/routine.test.js +115 -0
- package/dist/validators/routine.test.js.map +1 -0
- package/dist/validators/runtime-exposure.d.ts +100 -0
- package/dist/validators/runtime-exposure.d.ts.map +1 -0
- package/dist/validators/runtime-exposure.js +138 -0
- package/dist/validators/runtime-exposure.js.map +1 -0
- package/dist/validators/runtime-exposure.test.d.ts +2 -0
- package/dist/validators/runtime-exposure.test.d.ts.map +1 -0
- package/dist/validators/runtime-exposure.test.js +112 -0
- package/dist/validators/runtime-exposure.test.js.map +1 -0
- package/dist/validators/search.d.ts +40 -0
- package/dist/validators/search.d.ts.map +1 -0
- package/dist/validators/search.js +233 -0
- package/dist/validators/search.js.map +1 -0
- package/dist/validators/secret.d.ts +359 -0
- package/dist/validators/secret.d.ts.map +1 -0
- package/dist/validators/secret.js +344 -0
- package/dist/validators/secret.js.map +1 -0
- package/dist/validators/secret.test.d.ts +2 -0
- package/dist/validators/secret.test.d.ts.map +1 -0
- package/dist/validators/secret.test.js +208 -0
- package/dist/validators/secret.test.js.map +1 -0
- package/dist/validators/sidebar-preferences.d.ts +10 -0
- package/dist/validators/sidebar-preferences.d.ts.map +1 -0
- package/dist/validators/sidebar-preferences.js +10 -0
- package/dist/validators/sidebar-preferences.js.map +1 -0
- package/dist/validators/skill-policy.d.ts +248 -0
- package/dist/validators/skill-policy.d.ts.map +1 -0
- package/dist/validators/skill-policy.js +123 -0
- package/dist/validators/skill-policy.js.map +1 -0
- package/dist/validators/skill-policy.test.d.ts +2 -0
- package/dist/validators/skill-policy.test.d.ts.map +1 -0
- package/dist/validators/skill-policy.test.js +92 -0
- package/dist/validators/skill-policy.test.js.map +1 -0
- package/dist/validators/smoke-lab.d.ts +67 -0
- package/dist/validators/smoke-lab.d.ts.map +1 -0
- package/dist/validators/smoke-lab.js +23 -0
- package/dist/validators/smoke-lab.js.map +1 -0
- package/dist/validators/status-card.d.ts +329 -0
- package/dist/validators/status-card.d.ts.map +1 -0
- package/dist/validators/status-card.js +166 -0
- package/dist/validators/status-card.js.map +1 -0
- package/dist/validators/status-card.test.d.ts +2 -0
- package/dist/validators/status-card.test.d.ts.map +1 -0
- package/dist/validators/status-card.test.js +23 -0
- package/dist/validators/status-card.test.js.map +1 -0
- package/dist/validators/summary-slot.d.ts +46 -0
- package/dist/validators/summary-slot.d.ts.map +1 -0
- package/dist/validators/summary-slot.js +51 -0
- package/dist/validators/summary-slot.js.map +1 -0
- package/dist/validators/teams-catalog.d.ts +322 -0
- package/dist/validators/teams-catalog.d.ts.map +1 -0
- package/dist/validators/teams-catalog.js +147 -0
- package/dist/validators/teams-catalog.js.map +1 -0
- package/dist/validators/text.d.ts +4 -0
- package/dist/validators/text.d.ts.map +1 -0
- package/dist/validators/text.js +9 -0
- package/dist/validators/text.js.map +1 -0
- package/dist/validators/tool-access.d.ts +1925 -0
- package/dist/validators/tool-access.d.ts.map +1 -0
- package/dist/validators/tool-access.js +819 -0
- package/dist/validators/tool-access.js.map +1 -0
- package/dist/validators/tool-access.test.d.ts +2 -0
- package/dist/validators/tool-access.test.d.ts.map +1 -0
- package/dist/validators/tool-access.test.js +172 -0
- package/dist/validators/tool-access.test.js.map +1 -0
- package/dist/validators/trust-policy.d.ts +120 -0
- package/dist/validators/trust-policy.d.ts.map +1 -0
- package/dist/validators/trust-policy.js +59 -0
- package/dist/validators/trust-policy.js.map +1 -0
- package/dist/validators/trust-policy.test.d.ts +2 -0
- package/dist/validators/trust-policy.test.d.ts.map +1 -0
- package/dist/validators/trust-policy.test.js +26 -0
- package/dist/validators/trust-policy.test.js.map +1 -0
- package/dist/validators/work-product.d.ts +178 -0
- package/dist/validators/work-product.d.ts.map +1 -0
- package/dist/validators/work-product.js +88 -0
- package/dist/validators/work-product.js.map +1 -0
- package/dist/validators/work-product.test.d.ts +2 -0
- package/dist/validators/work-product.test.d.ts.map +1 -0
- package/dist/validators/work-product.test.js +38 -0
- package/dist/validators/work-product.test.js.map +1 -0
- package/dist/validators/workspace-file-resource.d.ts +268 -0
- package/dist/validators/workspace-file-resource.d.ts.map +1 -0
- package/dist/validators/workspace-file-resource.js +116 -0
- package/dist/validators/workspace-file-resource.js.map +1 -0
- package/dist/work-product.test.d.ts +2 -0
- package/dist/work-product.test.d.ts.map +1 -0
- package/dist/work-product.test.js +120 -0
- package/dist/work-product.test.js.map +1 -0
- package/dist/workspace-commands.d.ts +9 -0
- package/dist/workspace-commands.d.ts.map +1 -0
- package/dist/workspace-commands.js +177 -0
- package/dist/workspace-commands.js.map +1 -0
- package/dist/workspace-commands.test.d.ts +2 -0
- package/dist/workspace-commands.test.d.ts.map +1 -0
- package/dist/workspace-commands.test.js +155 -0
- package/dist/workspace-commands.test.js.map +1 -0
- package/dist/workspace-file-resource.test.d.ts +2 -0
- package/dist/workspace-file-resource.test.d.ts.map +1 -0
- package/dist/workspace-file-resource.test.js +52 -0
- package/dist/workspace-file-resource.test.js.map +1 -0
- package/dist/worktree-port-registry.d.ts +5 -0
- package/dist/worktree-port-registry.d.ts.map +1 -0
- package/dist/worktree-port-registry.js +382 -0
- package/dist/worktree-port-registry.js.map +1 -0
- package/dist/worktree-port-registry.test.d.ts +2 -0
- package/dist/worktree-port-registry.test.d.ts.map +1 -0
- package/dist/worktree-port-registry.test.js +118 -0
- package/dist/worktree-port-registry.test.js.map +1 -0
- package/dist/worktree-seed-source.d.ts +43 -0
- package/dist/worktree-seed-source.d.ts.map +1 -0
- package/dist/worktree-seed-source.js +180 -0
- package/dist/worktree-seed-source.js.map +1 -0
- package/dist/worktree-seed-source.test.d.ts +2 -0
- package/dist/worktree-seed-source.test.d.ts.map +1 -0
- package/dist/worktree-seed-source.test.js +166 -0
- package/dist/worktree-seed-source.test.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy contract for denied issue writes (open cross-task writes: failure UX).
|
|
3
|
+
*
|
|
4
|
+
* Cross-issue issue writes are default-open for standard-trust agents on issues
|
|
5
|
+
* they can already read (see SPEC-implementation §9.3). The remaining walls are
|
|
6
|
+
* rare — but a real incident burned a full detour discovering a workaround
|
|
7
|
+
* behind an opaque 403, so every one of them must say three things:
|
|
8
|
+
*
|
|
9
|
+
* 1. which boundary fired,
|
|
10
|
+
* 2. who *can* act,
|
|
11
|
+
* 3. the sanctioned path forward.
|
|
12
|
+
*
|
|
13
|
+
* This module is the single source of truth for that copy, so the API error
|
|
14
|
+
* body an agent reads and the notice a human sees in the UI are the same words.
|
|
15
|
+
* It is the issue-write sibling of `responsible-user-denial.ts`: the two
|
|
16
|
+
* responsible-user ceiling codes delegate to that module's copy so terminology
|
|
17
|
+
* ("on behalf of {user}", never "impersonate") stays consistent.
|
|
18
|
+
*/
|
|
19
|
+
import { type ResponsibleUserDenialCode } from "./responsible-user-denial.js";
|
|
20
|
+
export declare const ISSUE_WRITE_DENIAL_CODES: readonly ["issue_write_not_visible", "issue_write_actor_class_excluded", "issue_write_responsible_user_ceiling", "issue_write_responsible_user_unavailable", "issue_write_assignee_run_lock", "cross_issue_influence_cap_exceeded", "cross_issue_influence_run_context_required", "issue_write_attribution_spoof_rejected"];
|
|
21
|
+
export type IssueWriteDenialCode = (typeof ISSUE_WRITE_DENIAL_CODES)[number];
|
|
22
|
+
/**
|
|
23
|
+
* Why the write stopped, which drives icon + colour. `boundary` is an
|
|
24
|
+
* authorization wall, `lock` is run-lifecycle machinery that will clear on its
|
|
25
|
+
* own, `cap` is a rate backstop, and `attribution` is a rejected spoof.
|
|
26
|
+
*/
|
|
27
|
+
export type IssueWriteDenialTone = "boundary" | "lock" | "cap" | "attribution";
|
|
28
|
+
export interface IssueWriteDenialCopy {
|
|
29
|
+
code: IssueWriteDenialCode;
|
|
30
|
+
/** HTTP status the server pairs with this code. */
|
|
31
|
+
status: 403 | 409 | 422 | 429;
|
|
32
|
+
tone: IssueWriteDenialTone;
|
|
33
|
+
/** The boundary that fired, as a short noun phrase for a banner title. */
|
|
34
|
+
boundary: string;
|
|
35
|
+
/** Short heading. */
|
|
36
|
+
title: string;
|
|
37
|
+
/** What happened and why, in one or two sentences. */
|
|
38
|
+
description: string;
|
|
39
|
+
/** Who is able to perform this write instead. */
|
|
40
|
+
whoCanAct: string;
|
|
41
|
+
/** The supported way to get the work moving. */
|
|
42
|
+
sanctionedPath: string;
|
|
43
|
+
}
|
|
44
|
+
export interface IssueWriteDenialContext {
|
|
45
|
+
/** Display name of the agent or user that attempted the write. */
|
|
46
|
+
actorLabel?: string | null;
|
|
47
|
+
/** Display name of the responsible ("on behalf of") user for the attempt. */
|
|
48
|
+
responsibleUserName?: string | null;
|
|
49
|
+
/** Display name of the target issue's current assignee. */
|
|
50
|
+
assigneeLabel?: string | null;
|
|
51
|
+
/** Target issue identifier, e.g. `TASK-482`. */
|
|
52
|
+
issueIdentifier?: string | null;
|
|
53
|
+
/** Per-run cross-issue influence cap. */
|
|
54
|
+
cap?: number | null;
|
|
55
|
+
/** Attempt count that tripped the cap. */
|
|
56
|
+
count?: number | null;
|
|
57
|
+
/** ISO timestamp at which log-only rollout becomes enforcement. */
|
|
58
|
+
enforceAt?: string | null;
|
|
59
|
+
}
|
|
60
|
+
export declare function isIssueWriteDenialCode(code: string | null | undefined): code is IssueWriteDenialCode;
|
|
61
|
+
/**
|
|
62
|
+
* Bridge the two responsible-user ceiling codes emitted by the authorization
|
|
63
|
+
* layer into this module's code space, so a single UI notice covers every way
|
|
64
|
+
* an issue write can be refused.
|
|
65
|
+
*/
|
|
66
|
+
export declare function issueWriteDenialCodeForResponsibleUserDenial(code: ResponsibleUserDenialCode): IssueWriteDenialCode;
|
|
67
|
+
export declare function describeIssueWriteDenial(code: IssueWriteDenialCode, context?: IssueWriteDenialContext): IssueWriteDenialCopy;
|
|
68
|
+
/**
|
|
69
|
+
* Flatten a denial into the single `error` string an API client sees.
|
|
70
|
+
*
|
|
71
|
+
* Agents typically surface only `error`, so all three §6 obligations — boundary,
|
|
72
|
+
* who can act, sanctioned path — have to survive the flattening.
|
|
73
|
+
*/
|
|
74
|
+
export declare function issueWriteDenialApiMessage(copy: IssueWriteDenialCopy): string;
|
|
75
|
+
/**
|
|
76
|
+
* Build the full `{ error, details }` body for a denied issue write. Keeping the
|
|
77
|
+
* machine-readable `code` next to the prose lets the board UI render the same
|
|
78
|
+
* copy without parsing sentences.
|
|
79
|
+
*/
|
|
80
|
+
export declare function issueWriteDenialResponse(code: IssueWriteDenialCode, context?: IssueWriteDenialContext): {
|
|
81
|
+
status: IssueWriteDenialCopy["status"];
|
|
82
|
+
body: {
|
|
83
|
+
error: string;
|
|
84
|
+
details: {
|
|
85
|
+
code: IssueWriteDenialCode;
|
|
86
|
+
boundary: string;
|
|
87
|
+
whoCanAct: string;
|
|
88
|
+
sanctionedPath: string;
|
|
89
|
+
} & Record<string, unknown>;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=issue-write-denial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-write-denial.d.ts","sourceRoot":"","sources":["../src/issue-write-denial.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,wBAAwB,YACnC,yBAAyB,EACzB,kCAAkC,EAClC,sCAAsC,EACtC,0CAA0C,EAC1C,+BAA+B,EAC/B,oCAAoC,EACpC,4CAA4C,EAC5C,wCAAwC,CAChC,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,CAAC;AAE/E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,mDAAmD;IACnD,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,IAAI,IAAI,oBAAoB,CAE9B;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CAC1D,IAAI,EAAE,yBAAyB,GAC9B,oBAAoB,CAItB;AA6BD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,uBAA4B,GACpC,oBAAoB,CA0JtB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAO7E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,GAAE,uBAA4B,GACpC;IACD,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE;YACP,IAAI,EAAE,oBAAoB,CAAC;YAC3B,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,cAAc,EAAE,MAAM,CAAC;SACxB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7B,CAAC;CACH,CAcA"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy contract for denied issue writes (open cross-task writes: failure UX).
|
|
3
|
+
*
|
|
4
|
+
* Cross-issue issue writes are default-open for standard-trust agents on issues
|
|
5
|
+
* they can already read (see SPEC-implementation §9.3). The remaining walls are
|
|
6
|
+
* rare — but a real incident burned a full detour discovering a workaround
|
|
7
|
+
* behind an opaque 403, so every one of them must say three things:
|
|
8
|
+
*
|
|
9
|
+
* 1. which boundary fired,
|
|
10
|
+
* 2. who *can* act,
|
|
11
|
+
* 3. the sanctioned path forward.
|
|
12
|
+
*
|
|
13
|
+
* This module is the single source of truth for that copy, so the API error
|
|
14
|
+
* body an agent reads and the notice a human sees in the UI are the same words.
|
|
15
|
+
* It is the issue-write sibling of `responsible-user-denial.ts`: the two
|
|
16
|
+
* responsible-user ceiling codes delegate to that module's copy so terminology
|
|
17
|
+
* ("on behalf of {user}", never "impersonate") stays consistent.
|
|
18
|
+
*/
|
|
19
|
+
import { describeResponsibleUserDenial, responsibleUserLabel, } from "./responsible-user-denial.js";
|
|
20
|
+
export const ISSUE_WRITE_DENIAL_CODES = [
|
|
21
|
+
"issue_write_not_visible",
|
|
22
|
+
"issue_write_actor_class_excluded",
|
|
23
|
+
"issue_write_responsible_user_ceiling",
|
|
24
|
+
"issue_write_responsible_user_unavailable",
|
|
25
|
+
"issue_write_assignee_run_lock",
|
|
26
|
+
"cross_issue_influence_cap_exceeded",
|
|
27
|
+
"cross_issue_influence_run_context_required",
|
|
28
|
+
"issue_write_attribution_spoof_rejected",
|
|
29
|
+
];
|
|
30
|
+
export function isIssueWriteDenialCode(code) {
|
|
31
|
+
return ISSUE_WRITE_DENIAL_CODES.includes(code);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Bridge the two responsible-user ceiling codes emitted by the authorization
|
|
35
|
+
* layer into this module's code space, so a single UI notice covers every way
|
|
36
|
+
* an issue write can be refused.
|
|
37
|
+
*/
|
|
38
|
+
export function issueWriteDenialCodeForResponsibleUserDenial(code) {
|
|
39
|
+
return code === "RESPONSIBLE_USER_UNAVAILABLE"
|
|
40
|
+
? "issue_write_responsible_user_unavailable"
|
|
41
|
+
: "issue_write_responsible_user_ceiling";
|
|
42
|
+
}
|
|
43
|
+
/** "this task" when the identifier is unknown, so copy never shows a raw id. */
|
|
44
|
+
function issueLabel(identifier) {
|
|
45
|
+
const trimmed = identifier?.trim();
|
|
46
|
+
return trimmed && trimmed.length > 0 ? trimmed : "this task";
|
|
47
|
+
}
|
|
48
|
+
/** "the assignee" when the name is unknown. */
|
|
49
|
+
function assigneeLabel(name) {
|
|
50
|
+
const trimmed = name?.trim();
|
|
51
|
+
return trimmed && trimmed.length > 0 ? trimmed : "the current assignee";
|
|
52
|
+
}
|
|
53
|
+
/** "this agent" when the name is unknown. */
|
|
54
|
+
function actorLabel(name) {
|
|
55
|
+
const trimmed = name?.trim();
|
|
56
|
+
return trimmed && trimmed.length > 0 ? trimmed : "this agent";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The escape hatch an earlier incident had to discover by trial and error. Naming it in
|
|
60
|
+
* every boundary denial is the point of plan §6 — an agent that reads the error
|
|
61
|
+
* should not need a detour to find the supported path.
|
|
62
|
+
*/
|
|
63
|
+
const CHILD_ISSUE_PATH = "create a child issue with the request in its description (issue creation is a " +
|
|
64
|
+
"separate, open write path) and let its assignee act";
|
|
65
|
+
export function describeIssueWriteDenial(code, context = {}) {
|
|
66
|
+
const issue = issueLabel(context.issueIdentifier);
|
|
67
|
+
const actor = actorLabel(context.actorLabel);
|
|
68
|
+
const assignee = assigneeLabel(context.assigneeLabel);
|
|
69
|
+
const responsible = responsibleUserLabel(context.responsibleUserName);
|
|
70
|
+
switch (code) {
|
|
71
|
+
case "issue_write_not_visible":
|
|
72
|
+
return {
|
|
73
|
+
code,
|
|
74
|
+
status: 403,
|
|
75
|
+
tone: "boundary",
|
|
76
|
+
boundary: "Issue visibility",
|
|
77
|
+
title: "Task is outside this actor's visibility",
|
|
78
|
+
description: `Issue writes are open by default, but only for tasks the actor can already ` +
|
|
79
|
+
`read. ${issue} is not visible to ${actor}, so its comment, update, child, and ` +
|
|
80
|
+
`assignment channels are all closed — the wall is visibility, not the write itself.`,
|
|
81
|
+
whoCanAct: `${assignee}, and any agent or board member the task is visible to.`,
|
|
82
|
+
sanctionedPath: `Ask the board to widen visibility for ${actor}, or ${CHILD_ISSUE_PATH}.`,
|
|
83
|
+
};
|
|
84
|
+
case "issue_write_actor_class_excluded":
|
|
85
|
+
return {
|
|
86
|
+
code,
|
|
87
|
+
status: 403,
|
|
88
|
+
tone: "boundary",
|
|
89
|
+
boundary: "Actor-class boundary",
|
|
90
|
+
title: "This actor class cannot write to tasks",
|
|
91
|
+
description: `Default-open issue writes are a standard-trust privilege. Low-trust, ` +
|
|
92
|
+
`skill-test, and task-bridge scopes keep their existing tight walls, so ` +
|
|
93
|
+
`${actor} cannot write to ${issue} no matter who it acts for.`,
|
|
94
|
+
whoCanAct: `A standard-trust agent in this company, or a board member.`,
|
|
95
|
+
sanctionedPath: `Report the request upward and let a standard-trust agent make the write — ` +
|
|
96
|
+
`actor-class scope cannot be widened per task.`,
|
|
97
|
+
};
|
|
98
|
+
case "issue_write_responsible_user_ceiling": {
|
|
99
|
+
const ceiling = describeResponsibleUserDenial("RESPONSIBLE_USER_UNAUTHORIZED", {
|
|
100
|
+
userName: context.responsibleUserName,
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
code,
|
|
104
|
+
status: 403,
|
|
105
|
+
tone: "boundary",
|
|
106
|
+
boundary: "Responsible-user ceiling",
|
|
107
|
+
title: ceiling.title,
|
|
108
|
+
description: `${ceiling.description} The write to ${issue} was refused for that reason.`,
|
|
109
|
+
whoCanAct: `${responsible} once authorized, or anyone already permitted to write to ${issue}.`,
|
|
110
|
+
sanctionedPath: ceiling.recommendedAction,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
case "issue_write_responsible_user_unavailable": {
|
|
114
|
+
const unavailable = describeResponsibleUserDenial("RESPONSIBLE_USER_UNAVAILABLE", {
|
|
115
|
+
userName: context.responsibleUserName,
|
|
116
|
+
});
|
|
117
|
+
return {
|
|
118
|
+
code,
|
|
119
|
+
status: 403,
|
|
120
|
+
tone: "boundary",
|
|
121
|
+
// Distinct from the title, which already says "unavailable" — the
|
|
122
|
+
// boundary names the *mechanism*, so the two do not read as a stutter.
|
|
123
|
+
boundary: "Responsible-user availability",
|
|
124
|
+
title: unavailable.title,
|
|
125
|
+
description: `${unavailable.description} The write to ${issue} was refused for that reason.`,
|
|
126
|
+
whoCanAct: `A board member, or ${actor} once it has an active responsible user.`,
|
|
127
|
+
sanctionedPath: unavailable.recommendedAction,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
case "issue_write_assignee_run_lock":
|
|
131
|
+
return {
|
|
132
|
+
code,
|
|
133
|
+
status: 409,
|
|
134
|
+
tone: "lock",
|
|
135
|
+
boundary: "Run checkout lock",
|
|
136
|
+
title: "Another agent's run owns this task",
|
|
137
|
+
description: `${assignee} has ${issue} checked out and a run is live. Checkout and run ` +
|
|
138
|
+
`ownership stay assignee-scoped even though writes are open, so field edits ` +
|
|
139
|
+
`belong to the run that holds the lock until it finishes.`,
|
|
140
|
+
whoCanAct: `${assignee}'s live run, or an agent holding the manage-active-checkouts permission.`,
|
|
141
|
+
sanctionedPath: `Comment instead of patching — comments stay open and wake ${assignee} — or ` +
|
|
142
|
+
`wait for the run to release the lock and retry.`,
|
|
143
|
+
};
|
|
144
|
+
case "cross_issue_influence_cap_exceeded": {
|
|
145
|
+
const cap = context.cap ?? 20;
|
|
146
|
+
const attempt = context.count ?? null;
|
|
147
|
+
return {
|
|
148
|
+
code,
|
|
149
|
+
status: 429,
|
|
150
|
+
tone: "cap",
|
|
151
|
+
// No parentheses: surfaces render the boundary inside their own parens.
|
|
152
|
+
boundary: `Per-run cross-issue cap of ${cap} writes`,
|
|
153
|
+
title: "This run has spent its cross-issue write budget",
|
|
154
|
+
description: `A single heartbeat run may make at most ${cap} cross-issue comments or task ` +
|
|
155
|
+
`updates combined${attempt !== null ? `; this was attempt ${attempt}` : ""}. The cap ` +
|
|
156
|
+
`bounds runaway comment sprays and loops — it is a rate backstop, not a ` +
|
|
157
|
+
`permission decision, so ${actor} is still allowed to write to ${issue}.`,
|
|
158
|
+
whoCanAct: `${actor} on its next heartbeat run, or ${assignee} on ${issue} directly.`,
|
|
159
|
+
sanctionedPath: `Consolidate what is left into one comment on your own task, or end the run and ` +
|
|
160
|
+
`continue on the next heartbeat — the budget resets per run.`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
case "cross_issue_influence_run_context_required":
|
|
164
|
+
return {
|
|
165
|
+
code,
|
|
166
|
+
status: 403,
|
|
167
|
+
tone: "boundary",
|
|
168
|
+
boundary: "Heartbeat run context",
|
|
169
|
+
title: "Cross-issue writes need a run to attribute them to",
|
|
170
|
+
description: `Every agent comment and task update is attributed to a heartbeat run so the ` +
|
|
171
|
+
`cross-issue cap can be counted and the audit trail can name who acted for whom. ` +
|
|
172
|
+
`This request arrived without a valid run, so it could not be contained.`,
|
|
173
|
+
whoCanAct: `${actor}, once the request carries its own run id.`,
|
|
174
|
+
sanctionedPath: `Send the \`X-Paperclip-Run-Id\` header with your current run (\`$PAPERCLIP_RUN_ID\`) ` +
|
|
175
|
+
`and retry.`,
|
|
176
|
+
};
|
|
177
|
+
case "issue_write_attribution_spoof_rejected":
|
|
178
|
+
return {
|
|
179
|
+
code,
|
|
180
|
+
status: 422,
|
|
181
|
+
tone: "attribution",
|
|
182
|
+
boundary: "Server-derived attribution",
|
|
183
|
+
title: "Responsible user cannot be chosen by the caller",
|
|
184
|
+
description: `\`onBehalfOfUserId\` is derived from the authenticated actor, never from the ` +
|
|
185
|
+
`request body — an agent cannot pick the human whose authority it rides. The ` +
|
|
186
|
+
`attempt was recorded in the audit log.`,
|
|
187
|
+
whoCanAct: `${actor} itself: the write is allowed, only the chosen attribution is not.`,
|
|
188
|
+
sanctionedPath: `Remove \`onBehalfOfUserId\` from the request and retry; the server fills in ` +
|
|
189
|
+
`${responsible} from your run.`,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Flatten a denial into the single `error` string an API client sees.
|
|
195
|
+
*
|
|
196
|
+
* Agents typically surface only `error`, so all three §6 obligations — boundary,
|
|
197
|
+
* who can act, sanctioned path — have to survive the flattening.
|
|
198
|
+
*/
|
|
199
|
+
export function issueWriteDenialApiMessage(copy) {
|
|
200
|
+
return [
|
|
201
|
+
`${copy.title} (${copy.boundary}).`,
|
|
202
|
+
copy.description,
|
|
203
|
+
`Who can act: ${copy.whoCanAct}`,
|
|
204
|
+
`Try this: ${copy.sanctionedPath}`,
|
|
205
|
+
].join(" ");
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Build the full `{ error, details }` body for a denied issue write. Keeping the
|
|
209
|
+
* machine-readable `code` next to the prose lets the board UI render the same
|
|
210
|
+
* copy without parsing sentences.
|
|
211
|
+
*/
|
|
212
|
+
export function issueWriteDenialResponse(code, context = {}) {
|
|
213
|
+
const copy = describeIssueWriteDenial(code, context);
|
|
214
|
+
return {
|
|
215
|
+
status: copy.status,
|
|
216
|
+
body: {
|
|
217
|
+
error: issueWriteDenialApiMessage(copy),
|
|
218
|
+
details: {
|
|
219
|
+
code: copy.code,
|
|
220
|
+
boundary: copy.boundary,
|
|
221
|
+
whoCanAct: copy.whoCanAct,
|
|
222
|
+
sanctionedPath: copy.sanctionedPath,
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=issue-write-denial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-write-denial.js","sourceRoot":"","sources":["../src/issue-write-denial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-write-denial.test.d.ts","sourceRoot":"","sources":["../src/issue-write-denial.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { ISSUE_WRITE_DENIAL_CODES, describeIssueWriteDenial, isIssueWriteDenialCode, issueWriteDenialApiMessage, issueWriteDenialCodeForResponsibleUserDenial, issueWriteDenialResponse, } from "./issue-write-denial.js";
|
|
3
|
+
describe("describeIssueWriteDenial", () => {
|
|
4
|
+
it("answers all three plan §6 obligations for every code", () => {
|
|
5
|
+
for (const code of ISSUE_WRITE_DENIAL_CODES) {
|
|
6
|
+
const copy = describeIssueWriteDenial(code);
|
|
7
|
+
expect(copy.code, code).toBe(code);
|
|
8
|
+
// Boundary that fired, who can act, sanctioned path — none may be empty.
|
|
9
|
+
expect(copy.boundary.trim().length, code).toBeGreaterThan(0);
|
|
10
|
+
expect(copy.whoCanAct.trim().length, code).toBeGreaterThan(0);
|
|
11
|
+
expect(copy.sanctionedPath.trim().length, code).toBeGreaterThan(0);
|
|
12
|
+
expect(copy.title.trim().length, code).toBeGreaterThan(0);
|
|
13
|
+
expect(copy.description.trim().length, code).toBeGreaterThan(0);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
it("never leaks a raw id or placeholder when labels are unknown", () => {
|
|
17
|
+
for (const code of ISSUE_WRITE_DENIAL_CODES) {
|
|
18
|
+
const copy = describeIssueWriteDenial(code);
|
|
19
|
+
const prose = `${copy.description} ${copy.whoCanAct} ${copy.sanctionedPath}`;
|
|
20
|
+
expect(prose, code).not.toMatch(/undefined|null/);
|
|
21
|
+
// Unknown labels degrade to generic nouns, never a bare id.
|
|
22
|
+
expect(prose, code).toMatch(/this task|this agent|the current assignee|the responsible user/);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
it("keeps the boundary free of parentheses and distinct from the title", () => {
|
|
26
|
+
for (const code of ISSUE_WRITE_DENIAL_CODES) {
|
|
27
|
+
const copy = describeIssueWriteDenial(code, { cap: 20 });
|
|
28
|
+
// Surfaces render the boundary inside their own parens — nesting stutters.
|
|
29
|
+
expect(copy.boundary, code).not.toMatch(/[()]/);
|
|
30
|
+
// A title echoed verbatim as its own boundary reads as a mistake.
|
|
31
|
+
expect(copy.boundary.toLowerCase(), code).not.toBe(copy.title.toLowerCase());
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
it("names the actor, assignee, and task when they are known", () => {
|
|
35
|
+
const copy = describeIssueWriteDenial("issue_write_not_visible", {
|
|
36
|
+
actorLabel: "Fable",
|
|
37
|
+
assigneeLabel: "CodexCoder",
|
|
38
|
+
issueIdentifier: "TASK-482",
|
|
39
|
+
});
|
|
40
|
+
expect(copy.description).toContain("TASK-482");
|
|
41
|
+
expect(copy.description).toContain("Fable");
|
|
42
|
+
expect(copy.whoCanAct).toContain("CodexCoder");
|
|
43
|
+
});
|
|
44
|
+
it("points a visibility denial at the sanctioned child-issue path", () => {
|
|
45
|
+
const copy = describeIssueWriteDenial("issue_write_not_visible");
|
|
46
|
+
// The incident detour was discovering exactly this workaround.
|
|
47
|
+
expect(copy.sanctionedPath).toContain("child issue");
|
|
48
|
+
});
|
|
49
|
+
it("frames the per-run cap as a rate backstop, not a permission decision", () => {
|
|
50
|
+
const copy = describeIssueWriteDenial("cross_issue_influence_cap_exceeded", {
|
|
51
|
+
cap: 20,
|
|
52
|
+
count: 21,
|
|
53
|
+
actorLabel: "Fable",
|
|
54
|
+
});
|
|
55
|
+
expect(copy.status).toBe(429);
|
|
56
|
+
expect(copy.tone).toBe("cap");
|
|
57
|
+
expect(copy.boundary).toContain("20");
|
|
58
|
+
expect(copy.description).toContain("attempt 21");
|
|
59
|
+
expect(copy.description).toContain("still allowed");
|
|
60
|
+
expect(copy.sanctionedPath).toContain("next heartbeat");
|
|
61
|
+
});
|
|
62
|
+
it("defaults the cap to the shipped limit when context omits it", () => {
|
|
63
|
+
const copy = describeIssueWriteDenial("cross_issue_influence_cap_exceeded");
|
|
64
|
+
expect(copy.boundary).toContain("20");
|
|
65
|
+
expect(copy.description).not.toContain("attempt");
|
|
66
|
+
});
|
|
67
|
+
it("gives the run-context denial a copy-pasteable fix", () => {
|
|
68
|
+
const copy = describeIssueWriteDenial("cross_issue_influence_run_context_required");
|
|
69
|
+
expect(copy.sanctionedPath).toContain("X-Paperclip-Run-Id");
|
|
70
|
+
expect(copy.sanctionedPath).toContain("PAPERCLIP_RUN_ID");
|
|
71
|
+
});
|
|
72
|
+
it("tells a spoof attempt that the write itself was fine", () => {
|
|
73
|
+
const copy = describeIssueWriteDenial("issue_write_attribution_spoof_rejected", {
|
|
74
|
+
actorLabel: "Fable",
|
|
75
|
+
responsibleUserName: "Dotta",
|
|
76
|
+
});
|
|
77
|
+
expect(copy.status).toBe(422);
|
|
78
|
+
expect(copy.whoCanAct).toContain("Fable");
|
|
79
|
+
expect(copy.sanctionedPath).toContain("Dotta");
|
|
80
|
+
expect(copy.sanctionedPath).toContain("onBehalfOfUserId");
|
|
81
|
+
});
|
|
82
|
+
it("routes a run lock to comments, which stay open", () => {
|
|
83
|
+
const copy = describeIssueWriteDenial("issue_write_assignee_run_lock", {
|
|
84
|
+
assigneeLabel: "CodexCoder",
|
|
85
|
+
});
|
|
86
|
+
expect(copy.status).toBe(409);
|
|
87
|
+
expect(copy.tone).toBe("lock");
|
|
88
|
+
expect(copy.sanctionedPath).toContain("Comment instead");
|
|
89
|
+
expect(copy.sanctionedPath).toContain("CodexCoder");
|
|
90
|
+
});
|
|
91
|
+
it("reuses responsible-user ceiling copy and keeps on-behalf-of terminology", () => {
|
|
92
|
+
const ceiling = describeIssueWriteDenial("issue_write_responsible_user_ceiling", {
|
|
93
|
+
responsibleUserName: "Dotta",
|
|
94
|
+
issueIdentifier: "TASK-517",
|
|
95
|
+
});
|
|
96
|
+
expect(ceiling.title).toBe("Responsible user not authorized");
|
|
97
|
+
expect(ceiling.description).toContain("on behalf");
|
|
98
|
+
expect(ceiling.description).toContain("TASK-517");
|
|
99
|
+
expect(ceiling.description).not.toContain("impersonat");
|
|
100
|
+
expect(ceiling.whoCanAct).toContain("Dotta");
|
|
101
|
+
const unavailable = describeIssueWriteDenial("issue_write_responsible_user_unavailable", {
|
|
102
|
+
responsibleUserName: "Dotta",
|
|
103
|
+
});
|
|
104
|
+
expect(unavailable.title).toBe("Responsible user unavailable");
|
|
105
|
+
expect(unavailable.sanctionedPath).toContain("blocked");
|
|
106
|
+
});
|
|
107
|
+
it("falls back to generic phrasing when the responsible user is unknown", () => {
|
|
108
|
+
const copy = describeIssueWriteDenial("issue_write_responsible_user_ceiling");
|
|
109
|
+
expect(copy.description).toContain("the responsible user");
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe("issueWriteDenialCodeForResponsibleUserDenial", () => {
|
|
113
|
+
it("bridges both authorization-layer ceiling codes", () => {
|
|
114
|
+
expect(issueWriteDenialCodeForResponsibleUserDenial("RESPONSIBLE_USER_UNAUTHORIZED"))
|
|
115
|
+
.toBe("issue_write_responsible_user_ceiling");
|
|
116
|
+
expect(issueWriteDenialCodeForResponsibleUserDenial("RESPONSIBLE_USER_UNAVAILABLE"))
|
|
117
|
+
.toBe("issue_write_responsible_user_unavailable");
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
describe("isIssueWriteDenialCode", () => {
|
|
121
|
+
it("accepts shipped codes and rejects everything else", () => {
|
|
122
|
+
expect(isIssueWriteDenialCode("issue_write_not_visible")).toBe(true);
|
|
123
|
+
expect(isIssueWriteDenialCode("RESPONSIBLE_USER_UNAUTHORIZED")).toBe(false);
|
|
124
|
+
expect(isIssueWriteDenialCode(null)).toBe(false);
|
|
125
|
+
expect(isIssueWriteDenialCode(undefined)).toBe(false);
|
|
126
|
+
expect(isIssueWriteDenialCode("")).toBe(false);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe("issueWriteDenialApiMessage", () => {
|
|
130
|
+
it("keeps boundary, who-can-act, and sanctioned path in the flattened error", () => {
|
|
131
|
+
const copy = describeIssueWriteDenial("issue_write_not_visible", {
|
|
132
|
+
actorLabel: "Fable",
|
|
133
|
+
issueIdentifier: "TASK-482",
|
|
134
|
+
});
|
|
135
|
+
const message = issueWriteDenialApiMessage(copy);
|
|
136
|
+
expect(message).toContain(copy.boundary);
|
|
137
|
+
expect(message).toContain("Who can act:");
|
|
138
|
+
expect(message).toContain("Try this:");
|
|
139
|
+
expect(message).toContain(copy.sanctionedPath);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe("issueWriteDenialResponse", () => {
|
|
143
|
+
it("pairs the status with a machine-readable details payload", () => {
|
|
144
|
+
const { status, body } = issueWriteDenialResponse("cross_issue_influence_cap_exceeded", {
|
|
145
|
+
cap: 20,
|
|
146
|
+
count: 21,
|
|
147
|
+
});
|
|
148
|
+
expect(status).toBe(429);
|
|
149
|
+
expect(body.details.code).toBe("cross_issue_influence_cap_exceeded");
|
|
150
|
+
expect(body.details.boundary).toContain("20");
|
|
151
|
+
expect(body.error).toContain("Who can act:");
|
|
152
|
+
});
|
|
153
|
+
it("uses the status each code declares", () => {
|
|
154
|
+
expect(issueWriteDenialResponse("issue_write_assignee_run_lock").status).toBe(409);
|
|
155
|
+
expect(issueWriteDenialResponse("issue_write_attribution_spoof_rejected").status).toBe(422);
|
|
156
|
+
expect(issueWriteDenialResponse("issue_write_not_visible").status).toBe(403);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=issue-write-denial.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-write-denial.test.js","sourceRoot":"","sources":["../src/issue-write-denial.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AttachmentArtifactWorkProductMetadata, IssueWorkProduct } from "./types/work-product.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shared classification for bridging attachment-backed Markdown work products
|
|
4
|
+
* into the issue document review experience. Server materialization and UI
|
|
5
|
+
* presentation must agree on eligibility, so both sides use these helpers.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MARKDOWN_ATTACHMENT_CONTENT_TYPES: readonly ["text/markdown", "text/x-markdown", "application/markdown", "application/x-markdown"];
|
|
8
|
+
/**
|
|
9
|
+
* Maximum attachment size eligible for review-document materialization.
|
|
10
|
+
* Matches the issue-document body limit: a UTF-8 payload of at most this many
|
|
11
|
+
* bytes always fits the 524288-character body cap.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MARKDOWN_REVIEW_DOCUMENT_MAX_BYTES: number;
|
|
14
|
+
export declare const ARTIFACT_REVIEW_DOCUMENT_KEY_PREFIX = "artifact-review-";
|
|
15
|
+
export declare function isMarkdownAttachmentContent(input: {
|
|
16
|
+
contentType: string | null | undefined;
|
|
17
|
+
originalFilename?: string | null;
|
|
18
|
+
}): boolean;
|
|
19
|
+
export type AttachmentArtifactWorkProductLike = Pick<IssueWorkProduct, "type" | "provider" | "metadata">;
|
|
20
|
+
export declare function getAttachmentArtifactWorkProductMetadata(workProduct: AttachmentArtifactWorkProductLike): AttachmentArtifactWorkProductMetadata | null;
|
|
21
|
+
export declare function getMarkdownWorkProductAttachmentMetadata(workProduct: AttachmentArtifactWorkProductLike): AttachmentArtifactWorkProductMetadata | null;
|
|
22
|
+
export declare function isMarkdownArtifactWorkProduct(workProduct: AttachmentArtifactWorkProductLike): boolean;
|
|
23
|
+
export declare function artifactReviewDocumentKey(workProductId: string): string;
|
|
24
|
+
export declare function isArtifactReviewDocumentKey(key: string): boolean;
|
|
25
|
+
export declare function workProductIdFromArtifactReviewDocumentKey(key: string): string | null;
|
|
26
|
+
//# sourceMappingURL=markdown-work-products.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-work-products.d.ts","sourceRoot":"","sources":["../src/markdown-work-products.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qCAAqC,EACrC,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC;;;;GAIG;AAEH,eAAO,MAAM,iCAAiC,YAC5C,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,CAChB,CAAC;AAaX;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,QAAa,CAAC;AAE7D,eAAO,MAAM,mCAAmC,qBAAqB,CAAC;AAMtE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GAAG,OAAO,CAQV;AAED,MAAM,MAAM,iCAAiC,GAAG,IAAI,CAClD,gBAAgB,EAChB,MAAM,GAAG,UAAU,GAAG,UAAU,CACjC,CAAC;AAEF,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,iCAAiC,GAC7C,qCAAqC,GAAG,IAAI,CAK9C;AAED,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,iCAAiC,GAC7C,qCAAqC,GAAG,IAAI,CAI9C;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,iCAAiC,GAC7C,OAAO,CAET;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED,wBAAgB,0CAA0C,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { attachmentArtifactWorkProductMetadataSchema } from "./validators/work-product.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shared classification for bridging attachment-backed Markdown work products
|
|
4
|
+
* into the issue document review experience. Server materialization and UI
|
|
5
|
+
* presentation must agree on eligibility, so both sides use these helpers.
|
|
6
|
+
*/
|
|
7
|
+
export const MARKDOWN_ATTACHMENT_CONTENT_TYPES = [
|
|
8
|
+
"text/markdown",
|
|
9
|
+
"text/x-markdown",
|
|
10
|
+
"application/markdown",
|
|
11
|
+
"application/x-markdown",
|
|
12
|
+
];
|
|
13
|
+
const MARKDOWN_ATTACHMENT_CONTENT_TYPE_SET = new Set(MARKDOWN_ATTACHMENT_CONTENT_TYPES);
|
|
14
|
+
const MARKDOWN_FALLBACK_CONTENT_TYPES = new Set([
|
|
15
|
+
"text/plain",
|
|
16
|
+
"application/octet-stream",
|
|
17
|
+
"binary/octet-stream",
|
|
18
|
+
"application/x-binary",
|
|
19
|
+
]);
|
|
20
|
+
const MARKDOWN_FILENAME_EXTENSIONS = [".md", ".markdown"];
|
|
21
|
+
/**
|
|
22
|
+
* Maximum attachment size eligible for review-document materialization.
|
|
23
|
+
* Matches the issue-document body limit: a UTF-8 payload of at most this many
|
|
24
|
+
* bytes always fits the 524288-character body cap.
|
|
25
|
+
*/
|
|
26
|
+
export const MARKDOWN_REVIEW_DOCUMENT_MAX_BYTES = 512 * 1024;
|
|
27
|
+
export const ARTIFACT_REVIEW_DOCUMENT_KEY_PREFIX = "artifact-review-";
|
|
28
|
+
function normalizeAttachmentContentType(contentType) {
|
|
29
|
+
return (contentType ?? "").toLowerCase().split(";")[0]?.trim() ?? "";
|
|
30
|
+
}
|
|
31
|
+
export function isMarkdownAttachmentContent(input) {
|
|
32
|
+
const contentType = normalizeAttachmentContentType(input.contentType);
|
|
33
|
+
if (MARKDOWN_ATTACHMENT_CONTENT_TYPE_SET.has(contentType))
|
|
34
|
+
return true;
|
|
35
|
+
const filename = (input.originalFilename ?? "").toLowerCase();
|
|
36
|
+
if (!MARKDOWN_FILENAME_EXTENSIONS.some((extension) => filename.endsWith(extension))) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return MARKDOWN_FALLBACK_CONTENT_TYPES.has(contentType);
|
|
40
|
+
}
|
|
41
|
+
export function getAttachmentArtifactWorkProductMetadata(workProduct) {
|
|
42
|
+
if (workProduct.type !== "artifact" || workProduct.provider !== "paperclip")
|
|
43
|
+
return null;
|
|
44
|
+
if (!workProduct.metadata)
|
|
45
|
+
return null;
|
|
46
|
+
const parsed = attachmentArtifactWorkProductMetadataSchema.safeParse(workProduct.metadata);
|
|
47
|
+
return parsed.success ? parsed.data : null;
|
|
48
|
+
}
|
|
49
|
+
export function getMarkdownWorkProductAttachmentMetadata(workProduct) {
|
|
50
|
+
const metadata = getAttachmentArtifactWorkProductMetadata(workProduct);
|
|
51
|
+
if (!metadata)
|
|
52
|
+
return null;
|
|
53
|
+
return isMarkdownAttachmentContent(metadata) ? metadata : null;
|
|
54
|
+
}
|
|
55
|
+
export function isMarkdownArtifactWorkProduct(workProduct) {
|
|
56
|
+
return getMarkdownWorkProductAttachmentMetadata(workProduct) !== null;
|
|
57
|
+
}
|
|
58
|
+
export function artifactReviewDocumentKey(workProductId) {
|
|
59
|
+
return `${ARTIFACT_REVIEW_DOCUMENT_KEY_PREFIX}${workProductId}`;
|
|
60
|
+
}
|
|
61
|
+
export function isArtifactReviewDocumentKey(key) {
|
|
62
|
+
return (key.startsWith(ARTIFACT_REVIEW_DOCUMENT_KEY_PREFIX) &&
|
|
63
|
+
key.length > ARTIFACT_REVIEW_DOCUMENT_KEY_PREFIX.length);
|
|
64
|
+
}
|
|
65
|
+
export function workProductIdFromArtifactReviewDocumentKey(key) {
|
|
66
|
+
if (!isArtifactReviewDocumentKey(key))
|
|
67
|
+
return null;
|
|
68
|
+
return key.slice(ARTIFACT_REVIEW_DOCUMENT_KEY_PREFIX.length);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=markdown-work-products.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-work-products.js","sourceRoot":"","sources":["../src/markdown-work-products.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-work-products.test.d.ts","sourceRoot":"","sources":["../src/markdown-work-products.test.ts"],"names":[],"mappings":""}
|