feat: allow secret workbench resources

This commit is contained in:
mirivlad 2026-06-29 20:44:02 +08:00
parent f4f79cf1d0
commit e2d07145d6
5 changed files with 17 additions and 5 deletions

2
dist/types.d.ts vendored
View File

@ -181,7 +181,7 @@ export interface ContributionStatusBarItem {
position?: 'left' | 'right';
handler?: string;
}
export type OpenResourceKind = 'vault-file';
export type OpenResourceKind = 'vault-file' | 'secret';
export type OpenResourceMode = 'view' | 'edit';
export type OpenResourceContextName = 'generic-text' | 'generic-markdown' | 'notes-markdown' | string;
export interface OpenProviderSupport {

2
dist/types.d.ts.map vendored

File diff suppressed because one or more lines are too long

View File

@ -380,7 +380,7 @@
"properties": {
"kind": {
"type": "string",
"enum": ["vault-file"]
"enum": ["vault-file", "secret"]
},
"extensions": {
"type": "array",

View File

@ -4,7 +4,7 @@ import capabilitiesSchema from '../schemas/capabilities.json';
import manifestSchema from '../schemas/manifest.json';
import permissionsSchema from '../schemas/permissions.json';
import vaultEventsSchema from '../schemas/events/vault.json';
import type { OpenResourceRequest, PluginManifest } from './types';
import type { OpenProviderSupport, OpenResourceRequest, PluginManifest } from './types';
import { createMockPluginAPI } from './test-utils';
describe('VerstakPluginAPI contract', () => {
@ -152,6 +152,18 @@ describe('VerstakPluginAPI contract', () => {
expect(manifest.contributes?.openProviders?.[0].supports[1].contexts).toContain('generic-text');
});
test('secret links are valid workbench open-provider resources', () => {
const supportSchema = (manifestSchema as any).$defs.OpenProviderSupport;
expect(supportSchema.properties.kind.enum).toEqual(expect.arrayContaining(['vault-file', 'secret']));
const support: OpenProviderSupport = {
kind: 'secret',
modes: ['view'],
};
expect(support.kind).toBe('secret');
});
test('OpenResourceRequest and no-provider result shape are typed', () => {
const request: OpenResourceRequest = {
kind: 'vault-file',

View File

@ -243,7 +243,7 @@ export interface ContributionStatusBarItem {
handler?: string;
}
export type OpenResourceKind = 'vault-file';
export type OpenResourceKind = 'vault-file' | 'secret';
export type OpenResourceMode = 'view' | 'edit';
export type OpenResourceContextName = 'generic-text' | 'generic-markdown' | 'notes-markdown' | string;