mirror of
https://github.com/openai/codex.git
synced 2026-10-19 17:28:46 +00:00
## What changed - Request installed-plugin metadata with `includeExtensions=true` and carry optional `extensions` through the cache into `PluginSummary`. - Add typed declarations for global, settings, thread, and file entrypoints, quick actions, settings tools, icons, and search mention providers. Update JSON schemas and TypeScript and Python bindings. - Accept supported snake_case aliases and emit camelCase fields. Discard incompatible extension declarations without invalidating the installed-plugin inventory. ## Testing Add an integration test covering extension metadata preservation, field normalization, and unknown entrypoint and quick-action types across live and cached `plugin/installed` reads. Update pagination assertions to require `includeExtensions=true`. GitOrigin-RevId: b73b0d13c151a30dc1fb9cda70b5cd6d7e3e2441
1447 lines
32 KiB
JSON
Generated
1447 lines
32 KiB
JSON
Generated
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"definitions": {
|
|
"AbsolutePathBuf": {
|
|
"description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.",
|
|
"type": "string"
|
|
},
|
|
"AppSummary": {
|
|
"description": "EXPERIMENTAL - app metadata summary for plugin responses.",
|
|
"properties": {
|
|
"category": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"description": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"installUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"AppTemplateSummary": {
|
|
"properties": {
|
|
"canonicalConnectorId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"category": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"description": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"logoUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"logoUrlDark": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"materializedAppIds": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"reason": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AppTemplateUnavailableReason"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"templateId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"materializedAppIds",
|
|
"name",
|
|
"templateId"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"AppTemplateUnavailableReason": {
|
|
"enum": [
|
|
"NOT_CONFIGURED_FOR_WORKSPACE",
|
|
"NO_ACTIVE_WORKSPACE"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"HookEventName": {
|
|
"enum": [
|
|
"preToolUse",
|
|
"permissionRequest",
|
|
"postToolUse",
|
|
"preCompact",
|
|
"postCompact",
|
|
"sessionStart",
|
|
"sessionEnd",
|
|
"userPromptSubmit",
|
|
"subagentStart",
|
|
"subagentStop",
|
|
"stop",
|
|
"interrupt"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginAuthPolicy": {
|
|
"enum": [
|
|
"ON_INSTALL",
|
|
"ON_USE"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginAvailability": {
|
|
"oneOf": [
|
|
{
|
|
"enum": [
|
|
"DISABLED_BY_ADMIN"
|
|
],
|
|
"type": "string"
|
|
},
|
|
{
|
|
"description": "Plugin-service currently sends `\"ENABLED\"` for available remote plugins. Codex app-server exposes `\"AVAILABLE\"` in its API; the alias keeps decoding compatible with that upstream response.",
|
|
"enum": [
|
|
"AVAILABLE"
|
|
],
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"PluginDetail": {
|
|
"properties": {
|
|
"appTemplates": {
|
|
"items": {
|
|
"$ref": "#/definitions/AppTemplateSummary"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"apps": {
|
|
"items": {
|
|
"$ref": "#/definitions/AppSummary"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"description": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"hooks": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginHookSummary"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"marketplaceName": {
|
|
"type": "string"
|
|
},
|
|
"marketplacePath": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"mcpServers": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"onboardingSkill": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SkillSummary"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "The declared onboarding skill, when the plugin and visible skill are enabled."
|
|
},
|
|
"scheduledTasks": {
|
|
"items": {
|
|
"$ref": "#/definitions/ScheduledTaskSummary"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"shareUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"skills": {
|
|
"items": {
|
|
"$ref": "#/definitions/SkillSummary"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"summary": {
|
|
"$ref": "#/definitions/PluginSummary"
|
|
}
|
|
},
|
|
"required": [
|
|
"appTemplates",
|
|
"apps",
|
|
"hooks",
|
|
"marketplaceName",
|
|
"mcpServers",
|
|
"skills",
|
|
"summary"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginDisabledReason": {
|
|
"enum": [
|
|
"disabled_by_admin",
|
|
"plan_not_eligible",
|
|
"required_app_unavailable",
|
|
"unknown"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginEntrypoint": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"appId": {
|
|
"type": "string"
|
|
},
|
|
"icons": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginIcon"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"quickAction": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginQuickAction"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null
|
|
},
|
|
"resourceUri": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"global"
|
|
],
|
|
"title": "GlobalPluginEntrypointType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"appId",
|
|
"icons",
|
|
"resourceUri",
|
|
"title",
|
|
"toolName",
|
|
"type"
|
|
],
|
|
"title": "GlobalPluginEntrypoint",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"appId": {
|
|
"type": "string"
|
|
},
|
|
"icons": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginIcon"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"resourceUri": {
|
|
"type": "string"
|
|
},
|
|
"searchTerms": {
|
|
"default": [],
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"settings"
|
|
],
|
|
"title": "SettingsPluginEntrypointType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"appId",
|
|
"icons",
|
|
"resourceUri",
|
|
"title",
|
|
"toolName",
|
|
"type"
|
|
],
|
|
"title": "SettingsPluginEntrypoint",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"appId": {
|
|
"type": "string"
|
|
},
|
|
"icons": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginIcon"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"resourceUri": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"thread"
|
|
],
|
|
"title": "ThreadPluginEntrypointType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"appId",
|
|
"icons",
|
|
"resourceUri",
|
|
"title",
|
|
"toolName",
|
|
"type"
|
|
],
|
|
"title": "ThreadPluginEntrypoint",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"appId": {
|
|
"type": "string"
|
|
},
|
|
"extensions": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"icons": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginIcon"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"resourceUri": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"file"
|
|
],
|
|
"title": "FilePluginEntrypointType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"appId",
|
|
"extensions",
|
|
"icons",
|
|
"resourceUri",
|
|
"title",
|
|
"toolName",
|
|
"type"
|
|
],
|
|
"title": "FilePluginEntrypoint",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"PluginExtensions": {
|
|
"properties": {
|
|
"entrypoints": {
|
|
"default": null,
|
|
"items": {
|
|
"$ref": "#/definitions/PluginEntrypoint"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"fileHandlers": {
|
|
"default": [],
|
|
"items": {
|
|
"$ref": "#/definitions/PluginEntrypoint"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"searchMentionProviders": {
|
|
"default": [],
|
|
"items": {
|
|
"$ref": "#/definitions/PluginSearchProvider"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"settings": {
|
|
"default": [],
|
|
"items": {
|
|
"$ref": "#/definitions/PluginSettings"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"settingsEntrypoints": {
|
|
"default": [],
|
|
"items": {
|
|
"$ref": "#/definitions/PluginEntrypoint"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"threadEntrypoints": {
|
|
"default": [],
|
|
"items": {
|
|
"$ref": "#/definitions/PluginEntrypoint"
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"PluginHookSummary": {
|
|
"properties": {
|
|
"eventName": {
|
|
"$ref": "#/definitions/HookEventName"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"eventName",
|
|
"key"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginIcon": {
|
|
"properties": {
|
|
"mimeType": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"sizes": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"src": {
|
|
"type": "string"
|
|
},
|
|
"theme": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"src"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginInstallPolicy": {
|
|
"enum": [
|
|
"NOT_AVAILABLE",
|
|
"AVAILABLE",
|
|
"INSTALLED_BY_DEFAULT"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginInstallPolicySource": {
|
|
"enum": [
|
|
"WORKSPACE_SETTING",
|
|
"IMPLICIT_CANONICAL_APP"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginInterface": {
|
|
"properties": {
|
|
"brandColor": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"capabilities": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"category": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"composerIcon": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Local composer icon path, resolved from the installed plugin package."
|
|
},
|
|
"composerIconUrl": {
|
|
"description": "Remote composer icon URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"defaultPrompt": {
|
|
"description": "Starter prompts for the plugin. Capped at 3 entries with a maximum of 128 characters per entry.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"developerName": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"displayName": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"logo": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Local logo path, resolved from the installed plugin package."
|
|
},
|
|
"logoDark": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Local dark-mode logo path, resolved from the installed plugin package."
|
|
},
|
|
"logoUrl": {
|
|
"description": "Remote logo URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"logoUrlDark": {
|
|
"description": "Remote dark-mode logo URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"longDescription": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"privacyPolicyUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"screenshotUrls": {
|
|
"description": "Remote screenshot URLs from the plugin catalog.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"screenshots": {
|
|
"description": "Local screenshot paths, resolved from the installed plugin package.",
|
|
"items": {
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"shortDescription": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"termsOfServiceUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"websiteUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"capabilities",
|
|
"screenshotUrls",
|
|
"screenshots"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginQuickAction": {
|
|
"properties": {
|
|
"icons": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginIcon"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"target": {
|
|
"$ref": "#/definitions/PluginQuickActionTarget"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"icons",
|
|
"target",
|
|
"title"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginQuickActionTarget": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"arguments": true,
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"tool"
|
|
],
|
|
"title": "ToolPluginQuickActionTargetType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"type"
|
|
],
|
|
"title": "ToolPluginQuickActionTarget",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"PluginSearchProvider": {
|
|
"properties": {
|
|
"appId": {
|
|
"type": "string"
|
|
},
|
|
"call": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginSearchProviderCall"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"linkId": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"toolName": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"appId",
|
|
"linkId",
|
|
"title",
|
|
"toolName"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginSearchProviderCall": {
|
|
"properties": {
|
|
"_meta": true,
|
|
"arguments": true,
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"_meta",
|
|
"arguments",
|
|
"name"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginSettings": {
|
|
"properties": {
|
|
"appId": {
|
|
"type": "string"
|
|
},
|
|
"readToolName": {
|
|
"type": "string"
|
|
},
|
|
"updateToolName": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"appId",
|
|
"readToolName",
|
|
"updateToolName"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginShareContext": {
|
|
"properties": {
|
|
"canPublishToWorkspace": {
|
|
"default": null,
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"creatorAccountUserId": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"creatorName": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"discoverability": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginShareDiscoverability"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"remotePluginId": {
|
|
"type": "string"
|
|
},
|
|
"remoteVersion": {
|
|
"default": null,
|
|
"description": "Version of the remote shared plugin release when available.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"sharePrincipals": {
|
|
"items": {
|
|
"$ref": "#/definitions/PluginSharePrincipal"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"shareUrl": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"remotePluginId"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginShareDiscoverability": {
|
|
"enum": [
|
|
"LISTED",
|
|
"UNLISTED",
|
|
"PRIVATE"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginSharePrincipal": {
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"principalId": {
|
|
"type": "string"
|
|
},
|
|
"principalType": {
|
|
"$ref": "#/definitions/PluginSharePrincipalType"
|
|
},
|
|
"role": {
|
|
"$ref": "#/definitions/PluginSharePrincipalRole"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"principalId",
|
|
"principalType",
|
|
"role"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"PluginSharePrincipalRole": {
|
|
"enum": [
|
|
"reader",
|
|
"editor",
|
|
"owner"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginSharePrincipalType": {
|
|
"enum": [
|
|
"user",
|
|
"group",
|
|
"workspace"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"PluginSource": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"path": {
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"local"
|
|
],
|
|
"title": "LocalPluginSourceType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"path",
|
|
"type"
|
|
],
|
|
"title": "LocalPluginSource",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"path": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"refName": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"sha": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"git"
|
|
],
|
|
"title": "GitPluginSourceType",
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type",
|
|
"url"
|
|
],
|
|
"title": "GitPluginSource",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"package": {
|
|
"type": "string"
|
|
},
|
|
"registry": {
|
|
"description": "Optional HTTPS registry URL. Authentication stays in the user's npm config.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"npm"
|
|
],
|
|
"title": "NpmPluginSourceType",
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"description": "Optional npm version or version range.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"package",
|
|
"type"
|
|
],
|
|
"title": "NpmPluginSource",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"description": "The plugin is available in the remote catalog. Download metadata is kept server-side and is not exposed through the app-server API.",
|
|
"properties": {
|
|
"type": {
|
|
"enum": [
|
|
"remote"
|
|
],
|
|
"title": "RemotePluginSourceType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"title": "RemotePluginSource",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"PluginSummary": {
|
|
"properties": {
|
|
"authPolicy": {
|
|
"$ref": "#/definitions/PluginAuthPolicy"
|
|
},
|
|
"availability": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginAvailability"
|
|
}
|
|
],
|
|
"default": "AVAILABLE",
|
|
"description": "Availability state for installing and using the plugin."
|
|
},
|
|
"disabledReason": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginDisabledReason"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null,
|
|
"description": "Why the remote plugin is unavailable, when provided by plugin-service."
|
|
},
|
|
"eligiblePlanTypes": {
|
|
"default": null,
|
|
"description": "Raw plugin-service plan identifiers eligible to install the plugin.",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"extensions": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginExtensions"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"default": null
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"installPolicy": {
|
|
"$ref": "#/definitions/PluginInstallPolicy"
|
|
},
|
|
"installPolicySource": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginInstallPolicySource"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"installed": {
|
|
"type": "boolean"
|
|
},
|
|
"installedAt": {
|
|
"default": null,
|
|
"description": "Unix timestamp in seconds when the remote plugin was installed, when available.",
|
|
"format": "int64",
|
|
"type": [
|
|
"integer",
|
|
"null"
|
|
]
|
|
},
|
|
"interface": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginInterface"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"keywords": {
|
|
"default": [],
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"localVersion": {
|
|
"default": null,
|
|
"description": "Version of the locally materialized plugin package when available.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"mustShowInstallationInterstitial": {
|
|
"default": null,
|
|
"type": [
|
|
"boolean",
|
|
"null"
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"remotePluginId": {
|
|
"description": "Backend remote plugin identifier when available.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"shareContext": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/PluginShareContext"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"description": "Remote sharing context associated with this plugin when available."
|
|
},
|
|
"source": {
|
|
"$ref": "#/definitions/PluginSource"
|
|
},
|
|
"version": {
|
|
"default": null,
|
|
"description": "Version advertised by the remote marketplace backend when available.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"authPolicy",
|
|
"enabled",
|
|
"id",
|
|
"installPolicy",
|
|
"installed",
|
|
"name",
|
|
"source"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ScheduledTaskSchedule": {
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"days": {
|
|
"items": {
|
|
"$ref": "#/definitions/ScheduledTaskWeekday"
|
|
},
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
]
|
|
},
|
|
"intervalHours": {
|
|
"format": "uint32",
|
|
"minimum": 0.0,
|
|
"type": "integer"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"hourly"
|
|
],
|
|
"title": "HourlyScheduledTaskScheduleType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"intervalHours",
|
|
"type"
|
|
],
|
|
"title": "HourlyScheduledTaskSchedule",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"time": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"daily"
|
|
],
|
|
"title": "DailyScheduledTaskScheduleType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"time",
|
|
"type"
|
|
],
|
|
"title": "DailyScheduledTaskSchedule",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"time": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"weekdays"
|
|
],
|
|
"title": "WeekdaysScheduledTaskScheduleType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"time",
|
|
"type"
|
|
],
|
|
"title": "WeekdaysScheduledTaskSchedule",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"properties": {
|
|
"days": {
|
|
"items": {
|
|
"$ref": "#/definitions/ScheduledTaskWeekday"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"time": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"enum": [
|
|
"weekly"
|
|
],
|
|
"title": "WeeklyScheduledTaskScheduleType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"days",
|
|
"time",
|
|
"type"
|
|
],
|
|
"title": "WeeklyScheduledTaskSchedule",
|
|
"type": "object"
|
|
}
|
|
]
|
|
},
|
|
"ScheduledTaskSummary": {
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"prompt": {
|
|
"type": "string"
|
|
},
|
|
"schedule": {
|
|
"$ref": "#/definitions/ScheduledTaskSchedule"
|
|
}
|
|
},
|
|
"required": [
|
|
"key",
|
|
"name",
|
|
"prompt",
|
|
"schedule"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"ScheduledTaskWeekday": {
|
|
"enum": [
|
|
"MO",
|
|
"TU",
|
|
"WE",
|
|
"TH",
|
|
"FR",
|
|
"SA",
|
|
"SU"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"SkillInterface": {
|
|
"properties": {
|
|
"brandColor": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"defaultPrompt": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"displayName": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"iconLarge": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"iconLargeUrl": {
|
|
"description": "Remote large icon URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"iconSmall": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"iconSmallUrl": {
|
|
"description": "Remote small icon URL from the plugin catalog.",
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
},
|
|
"shortDescription": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"SkillSummary": {
|
|
"properties": {
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"interface": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/SkillInterface"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"path": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AbsolutePathBuf"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"shortDescription": {
|
|
"type": [
|
|
"string",
|
|
"null"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"description",
|
|
"enabled",
|
|
"name"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
"properties": {
|
|
"plugin": {
|
|
"$ref": "#/definitions/PluginDetail"
|
|
}
|
|
},
|
|
"required": [
|
|
"plugin"
|
|
],
|
|
"title": "PluginReadResponse",
|
|
"type": "object"
|
|
} |