@compozy/extension-sdk 0.3.0-beta.3

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.
Files changed (142) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/base-types.js +3 -0
  3. package/dist/cjs/base-types.js.map +1 -0
  4. package/dist/cjs/capabilities.js +27 -0
  5. package/dist/cjs/capabilities.js.map +1 -0
  6. package/dist/cjs/errors.js +123 -0
  7. package/dist/cjs/errors.js.map +1 -0
  8. package/dist/cjs/extension-context.js +28 -0
  9. package/dist/cjs/extension-context.js.map +1 -0
  10. package/dist/cjs/extension-contract.js +8 -0
  11. package/dist/cjs/extension-contract.js.map +1 -0
  12. package/dist/cjs/extension-describe.js +72 -0
  13. package/dist/cjs/extension-describe.js.map +1 -0
  14. package/dist/cjs/extension-initialize.js +67 -0
  15. package/dist/cjs/extension-initialize.js.map +1 -0
  16. package/dist/cjs/extension-runtime.js +227 -0
  17. package/dist/cjs/extension-runtime.js.map +1 -0
  18. package/dist/cjs/extension-tool-context.js +29 -0
  19. package/dist/cjs/extension-tool-context.js.map +1 -0
  20. package/dist/cjs/extension-tool-registration.js +42 -0
  21. package/dist/cjs/extension-tool-registration.js.map +1 -0
  22. package/dist/cjs/extension.js +329 -0
  23. package/dist/cjs/extension.js.map +1 -0
  24. package/dist/cjs/generated/contracts.js +20 -0
  25. package/dist/cjs/generated/contracts.js.map +1 -0
  26. package/dist/cjs/host-api.js +187 -0
  27. package/dist/cjs/host-api.js.map +1 -0
  28. package/dist/cjs/index.js +31 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/json.js +13 -0
  31. package/dist/cjs/json.js.map +1 -0
  32. package/dist/cjs/package.json +3 -0
  33. package/dist/cjs/schema-digest.js +45 -0
  34. package/dist/cjs/schema-digest.js.map +1 -0
  35. package/dist/cjs/testing/conformance.js +23 -0
  36. package/dist/cjs/testing/conformance.js.map +1 -0
  37. package/dist/cjs/testing/harness.js +158 -0
  38. package/dist/cjs/testing/harness.js.map +1 -0
  39. package/dist/cjs/testing/index.js +12 -0
  40. package/dist/cjs/testing/index.js.map +1 -0
  41. package/dist/cjs/testing/mock-transport.js +74 -0
  42. package/dist/cjs/testing/mock-transport.js.map +1 -0
  43. package/dist/cjs/transport.js +240 -0
  44. package/dist/cjs/transport.js.map +1 -0
  45. package/dist/cjs/types.js +19 -0
  46. package/dist/cjs/types.js.map +1 -0
  47. package/dist/cjs/watch-source.js +129 -0
  48. package/dist/cjs/watch-source.js.map +1 -0
  49. package/dist/esm/base-types.js +2 -0
  50. package/dist/esm/base-types.js.map +1 -0
  51. package/dist/esm/capabilities.js +22 -0
  52. package/dist/esm/capabilities.js.map +1 -0
  53. package/dist/esm/errors.js +106 -0
  54. package/dist/esm/errors.js.map +1 -0
  55. package/dist/esm/extension-context.js +24 -0
  56. package/dist/esm/extension-context.js.map +1 -0
  57. package/dist/esm/extension-contract.js +6 -0
  58. package/dist/esm/extension-contract.js.map +1 -0
  59. package/dist/esm/extension-describe.js +66 -0
  60. package/dist/esm/extension-describe.js.map +1 -0
  61. package/dist/esm/extension-initialize.js +63 -0
  62. package/dist/esm/extension-initialize.js.map +1 -0
  63. package/dist/esm/extension-runtime.js +214 -0
  64. package/dist/esm/extension-runtime.js.map +1 -0
  65. package/dist/esm/extension-tool-context.js +26 -0
  66. package/dist/esm/extension-tool-context.js.map +1 -0
  67. package/dist/esm/extension-tool-registration.js +39 -0
  68. package/dist/esm/extension-tool-registration.js.map +1 -0
  69. package/dist/esm/extension.js +325 -0
  70. package/dist/esm/extension.js.map +1 -0
  71. package/dist/esm/generated/contracts.js +17 -0
  72. package/dist/esm/generated/contracts.js.map +1 -0
  73. package/dist/esm/host-api.js +183 -0
  74. package/dist/esm/host-api.js.map +1 -0
  75. package/dist/esm/index.js +6 -0
  76. package/dist/esm/index.js.map +1 -0
  77. package/dist/esm/json.js +10 -0
  78. package/dist/esm/json.js.map +1 -0
  79. package/dist/esm/package.json +3 -0
  80. package/dist/esm/schema-digest.js +41 -0
  81. package/dist/esm/schema-digest.js.map +1 -0
  82. package/dist/esm/testing/conformance.js +19 -0
  83. package/dist/esm/testing/conformance.js.map +1 -0
  84. package/dist/esm/testing/harness.js +151 -0
  85. package/dist/esm/testing/harness.js.map +1 -0
  86. package/dist/esm/testing/index.js +4 -0
  87. package/dist/esm/testing/index.js.map +1 -0
  88. package/dist/esm/testing/mock-transport.js +69 -0
  89. package/dist/esm/testing/mock-transport.js.map +1 -0
  90. package/dist/esm/transport.js +235 -0
  91. package/dist/esm/transport.js.map +1 -0
  92. package/dist/esm/types.js +3 -0
  93. package/dist/esm/types.js.map +1 -0
  94. package/dist/esm/watch-source.js +122 -0
  95. package/dist/esm/watch-source.js.map +1 -0
  96. package/dist/types/base-types.d.ts +25 -0
  97. package/dist/types/base-types.d.ts.map +1 -0
  98. package/dist/types/capabilities.d.ts +6 -0
  99. package/dist/types/capabilities.d.ts.map +1 -0
  100. package/dist/types/errors.d.ts +66 -0
  101. package/dist/types/errors.d.ts.map +1 -0
  102. package/dist/types/extension-context.d.ts +6 -0
  103. package/dist/types/extension-context.d.ts.map +1 -0
  104. package/dist/types/extension-contract.d.ts +65 -0
  105. package/dist/types/extension-contract.d.ts.map +1 -0
  106. package/dist/types/extension-describe.d.ts +16 -0
  107. package/dist/types/extension-describe.d.ts.map +1 -0
  108. package/dist/types/extension-initialize.d.ts +4 -0
  109. package/dist/types/extension-initialize.d.ts.map +1 -0
  110. package/dist/types/extension-runtime.d.ts +14 -0
  111. package/dist/types/extension-runtime.d.ts.map +1 -0
  112. package/dist/types/extension-tool-context.d.ts +4 -0
  113. package/dist/types/extension-tool-context.d.ts.map +1 -0
  114. package/dist/types/extension-tool-registration.d.ts +3 -0
  115. package/dist/types/extension-tool-registration.d.ts.map +1 -0
  116. package/dist/types/extension.d.ts +55 -0
  117. package/dist/types/extension.d.ts.map +1 -0
  118. package/dist/types/generated/contracts.d.ts +6173 -0
  119. package/dist/types/generated/contracts.d.ts.map +1 -0
  120. package/dist/types/host-api.d.ts +90 -0
  121. package/dist/types/host-api.d.ts.map +1 -0
  122. package/dist/types/index.d.ts +12 -0
  123. package/dist/types/index.d.ts.map +1 -0
  124. package/dist/types/json.d.ts +3 -0
  125. package/dist/types/json.d.ts.map +1 -0
  126. package/dist/types/schema-digest.d.ts +4 -0
  127. package/dist/types/schema-digest.d.ts.map +1 -0
  128. package/dist/types/testing/conformance.d.ts +7 -0
  129. package/dist/types/testing/conformance.d.ts.map +1 -0
  130. package/dist/types/testing/harness.d.ts +51 -0
  131. package/dist/types/testing/harness.d.ts.map +1 -0
  132. package/dist/types/testing/index.d.ts +4 -0
  133. package/dist/types/testing/index.d.ts.map +1 -0
  134. package/dist/types/testing/mock-transport.d.ts +28 -0
  135. package/dist/types/testing/mock-transport.d.ts.map +1 -0
  136. package/dist/types/transport.d.ts +55 -0
  137. package/dist/types/transport.d.ts.map +1 -0
  138. package/dist/types/types.d.ts +114 -0
  139. package/dist/types/types.d.ts.map +1 -0
  140. package/dist/types/watch-source.d.ts +57 -0
  141. package/dist/types/watch-source.d.ts.map +1 -0
  142. package/package.json +49 -0
