@zclaudia/plugin-sdk 0.1.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/LICENSE +21 -0
- package/README.md +64 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/interactions.d.ts +16 -0
- package/dist/interactions.d.ts.map +1 -0
- package/dist/interactions.js +2 -0
- package/dist/interactions.js.map +1 -0
- package/dist/manifest.d.ts +165 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +96 -0
- package/dist/manifest.js.map +1 -0
- package/dist/providers.d.ts +164 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +14 -0
- package/dist/providers.js.map +1 -0
- package/dist/runtime.d.ts +279 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +5 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +65 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 ZClaudia
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# @zclaudia/plugin-sdk
|
|
2
|
+
|
|
3
|
+
Public contracts and lightweight development helpers for building ZClaudia plugins.
|
|
4
|
+
|
|
5
|
+
The SDK defines the host/plugin boundary: manifests, lifecycle APIs, permissions, and external
|
|
6
|
+
agent runtime adapters. It intentionally has no dependency on the ZClaudia application monorepo
|
|
7
|
+
or on a provider/model SDK.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add -D @zclaudia/plugin-sdk
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Use it as a development dependency when all imports are type-only. Keep it as a runtime dependency
|
|
16
|
+
if your compiled plugin calls helpers such as `definePlugin` or `validatePluginManifest`.
|
|
17
|
+
|
|
18
|
+
## Runtime plugin example
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
import { definePlugin } from '@zclaudia/plugin-sdk/runtime';
|
|
22
|
+
import type {
|
|
23
|
+
ExternalAgentAdapter,
|
|
24
|
+
ExternalAgentRunContext,
|
|
25
|
+
ProviderRuntimeEvent,
|
|
26
|
+
} from '@zclaudia/plugin-sdk/providers';
|
|
27
|
+
|
|
28
|
+
class ExampleAdapter implements ExternalAgentAdapter {
|
|
29
|
+
readonly type = 'example';
|
|
30
|
+
|
|
31
|
+
async *run(
|
|
32
|
+
input: string,
|
|
33
|
+
context: ExternalAgentRunContext
|
|
34
|
+
): AsyncGenerator<ProviderRuntimeEvent, void, void> {
|
|
35
|
+
yield { type: 'init', sessionId: context.sessionId };
|
|
36
|
+
yield { type: 'assistant_delta', content: input };
|
|
37
|
+
yield { type: 'provider_turn_finished', isComplete: true };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export default definePlugin({
|
|
42
|
+
activate(context) {
|
|
43
|
+
context.agentRuntimes?.register(new ExampleAdapter());
|
|
44
|
+
},
|
|
45
|
+
deactivate() {},
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The corresponding `plugin.json` must declare the same runtime type under
|
|
50
|
+
`contributes.agentRuntimes` and request `provider.register`.
|
|
51
|
+
|
|
52
|
+
## Package boundaries
|
|
53
|
+
|
|
54
|
+
- `@zclaudia/protocol` owns JSON-serializable transport contracts.
|
|
55
|
+
- `@zclaudia/plugin-sdk` owns plugin lifecycle and host capability contracts.
|
|
56
|
+
- Provider-specific packages own their CLI/SDK integrations.
|
|
57
|
+
|
|
58
|
+
The SDK may reuse protocol DTOs in the future, but the protocol package must never depend on the
|
|
59
|
+
plugin SDK.
|
|
60
|
+
|
|
61
|
+
## Compatibility
|
|
62
|
+
|
|
63
|
+
The package follows semantic versioning. Additive fields are minor changes. Removing or changing a
|
|
64
|
+
public field, callback, manifest contribution, or adapter method is a major change.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface PermissionRequest {
|
|
2
|
+
requestId: string;
|
|
3
|
+
toolName: string;
|
|
4
|
+
toolInput: unknown;
|
|
5
|
+
detail: string;
|
|
6
|
+
timeoutSeconds: number;
|
|
7
|
+
/** Behavior when the request expires. The host defaults to deny. */
|
|
8
|
+
timeoutBehavior?: 'approve' | 'deny';
|
|
9
|
+
}
|
|
10
|
+
export interface PermissionDecision {
|
|
11
|
+
behavior: 'allow' | 'deny';
|
|
12
|
+
updatedInput?: unknown;
|
|
13
|
+
message?: string;
|
|
14
|
+
}
|
|
15
|
+
export type PermissionCallback = (request: PermissionRequest) => Promise<PermissionDecision>;
|
|
16
|
+
//# sourceMappingURL=interactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.d.ts","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { AgentRuntimeContribution } from './providers.js';
|
|
2
|
+
import type { SkillExecutionSelection, SkillSelection, ThinkingLevel, ToolSelection } from './types.js';
|
|
3
|
+
export type Permission = 'session.read' | 'project.read' | 'storage' | 'fs.read' | 'network.fetch' | 'timer' | 'provider.call' | 'fs.write' | 'session.write' | 'notification' | 'clipboard.read' | 'clipboard.write' | 'shell.execute' | 'provider.register';
|
|
4
|
+
export interface CommandContribution {
|
|
5
|
+
command: string;
|
|
6
|
+
title: string;
|
|
7
|
+
category?: string;
|
|
8
|
+
icon?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ToolContribution {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
parameters: Record<string, unknown>;
|
|
15
|
+
scope?: Array<'agent-assistant' | 'main-session' | 'command-palette'>;
|
|
16
|
+
permissions?: Permission[];
|
|
17
|
+
}
|
|
18
|
+
export interface SettingsContribution {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
icon?: string;
|
|
22
|
+
schema?: Record<string, unknown>;
|
|
23
|
+
defaults?: Record<string, unknown>;
|
|
24
|
+
}
|
|
25
|
+
export interface PanelContribution {
|
|
26
|
+
id: string;
|
|
27
|
+
label: string;
|
|
28
|
+
location: 'bottom' | 'sidebar' | 'right';
|
|
29
|
+
icon?: string;
|
|
30
|
+
size?: number;
|
|
31
|
+
frontend?: string;
|
|
32
|
+
order?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface HookContribution {
|
|
35
|
+
event: string;
|
|
36
|
+
handler: string;
|
|
37
|
+
priority?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface MenuContribution {
|
|
40
|
+
id: string;
|
|
41
|
+
location: 'context-menu' | 'toolbar' | 'status-bar';
|
|
42
|
+
label: string;
|
|
43
|
+
command?: string;
|
|
44
|
+
icon?: string;
|
|
45
|
+
when?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface KeybindingContribution {
|
|
48
|
+
command: string;
|
|
49
|
+
key: string;
|
|
50
|
+
when?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface UIExtensionPoint {
|
|
53
|
+
id: string;
|
|
54
|
+
location: 'sidebar' | 'panel' | 'toolbar' | 'context-menu' | 'status-bar';
|
|
55
|
+
component?: string;
|
|
56
|
+
when?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface WorkflowStepContribution {
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
description: string;
|
|
62
|
+
category?: string;
|
|
63
|
+
icon?: string;
|
|
64
|
+
configSchema?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
export interface TriggerSourceContribution {
|
|
67
|
+
id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
description: string;
|
|
70
|
+
eventPattern: string;
|
|
71
|
+
category?: string;
|
|
72
|
+
icon?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface NotchTabContribution {
|
|
75
|
+
id: string;
|
|
76
|
+
label: string;
|
|
77
|
+
icon?: string;
|
|
78
|
+
order?: number;
|
|
79
|
+
}
|
|
80
|
+
export interface SkillContribution {
|
|
81
|
+
path: string;
|
|
82
|
+
}
|
|
83
|
+
export interface AgentProfileContribution {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
description?: string;
|
|
87
|
+
systemPrompt?: string;
|
|
88
|
+
model?: string;
|
|
89
|
+
toolSelection?: ToolSelection;
|
|
90
|
+
skillSelection?: SkillSelection;
|
|
91
|
+
skillExecution?: SkillExecutionSelection;
|
|
92
|
+
thinkingLevel?: ThinkingLevel;
|
|
93
|
+
llmProfileStrategy?: 'default' | 'first-available';
|
|
94
|
+
runtimeType?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface PluginContributes {
|
|
97
|
+
commands?: CommandContribution[];
|
|
98
|
+
tools?: ToolContribution[];
|
|
99
|
+
settings?: SettingsContribution;
|
|
100
|
+
panels?: PanelContribution[];
|
|
101
|
+
hooks?: HookContribution[];
|
|
102
|
+
uiExtensions?: UIExtensionPoint[];
|
|
103
|
+
menus?: MenuContribution[];
|
|
104
|
+
keybindings?: KeybindingContribution[];
|
|
105
|
+
workflowSteps?: WorkflowStepContribution[];
|
|
106
|
+
triggerSources?: TriggerSourceContribution[];
|
|
107
|
+
skills?: SkillContribution[];
|
|
108
|
+
agentProfiles?: AgentProfileContribution[];
|
|
109
|
+
notchTabs?: NotchTabContribution[];
|
|
110
|
+
agentRuntimes?: AgentRuntimeContribution[];
|
|
111
|
+
}
|
|
112
|
+
export interface McpRequirement {
|
|
113
|
+
server: string;
|
|
114
|
+
tools?: string[];
|
|
115
|
+
required?: boolean;
|
|
116
|
+
}
|
|
117
|
+
export interface PluginRequirements {
|
|
118
|
+
mcp?: McpRequirement[];
|
|
119
|
+
plugins?: Array<{
|
|
120
|
+
id: string;
|
|
121
|
+
required?: boolean;
|
|
122
|
+
}>;
|
|
123
|
+
providers?: {
|
|
124
|
+
required?: boolean;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export interface PluginAuthor {
|
|
128
|
+
name: string;
|
|
129
|
+
email?: string;
|
|
130
|
+
url?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface PluginEngines {
|
|
133
|
+
claudia: string;
|
|
134
|
+
}
|
|
135
|
+
export type ExecutionMode = 'main' | 'worker' | 'sandbox';
|
|
136
|
+
export type PluginPlatform = 'universal' | 'desktop';
|
|
137
|
+
export interface PluginManifest {
|
|
138
|
+
id: string;
|
|
139
|
+
name: string;
|
|
140
|
+
version: string;
|
|
141
|
+
description: string;
|
|
142
|
+
author?: PluginAuthor;
|
|
143
|
+
icon?: string;
|
|
144
|
+
main?: string;
|
|
145
|
+
frontend?: string;
|
|
146
|
+
permissions?: Permission[];
|
|
147
|
+
contributes?: PluginContributes;
|
|
148
|
+
platform?: PluginPlatform;
|
|
149
|
+
executionMode?: ExecutionMode;
|
|
150
|
+
activationEvents?: string[];
|
|
151
|
+
engines?: PluginEngines;
|
|
152
|
+
dependencies?: Record<string, string>;
|
|
153
|
+
requires?: PluginRequirements;
|
|
154
|
+
}
|
|
155
|
+
export interface PluginValidationResult {
|
|
156
|
+
valid: boolean;
|
|
157
|
+
errors: string[];
|
|
158
|
+
warnings: string[];
|
|
159
|
+
}
|
|
160
|
+
/** Validate the portable parts of a plugin manifest before host installation. */
|
|
161
|
+
export declare function validatePluginManifest(manifest: unknown): PluginValidationResult;
|
|
162
|
+
export declare function resolvePluginPlatform(manifest: PluginManifest): PluginPlatform;
|
|
163
|
+
/** Identity helper that preserves literal types while checking the manifest contract. */
|
|
164
|
+
export declare function definePluginManifest<const T extends PluginManifest>(manifest: T): T;
|
|
165
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
function isRecord(value) {
|
|
2
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
function requireString(value, field, label, errors) {
|
|
5
|
+
if (typeof value[field] !== 'string' || value[field].length === 0) {
|
|
6
|
+
errors.push(`${label} missing "${field}" field`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/** Validate the portable parts of a plugin manifest before host installation. */
|
|
10
|
+
export function validatePluginManifest(manifest) {
|
|
11
|
+
const errors = [];
|
|
12
|
+
const warnings = [];
|
|
13
|
+
if (!isRecord(manifest)) {
|
|
14
|
+
return { valid: false, errors: ['Manifest must be an object'], warnings };
|
|
15
|
+
}
|
|
16
|
+
if (typeof manifest.id !== 'string' || !manifest.id) {
|
|
17
|
+
errors.push('Missing required field: id');
|
|
18
|
+
}
|
|
19
|
+
else if (!/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*$/.test(manifest.id)) {
|
|
20
|
+
errors.push('Invalid id format (use reverse domain notation, e.g., com.example.plugin)');
|
|
21
|
+
}
|
|
22
|
+
if (typeof manifest.name !== 'string' || !manifest.name) {
|
|
23
|
+
errors.push('Missing required field: name');
|
|
24
|
+
}
|
|
25
|
+
if (typeof manifest.version !== 'string' || !manifest.version) {
|
|
26
|
+
errors.push('Missing required field: version');
|
|
27
|
+
}
|
|
28
|
+
else if (!/^\d+\.\d+\.\d+(-[\w.]+)?$/.test(manifest.version)) {
|
|
29
|
+
warnings.push('Version should follow semver format (e.g., 1.0.0)');
|
|
30
|
+
}
|
|
31
|
+
if (typeof manifest.description !== 'string' || !manifest.description) {
|
|
32
|
+
errors.push('Missing required field: description');
|
|
33
|
+
}
|
|
34
|
+
if (manifest.platform !== undefined &&
|
|
35
|
+
!['universal', 'desktop'].includes(String(manifest.platform))) {
|
|
36
|
+
errors.push('Invalid platform (expected "universal" or "desktop")');
|
|
37
|
+
}
|
|
38
|
+
if (manifest.executionMode !== undefined &&
|
|
39
|
+
!['main', 'worker', 'sandbox'].includes(String(manifest.executionMode))) {
|
|
40
|
+
errors.push('Invalid executionMode (expected "main", "worker", or "sandbox")');
|
|
41
|
+
}
|
|
42
|
+
if (manifest.engines !== undefined) {
|
|
43
|
+
if (!isRecord(manifest.engines) || typeof manifest.engines.claudia !== 'string') {
|
|
44
|
+
warnings.push('engines.claudia should specify a semver range');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (manifest.contributes !== undefined && !isRecord(manifest.contributes)) {
|
|
48
|
+
errors.push('contributes must be an object');
|
|
49
|
+
}
|
|
50
|
+
else if (isRecord(manifest.contributes)) {
|
|
51
|
+
const contributionChecks = [
|
|
52
|
+
['commands', 'Command contribution', ['command', 'title']],
|
|
53
|
+
['tools', 'Tool contribution', ['id', 'name', 'description']],
|
|
54
|
+
['notchTabs', 'NotchTab contribution', ['id', 'label']],
|
|
55
|
+
['workflowSteps', 'WorkflowStep contribution', ['id', 'name', 'description']],
|
|
56
|
+
['agentProfiles', 'AgentProfile contribution', ['id', 'name']],
|
|
57
|
+
['agentRuntimes', 'AgentRuntime contribution', ['type', 'label']],
|
|
58
|
+
];
|
|
59
|
+
for (const [key, label, fields] of contributionChecks) {
|
|
60
|
+
const entries = manifest.contributes[key];
|
|
61
|
+
if (entries === undefined)
|
|
62
|
+
continue;
|
|
63
|
+
if (!Array.isArray(entries)) {
|
|
64
|
+
errors.push(`contributes.${key} must be an array`);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
for (const entry of entries) {
|
|
68
|
+
if (!isRecord(entry)) {
|
|
69
|
+
errors.push(`${label} must be an object`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
for (const field of fields)
|
|
73
|
+
requireString(entry, field, label, errors);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
78
|
+
}
|
|
79
|
+
export function resolvePluginPlatform(manifest) {
|
|
80
|
+
if (manifest.platform)
|
|
81
|
+
return manifest.platform;
|
|
82
|
+
if (manifest.frontend)
|
|
83
|
+
return 'desktop';
|
|
84
|
+
const c = manifest.contributes;
|
|
85
|
+
const hasUI = !!c?.panels?.length ||
|
|
86
|
+
!!c?.uiExtensions?.length ||
|
|
87
|
+
!!c?.menus?.length ||
|
|
88
|
+
!!c?.keybindings?.length ||
|
|
89
|
+
!!c?.notchTabs?.length;
|
|
90
|
+
return hasUI ? 'desktop' : 'universal';
|
|
91
|
+
}
|
|
92
|
+
/** Identity helper that preserves literal types while checking the manifest contract. */
|
|
93
|
+
export function definePluginManifest(manifest) {
|
|
94
|
+
return manifest;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import type { PermissionCallback } from './interactions.js';
|
|
2
|
+
import type { ContextWindowSource, ProviderUsage, RuntimeCapabilityMode, ThinkingLevel, ThinkingLevelMode, ModelConfigKind, ToolEffect, ToolSemantic } from './types.js';
|
|
3
|
+
export type { PermissionCallback, PermissionDecision, PermissionRequest } from './interactions.js';
|
|
4
|
+
export type PCPCapabilityId = 'chat.generate' | 'chat.stream' | 'tool.call' | 'tool.inject' | 'interaction.form' | 'interaction.approval' | 'interaction.todo' | 'input.image' | 'input.text_file' | 'input.binary_file' | 'permission.mode' | 'session.abort' | 'session.steer' | 'session.background_task';
|
|
5
|
+
export type CapabilityMode = 'native' | 'bridged' | 'emulated';
|
|
6
|
+
export type ReliabilityTier = 'strict' | 'best_effort' | 'display_only';
|
|
7
|
+
export type DegradationPolicy = 'reject' | 'fallback_to_text' | 'fallback_to_notice' | 'server_emulation';
|
|
8
|
+
export type PCPPermissionMode = 'supervised' | 'auto_edit' | 'autonomous' | 'plan_only';
|
|
9
|
+
export type ProviderRuntimeKind = 'cli' | 'sdk' | 'http' | 'bridge';
|
|
10
|
+
export interface PCPCapabilityDescriptor {
|
|
11
|
+
id: PCPCapabilityId;
|
|
12
|
+
supported: boolean;
|
|
13
|
+
mode?: CapabilityMode;
|
|
14
|
+
reliability?: ReliabilityTier;
|
|
15
|
+
degradation?: DegradationPolicy;
|
|
16
|
+
limits?: Record<string, string | number | boolean>;
|
|
17
|
+
notes?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PCPProviderManifest {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
version: string;
|
|
23
|
+
apiVersion: 'pcp/v1';
|
|
24
|
+
providerType: string;
|
|
25
|
+
runtime: ProviderRuntimeKind;
|
|
26
|
+
capabilities: PCPCapabilityDescriptor[];
|
|
27
|
+
permissionModeMap?: Partial<Record<PCPPermissionMode, string>>;
|
|
28
|
+
}
|
|
29
|
+
export interface ProviderAuthErrorHint {
|
|
30
|
+
matchAny: Array<string | string[]>;
|
|
31
|
+
message: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ProviderPolicy {
|
|
34
|
+
nativeInteractionTools?: string[];
|
|
35
|
+
emptyResultFallback?: string;
|
|
36
|
+
sessionCwdPolicy?: 'pinned' | 'requested';
|
|
37
|
+
modeSwitchSessionPolicy?: 'reset' | 'preserve';
|
|
38
|
+
authErrorHint?: ProviderAuthErrorHint;
|
|
39
|
+
escalateAlwaysTools?: string[];
|
|
40
|
+
}
|
|
41
|
+
/** Static, JSON-serializable runtime metadata declared in plugin.json. */
|
|
42
|
+
export interface AgentRuntimeDescriptor {
|
|
43
|
+
type: string;
|
|
44
|
+
label: string;
|
|
45
|
+
model: {
|
|
46
|
+
kind: ModelConfigKind;
|
|
47
|
+
multimodalFallback: boolean;
|
|
48
|
+
thinkingLevel: ThinkingLevelMode;
|
|
49
|
+
};
|
|
50
|
+
hasCliPath: boolean;
|
|
51
|
+
capabilities: {
|
|
52
|
+
tools: RuntimeCapabilityMode;
|
|
53
|
+
providers: RuntimeCapabilityMode;
|
|
54
|
+
skills: RuntimeCapabilityMode;
|
|
55
|
+
};
|
|
56
|
+
authNote?: string;
|
|
57
|
+
manifest: PCPProviderManifest;
|
|
58
|
+
policy?: ProviderPolicy;
|
|
59
|
+
}
|
|
60
|
+
export type AgentRuntimeContribution = AgentRuntimeDescriptor;
|
|
61
|
+
export interface ModeTransition {
|
|
62
|
+
mode: string;
|
|
63
|
+
reason: 'enter' | 'exit';
|
|
64
|
+
plan?: string;
|
|
65
|
+
sourceToolUseId?: string;
|
|
66
|
+
}
|
|
67
|
+
export type ToolInteractionKind = 'todo_update';
|
|
68
|
+
export interface SystemInfo {
|
|
69
|
+
model?: string;
|
|
70
|
+
contextWindow?: number;
|
|
71
|
+
contextWindowSource?: ContextWindowSource;
|
|
72
|
+
contextWindowMatchedProvider?: string;
|
|
73
|
+
claudeCodeVersion?: string;
|
|
74
|
+
cwd?: string;
|
|
75
|
+
tools?: string[];
|
|
76
|
+
mcpServers?: {
|
|
77
|
+
name: string;
|
|
78
|
+
status: string;
|
|
79
|
+
}[];
|
|
80
|
+
permissionMode?: string;
|
|
81
|
+
apiKeySource?: string;
|
|
82
|
+
slashCommands?: string[];
|
|
83
|
+
agents?: string[];
|
|
84
|
+
}
|
|
85
|
+
export declare const PROVIDER_RUNTIME_EVENT_TYPES: readonly ["init", "assistant_delta", "tool_started", "tool_finished", "provider_turn_finished", "provider_error", "task_notification", "tool_activity", "mode_transition", "thinking_delta", "retry_scheduled"];
|
|
86
|
+
export type ProviderRuntimeEventType = (typeof PROVIDER_RUNTIME_EVENT_TYPES)[number];
|
|
87
|
+
export type LegacyProviderRuntimeEventType = 'assistant' | 'result' | 'tool_use' | 'tool_result' | 'error';
|
|
88
|
+
export interface ProviderRuntimeEvent {
|
|
89
|
+
type: ProviderRuntimeEventType | LegacyProviderRuntimeEventType;
|
|
90
|
+
retryInfo?: {
|
|
91
|
+
attempt: number;
|
|
92
|
+
maxAttempts: number;
|
|
93
|
+
delayMs: number;
|
|
94
|
+
status?: number;
|
|
95
|
+
};
|
|
96
|
+
sessionId?: string;
|
|
97
|
+
content?: string;
|
|
98
|
+
systemInfo?: SystemInfo;
|
|
99
|
+
toolUseId?: string;
|
|
100
|
+
toolName?: string;
|
|
101
|
+
toolInput?: unknown;
|
|
102
|
+
toolEffect?: ToolEffect;
|
|
103
|
+
toolInteractionKind?: ToolInteractionKind;
|
|
104
|
+
toolSemantic?: ToolSemantic;
|
|
105
|
+
toolResult?: unknown;
|
|
106
|
+
isToolError?: boolean;
|
|
107
|
+
error?: string;
|
|
108
|
+
errorCode?: string;
|
|
109
|
+
usage?: ProviderUsage;
|
|
110
|
+
isComplete?: boolean;
|
|
111
|
+
taskId?: string;
|
|
112
|
+
taskStatus?: string;
|
|
113
|
+
taskMessage?: string;
|
|
114
|
+
taskToolUseId?: string;
|
|
115
|
+
modeTransition?: ModeTransition;
|
|
116
|
+
thinkingContent?: string;
|
|
117
|
+
thinkingSignature?: string;
|
|
118
|
+
thinkingRedacted?: boolean;
|
|
119
|
+
}
|
|
120
|
+
export interface ProviderAssistantDeltaEvent extends ProviderRuntimeEvent {
|
|
121
|
+
type: 'assistant_delta' | 'assistant';
|
|
122
|
+
content: string;
|
|
123
|
+
}
|
|
124
|
+
export interface ProviderToolStartedEvent extends ProviderRuntimeEvent {
|
|
125
|
+
type: 'tool_started' | 'tool_use';
|
|
126
|
+
}
|
|
127
|
+
export interface ProviderTurnFinishedEvent extends ProviderRuntimeEvent {
|
|
128
|
+
type: 'provider_turn_finished' | 'result';
|
|
129
|
+
}
|
|
130
|
+
export interface ProviderToolBridgeEntry {
|
|
131
|
+
name: string;
|
|
132
|
+
/** Config shape is owned by the external agent SDK. */
|
|
133
|
+
config: unknown;
|
|
134
|
+
}
|
|
135
|
+
export interface ProviderToolBridgeRequest {
|
|
136
|
+
serverPort?: number;
|
|
137
|
+
sessionId?: string;
|
|
138
|
+
}
|
|
139
|
+
export interface ExternalAgentRunContext {
|
|
140
|
+
cwd: string;
|
|
141
|
+
sessionId?: string;
|
|
142
|
+
env?: Record<string, string>;
|
|
143
|
+
mode?: string;
|
|
144
|
+
systemPrompt?: string;
|
|
145
|
+
sessionTitle?: string;
|
|
146
|
+
serverPort?: number;
|
|
147
|
+
claudiaSessionId?: string;
|
|
148
|
+
thinkingLevel?: ThinkingLevel;
|
|
149
|
+
model?: string;
|
|
150
|
+
cliPath?: string;
|
|
151
|
+
abortController?: AbortController;
|
|
152
|
+
}
|
|
153
|
+
export interface ExternalAgentRunState {
|
|
154
|
+
providerSessionId?: string;
|
|
155
|
+
providerCwd: string;
|
|
156
|
+
}
|
|
157
|
+
export interface ExternalAgentAdapter {
|
|
158
|
+
readonly type: string;
|
|
159
|
+
run(input: string, context: ExternalAgentRunContext, onPermission: PermissionCallback): AsyncGenerator<ProviderRuntimeEvent, void, void>;
|
|
160
|
+
abort?(sessionId: string, cwd: string): Promise<void>;
|
|
161
|
+
getRunState?(context: ExternalAgentRunContext): ExternalAgentRunState;
|
|
162
|
+
setSessionMode?(sessionId: string, mode: string): void;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const PROVIDER_RUNTIME_EVENT_TYPES = [
|
|
2
|
+
'init',
|
|
3
|
+
'assistant_delta',
|
|
4
|
+
'tool_started',
|
|
5
|
+
'tool_finished',
|
|
6
|
+
'provider_turn_finished',
|
|
7
|
+
'provider_error',
|
|
8
|
+
'task_notification',
|
|
9
|
+
'tool_activity',
|
|
10
|
+
'mode_transition',
|
|
11
|
+
'thinking_delta',
|
|
12
|
+
'retry_scheduled',
|
|
13
|
+
];
|
|
14
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AA2HA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,MAAM;IACN,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,wBAAwB;IACxB,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;CACT,CAAC"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import type { PermissionCallback } from './interactions.js';
|
|
2
|
+
import type { Permission, PluginManifest } from './manifest.js';
|
|
3
|
+
import type { ExternalAgentAdapter, ProviderToolBridgeEntry, ProviderToolBridgeRequest } from './providers.js';
|
|
4
|
+
export type EventHandler = (data: unknown) => void | Promise<void>;
|
|
5
|
+
export interface EventAPI {
|
|
6
|
+
on(event: string, handler: EventHandler): () => void;
|
|
7
|
+
once(event: string, handler: EventHandler): void;
|
|
8
|
+
off(event: string, handler: EventHandler): void;
|
|
9
|
+
emit(event: string, data: unknown): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export interface StorageAPI {
|
|
12
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
13
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
14
|
+
delete(key: string): Promise<void>;
|
|
15
|
+
keys(): Promise<string[]>;
|
|
16
|
+
clear(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export interface LogAPI {
|
|
19
|
+
info(...args: unknown[]): void;
|
|
20
|
+
warn(...args: unknown[]): void;
|
|
21
|
+
error(...args: unknown[]): void;
|
|
22
|
+
debug(...args: unknown[]): void;
|
|
23
|
+
}
|
|
24
|
+
export interface FileSystemAPI {
|
|
25
|
+
readFile(path: string): Promise<string>;
|
|
26
|
+
writeFile(path: string, content: string): Promise<void>;
|
|
27
|
+
exists(path: string): Promise<boolean>;
|
|
28
|
+
readdir(path: string): Promise<string[]>;
|
|
29
|
+
mkdir(path: string): Promise<void>;
|
|
30
|
+
unlink(path: string): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export interface NetworkAPI {
|
|
33
|
+
fetch(url: string, options?: Record<string, unknown>): Promise<{
|
|
34
|
+
ok: boolean;
|
|
35
|
+
status: number;
|
|
36
|
+
body: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
export interface NotificationAPI {
|
|
40
|
+
show(title: string, body: string, options?: {
|
|
41
|
+
notchTab?: string;
|
|
42
|
+
}): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export interface ClipboardAPI {
|
|
45
|
+
read(): Promise<string>;
|
|
46
|
+
write(text: string): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export interface ShellAPI {
|
|
49
|
+
execute(command: string, args?: string[], options?: {
|
|
50
|
+
cwd?: string;
|
|
51
|
+
}): Promise<{
|
|
52
|
+
stdout: string;
|
|
53
|
+
stderr: string;
|
|
54
|
+
code: number;
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
export interface SessionAPI {
|
|
58
|
+
getActive(): Promise<{
|
|
59
|
+
id: string;
|
|
60
|
+
projectId: string;
|
|
61
|
+
} | null>;
|
|
62
|
+
getById(id: string): Promise<unknown>;
|
|
63
|
+
list(): Promise<unknown[]>;
|
|
64
|
+
}
|
|
65
|
+
export interface ProjectAPI {
|
|
66
|
+
getActive(): Promise<{
|
|
67
|
+
id: string;
|
|
68
|
+
name: string;
|
|
69
|
+
path: string;
|
|
70
|
+
} | null>;
|
|
71
|
+
getById(id: string): Promise<unknown>;
|
|
72
|
+
list(): Promise<unknown[]>;
|
|
73
|
+
}
|
|
74
|
+
export interface UIComponents {
|
|
75
|
+
Button: unknown;
|
|
76
|
+
Input: unknown;
|
|
77
|
+
Card: unknown;
|
|
78
|
+
Badge: unknown;
|
|
79
|
+
}
|
|
80
|
+
export interface UIAPI {
|
|
81
|
+
components: UIComponents;
|
|
82
|
+
showPanel(panelId: string): void;
|
|
83
|
+
showNotification(message: string): void;
|
|
84
|
+
}
|
|
85
|
+
export interface ChatMessage {
|
|
86
|
+
role: 'user' | 'assistant' | 'system';
|
|
87
|
+
content: string;
|
|
88
|
+
}
|
|
89
|
+
export interface ProviderInfo {
|
|
90
|
+
id: string;
|
|
91
|
+
name: string;
|
|
92
|
+
type: string;
|
|
93
|
+
models: string[];
|
|
94
|
+
isDefault?: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface ProviderCallOptions {
|
|
97
|
+
providerId: string;
|
|
98
|
+
modelOverride?: string;
|
|
99
|
+
messages: ChatMessage[];
|
|
100
|
+
systemPrompt?: string;
|
|
101
|
+
maxTokens?: number;
|
|
102
|
+
temperature?: number;
|
|
103
|
+
stream?: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface ProviderCallResult {
|
|
106
|
+
content: string;
|
|
107
|
+
model: string;
|
|
108
|
+
providerId: string;
|
|
109
|
+
usage?: {
|
|
110
|
+
inputTokens: number;
|
|
111
|
+
outputTokens: number;
|
|
112
|
+
};
|
|
113
|
+
metadata?: Record<string, unknown>;
|
|
114
|
+
isComplete?: boolean;
|
|
115
|
+
suggestedNextSteps?: string[];
|
|
116
|
+
}
|
|
117
|
+
export interface ProviderStreamChunk {
|
|
118
|
+
type: 'content' | 'usage' | 'done' | 'error';
|
|
119
|
+
content?: string;
|
|
120
|
+
delta?: string;
|
|
121
|
+
usage?: {
|
|
122
|
+
inputTokens: number;
|
|
123
|
+
outputTokens: number;
|
|
124
|
+
};
|
|
125
|
+
error?: string;
|
|
126
|
+
}
|
|
127
|
+
export interface ProviderAPI {
|
|
128
|
+
list(): Promise<ProviderInfo[]>;
|
|
129
|
+
get(providerId: string): Promise<ProviderInfo | undefined>;
|
|
130
|
+
call(options: ProviderCallOptions): Promise<ProviderCallResult>;
|
|
131
|
+
callStream(options: ProviderCallOptions): AsyncGenerator<ProviderStreamChunk>;
|
|
132
|
+
}
|
|
133
|
+
export interface McpServerInfo {
|
|
134
|
+
name: string;
|
|
135
|
+
enabled: boolean;
|
|
136
|
+
description?: string;
|
|
137
|
+
}
|
|
138
|
+
export interface McpToolInfo {
|
|
139
|
+
name: string;
|
|
140
|
+
description?: string;
|
|
141
|
+
inputSchema?: Record<string, unknown>;
|
|
142
|
+
}
|
|
143
|
+
export interface McpAPI {
|
|
144
|
+
listServers(): Promise<McpServerInfo[]>;
|
|
145
|
+
listTools(serverName: string): Promise<McpToolInfo[]>;
|
|
146
|
+
callTool<T = unknown>(serverName: string, tool: string, args: Record<string, unknown>): Promise<T>;
|
|
147
|
+
}
|
|
148
|
+
export interface PluginSchedulerTask {
|
|
149
|
+
id: string;
|
|
150
|
+
name: string;
|
|
151
|
+
intervalMs: number;
|
|
152
|
+
immediate?: boolean;
|
|
153
|
+
}
|
|
154
|
+
export interface PluginSchedulerAPI {
|
|
155
|
+
register(task: PluginSchedulerTask, handler: () => Promise<void> | void): () => void;
|
|
156
|
+
unregister(taskId: string): void;
|
|
157
|
+
trigger(taskId: string): Promise<void>;
|
|
158
|
+
}
|
|
159
|
+
export interface PermissionAPI {
|
|
160
|
+
hasPermission(permission: Permission): boolean;
|
|
161
|
+
hasAllPermissions(permissions: Permission[]): boolean;
|
|
162
|
+
requestPermission(permission: Permission): Promise<boolean>;
|
|
163
|
+
requestPermissions(permissions: Permission[]): Promise<boolean>;
|
|
164
|
+
getGrantedPermissions(): Permission[];
|
|
165
|
+
}
|
|
166
|
+
export type WorkflowStepHandler = (config: Record<string, unknown>, context: {
|
|
167
|
+
projectId?: string;
|
|
168
|
+
projectRootPath?: string;
|
|
169
|
+
providerId?: string;
|
|
170
|
+
stepRunId: string;
|
|
171
|
+
runId: string;
|
|
172
|
+
}) => Promise<{
|
|
173
|
+
status: 'completed' | 'failed';
|
|
174
|
+
output: Record<string, unknown>;
|
|
175
|
+
error?: string;
|
|
176
|
+
}>;
|
|
177
|
+
export interface WorkflowStepsAPI {
|
|
178
|
+
registerWorkflowStep(stepId: string, handler: WorkflowStepHandler): void;
|
|
179
|
+
unregisterWorkflowStep(stepId: string): void;
|
|
180
|
+
}
|
|
181
|
+
export interface AgentRuntimesAPI {
|
|
182
|
+
register(adapter: ExternalAgentAdapter): void;
|
|
183
|
+
unregister(type: string): void;
|
|
184
|
+
createToolBridge(request: ProviderToolBridgeRequest): Promise<ProviderToolBridgeEntry | null>;
|
|
185
|
+
}
|
|
186
|
+
export interface CapabilityNegotiationResult {
|
|
187
|
+
satisfied: boolean;
|
|
188
|
+
mcp: Record<string, {
|
|
189
|
+
server: string;
|
|
190
|
+
available: boolean;
|
|
191
|
+
availableTools?: string[];
|
|
192
|
+
missingTools?: string[];
|
|
193
|
+
error?: string;
|
|
194
|
+
}>;
|
|
195
|
+
plugins: Record<string, {
|
|
196
|
+
available: boolean;
|
|
197
|
+
}>;
|
|
198
|
+
providers: {
|
|
199
|
+
available: boolean;
|
|
200
|
+
};
|
|
201
|
+
unsatisfiedReasons: string[];
|
|
202
|
+
}
|
|
203
|
+
export type CommandHandler = (args: string[], context?: Record<string, unknown>) => Promise<unknown> | unknown;
|
|
204
|
+
export type ToolHandler = (args: Record<string, unknown>, context?: Record<string, unknown>) => Promise<string> | string;
|
|
205
|
+
export interface ToolRegistration {
|
|
206
|
+
id: string;
|
|
207
|
+
name: string;
|
|
208
|
+
description: string;
|
|
209
|
+
parameters: Record<string, unknown>;
|
|
210
|
+
handler: ToolHandler;
|
|
211
|
+
scope?: Array<'agent-assistant' | 'main-session' | 'command-palette'>;
|
|
212
|
+
permissions?: Permission[];
|
|
213
|
+
}
|
|
214
|
+
export interface UIExtensionRegistration {
|
|
215
|
+
id: string;
|
|
216
|
+
location: 'sidebar' | 'panel' | 'toolbar' | 'context-menu' | 'status-bar';
|
|
217
|
+
component: unknown;
|
|
218
|
+
when?: (context: unknown) => boolean;
|
|
219
|
+
}
|
|
220
|
+
export interface PluginContext {
|
|
221
|
+
pluginId: string;
|
|
222
|
+
/** Installed manifest version. */
|
|
223
|
+
version: string;
|
|
224
|
+
/** Absolute path of the installed plugin. */
|
|
225
|
+
extensionPath: string;
|
|
226
|
+
events: EventAPI;
|
|
227
|
+
commands: {
|
|
228
|
+
registerCommand(command: string, handler: CommandHandler): void;
|
|
229
|
+
unregisterCommand(command: string): void;
|
|
230
|
+
};
|
|
231
|
+
tools: {
|
|
232
|
+
registerTool(meta: ToolRegistration): void;
|
|
233
|
+
unregisterTool(toolId: string): void;
|
|
234
|
+
};
|
|
235
|
+
registerUIExtension(extension: UIExtensionRegistration): void;
|
|
236
|
+
workflowSteps: WorkflowStepsAPI;
|
|
237
|
+
permissions: PermissionAPI;
|
|
238
|
+
storage: StorageAPI;
|
|
239
|
+
fs?: FileSystemAPI;
|
|
240
|
+
network?: NetworkAPI;
|
|
241
|
+
notification?: NotificationAPI;
|
|
242
|
+
clipboard?: ClipboardAPI;
|
|
243
|
+
shell?: ShellAPI;
|
|
244
|
+
scheduler?: PluginSchedulerAPI;
|
|
245
|
+
session?: SessionAPI;
|
|
246
|
+
project?: ProjectAPI;
|
|
247
|
+
ui?: UIAPI;
|
|
248
|
+
providers?: ProviderAPI;
|
|
249
|
+
agentRuntimes?: AgentRuntimesAPI;
|
|
250
|
+
mcp?: McpAPI;
|
|
251
|
+
capabilities?: CapabilityNegotiationResult;
|
|
252
|
+
exports<T>(api: T): void;
|
|
253
|
+
getPluginAPI<T>(pluginId: string): T | undefined;
|
|
254
|
+
log: LogAPI;
|
|
255
|
+
env: {
|
|
256
|
+
isDesktop: boolean;
|
|
257
|
+
isServer: boolean;
|
|
258
|
+
appVersion: string;
|
|
259
|
+
platform: 'darwin' | 'win32' | 'linux';
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
export interface PluginInstance {
|
|
263
|
+
manifest: PluginManifest;
|
|
264
|
+
path: string;
|
|
265
|
+
isActive: boolean;
|
|
266
|
+
module?: unknown;
|
|
267
|
+
error?: string;
|
|
268
|
+
pendingPermissions?: string[];
|
|
269
|
+
capabilities?: CapabilityNegotiationResult;
|
|
270
|
+
}
|
|
271
|
+
export interface PluginModule {
|
|
272
|
+
activate(context: PluginContext): Promise<void> | void;
|
|
273
|
+
deactivate?(): Promise<void> | void;
|
|
274
|
+
}
|
|
275
|
+
/** Identity helper that preserves a plugin module's concrete type. */
|
|
276
|
+
export declare function definePlugin<const T extends PluginModule>(plugin: T): T;
|
|
277
|
+
/** Convenience type for adapters that accept permission callbacks directly. */
|
|
278
|
+
export type RuntimePermissionCallback = PermissionCallback;
|
|
279
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAqTA,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAA+B,MAAS;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/** Thinking effort understood by ZClaudia agent profiles. */
|
|
2
|
+
export type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
3
|
+
/** Normalized side effect produced by a provider tool call. */
|
|
4
|
+
export interface FileChangeEffectFile {
|
|
5
|
+
path: string;
|
|
6
|
+
changeKind?: 'add' | 'modify' | 'delete' | 'rename' | 'unknown';
|
|
7
|
+
summary?: string;
|
|
8
|
+
}
|
|
9
|
+
export type ToolEffect = {
|
|
10
|
+
kind: 'file_change';
|
|
11
|
+
files: FileChangeEffectFile[];
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'shell';
|
|
14
|
+
command: string;
|
|
15
|
+
};
|
|
16
|
+
/** Provider-declared meaning of a tool call, independent of provider-specific names. */
|
|
17
|
+
export type ToolSemantic = 'plan_proposal' | 'plan_enter' | 'plan_exit';
|
|
18
|
+
export type ContextWindowSource = 'profile_entry' | 'pi_ai_registry' | 'openai_compat_default' | 'fallback';
|
|
19
|
+
export interface ProviderUsageCost {
|
|
20
|
+
input: number;
|
|
21
|
+
output: number;
|
|
22
|
+
cacheRead: number;
|
|
23
|
+
cacheWrite: number;
|
|
24
|
+
total: number;
|
|
25
|
+
}
|
|
26
|
+
/** Provider-neutral token usage. This deliberately does not depend on a model SDK. */
|
|
27
|
+
export interface ProviderUsage {
|
|
28
|
+
input: number;
|
|
29
|
+
output: number;
|
|
30
|
+
cacheRead: number;
|
|
31
|
+
cacheWrite: number;
|
|
32
|
+
totalTokens: number;
|
|
33
|
+
cost: ProviderUsageCost;
|
|
34
|
+
}
|
|
35
|
+
export type ModelConfigKind = 'llm-profile' | 'native' | 'none';
|
|
36
|
+
export type RuntimeCapabilityMode = 'profile' | 'external' | 'native-readonly' | 'unsupported';
|
|
37
|
+
export type ThinkingLevelMode = 'off' | 'auto' | 'selectable';
|
|
38
|
+
export type BuiltinToolSetId = 'read-only' | 'coding' | 'web' | 'full';
|
|
39
|
+
export type ToolSetRef = {
|
|
40
|
+
source: 'builtin';
|
|
41
|
+
id: BuiltinToolSetId;
|
|
42
|
+
} | {
|
|
43
|
+
source: 'plugin';
|
|
44
|
+
pluginId: string;
|
|
45
|
+
id: string;
|
|
46
|
+
};
|
|
47
|
+
export type ToolRef = {
|
|
48
|
+
source: 'builtin';
|
|
49
|
+
id: string;
|
|
50
|
+
} | {
|
|
51
|
+
source: 'plugin';
|
|
52
|
+
pluginId: string;
|
|
53
|
+
id: string;
|
|
54
|
+
} | {
|
|
55
|
+
source: 'mcp';
|
|
56
|
+
serverId: string;
|
|
57
|
+
id: string;
|
|
58
|
+
} | {
|
|
59
|
+
source: 'mcp-resource';
|
|
60
|
+
serverId: string;
|
|
61
|
+
id: string;
|
|
62
|
+
} | {
|
|
63
|
+
source: 'mcp-prompt';
|
|
64
|
+
serverId: string;
|
|
65
|
+
id: string;
|
|
66
|
+
} | {
|
|
67
|
+
source: 'interaction';
|
|
68
|
+
id: string;
|
|
69
|
+
};
|
|
70
|
+
export type ExternalToolProviderRef = {
|
|
71
|
+
source: 'mcp';
|
|
72
|
+
serverId: string;
|
|
73
|
+
} | {
|
|
74
|
+
source: 'plugin';
|
|
75
|
+
pluginId: string;
|
|
76
|
+
providerId?: string;
|
|
77
|
+
};
|
|
78
|
+
export interface ToolSelection {
|
|
79
|
+
sets: ToolSetRef[];
|
|
80
|
+
providers?: ExternalToolProviderRef[];
|
|
81
|
+
include: ToolRef[];
|
|
82
|
+
exclude: ToolRef[];
|
|
83
|
+
}
|
|
84
|
+
export type SkillSource = 'workspace' | 'external' | 'plugin';
|
|
85
|
+
export interface SkillRef {
|
|
86
|
+
source: SkillSource;
|
|
87
|
+
id: string;
|
|
88
|
+
}
|
|
89
|
+
export type SkillSourceRef = {
|
|
90
|
+
source: 'workspace';
|
|
91
|
+
} | {
|
|
92
|
+
source: 'external';
|
|
93
|
+
} | {
|
|
94
|
+
source: 'plugin';
|
|
95
|
+
pluginId?: string;
|
|
96
|
+
};
|
|
97
|
+
export interface SkillSelection {
|
|
98
|
+
providers?: SkillSourceRef[];
|
|
99
|
+
include?: SkillRef[];
|
|
100
|
+
exclude?: SkillRef[];
|
|
101
|
+
pinned?: SkillRef[];
|
|
102
|
+
}
|
|
103
|
+
export type SkillExecutionMode = 'inline' | 'fork';
|
|
104
|
+
export type SkillForkToolPolicy = 'read-only' | 'web' | 'workspace-edit' | 'agent-default';
|
|
105
|
+
export interface SkillExecutionOverride {
|
|
106
|
+
ref: SkillRef;
|
|
107
|
+
allowedModes?: SkillExecutionMode[];
|
|
108
|
+
defaultMode?: SkillExecutionMode;
|
|
109
|
+
forkToolPolicy?: SkillForkToolPolicy;
|
|
110
|
+
}
|
|
111
|
+
export interface SkillExecutionSelection {
|
|
112
|
+
overrides?: SkillExecutionOverride[];
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zclaudia/plugin-sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Public contracts and development helpers for ZClaudia plugins.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./interactions": {
|
|
21
|
+
"types": "./dist/interactions.d.ts",
|
|
22
|
+
"import": "./dist/interactions.js"
|
|
23
|
+
},
|
|
24
|
+
"./manifest": {
|
|
25
|
+
"types": "./dist/manifest.d.ts",
|
|
26
|
+
"import": "./dist/manifest.js"
|
|
27
|
+
},
|
|
28
|
+
"./providers": {
|
|
29
|
+
"types": "./dist/providers.d.ts",
|
|
30
|
+
"import": "./dist/providers.js"
|
|
31
|
+
},
|
|
32
|
+
"./runtime": {
|
|
33
|
+
"types": "./dist/runtime.d.ts",
|
|
34
|
+
"import": "./dist/runtime.js"
|
|
35
|
+
},
|
|
36
|
+
"./types": {
|
|
37
|
+
"types": "./dist/types.d.ts",
|
|
38
|
+
"import": "./dist/types.js"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc -p tsconfig.json",
|
|
43
|
+
"clean": "rm -rf dist coverage",
|
|
44
|
+
"test": "vitest run",
|
|
45
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
46
|
+
"pack:check": "npm pack --dry-run",
|
|
47
|
+
"prepublishOnly": "pnpm clean && pnpm test && pnpm build"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=22.19.0"
|
|
51
|
+
},
|
|
52
|
+
"packageManager": "pnpm@9.15.0",
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
},
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "git+https://github.com/zclaudia/zclaudia-plugin-sdk.git"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^22.13.10",
|
|
62
|
+
"typescript": "^5.9.3",
|
|
63
|
+
"vitest": "^4.1.8"
|
|
64
|
+
}
|
|
65
|
+
}
|