@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,51 @@
1
+ import { Extension } from "../extension.js";
2
+ import type { ExtensionDescribeProcess } from "../extension-contract.js";
3
+ import type { InitializeRequest, InitializeResponse, InitializeRuntime } from "../types.js";
4
+ import { MockTransport } from "./mock-transport.js";
5
+ export interface HarnessLoadOptions {
6
+ sourceTier?: "bundled" | "user" | "workspace" | "marketplace";
7
+ provides?: string[];
8
+ grantedPermissions?: string[];
9
+ grantedResourceKinds?: string[];
10
+ grantedResourceScopes?: ("global" | "workspace")[];
11
+ sessionNonce?: string;
12
+ daemonRequests?: string[];
13
+ extensionServices?: string[];
14
+ compozyVersion?: string;
15
+ runtime?: Partial<InitializeRuntime>;
16
+ }
17
+ export interface ExtensionFactoryOptions {
18
+ transport?: MockTransport;
19
+ stderr?: NodeJS.WritableStream;
20
+ }
21
+ type ExtensionFactory = Extension | ((options: ExtensionFactoryOptions) => Extension | Promise<Extension>);
22
+ export declare class TestHarness {
23
+ private readonly mockedHostHandlers;
24
+ private readonly stderr;
25
+ private hostTransport;
26
+ private extensionTransport;
27
+ private extension;
28
+ private initializeRequest;
29
+ private initializeResponse;
30
+ private describeStdout;
31
+ private describeExitCode;
32
+ constructor(options?: {
33
+ stderr?: NodeJS.WritableStream;
34
+ });
35
+ mockHostAPI<TResult = unknown>(method: string, handler: (params: unknown) => TResult | Promise<TResult>): this;
36
+ loadExtension(target: string | ExtensionFactory, options?: HarnessLoadOptions): Promise<Extension>;
37
+ call<TResult = unknown>(method: string, params?: unknown): Promise<TResult>;
38
+ getLastInitializeRequest(): InitializeRequest | undefined;
39
+ getLastInitializeResponse(): InitializeResponse | undefined;
40
+ getHostTransport(): MockTransport;
41
+ captureDescribeProcess(argv?: readonly string[]): ExtensionDescribeProcess;
42
+ getDescribeResult(): {
43
+ stdout: string;
44
+ exitCode: number | undefined;
45
+ };
46
+ private bindMockedHostHandler;
47
+ private resolveExtension;
48
+ private buildInitializeRequest;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../src/testing/harness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,KAAK,EAGV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAChC;AAED,KAAK,gBAAgB,GACjB,SAAS,GACT,CAAC,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAiB3E,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAG/B;IACJ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,gBAAgB,CAAqB;IAE7C,YAAmB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;KAAO,EAElE;IAEM,WAAW,CAAC,OAAO,GAAG,OAAO,EAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GACvD,IAAI,CAIN;IAEY,aAAa,CACxB,MAAM,EAAE,MAAM,GAAG,gBAAgB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC,CA4BpB;IAEY,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAKvF;IAEM,wBAAwB,IAAI,iBAAiB,GAAG,SAAS,CAE/D;IAEM,yBAAyB,IAAI,kBAAkB,GAAG,SAAS,CAEjE;IAEM,gBAAgB,IAAI,aAAa,CAKvC;IAEM,sBAAsB,CAC3B,IAAI,GAAE,SAAS,MAAM,EAAgC,GACpD,wBAAwB,CAe1B;IAEM,iBAAiB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAE3E;IAED,OAAO,CAAC,qBAAqB;YAUf,gBAAgB;IA+B9B,OAAO,CAAC,sBAAsB;CAyC/B"}
@@ -0,0 +1,4 @@
1
+ export { TestHarness } from "./harness.js";
2
+ export { publicProvideFixtures, validateProvideConformance, type ProvideFixture, } from "./conformance.js";
3
+ export { MockTransport, createMockTransportPair } from "./mock-transport.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { JSONRPCID } from "../types.js";
2
+ import type { TransportHandler, TransportLike } from "../transport.js";
3
+ interface RecordedRequest {
4
+ id: JSONRPCID;
5
+ method: string;
6
+ params: unknown;
7
+ }
8
+ export declare class MockTransport implements TransportLike {
9
+ private readonly handlers;
10
+ private readonly errors;
11
+ private nextID;
12
+ private started;
13
+ private closed;
14
+ private peer;
15
+ readonly requests: RecordedRequest[];
16
+ connect(peer: MockTransport): void;
17
+ start(): void;
18
+ handle(method: string, handler: TransportHandler): void;
19
+ onTransportError(listener: (error: Error) => void): () => void;
20
+ close(): Promise<void>;
21
+ call<TResult = unknown>(method: string, params?: unknown): Promise<TResult>;
22
+ }
23
+ export declare function createMockTransportPair(): {
24
+ host: MockTransport;
25
+ extension: MockTransport;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=mock-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-transport.d.ts","sourceRoot":"","sources":["../../../src/testing/mock-transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEvE,UAAU,eAAe;IACvB,EAAE,EAAE,SAAS,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAA4B;IAExC,SAAgB,QAAQ,EAAE,eAAe,EAAE,CAAM;IAE1C,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAExC;IAEM,KAAK,IAAI,IAAI,CAEnB;IAEM,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAE7D;IAEM,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAKpE;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAElC;IAEY,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoCvF;CACF;AAED,wBAAgB,uBAAuB,IAAI;IACzC,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,aAAa,CAAC;CAC1B,CAMA"}
@@ -0,0 +1,55 @@
1
+ import type { Readable, Writable } from "node:stream";
2
+ import type { JSONRPCRequestEnvelope } from "./types.js";
3
+ export declare const DEFAULT_MAX_MESSAGE_BYTES: number;
4
+ export declare const JSON_RPC_VERSION = "2.0";
5
+ export type TransportHandler = (params: unknown, request: JSONRPCRequestEnvelope) => Promise<unknown> | unknown;
6
+ export interface TransportLike {
7
+ call<TResult = unknown>(method: string, params?: unknown): Promise<TResult>;
8
+ handle(method: string, handler: TransportHandler): void;
9
+ onTransportError(listener: (error: Error) => void): () => void;
10
+ start(): void;
11
+ close(): Promise<void>;
12
+ }
13
+ interface StdioTransportOptions {
14
+ input?: Readable;
15
+ output?: Writable;
16
+ maxMessageBytes?: number;
17
+ }
18
+ export declare class StdioTransport implements TransportLike {
19
+ private readonly input;
20
+ private readonly output;
21
+ private readonly maxMessageBytes;
22
+ private readonly handlers;
23
+ private readonly pending;
24
+ private readonly errorListeners;
25
+ private readBuffer;
26
+ private nextID;
27
+ private started;
28
+ private closed;
29
+ private readonly onDataBound;
30
+ private readonly onErrorBound;
31
+ private readonly onEndBound;
32
+ constructor(options?: StdioTransportOptions);
33
+ start(): void;
34
+ handle(method: string, handler: TransportHandler): void;
35
+ onTransportError(listener: (error: Error) => void): () => void;
36
+ close(): Promise<void>;
37
+ call<TResult = unknown>(method: string, params?: unknown): Promise<TResult>;
38
+ private handleChunk;
39
+ private processLine;
40
+ private dispatchRequest;
41
+ private dispatchResponse;
42
+ private sendResult;
43
+ private sendError;
44
+ private writeFrame;
45
+ private fail;
46
+ }
47
+ export declare class NotReadyTransport implements TransportLike {
48
+ handle(): void;
49
+ onTransportError(): () => void;
50
+ start(): void;
51
+ close(): Promise<void>;
52
+ call(_method?: string, _params?: unknown): Promise<never>;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAUtD,OAAO,KAAK,EAAa,sBAAsB,EAA2B,MAAM,YAAY,CAAC;AAE7F,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAC1D,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG,CAC7B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxD,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAOD,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4BD,qBAAa,cAAe,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,YAAmB,OAAO,GAAE,qBAA0B,EAarD;IAEM,KAAK,IAAI,IAAI,CASnB;IAEM,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAE7D;IAEM,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAKpE;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAKlC;IAEY,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBvF;IAED,OAAO,CAAC,WAAW;IAsCnB,OAAO,CAAC,WAAW;YA8BL,eAAe;IAe7B,OAAO,CAAC,gBAAgB;YAeV,UAAU;YAQV,SAAS;IASvB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,IAAI;CAoBb;AAED,qBAAa,iBAAkB,YAAW,aAAa;IAC9C,MAAM,IAAI,IAAI,CAAG;IACjB,gBAAgB,IAAI,MAAM,IAAI,CAEpC;IACM,KAAK,IAAI,IAAI,CAAG;IACV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAG;IACzB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAErE;CACF"}
@@ -0,0 +1,114 @@
1
+ import type { JSONValue } from "./base-types.js";
2
+ import type { HookEvent, HookExecutorKind, HookMatcher, HookMode, HookPatchByEvent, HookPayloadByEvent, HostAPIMethod, DescribeSubprocess, ExtensionCommandGroupSpec, ExtensionCommandSpec, RiskClass, SourceKind, ToolID, ToolsetID, Visibility } from "./generated/contracts.js";
3
+ export * from "./base-types.js";
4
+ export * from "./generated/contracts.js";
5
+ export type ToolSource = SourceKind;
6
+ export type ExtensionSourceTier = "bundled" | "user" | "workspace" | "marketplace";
7
+ export interface HookExecutorConfig {
8
+ kind?: HookExecutorKind;
9
+ command?: string;
10
+ args?: string[];
11
+ env?: Record<string, string>;
12
+ }
13
+ export interface HookConfig {
14
+ name: string;
15
+ event: HookEvent;
16
+ mode?: HookMode;
17
+ required?: boolean;
18
+ priority?: number;
19
+ timeout?: string;
20
+ matcher?: HookMatcher;
21
+ command?: string;
22
+ args?: string[];
23
+ env?: Record<string, string>;
24
+ executor?: HookExecutorConfig;
25
+ }
26
+ export interface MCPServerConfig {
27
+ command: string;
28
+ args?: string[];
29
+ env?: Record<string, string>;
30
+ }
31
+ export interface ToolConfig {
32
+ id?: ToolID;
33
+ display_title?: string;
34
+ description?: string;
35
+ input_schema?: JSONValue;
36
+ output_schema?: JSONValue;
37
+ handler?: string;
38
+ backend?: {
39
+ kind?: "extension_host" | "mcp";
40
+ handler?: string;
41
+ server?: string;
42
+ tool?: string;
43
+ };
44
+ visibility?: Visibility;
45
+ risk?: RiskClass;
46
+ read_only?: boolean;
47
+ destructive?: boolean;
48
+ open_world?: boolean;
49
+ requires_interaction?: boolean;
50
+ concurrency_safe?: boolean;
51
+ max_result_bytes?: number;
52
+ toolsets?: ToolsetID[];
53
+ tags?: string[];
54
+ search_hints?: string[];
55
+ required_capabilities?: string[];
56
+ command?: ExtensionCommandSpec;
57
+ }
58
+ export interface ResourcesConfig {
59
+ skills?: string[];
60
+ agents?: string[];
61
+ hooks?: HookConfig[];
62
+ tools?: Record<string, ToolConfig>;
63
+ command_groups?: ExtensionCommandGroupSpec[];
64
+ mcp_servers?: Record<string, MCPServerConfig>;
65
+ }
66
+ export interface CapabilitiesConfig {
67
+ provides?: string[];
68
+ }
69
+ export interface PermissionsConfig {
70
+ requires?: HostAPIMethod[];
71
+ }
72
+ export interface SubprocessConfig {
73
+ command?: string;
74
+ args?: string[];
75
+ env?: Record<string, string>;
76
+ health_check_interval?: string;
77
+ shutdown_timeout?: string;
78
+ }
79
+ export interface ExtensionManifest {
80
+ name: string;
81
+ version: string;
82
+ description?: string;
83
+ min_compozy_version?: string;
84
+ resources?: ResourcesConfig;
85
+ capabilities?: CapabilitiesConfig;
86
+ permissions?: PermissionsConfig;
87
+ subprocess?: SubprocessConfig;
88
+ }
89
+ export interface ExtensionDefinition extends Pick<ExtensionManifest, "name" | "version" | "description" | "capabilities" | "permissions"> {
90
+ requires_env?: string[];
91
+ subprocess?: DescribeSubprocess;
92
+ supported_hook_events?: HookEvent[];
93
+ }
94
+ export interface HealthCheckResult {
95
+ healthy: boolean;
96
+ message?: string;
97
+ details?: Record<string, JSONValue>;
98
+ }
99
+ export interface HookInvocation<TEvent extends HookEvent = HookEvent> {
100
+ name: string;
101
+ event: TEvent;
102
+ mode: HookMode;
103
+ required: boolean;
104
+ timeout_ms: number;
105
+ source: string;
106
+ metadata?: Record<string, string>;
107
+ }
108
+ export interface ExecuteHookParams<TEvent extends HookEvent = HookEvent> {
109
+ invocation_id: string;
110
+ hook: HookInvocation<TEvent>;
111
+ payload: HookPayloadByEvent[TEvent];
112
+ }
113
+ export type ExecuteHookResult<TEvent extends HookEvent = HookEvent> = HookPatchByEvent[TEvent];
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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"}
@@ -0,0 +1,57 @@
1
+ import type { HostAPI } from "./host-api.js";
2
+ import type { ExtensionContext, ExtensionSession } from "./extension.js";
3
+ import type { ExtensionDefinition, JSONRPCRequestEnvelope, JSONValue } from "./types.js";
4
+ export declare const WATCH_SOURCE_CAPABILITY = "loop.watch_source";
5
+ export declare const WATCH_POLL_METHOD = "watch/poll";
6
+ export interface ExtensionWatchSourceOptions {
7
+ }
8
+ export interface WatchPollRequest {
9
+ spec: JSONValue;
10
+ expected_state_digest?: string;
11
+ }
12
+ export interface WatchPollResponse {
13
+ ready: boolean;
14
+ state_digest?: string;
15
+ payload?: JSONValue;
16
+ settled_at?: string;
17
+ }
18
+ export interface ExtensionWatchSourceContext<TSpec extends JSONValue = JSONValue> {
19
+ readonly kind: string;
20
+ readonly spec: TSpec;
21
+ readonly expectedStateDigest?: string;
22
+ readonly context: ExtensionContext;
23
+ readonly host: HostAPI;
24
+ readonly session: ExtensionSession;
25
+ }
26
+ export type ExtensionWatchSourceHandler<TSpec extends JSONValue = JSONValue> = (request: ExtensionWatchSourceContext<TSpec>) => Promise<WatchPollResponse> | WatchPollResponse;
27
+ export interface RegisteredWatchSource {
28
+ kind: string;
29
+ handler: ExtensionWatchSourceHandler;
30
+ }
31
+ interface ExtensionWatchSourcesOptions {
32
+ bindMethod: (method: string) => void;
33
+ hasUserHandler: (method: string) => boolean;
34
+ makeContext: (request: JSONRPCRequestEnvelope) => ExtensionContext;
35
+ }
36
+ export declare class ExtensionWatchSources {
37
+ private readonly options;
38
+ private readonly handlers;
39
+ constructor(options: ExtensionWatchSourcesOptions);
40
+ register<TSpec extends JSONValue = JSONValue>(definition: ExtensionDefinition, kind: string, _registerOptions: ExtensionWatchSourceOptions, handler: ExtensionWatchSourceHandler<TSpec>): void;
41
+ hasHandlers(): boolean;
42
+ implementedMethods(): string[];
43
+ bindMethods(): void;
44
+ kinds(): string[];
45
+ initializeResponseFields(): {
46
+ watch_source_kinds?: string[];
47
+ };
48
+ handlePoll(request: JSONRPCRequestEnvelope, params: unknown): Promise<WatchPollResponse>;
49
+ private ensureCapability;
50
+ }
51
+ export declare function isWatchSourceMethod(method: string): boolean;
52
+ export declare function parseWatchPollRequest(params: unknown): WatchPollRequest & {
53
+ kind: string;
54
+ };
55
+ export declare function normalizeWatchPollResponse(response: WatchPollResponse): WatchPollResponse;
56
+ export {};
57
+ //# sourceMappingURL=watch-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch-source.d.ts","sourceRoot":"","sources":["../../src/watch-source.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzF,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C,MAAM,WAAW,2BAA2B;CAAG;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,MAAM,2BAA2B,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,IAAI,CAC7E,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,KACxC,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,2BAA2B,CAAC;CACtC;AAED,UAAU,4BAA4B;IACpC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,WAAW,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,gBAAgB,CAAC;CACpE;AAED,qBAAa,qBAAqB;IAGb,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IAErE,YAAoC,OAAO,EAAE,4BAA4B,EAAI;IAEtE,QAAQ,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,EACjD,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,2BAA2B,EAC7C,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAC1C,IAAI,CAiBN;IAEM,WAAW,IAAI,OAAO,CAE5B;IAEM,kBAAkB,IAAI,MAAM,EAAE,CAEpC;IAEM,WAAW,IAAI,IAAI,CAIzB;IAEM,KAAK,IAAI,MAAM,EAAE,CAEvB;IAEM,wBAAwB,IAAI;QAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAEnE;IAEY,UAAU,CACrB,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,iBAAiB,CAAC,CAiB5B;IAED,OAAO,CAAC,gBAAgB;CAQzB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAyB1F;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAmBzF"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@compozy/extension-sdk",
3
+ "version": "0.3.0-beta.3",
4
+ "private": false,
5
+ "description": "TypeScript SDK for building Compozy subprocess extensions",
6
+ "homepage": "https://compozy.com",
7
+ "bugs": "https://github.com/compozy/compozy/issues",
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/compozy/compozy.git",
12
+ "directory": "sdk/typescript"
13
+ },
14
+ "files": [
15
+ "dist/**/*"
16
+ ],
17
+ "sideEffects": false,
18
+ "main": "./dist/cjs/index.js",
19
+ "module": "./dist/esm/index.js",
20
+ "types": "./dist/types/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/types/index.d.ts",
24
+ "require": "./dist/cjs/index.js",
25
+ "import": "./dist/esm/index.js"
26
+ },
27
+ "./testing": {
28
+ "types": "./dist/types/testing/index.d.ts",
29
+ "require": "./dist/cjs/testing/index.js",
30
+ "import": "./dist/esm/testing/index.js"
31
+ },
32
+ "./package.json": "./package.json"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public",
36
+ "provenance": true,
37
+ "registry": "https://registry.npmjs.org"
38
+ },
39
+ "scripts": {
40
+ "codegen-check": "bun run --cwd ../.. codegen-check",
41
+ "build": "rm -rf dist && tsc -p tsconfig.types.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node ./scripts/postbuild.mjs",
42
+ "typecheck": "node ../../node_modules/@typescript/native/bin/tsc -p tsconfig.json --noEmit",
43
+ "test": "vitest run --config vitest.config.ts",
44
+ "coverage": "vitest run --config vitest.config.ts --coverage"
45
+ },
46
+ "engines": {
47
+ "node": ">=18"
48
+ }
49
+ }