@@ -0,0 +1,25 @@
1
+ export type JSONPrimitive = string | number | boolean | null;
2
+ export type JSONValue = JSONPrimitive | JSONValue[] | {
3
+ [key: string]: JSONValue;
4
+ };
5
+ export type ISODateTime = string;
6
+ export type ProtocolVersion = "1";
7
+ export type JSONRPCID = string | number;
8
+ export interface JSONRPCRequestEnvelope<Params = unknown> {
9
+ jsonrpc: "2.0";
10
+ id?: JSONRPCID;
11
+ method: string;
12
+ params?: Params;
13
+ }
14
+ export interface JSONRPCResponseEnvelope<Result = unknown, Data = unknown> {
15
+ jsonrpc: "2.0";
16
+ id: JSONRPCID;
17
+ result?: Result;
18
+ error?: JSONRPCErrorObject<Data>;
19
+ }
20
+ export interface JSONRPCErrorObject<Data = unknown> {
21
+ code: number;
22
+ message: string;
23
+ data?: Data;
24
+ }
25
+ //# sourceMappingURL=base-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-types.d.ts","sourceRoot":"","sources":["../../src/base-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACnF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAClC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,sBAAsB,CAAC,MAAM,GAAG,OAAO;IACtD,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB,CAAC,MAAM,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO;IACvE,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB,CAAC,IAAI,GAAG,OAAO;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb"}
@@ -0,0 +1,6 @@
1
+ export declare const TOOL_PROVIDER_CAPABILITY = "tool.provider";
2
+ export declare const PROVIDE_TOOLS_METHOD = "provide_tools";
3
+ export declare const TOOLS_CALL_METHOD = "tools/call";
4
+ export declare function isToolProviderMethod(method: string): boolean;
5
+ export declare function validateProvidedMethodCoverage(provides: readonly string[], implementedMethods: readonly string[]): void;
6
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/capabilities.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AACxD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AACpD,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,kBAAkB,EAAE,SAAS,MAAM,EAAE,GACpC,IAAI,CAcN"}
@@ -0,0 +1,66 @@
1
+ import type { JSONRPCErrorObject, JSONValue } from "./types.js";
2
+ export interface CapabilityDeniedData {
3
+ method?: string;
4
+ required?: string[];
5
+ granted?: string[];
6
+ field?: string;
7
+ }
8
+ export interface RateLimitedData {
9
+ scope?: string;
10
+ retry_after_ms?: number;
11
+ limit?: number;
12
+ burst?: number;
13
+ }
14
+ export interface AllowedMethodsData {
15
+ allowed_methods?: string[];
16
+ }
17
+ export interface ShutdownProgressData {
18
+ deadline_ms?: number;
19
+ }
20
+ export interface ToolExecutionData {
21
+ tool_id?: string;
22
+ handler?: string;
23
+ error?: string;
24
+ input?: JSONValue;
25
+ sensitive_input_fields?: string[];
26
+ }
27
+ export declare class RPCError<Data = unknown> extends Error {
28
+ readonly code: number;
29
+ readonly data: Data | undefined;
30
+ constructor(code: number, message: string, data?: Data);
31
+ toJSONRPC(): JSONRPCErrorObject<Data>;
32
+ }
33
+ export declare class ParseError extends RPCError<Record<string, JSONValue>> {
34
+ constructor(error: string);
35
+ }
36
+ export declare class InvalidRequestError extends RPCError<Record<string, JSONValue>> {
37
+ constructor(reason: string);
38
+ }
39
+ export declare class MethodNotFoundError extends RPCError<Record<string, string>> {
40
+ constructor(method: string);
41
+ }
42
+ export declare class InvalidParamsError extends RPCError<Record<string, JSONValue>> {
43
+ constructor(error: string, data?: Record<string, JSONValue>);
44
+ }
45
+ export declare class InternalError extends RPCError<Record<string, JSONValue>> {
46
+ constructor(error: string);
47
+ }
48
+ export declare class CapabilityDeniedError extends RPCError<CapabilityDeniedData> {
49
+ constructor(data: CapabilityDeniedData);
50
+ }
51
+ export declare class RateLimitedError extends RPCError<RateLimitedData> {
52
+ constructor(data: RateLimitedData);
53
+ }
54
+ export declare class NotInitializedError extends RPCError<AllowedMethodsData> {
55
+ constructor(data?: AllowedMethodsData);
56
+ }
57
+ export declare class ShutdownInProgressError extends RPCError<ShutdownProgressData> {
58
+ constructor(data?: ShutdownProgressData);
59
+ }
60
+ export declare class ToolExecutionError extends RPCError<ToolExecutionData> {
61
+ constructor(data?: ToolExecutionData);
62
+ }
63
+ export declare function isRPCError(error: unknown): error is RPCError;
64
+ export declare function errorFromObject(error: JSONRPCErrorObject): RPCError;
65
+ export declare function ensureRPCError(error: unknown): RPCError;
66
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { HostAPI } from "./host-api.js";
2
+ import type { ExtensionContext, ExtensionSession } from "./extension-contract.js";
3
+ import type { JSONRPCRequestEnvelope } from "./types.js";
4
+ export declare function makeExtensionContext(request: JSONRPCRequestEnvelope, host: HostAPI, session: ExtensionSession | undefined, stderr: NodeJS.WritableStream): ExtensionContext;
5
+ export declare function writeExtensionError(stderr: NodeJS.WritableStream, message: string, error: unknown): void;
6
+ //# sourceMappingURL=extension-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-context.d.ts","sourceRoot":"","sources":["../../src/extension-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,MAAM,EAAE,MAAM,CAAC,cAAc,GAC5B,gBAAgB,CAgBlB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,GACb,IAAI,CAGN"}
@@ -0,0 +1,65 @@
1
+ import type { TransportLike } from "./transport.js";
2
+ import type { AcceptedCapabilities, ClarifyAnswer, ClarifyAskParams, ExtensionCommandSpec, ExtensionToolRuntimeDescriptor, ExtensionToolWorkspaceScope, InitializeRequest, InitializeResponse, InitializeRuntime, JSONRPCRequestEnvelope, JSONValue, RiskClass, ToolID, ToolResult } from "./types.js";
3
+ import { HostAPI } from "./host-api.js";
4
+ export declare const SDK_NAME = "@compozy/extension-sdk";
5
+ export declare const SDK_VERSION = "0.1.0";
6
+ export declare const SDK_MIN_COMPOZY_VERSION = "0.3.0-beta.1";
7
+ export declare const SUPPORTED_PROTOCOL_VERSIONS: string[];
8
+ export interface ExtensionDescribeProcess {
9
+ argv: readonly string[];
10
+ stdout: Pick<NodeJS.WritableStream, "write">;
11
+ setExitCode: (code: number) => void;
12
+ }
13
+ export interface ExtensionOptions {
14
+ transport?: TransportLike;
15
+ stderr?: NodeJS.WritableStream;
16
+ sdkVersion?: string;
17
+ describeProcess?: ExtensionDescribeProcess;
18
+ }
19
+ export interface ExtensionSession {
20
+ initializeRequest: InitializeRequest;
21
+ initializeResponse: InitializeResponse;
22
+ runtime: InitializeRuntime;
23
+ acceptedCapabilities: AcceptedCapabilities;
24
+ }
25
+ export interface ExtensionContext {
26
+ readonly request: JSONRPCRequestEnvelope;
27
+ readonly requestId: string | number;
28
+ readonly host: HostAPI;
29
+ readonly session: ExtensionSession;
30
+ log: (...values: unknown[]) => void;
31
+ }
32
+ export type ExtensionHandler<TParams = unknown, TResult = unknown> = (context: ExtensionContext, params: TParams) => Promise<TResult> | TResult;
33
+ export interface ExtensionToolOptions {
34
+ id?: ToolID;
35
+ description?: string;
36
+ friendlyVerb?: string;
37
+ preview?: string;
38
+ inputSchema: JSONValue;
39
+ outputSchema?: JSONValue;
40
+ readOnly?: boolean;
41
+ risk?: RiskClass;
42
+ requiresInteraction?: boolean;
43
+ capabilities?: string[];
44
+ sensitiveInputFields?: string[];
45
+ command?: ExtensionCommandSpec;
46
+ }
47
+ export interface ExtensionToolContext<TInput = unknown> {
48
+ readonly input: TInput;
49
+ readonly context: ExtensionContext;
50
+ readonly host: HostAPI;
51
+ readonly session: ExtensionSession;
52
+ readonly toolID: ToolID;
53
+ readonly handler: string;
54
+ readonly trustedWorkspace?: ExtensionToolWorkspaceScope;
55
+ readonly invocationId?: string;
56
+ askClarification: (question: Omit<ClarifyAskParams, "invocation_id">) => Promise<ClarifyAnswer>;
57
+ }
58
+ export type ExtensionToolHandler<TInput = unknown> = (request: ExtensionToolContext<TInput>) => Promise<ToolResult | JSONValue | string | void> | ToolResult | JSONValue | string | void;
59
+ export type ReadyCallback = (host: HostAPI, session: ExtensionSession) => Promise<void> | void;
60
+ export interface RegisteredTool {
61
+ descriptor: ExtensionToolRuntimeDescriptor;
62
+ handler: ExtensionToolHandler;
63
+ sensitiveInputFields: string[];
64
+ }
65
+ //# sourceMappingURL=extension-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-contract.d.ts","sourceRoot":"","sources":["../../src/extension-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type ExtensionDescribeProcess } from "./extension-contract.js";
2
+ import type { DescribePayload, ExtensionDefinition, ExtensionCommandGroupSpec, ExtensionToolRuntimeDescriptor } from "./types.js";
3
+ import type { RegisteredTool } from "./extension-contract.js";
4
+ interface ExtensionDescribeInput {
5
+ definition: ExtensionDefinition;
6
+ tools: ExtensionToolRuntimeDescriptor[];
7
+ commandGroups: ExtensionCommandGroupSpec[];
8
+ watchSourceKinds: string[];
9
+ sdkVersion: string;
10
+ }
11
+ export declare function defaultExtensionDescribeProcess(): ExtensionDescribeProcess;
12
+ export declare function runExtensionDescribeMode(describeProcess: ExtensionDescribeProcess, describe: () => DescribePayload): boolean;
13
+ export declare function cloneExtensionToolDescriptors(tools: Iterable<RegisteredTool>): ExtensionToolRuntimeDescriptor[];
14
+ export declare function buildExtensionDescribePayload(input: ExtensionDescribeInput): DescribePayload;
15
+ export {};
16
+ //# sourceMappingURL=extension-describe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-describe.d.ts","sourceRoot":"","sources":["../../src/extension-describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,UAAU,sBAAsB;IAC9B,UAAU,EAAE,mBAAmB,CAAC;IAChC,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACxC,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAC3C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,+BAA+B,IAAI,wBAAwB,CAQ1E;AAED,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,wBAAwB,EACzC,QAAQ,EAAE,MAAM,eAAe,GAC9B,OAAO,CAOT;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,GAC9B,8BAA8B,EAAE,CAclC;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,sBAAsB,GAAG,eAAe,CA+B5F"}
@@ -0,0 +1,4 @@
1
+ import type { InitializeRequest } from "./types.js";
2
+ export declare function parseInitializeRequest(params: unknown): InitializeRequest;
3
+ export declare function validateProtocolVersion(request: InitializeRequest): void;
4
+ //# sourceMappingURL=extension-initialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-initialize.d.ts","sourceRoot":"","sources":["../../src/extension-initialize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAkDzE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAWxE"}
@@ -0,0 +1,14 @@
1
+ import type { HostAPIMethod, ExtensionToolCallRequest, JSONValue, ShutdownRequest, ToolID, ToolResult } from "./types.js";
2
+ import { ToolExecutionError } from "./errors.js";
3
+ export declare function normalizeStringList(values: readonly string[] | undefined): string[];
4
+ export declare function normalizeHostMethodList(values: readonly HostAPIMethod[] | undefined): HostAPIMethod[];
5
+ export declare function implementedExtensionMethods(userMethods: Iterable<string>, hasTools: boolean, watchMethods: readonly string[]): string[];
6
+ export declare function transportMethods(userMethods: Iterable<string>, hasTools: boolean): string[];
7
+ export declare function ensureSubset(label: string, requested: string[], granted: readonly string[]): void;
8
+ export declare function parseShutdownRequest(params: unknown): ShutdownRequest;
9
+ export declare function parseToolCallRequest(params: unknown): ExtensionToolCallRequest;
10
+ export declare function normalizeToolResult(value: ToolResult | JSONValue | string | void): ToolResult;
11
+ export declare function toolExecutionError(error: unknown, call: ExtensionToolCallRequest, sensitiveInputFields: string[]): ToolExecutionError;
12
+ export declare function normalizeSchema(value: JSONValue, field: string): JSONValue;
13
+ export declare function canonicalExtensionToolID(extensionName: string, handler: string): ToolID;
14
+ //# sourceMappingURL=extension-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-runtime.d.ts","sourceRoot":"","sources":["../../src/extension-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,EACxB,SAAS,EACT,eAAe,EACf,MAAM,EACN,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAA6C,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAI5F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAEnF;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,GAC3C,aAAa,EAAE,CAEjB;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,EAAE,CAOV;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAO3F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAUjG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CAYrE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,wBAAwB,CAqB9E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,UAAU,CAkB7F;AA2BD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,wBAAwB,EAC9B,oBAAoB,EAAE,MAAM,EAAE,GAC7B,kBAAkB,CAiBpB;AAwED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAK1E;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvF"}
@@ -0,0 +1,4 @@
1
+ import type { ExtensionToolContext } from "./extension-contract.js";
2
+ import type { ExtensionToolCallRequest, JSONValue } from "./types.js";
3
+ export declare function makeExtensionToolContext<TInput = JSONValue>(call: ExtensionToolCallRequest, context: ExtensionToolContext["context"]): ExtensionToolContext<TInput>;
4
+ //# sourceMappingURL=extension-tool-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-tool-context.d.ts","sourceRoot":"","sources":["../../src/extension-tool-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAoB,wBAAwB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExF,wBAAgB,wBAAwB,CAAC,MAAM,GAAG,SAAS,EACzD,IAAI,EAAE,wBAAwB,EAC9B,OAAO,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACvC,oBAAoB,CAAC,MAAM,CAAC,CAuB9B"}
@@ -0,0 +1,3 @@
1
+ import type { ExtensionToolHandler, ExtensionToolOptions, RegisteredTool } from "./extension-contract.js";
2
+ export declare function buildRegisteredTool<TInput>(extensionName: string, handler: string, options: ExtensionToolOptions, toolHandler: ExtensionToolHandler<TInput>): RegisteredTool;
3
+ //# sourceMappingURL=extension-tool-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-tool-registration.d.ts","sourceRoot":"","sources":["../../src/extension-tool-registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACf,MAAM,yBAAyB,CAAC;AASjC,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,EAC7B,WAAW,EAAE,oBAAoB,CAAC,MAAM,CAAC,GACxC,cAAc,CAqChB"}
@@ -0,0 +1,55 @@
1
+ import type { TransportLike } from "./transport.js";
2
+ import { type ExtensionWatchSourceHandler, type ExtensionWatchSourceOptions } from "./watch-source.js";
3
+ import { HostAPI } from "./host-api.js";
4
+ import type { ExtensionDefinition, HookEvent, ExtensionToolRuntimeDescriptor, JSONValue } from "./types.js";
5
+ import type { ExtensionHandler, ExtensionOptions, ExtensionToolHandler, ExtensionToolOptions, ReadyCallback } from "./extension-contract.js";
6
+ export declare class Extension {
7
+ readonly definition: ExtensionDefinition;
8
+ private transport;
9
+ private readonly stderr;
10
+ private readonly sdkVersion;
11
+ private readonly describeProcess;
12
+ private readonly handlers;
13
+ private readonly toolHandlers;
14
+ private readonly commandGroups;
15
+ private readonly watchSources;
16
+ private readonly readyCallbacks;
17
+ private readonly transportBindings;
18
+ private readonly host;
19
+ private initialized;
20
+ private shutdownStarted;
21
+ private shutdownDeadlineMS;
22
+ private session;
23
+ private startPromise;
24
+ private resolveStart;
25
+ private rejectStart;
26
+ constructor(definition: ExtensionDefinition, options?: ExtensionOptions);
27
+ bindTransport(transport: TransportLike): this;
28
+ handle<TParams = unknown, TResult = unknown>(method: string, handler: ExtensionHandler<TParams, TResult>): this;
29
+ tool<TInput = unknown>(handler: string, options: ExtensionToolOptions, toolHandler: ExtensionToolHandler<TInput>): this;
30
+ watchSource<TSpec extends JSONValue = JSONValue>(kind: string, options: ExtensionWatchSourceOptions, handler: ExtensionWatchSourceHandler<TSpec>): this;
31
+ commandGroup(path: string, summary: string): this;
32
+ onReady(callback: ReadyCallback): this;
33
+ start(): Promise<HostAPI>;
34
+ getImplementedMethods(): string[];
35
+ getSupportedHookEvents(): HookEvent[];
36
+ getToolDescriptors(): ExtensionToolRuntimeDescriptor[];
37
+ describe(): import("./types.js").DescribePayload;
38
+ private bindTransportHandlers;
39
+ private bindMethod;
40
+ private dispatch;
41
+ private handleInitialize;
42
+ private finishInitialization;
43
+ private runReadyCallback;
44
+ private handleHealthCheck;
45
+ private handleShutdown;
46
+ private handleProvideTools;
47
+ private handleToolCall;
48
+ private handleUserMethod;
49
+ private makeContext;
50
+ private logError;
51
+ private ensureToolProviderCapability;
52
+ private ensureToolProviderHandlers;
53
+ }
54
+ export type { ExtensionContext, ExtensionDescribeProcess, ExtensionHandler, ExtensionOptions, ExtensionSession, ExtensionToolContext, ExtensionToolHandler, ExtensionToolOptions, } from "./extension-contract.js";
55
+ //# sourceMappingURL=extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"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"}