Skip to content

feat(plugins): (P1-B) versioned insomnia.permissions JSON schema - #10352

Draft
jackkav wants to merge 1 commit into
developfrom
feat/plugin-manifest-schema
Draft

feat(plugins): (P1-B) versioned insomnia.permissions JSON schema#10352
jackkav wants to merge 1 commit into
developfrom
feat/plugin-manifest-schema

Conversation

@jackkav

@jackkav jackkav commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

P1-B (start): versioned JSON schema for insomnia.permissions

First increment of the P1-B "sandboxing refinements" tier — formalizing the manifest contract. Draft to iterate on.

Adds a checked-in, version-stamped JSON Schema (permissions-schema.ts) as the canonical, exportable contract for the insomnia.permissions block — something plugin authors, editor tooling, and docs can point at as one source of truth.

Deliberately additive, zero behavior change: the runtime validator (parsePluginPermissions) stays the lenient "never throw, degrade-to-baseline-with-a-warning" parser it is today. A lockstep test (permissions-schema.test.ts) asserts the invariant that a present permissions block is schema-valid iff the parser accepts it with zero warnings, across a case table (valid, empty, dups, unknown names, unknown keys, non-array axis, non-string/empty entries, non-object permissions). So the formal schema and the runtime parser can't drift apart.

The schema matches the parser's intentional leniencies (documented inline): unknown module/capability names allowed, duplicates allowed, unknown keys inside permissions ignored.

Validated: tsc clean, eslint clean, 22 tests green (new cross-check + existing parser suite, no regression).

Remaining P1-B items (not in this PR)

  • Runtime capability-exercise visibility — show which capabilities a plugin actually used (needs bridge instrumentation → IPC → Plugin Manager UI).
  • Audit logging for elevated grants — record when a plugin is elevated/de-elevated (needs a persistence decision for the audit trail).
  • Integrity checks (signing / checksum pinning) for elevated plugins — larger, own project.

🤖 Authored by Claude Code

import { parsePluginPermissions } from './permissions';
import { PLUGIN_MANIFEST_SCHEMA_VERSION, PLUGIN_PERMISSIONS_SCHEMA } from './permissions-schema';

const ajv = new Ajv({ allErrors: true });
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

✅ Circular References Report

Generated at: 2026-08-07T16:45:28.004Z
Status: ✅ NO CHANGE

Summary

Metric Base (develop) PR Change
Total Circular References 9 9 0 (0.00%)
Click to view all circular references in PR (9)
insomnia-inso/src/db/models/types.ts -> insomnia-inso/src/db/types.ts
insomnia/src/main/prompt-bridge.ts -> insomnia/src/main/window-utils.ts -> insomnia/src/main/plugin-window.ts
insomnia/src/main/window-utils.ts -> insomnia/src/main/plugin-window.ts
insomnia/src/network/network.ts -> insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts
insomnia/src/ui/components/settings/import-export.tsx -> insomnia/src/ui/components/modals/export-requests-modal.tsx
insomnia/src/ui/components/tabs/tab-list.tsx -> insomnia/src/ui/components/tabs/tab.tsx
insomnia/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> insomnia/src/ui/components/templating/external-vault/external-vault-form.tsx
insomnia/src/ui/components/viewers/response-viewer.tsx -> insomnia/src/ui/components/viewers/response-multipart-viewer.tsx
Click to view all circular references in base branch (9)
insomnia-inso/src/db/models/types.ts -> insomnia-inso/src/db/types.ts
insomnia/src/main/prompt-bridge.ts -> insomnia/src/main/window-utils.ts -> insomnia/src/main/plugin-window.ts
insomnia/src/main/window-utils.ts -> insomnia/src/main/plugin-window.ts
insomnia/src/network/network.ts -> insomnia-scripting-environment/src/objects/index.ts -> insomnia-scripting-environment/src/objects/collection.ts -> insomnia-scripting-environment/src/objects/response.ts
insomnia/src/network/network.ts -> insomnia/src/common/render.ts
insomnia/src/ui/components/settings/import-export.tsx -> insomnia/src/ui/components/modals/export-requests-modal.tsx
insomnia/src/ui/components/tabs/tab-list.tsx -> insomnia/src/ui/components/tabs/tab.tsx
insomnia/src/ui/components/templating/tag-editor-arg-sub-form.tsx -> insomnia/src/ui/components/templating/external-vault/external-vault-form.tsx
insomnia/src/ui/components/viewers/response-viewer.tsx -> insomnia/src/ui/components/viewers/response-multipart-viewer.tsx

Analysis

No Change: This PR does not introduce or remove any circular references.


This report was generated automatically by comparing against the develop branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants