@theway-ai/plugin-sdk 0.1.1

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.
@@ -0,0 +1,109 @@
1
+ {
2
+ "$defs": {
3
+ "ExtensionPermission": {
4
+ "oneOf": [
5
+ {
6
+ "enum": [
7
+ "session.write",
8
+ "tools.register",
9
+ "tools.override",
10
+ "commands.register",
11
+ "providers.register",
12
+ "client.contribute",
13
+ "workspace.read",
14
+ "workspace.write",
15
+ "process.spawn",
16
+ "network.connect",
17
+ "provider.raw"
18
+ ]
19
+ },
20
+ {
21
+ "pattern": "^secrets\\.read:[A-Za-z0-9](?:[A-Za-z0-9._-]{0,126}[A-Za-z0-9])?$",
22
+ "type": "string"
23
+ }
24
+ ]
25
+ },
26
+ "ExtensionTrustDecision": {
27
+ "enum": [
28
+ "trusted",
29
+ "denied"
30
+ ],
31
+ "type": "string"
32
+ },
33
+ "ExtensionTrustSubject": {
34
+ "description": "Identity whose extension permissions were accepted or denied by the user.",
35
+ "oneOf": [
36
+ {
37
+ "additionalProperties": false,
38
+ "properties": {
39
+ "canonicalRoot": {
40
+ "type": "string"
41
+ },
42
+ "kind": {
43
+ "const": "project",
44
+ "type": "string"
45
+ }
46
+ },
47
+ "required": [
48
+ "kind",
49
+ "canonicalRoot"
50
+ ],
51
+ "type": "object"
52
+ },
53
+ {
54
+ "additionalProperties": false,
55
+ "properties": {
56
+ "canonicalPath": {
57
+ "type": "string"
58
+ },
59
+ "contentSha256": {
60
+ "type": "string"
61
+ },
62
+ "extensionId": {
63
+ "type": "string"
64
+ },
65
+ "kind": {
66
+ "const": "package",
67
+ "type": "string"
68
+ }
69
+ },
70
+ "required": [
71
+ "kind",
72
+ "extensionId",
73
+ "canonicalPath",
74
+ "contentSha256"
75
+ ],
76
+ "type": "object"
77
+ }
78
+ ]
79
+ }
80
+ },
81
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
82
+ "additionalProperties": false,
83
+ "description": "Persistable trust decision. The exact granted permission set is part of the\nkey semantics so a later permission expansion requires a new decision.",
84
+ "properties": {
85
+ "decidedAt": {
86
+ "type": "string"
87
+ },
88
+ "decision": {
89
+ "$ref": "#/$defs/ExtensionTrustDecision"
90
+ },
91
+ "permissions": {
92
+ "items": {
93
+ "$ref": "#/$defs/ExtensionPermission"
94
+ },
95
+ "type": "array"
96
+ },
97
+ "subject": {
98
+ "$ref": "#/$defs/ExtensionTrustSubject"
99
+ }
100
+ },
101
+ "required": [
102
+ "subject",
103
+ "permissions",
104
+ "decision",
105
+ "decidedAt"
106
+ ],
107
+ "title": "ExtensionTrustRecord",
108
+ "type": "object"
109
+ }
@@ -0,0 +1,173 @@
1
+ // @generated by `cargo run -p theway-contract --example generate_extension_artifacts -- <output-dir>`
2
+ // ABI schema sha256: 63d7141206f17d63538f06e7468303d29f2a1f61b0311be6238e1d5077ef66ff
3
+
4
+ export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue };
5
+ export type ExtensionScope = "process" | "session" | "run" | "request";
6
+ export type ExtensionSourceLayer = "global" | "project";
7
+ export type ExtensionPermission =
8
+ | "session.write"
9
+ | "tools.register"
10
+ | "tools.override"
11
+ | "commands.register"
12
+ | "providers.register"
13
+ | "client.contribute"
14
+ | "workspace.read"
15
+ | "workspace.write"
16
+ | "process.spawn"
17
+ | "network.connect"
18
+ | "provider.raw"
19
+ | `secrets.read:${string}`;
20
+
21
+ export interface ExtensionPackageManifest {
22
+ id: string;
23
+ version: string;
24
+ entry: string;
25
+ priority?: number;
26
+ scope: ExtensionScope;
27
+ stateSchema?: number;
28
+ permissions?: ExtensionPermission[];
29
+ optionalPermissions?: ExtensionPermission[];
30
+ }
31
+
32
+ export type ExtensionTrustSubject =
33
+ | { kind: "project"; canonicalRoot: string }
34
+ | { kind: "package"; extensionId: string; canonicalPath: string; contentSha256: string };
35
+ export type ExtensionTrustDecision = "trusted" | "denied";
36
+ export interface ExtensionTrustRecord {
37
+ subject: ExtensionTrustSubject;
38
+ permissions: ExtensionPermission[];
39
+ decision: ExtensionTrustDecision;
40
+ decidedAt: string;
41
+ }
42
+
43
+ export type ExtensionLifecycleEvent =
44
+ | "extension_load" | "session_start" | "input"
45
+ | "before_session_switch" | "session_switched" | "before_session_fork" | "session_forked"
46
+ | "before_model_selection" | "model_selected" | "before_run" | "run_started"
47
+ | "turn_started" | "context" | "before_model_request"
48
+ | "before_provider_request_headers" | "before_provider_request_raw"
49
+ | "provider_response" | "provider_request_failed"
50
+ | "message_start" | "message_update" | "message_end" | "tool_call"
51
+ | "tool_execution_start" | "tool_execution_update" | "tool_execution_end" | "tool_result"
52
+ | "turn_completed" | "run_ended" | "run_error" | "run_settled"
53
+ | "before_compaction" | "compaction_succeeded" | "compaction_failed"
54
+ | "session_shutdown" | "extension_unload";
55
+ export interface ExtensionScopeIds {
56
+ runId?: string;
57
+ turnId?: string;
58
+ requestId?: string;
59
+ messageId?: string;
60
+ toolCallId?: string;
61
+ }
62
+ export interface ExtensionModelRef { provider: string; model: string }
63
+ export interface ExtensionCancellationContext { cancelled?: boolean; deadlineUnixMs?: number }
64
+ export interface ExtensionEventContext {
65
+ extensionId: string;
66
+ sessionId: string;
67
+ cwd: string;
68
+ sequence: number;
69
+ scope?: ExtensionScopeIds;
70
+ model?: ExtensionModelRef;
71
+ hasInteractiveClient?: boolean;
72
+ cancellation?: ExtensionCancellationContext;
73
+ }
74
+ export interface ExtensionEventEnvelope {
75
+ event: ExtensionLifecycleEvent;
76
+ context: ExtensionEventContext;
77
+ payload: JsonValue;
78
+ }
79
+
80
+ export type ExtensionHookClass = "observe" | "transform" | "gate" | "register";
81
+ export type ExtensionHookDeadline = "fast" | "standard" | "long";
82
+ export type ExtensionDeliveryPolicy = "inline" | "bounded_coalescing";
83
+ export type ExtensionHookFailurePolicy = "continue" | "keep_last_value" | "deny" | "reject_registration";
84
+ export type ExtensionActionKind =
85
+ | "replace_input" | "patch_run_context" | "replace_context" | "replace_model_request"
86
+ | "replace_provider_headers" | "replace_provider_payload" | "replace_message" | "replace_tool_result"
87
+ | "set_state" | "delete_state" | "append_custom_event" | "append_model_context"
88
+ | "emit_command_outcome" | "enqueue_follow_up" | "emit_diagnostic" | "register_effect" | "dispose_effect";
89
+ export interface ExtensionAction { kind: ExtensionActionKind; payload: { [key: string]: JsonValue } }
90
+ export type ExtensionGateDecision =
91
+ | { decision: "abstain" }
92
+ | { decision: "allow" }
93
+ | { decision: "deny"; code: string; message: string }
94
+ | { decision: "cancel"; code: string; message: string };
95
+ export interface ExtensionActionBatch {
96
+ decision?: ExtensionGateDecision;
97
+ actions?: ExtensionAction[];
98
+ }
99
+ export interface ExtensionHookContract {
100
+ event: ExtensionLifecycleEvent;
101
+ class: ExtensionHookClass;
102
+ allowedActions: ExtensionActionKind[];
103
+ deadline: ExtensionHookDeadline;
104
+ delivery: ExtensionDeliveryPolicy;
105
+ failure: ExtensionHookFailurePolicy;
106
+ }
107
+
108
+ export type ExtensionStateMutation = { operation: "set"; value: JsonValue } | { operation: "delete" };
109
+ export type ExtensionModelContextPlacement = "system_prompt_section" | "message";
110
+ export type ExtensionDurableEntryPayload =
111
+ | { kind: "state_mutation"; key: string; mutation: ExtensionStateMutation }
112
+ | { kind: "custom_event"; eventId: string; customType: string; payload: JsonValue }
113
+ | { kind: "model_context"; contextId: string; placement: ExtensionModelContextPlacement; content: JsonValue }
114
+ | { kind: "state_migration"; fromSchemaVersion: number; toSchemaVersion: number };
115
+ export interface ExtensionDurableEntry {
116
+ extensionId: string;
117
+ stateSchemaVersion: number;
118
+ originSequence: number;
119
+ entry: ExtensionDurableEntryPayload;
120
+ }
121
+
122
+ export type ExtensionCatalogStatus = "effective" | "shadowed" | "rejected" | "blocked" | "disabled" | "faulted";
123
+ export type ExtensionDiagnosticSeverity = "info" | "warning" | "error";
124
+ export type ExtensionDiagnosticCode =
125
+ | "manifest_invalid" | "shadowed" | "trust_required" | "permission_denied"
126
+ | "load_failed" | "hook_failed" | "hook_timed_out" | "cancelled" | "resource_limit"
127
+ | "circuit_opened" | "unloaded" | "reload_pending" | "state_migration_failed"
128
+ | "persistence_failed" | "queue_overflow" | "lifecycle_status" | "contract_violation";
129
+ export interface ExtensionCatalogEntry {
130
+ extensionId: string;
131
+ version: string;
132
+ source: ExtensionSourceLayer;
133
+ scope: ExtensionScope;
134
+ priority: number;
135
+ status: ExtensionCatalogStatus;
136
+ permissions?: ExtensionPermission[];
137
+ reasonCode?: ExtensionDiagnosticCode;
138
+ }
139
+ export interface ExtensionDiagnostic {
140
+ extensionId: string;
141
+ code: ExtensionDiagnosticCode;
142
+ severity: ExtensionDiagnosticSeverity;
143
+ message: string;
144
+ sessionId?: string;
145
+ event?: ExtensionLifecycleEvent;
146
+ sequence?: number;
147
+ details?: { [key: string]: JsonValue };
148
+ redactedFields?: string[];
149
+ }
150
+
151
+ export interface ExtensionCommandDescriptor {
152
+ name: string;
153
+ label: string;
154
+ description: string;
155
+ argumentSchema: { [key: string]: JsonValue };
156
+ }
157
+ export type ExtensionCommandOutcome =
158
+ | { status: "success"; message?: string; data?: JsonValue }
159
+ | { status: "rejected"; code: string; message: string }
160
+ | { status: "cancelled"; code: string; message: string };
161
+ export type ExtensionNoticeLevel = "info" | "success" | "warning" | "error";
162
+ export type ExtensionClientContributionData =
163
+ | { kind: "notification"; level: ExtensionNoticeLevel; title: string; body: string }
164
+ | { kind: "status_item"; label: string; value: string; detail?: string }
165
+ | { kind: "command"; command: ExtensionCommandDescriptor }
166
+ | { kind: "detail_panel"; title: string; data: JsonValue }
167
+ | { kind: "form_action"; title: string; schema: JsonValue; submitCommand: string };
168
+ export interface ExtensionClientContribution {
169
+ contributionId: string;
170
+ extensionId: string;
171
+ scope: ExtensionScope;
172
+ contribution: ExtensionClientContributionData;
173
+ }
@@ -0,0 +1,267 @@
1
+ import type { ExtensionActionBatch, ExtensionActionKind, ExtensionClientContribution, ExtensionCommandOutcome, ExtensionDeliveryPolicy, ExtensionEventContext, ExtensionEventEnvelope, ExtensionHookClass, ExtensionHookDeadline, ExtensionHookFailurePolicy, ExtensionLifecycleEvent, ExtensionModelContextPlacement, ExtensionPermission, ExtensionScope, JsonValue } from '../abi/theway-extension.js';
2
+ export type * from '../abi/theway-extension.js';
3
+ export type MaybePromise<T> = T | Promise<T>;
4
+ export type JsonObject = {
5
+ [key: string]: JsonValue;
6
+ };
7
+ export type JsonSchema = boolean | JsonObject;
8
+ export type ThinkingBudgets = JsonObject & {
9
+ minimal?: number;
10
+ low?: number;
11
+ medium?: number;
12
+ high?: number;
13
+ };
14
+ export type NormalizedGenerationOptions = JsonObject & {
15
+ temperature?: number;
16
+ maxTokens?: number;
17
+ reasoning?: string;
18
+ thinkingBudgets?: ThinkingBudgets;
19
+ };
20
+ export type ModelToolDefinition = JsonObject & {
21
+ name: string;
22
+ description: string;
23
+ parameters: JsonSchema;
24
+ };
25
+ export type NormalizedModelRequest = JsonObject & {
26
+ provider: string;
27
+ model: string;
28
+ systemInstructions?: string;
29
+ messages: JsonValue[];
30
+ visibleTools: ModelToolDefinition[];
31
+ executableToolNames: string[];
32
+ generationOptions: NormalizedGenerationOptions;
33
+ };
34
+ export interface KnownLifecyclePayloads {
35
+ input: {
36
+ message: JsonValue;
37
+ };
38
+ context: {
39
+ messages: JsonValue[];
40
+ };
41
+ before_model_request: {
42
+ request: NormalizedModelRequest;
43
+ };
44
+ before_provider_request_headers: {
45
+ request: JsonObject;
46
+ };
47
+ before_provider_request_raw: {
48
+ request: JsonObject;
49
+ };
50
+ provider_response: {
51
+ response: JsonObject;
52
+ };
53
+ provider_request_failed: {
54
+ failure: JsonObject;
55
+ };
56
+ message_start: {
57
+ message: JsonValue;
58
+ };
59
+ message_update: {
60
+ message: JsonValue;
61
+ updateKind: string;
62
+ };
63
+ message_end: {
64
+ message: JsonValue;
65
+ };
66
+ tool_call: {
67
+ assistantMessage: JsonValue;
68
+ toolCall: JsonValue;
69
+ args: JsonValue;
70
+ };
71
+ tool_execution_start: {
72
+ toolName: string;
73
+ args: JsonValue;
74
+ };
75
+ tool_execution_update: {
76
+ toolName: string;
77
+ update: JsonValue;
78
+ };
79
+ tool_execution_end: {
80
+ toolName: string;
81
+ result: JsonValue;
82
+ isError: boolean;
83
+ };
84
+ tool_result: {
85
+ toolCall: JsonValue;
86
+ args: JsonValue;
87
+ result: JsonValue;
88
+ isError: boolean;
89
+ };
90
+ }
91
+ export type LifecyclePayload<E extends ExtensionLifecycleEvent> = E extends keyof KnownLifecyclePayloads ? KnownLifecyclePayloads[E] : JsonObject;
92
+ export type LifecycleEnvelope<E extends ExtensionLifecycleEvent = ExtensionLifecycleEvent> = Omit<ExtensionEventEnvelope, 'event' | 'payload'> & {
93
+ event: E;
94
+ payload: LifecyclePayload<E>;
95
+ };
96
+ export interface HookDescriptor {
97
+ class?: ExtensionHookClass;
98
+ payloadSchema?: JsonSchema;
99
+ allowedActions?: ExtensionActionKind[];
100
+ priority?: number;
101
+ deadline?: ExtensionHookDeadline;
102
+ delivery?: ExtensionDeliveryPolicy;
103
+ failure?: ExtensionHookFailurePolicy;
104
+ }
105
+ export type HookResult = MaybePromise<ExtensionActionBatch | null | undefined | void>;
106
+ export type HookHandler<E extends ExtensionLifecycleEvent> = (event: LifecycleEnvelope<E>, context: ExtensionEventContext) => HookResult;
107
+ export interface RegistrationHandle<Descriptor = JsonObject> {
108
+ readonly id: string;
109
+ dispose(): void;
110
+ update(descriptor: Descriptor): void;
111
+ }
112
+ export type ToolPermission = 'allow' | 'prompt' | 'block';
113
+ export interface ToolRegistrationDescriptor {
114
+ name: string;
115
+ label: string;
116
+ description: string;
117
+ inputSchema: JsonSchema;
118
+ resultSchema?: JsonSchema;
119
+ permission?: ToolPermission;
120
+ scope?: ExtensionScope;
121
+ override?: boolean;
122
+ }
123
+ export interface ToolInvocation<Arguments = JsonValue> {
124
+ toolCallId: string;
125
+ arguments: Arguments;
126
+ }
127
+ export interface ToolResult {
128
+ content: JsonValue[];
129
+ details?: JsonValue;
130
+ terminate?: boolean;
131
+ }
132
+ export type ToolHandler<Arguments = JsonValue> = (invocation: ToolInvocation<Arguments>, context: ExtensionEventContext) => MaybePromise<ToolResult>;
133
+ export interface RegistrationPredicate {
134
+ providers?: string[];
135
+ models?: string[];
136
+ requiresInteractiveClient?: boolean;
137
+ }
138
+ export interface CommandRegistrationDescriptor {
139
+ name: string;
140
+ label: string;
141
+ description: string;
142
+ argumentSchema: JsonSchema;
143
+ availability?: RegistrationPredicate;
144
+ scope?: ExtensionScope;
145
+ }
146
+ export type CommandHandler<Arguments = JsonValue> = (invocation: {
147
+ arguments: Arguments;
148
+ }, context: ExtensionEventContext) => MaybePromise<ExtensionCommandOutcome>;
149
+ export type ProviderWireFormat = 'openai_chat_completions' | 'openai_responses' | 'anthropic_messages';
150
+ export type ProviderInputModality = 'text' | 'image';
151
+ export interface ProviderModelDescriptor {
152
+ id: string;
153
+ name: string;
154
+ reasoning?: boolean;
155
+ input?: ProviderInputModality[];
156
+ contextWindow: number;
157
+ maxTokens: number;
158
+ }
159
+ export interface ProviderRegistrationDescriptor {
160
+ providerId: string;
161
+ baseUrl: string;
162
+ format: ProviderWireFormat;
163
+ credentialRef?: string;
164
+ models: ProviderModelDescriptor[];
165
+ scope?: ExtensionScope;
166
+ }
167
+ export interface PromptSectionDescriptor {
168
+ sectionId: string;
169
+ text: string;
170
+ priority?: number;
171
+ predicate?: RegistrationPredicate;
172
+ scope?: ExtensionScope;
173
+ }
174
+ export interface RequestPolicyDescriptor {
175
+ policyId: string;
176
+ priority?: number;
177
+ predicate?: RegistrationPredicate;
178
+ scope?: ExtensionScope;
179
+ }
180
+ export type RequestPolicyHandler = (payload: {
181
+ request: NormalizedModelRequest;
182
+ }, context: ExtensionEventContext) => HookResult;
183
+ export interface CustomEvent {
184
+ eventId: string;
185
+ type: string;
186
+ payload: JsonValue;
187
+ stateSchemaVersion: number;
188
+ originSequence: number;
189
+ }
190
+ export interface StateMigrationInput {
191
+ fromSchemaVersion: number;
192
+ toSchemaVersion: number;
193
+ state: Record<string, JsonValue>;
194
+ }
195
+ export type StateMigrationHandler = (input: StateMigrationInput, context: ExtensionEventContext) => MaybePromise<{
196
+ state: Record<string, JsonValue>;
197
+ }>;
198
+ export interface ProcessResult {
199
+ stdout: string;
200
+ stderr: string;
201
+ exitCode: number;
202
+ }
203
+ export interface NetworkRequestOptions {
204
+ method?: 'GET' | 'POST';
205
+ headers?: Record<string, string>;
206
+ body?: string;
207
+ }
208
+ export interface NetworkResponse {
209
+ status: number;
210
+ body: string;
211
+ }
212
+ export interface ExtensionApi {
213
+ readonly capabilities: {
214
+ has(permission: ExtensionPermission): boolean;
215
+ };
216
+ readonly workspace: {
217
+ readText(path: string): Promise<string>;
218
+ writeText(path: string, content: string): Promise<void>;
219
+ };
220
+ readonly process: {
221
+ run(argv: string[], options?: {
222
+ timeoutMs?: number;
223
+ }): Promise<ProcessResult>;
224
+ };
225
+ readonly network: {
226
+ fetch(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse>;
227
+ };
228
+ readonly secrets: {
229
+ read(name: string): Promise<string>;
230
+ };
231
+ readonly providerRaw: {
232
+ read(): Promise<JsonValue>;
233
+ };
234
+ readonly state: {
235
+ get(key: string): JsonValue;
236
+ set(key: string, value: JsonValue): void;
237
+ delete(key: string): void;
238
+ };
239
+ readonly events: {
240
+ replay(customType?: string | null): CustomEvent[];
241
+ append(eventId: string, type: string, payload: JsonValue): void;
242
+ };
243
+ readonly modelContext: {
244
+ append(contextId: string, placement: ExtensionModelContextPlacement, content: JsonValue): void;
245
+ };
246
+ readonly memory: {
247
+ get(key: string): JsonValue;
248
+ set(key: string, value: JsonValue): void;
249
+ delete(key: string): void;
250
+ clear(): void;
251
+ };
252
+ migrateState(handler: StateMigrationHandler): RegistrationHandle;
253
+ registerTool<Arguments = JsonValue>(descriptor: ToolRegistrationDescriptor, handler: ToolHandler<Arguments>): RegistrationHandle<ToolRegistrationDescriptor>;
254
+ registerCommand<Arguments = JsonValue>(descriptor: CommandRegistrationDescriptor, handler: CommandHandler<Arguments>): RegistrationHandle<CommandRegistrationDescriptor>;
255
+ registerProvider(descriptor: ProviderRegistrationDescriptor): RegistrationHandle<ProviderRegistrationDescriptor>;
256
+ registerPromptSection(descriptor: PromptSectionDescriptor): RegistrationHandle<PromptSectionDescriptor>;
257
+ registerRequestPolicy(descriptor: RequestPolicyDescriptor, handler: RequestPolicyHandler): RegistrationHandle<RequestPolicyDescriptor>;
258
+ contribute(descriptor: ExtensionClientContribution): RegistrationHandle<ExtensionClientContribution>;
259
+ on<E extends ExtensionLifecycleEvent>(event: E, handler: HookHandler<E>): RegistrationHandle;
260
+ on<E extends ExtensionLifecycleEvent>(event: E, descriptor: HookDescriptor, handler: HookHandler<E>): RegistrationHandle<HookDescriptor>;
261
+ }
262
+ export type ExtensionSetup = (api: ExtensionApi) => MaybePromise<void>;
263
+ export interface ExtensionDefinition {
264
+ readonly setup: ExtensionSetup;
265
+ }
266
+ export declare function defineExtension(setup: ExtensionSetup): Readonly<ExtensionDefinition>;
267
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export function defineExtension(setup) {
2
+ if (typeof setup !== 'function') {
3
+ throw new TypeError('defineExtension requires a setup function');
4
+ }
5
+ return Object.freeze({ setup });
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqTA,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAClC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@theway-ai/plugin-sdk",
3
+ "version": "0.1.1",
4
+ "description": "TypeScript authoring SDK for theway runtime extensions.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/ptlzc/theway.git",
9
+ "directory": "sdks/plugin"
10
+ },
11
+ "type": "module",
12
+ "main": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ },
19
+ "./schemas/*": "./abi/schemas/*"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "abi",
24
+ "README.md"
25
+ ],
26
+ "engines": {
27
+ "node": ">=18"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc -p tsconfig.json",
31
+ "typecheck:examples": "tsc -p examples/tsconfig.json --noEmit",
32
+ "test": "node --test test/*.test.mjs",
33
+ "check": "npm run build && npm run typecheck:examples && npm test",
34
+ "prepublishOnly": "npm run check"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "^5.6.0"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public",
41
+ "registry": "https://registry.npmjs.org/"
42
+ }
43
+ }