@slopus/rig-codemode-codex 0.0.0-bootstrap.0 → 0.1.0-darwin-arm64

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 (83) hide show
  1. package/SHA256SUMS +1 -0
  2. package/package.json +18 -29
  3. package/vendor/aarch64-apple-darwin/bin/codex-code-mode-host +0 -0
  4. package/dist/CodeMode.d.ts +0 -13
  5. package/dist/CodeMode.d.ts.map +0 -1
  6. package/dist/CodeMode.js +0 -64
  7. package/dist/CodeMode.js.map +0 -1
  8. package/dist/CodeModeHostCommand.d.ts +0 -15
  9. package/dist/CodeModeHostCommand.d.ts.map +0 -1
  10. package/dist/CodeModeHostCommand.js +0 -2
  11. package/dist/CodeModeHostCommand.js.map +0 -1
  12. package/dist/CodeModeSession.d.ts +0 -38
  13. package/dist/CodeModeSession.d.ts.map +0 -1
  14. package/dist/CodeModeSession.js +0 -207
  15. package/dist/CodeModeSession.js.map +0 -1
  16. package/dist/Deferred.d.ts +0 -7
  17. package/dist/Deferred.d.ts.map +0 -1
  18. package/dist/Deferred.js +0 -12
  19. package/dist/Deferred.js.map +0 -1
  20. package/dist/FramedProcess.d.ts +0 -21
  21. package/dist/FramedProcess.d.ts.map +0 -1
  22. package/dist/FramedProcess.js +0 -125
  23. package/dist/FramedProcess.js.map +0 -1
  24. package/dist/HostClient.d.ts +0 -41
  25. package/dist/HostClient.d.ts.map +0 -1
  26. package/dist/HostClient.js +0 -261
  27. package/dist/HostClient.js.map +0 -1
  28. package/dist/assertJsonValue.d.ts +0 -3
  29. package/dist/assertJsonValue.d.ts.map +0 -1
  30. package/dist/assertJsonValue.js +0 -39
  31. package/dist/assertJsonValue.js.map +0 -1
  32. package/dist/createCodeMode.d.ts +0 -4
  33. package/dist/createCodeMode.d.ts.map +0 -1
  34. package/dist/createCodeMode.js +0 -5
  35. package/dist/createCodeMode.js.map +0 -1
  36. package/dist/createCodeModeHostCommand.d.ts +0 -3
  37. package/dist/createCodeModeHostCommand.d.ts.map +0 -1
  38. package/dist/createCodeModeHostCommand.js +0 -22
  39. package/dist/createCodeModeHostCommand.js.map +0 -1
  40. package/dist/createLinuxSandboxCommand.d.ts +0 -3
  41. package/dist/createLinuxSandboxCommand.d.ts.map +0 -1
  42. package/dist/createLinuxSandboxCommand.js +0 -27
  43. package/dist/createLinuxSandboxCommand.js.map +0 -1
  44. package/dist/createMacOsSandboxCommand.d.ts +0 -3
  45. package/dist/createMacOsSandboxCommand.d.ts.map +0 -1
  46. package/dist/createMacOsSandboxCommand.js +0 -9
  47. package/dist/createMacOsSandboxCommand.js.map +0 -1
  48. package/dist/createMacOsSandboxProfile.d.ts +0 -2
  49. package/dist/createMacOsSandboxProfile.d.ts.map +0 -1
  50. package/dist/createMacOsSandboxProfile.js +0 -50
  51. package/dist/createMacOsSandboxProfile.js.map +0 -1
  52. package/dist/index.d.ts +0 -7
  53. package/dist/index.d.ts.map +0 -1
  54. package/dist/index.js +0 -6
  55. package/dist/index.js.map +0 -1
  56. package/dist/platform.d.ts +0 -46
  57. package/dist/platform.d.ts.map +0 -1
  58. package/dist/platform.js +0 -45
  59. package/dist/platform.js.map +0 -1
  60. package/dist/protocol.d.ts +0 -113
  61. package/dist/protocol.d.ts.map +0 -1
  62. package/dist/protocol.js +0 -2
  63. package/dist/protocol.js.map +0 -1
  64. package/dist/resolveCodeModeBinary.d.ts +0 -2
  65. package/dist/resolveCodeModeBinary.d.ts.map +0 -1
  66. package/dist/resolveCodeModeBinary.js +0 -44
  67. package/dist/resolveCodeModeBinary.js.map +0 -1
  68. package/dist/resolveCodeModeSandboxExecutable.d.ts +0 -2
  69. package/dist/resolveCodeModeSandboxExecutable.d.ts.map +0 -1
  70. package/dist/resolveCodeModeSandboxExecutable.js +0 -28
  71. package/dist/resolveCodeModeSandboxExecutable.js.map +0 -1
  72. package/dist/runCode.d.ts +0 -3
  73. package/dist/runCode.d.ts.map +0 -1
  74. package/dist/runCode.js +0 -22
  75. package/dist/runCode.js.map +0 -1
  76. package/dist/toCodeModeResponse.d.ts +0 -4
  77. package/dist/toCodeModeResponse.d.ts.map +0 -1
  78. package/dist/toCodeModeResponse.js +0 -26
  79. package/dist/toCodeModeResponse.js.map +0 -1
  80. package/dist/types.d.ts +0 -79
  81. package/dist/types.d.ts.map +0 -1
  82. package/dist/types.js +0 -2
  83. package/dist/types.js.map +0 -1
package/SHA256SUMS ADDED
@@ -0,0 +1 @@
1
+ 63610f136cc4b8cfde87a58fe8ffbe3dbfe0af7de37b959695ec9947142f4ff2 vendor/aarch64-apple-darwin/bin/codex-code-mode-host
package/package.json CHANGED
@@ -1,21 +1,28 @@
1
1
  {
2
2
  "name": "@slopus/rig-codemode-codex",
3
- "version": "0.0.0-bootstrap.0",
4
- "description": "Standalone Node.js API for OpenAI Codex Code Mode.",
5
- "keywords": [
6
- "codex",
7
- "javascript",
8
- "sandbox",
9
- "tool-calling"
10
- ],
3
+ "version": "0.1.0-darwin-arm64",
4
+ "description": "Standalone Node.js API for OpenAI Codex Code Mode. Native binary for darwin-arm64.",
11
5
  "license": "Apache-2.0",
12
6
  "repository": {
13
7
  "type": "git",
14
8
  "url": "git+https://github.com/slopus/rig.git",
15
9
  "directory": "packages/rig-codemode-codex"
16
10
  },
11
+ "engines": {
12
+ "node": ">=20"
13
+ },
14
+ "os": [
15
+ "darwin"
16
+ ],
17
+ "cpu": [
18
+ "arm64"
19
+ ],
20
+ "bin": {
21
+ "codex-code-mode-host": "vendor/aarch64-apple-darwin/bin/codex-code-mode-host"
22
+ },
17
23
  "files": [
18
- "dist",
24
+ "vendor",
25
+ "SHA256SUMS",
19
26
  "LICENSE",
20
27
  "LICENSE-CODEX",
21
28
  "NOTICE-CODEX",
@@ -24,26 +31,8 @@
24
31
  "THIRD-PARTY-NOTICES.md",
25
32
  "UPSTREAM.md"
26
33
  ],
27
- "type": "module",
28
- "exports": {
29
- ".": {
30
- "types": "./dist/index.d.ts",
31
- "import": "./dist/index.js",
32
- "default": "./dist/index.js"
33
- }
34
- },
35
34
  "publishConfig": {
36
- "access": "public"
37
- },
38
- "engines": {
39
- "node": ">=20"
40
- },
41
- "optionalDependencies": {
42
- "@slopus/rig-codemode-codex-darwin-arm64": "npm:@slopus/rig-codemode-codex@0.0.0-bootstrap.0-darwin-arm64",
43
- "@slopus/rig-codemode-codex-darwin-x64": "npm:@slopus/rig-codemode-codex@0.0.0-bootstrap.0-darwin-x64",
44
- "@slopus/rig-codemode-codex-linux-arm64": "npm:@slopus/rig-codemode-codex@0.0.0-bootstrap.0-linux-arm64",
45
- "@slopus/rig-codemode-codex-linux-x64": "npm:@slopus/rig-codemode-codex@0.0.0-bootstrap.0-linux-x64",
46
- "@slopus/rig-codemode-codex-win32-arm64": "npm:@slopus/rig-codemode-codex@0.0.0-bootstrap.0-win32-arm64",
47
- "@slopus/rig-codemode-codex-win32-x64": "npm:@slopus/rig-codemode-codex@0.0.0-bootstrap.0-win32-x64"
35
+ "access": "public",
36
+ "tag": "platform"
48
37
  }
49
38
  }
@@ -1,13 +0,0 @@
1
- import { CodeModeSession } from "./CodeModeSession.js";
2
- import type { CodeModeOptions, CodeModeSessionOptions } from "./types.js";
3
- export declare class CodeMode {
4
- private readonly client;
5
- private closed;
6
- private readonly pendingSessionIds;
7
- private readonly sessions;
8
- private constructor();
9
- static create(options?: CodeModeOptions): Promise<CodeMode>;
10
- createSession(options?: CodeModeSessionOptions): Promise<CodeModeSession>;
11
- close(): Promise<void>;
12
- }
13
- //# sourceMappingURL=CodeMode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeMode.d.ts","sourceRoot":"","sources":["../sources/CodeMode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE1E,qBAAa,QAAQ;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAE/D,OAAO;WAkBM,MAAM,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM/D,aAAa,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,eAAe,CAAC;IA4B7E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAe/B"}
package/dist/CodeMode.js DELETED
@@ -1,64 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { CodeModeSession } from "./CodeModeSession.js";
3
- import { HostClient } from "./HostClient.js";
4
- import { resolveCodeModeBinary } from "./resolveCodeModeBinary.js";
5
- export class CodeMode {
6
- client;
7
- closed = false;
8
- pendingSessionIds = new Set();
9
- sessions = new Map();
10
- constructor(options) {
11
- this.client = new HostClient(resolveCodeModeBinary(options.binaryPath), options.env, options.sandbox ?? "auto", async (message, signal) => {
12
- const session = this.sessions.get(message.sessionId);
13
- if (session === undefined) {
14
- throw new Error(`Code Mode requested a delegate for unknown session ${message.sessionId}.`);
15
- }
16
- return session.handleDelegate(message, signal);
17
- }, (sessionId, cellId) => this.sessions.get(sessionId)?.handleCellClosed(cellId));
18
- }
19
- static async create(options = {}) {
20
- const codeMode = new CodeMode(options);
21
- await codeMode.client.connect();
22
- return codeMode;
23
- }
24
- async createSession(options = {}) {
25
- if (this.closed) {
26
- throw new Error("Code Mode host is closed.");
27
- }
28
- const sessionId = options.sessionId ?? `session-${randomUUID()}`;
29
- if (this.sessions.has(sessionId) || this.pendingSessionIds.has(sessionId)) {
30
- throw new Error(`Code Mode session ${sessionId} is already open.`);
31
- }
32
- this.pendingSessionIds.add(sessionId);
33
- try {
34
- const response = await this.client.openSession(sessionId);
35
- if (response.type !== "session/ready") {
36
- throw new Error(`Expected session/ready, received ${response.type}.`);
37
- }
38
- if (this.closed) {
39
- await this.client.shutdownSession(sessionId).catch(() => undefined);
40
- throw new Error("Code Mode host is closed.");
41
- }
42
- const session = new CodeModeSession(this.client, sessionId, options, () => this.sessions.delete(sessionId));
43
- this.sessions.set(sessionId, session);
44
- return session;
45
- }
46
- finally {
47
- this.pendingSessionIds.delete(sessionId);
48
- }
49
- }
50
- async close() {
51
- if (this.closed) {
52
- return;
53
- }
54
- this.closed = true;
55
- const sessions = [...this.sessions.values()];
56
- const results = await Promise.allSettled(sessions.map((session) => session.close()));
57
- await this.client.close();
58
- const failure = results.find((result) => result.status === "rejected");
59
- if (failure !== undefined) {
60
- throw failure.reason;
61
- }
62
- }
63
- }
64
- //# sourceMappingURL=CodeMode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeMode.js","sourceRoot":"","sources":["../sources/CodeMode.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { CodeModeSandboxMode } from "./types.js";
2
- export interface CodeModeHostCommand {
3
- readonly args: readonly string[];
4
- readonly command: string;
5
- readonly cwd?: string;
6
- }
7
- export interface CreateCodeModeHostCommandOptions {
8
- readonly binaryPath: string;
9
- readonly env: NodeJS.ProcessEnv;
10
- readonly platform?: NodeJS.Platform;
11
- readonly resolveSandboxExecutable?: (platform: NodeJS.Platform, env: NodeJS.ProcessEnv) => string | undefined;
12
- readonly sandbox: CodeModeSandboxMode;
13
- readonly systemPathExists?: (path: string) => boolean;
14
- }
15
- //# sourceMappingURL=CodeModeHostCommand.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeModeHostCommand.d.ts","sourceRoot":"","sources":["../sources/CodeModeHostCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,KACrB,MAAM,GAAG,SAAS,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACzD"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=CodeModeHostCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeModeHostCommand.js","sourceRoot":"","sources":["../sources/CodeModeHostCommand.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import type { HostClient } from "./HostClient.js";
2
- import type { HostMessage } from "./protocol.js";
3
- import type { CodeModeRunOptions, CodeModeRunResult, CodeModeSessionOptions, CodeModeResponse, JsonValue } from "./types.js";
4
- type DelegateRequestMessage = Extract<HostMessage, {
5
- readonly type: "delegate/request";
6
- }>;
7
- export declare class CodeModeSession {
8
- private readonly client;
9
- readonly id: string;
10
- private readonly options;
11
- private readonly onClose;
12
- private readonly cellTools;
13
- private closed;
14
- private readonly defaultTools;
15
- constructor(client: HostClient, id: string, options: CodeModeSessionOptions, onClose: () => void);
16
- execute(source: string, options?: CodeModeRunOptions): Promise<CodeModeResponse>;
17
- wait(cellId: string, yieldTimeMs?: number, signal?: AbortSignal): Promise<CodeModeResponse>;
18
- terminate(cellId: string): Promise<CodeModeResponse>;
19
- run(source: string, options?: CodeModeRunOptions): Promise<CodeModeRunResult>;
20
- close(): Promise<void>;
21
- handleDelegate(message: DelegateRequestMessage, signal: AbortSignal): Promise<{
22
- readonly type: "notification/delivered";
23
- } | {
24
- readonly type: "tool/result";
25
- readonly result: JsonValue;
26
- }>;
27
- handleCellClosed(cellId: string): void;
28
- private assertOpen;
29
- private indexTools;
30
- private mergeTools;
31
- private throwIfAborted;
32
- private toolKey;
33
- private toWireTool;
34
- private unwrapWait;
35
- private validateTools;
36
- }
37
- export {};
38
- //# sourceMappingURL=CodeModeSession.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeModeSession.d.ts","sourceRoot":"","sources":["../sources/CodeModeSession.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAuC,MAAM,eAAe,CAAC;AAEtF,OAAO,KAAK,EACR,kBAAkB,EAClB,iBAAiB,EAEjB,sBAAsB,EAGtB,gBAAgB,EAChB,SAAS,EACZ,MAAM,YAAY,CAAC;AAEpB,KAAK,sBAAsB,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAAC;AAE1F,qBAAa,eAAe;IAMpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgD;IAC1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;gBAGlC,MAAM,EAAE,UAAU,EAC1B,EAAE,EAAE,MAAM,EACF,OAAO,EAAE,sBAAsB,EAC/B,OAAO,EAAE,MAAM,IAAI;IAMlC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsCpF,IAAI,CACN,MAAM,EAAE,MAAM,EACd,WAAW,SAAS,EACpB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,gBAAgB,CAAC;IAQtB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKpD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0CjF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,cAAc,CAChB,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,WAAW,GACpB,OAAO,CACJ;QAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAA;KAAE,GAC3C;QAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CACjE;IAkCD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKtC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;CAgBxB"}
@@ -1,207 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { toCodeModeResponse } from "./toCodeModeResponse.js";
3
- export class CodeModeSession {
4
- client;
5
- id;
6
- options;
7
- onClose;
8
- cellTools = new Map();
9
- closed = false;
10
- defaultTools;
11
- constructor(client, id, options, onClose) {
12
- this.client = client;
13
- this.id = id;
14
- this.options = options;
15
- this.onClose = onClose;
16
- this.defaultTools = options.tools ?? [];
17
- this.validateTools(this.defaultTools);
18
- }
19
- async execute(source, options = {}) {
20
- this.assertOpen();
21
- this.throwIfAborted(options.signal);
22
- const tools = this.mergeTools(options.tools);
23
- this.validateTools(tools);
24
- let cellId;
25
- const abort = () => {
26
- if (cellId !== undefined) {
27
- void this.client.terminate(this.id, cellId).catch(() => undefined);
28
- }
29
- };
30
- options.signal?.addEventListener("abort", abort, { once: true });
31
- try {
32
- const response = await this.client.execute(this.id, {
33
- tool_call_id: options.toolCallId ?? randomUUID(),
34
- enabled_tools: tools.map((tool) => this.toWireTool(tool)),
35
- source,
36
- yield_time_ms: options.yieldTimeMs ?? null,
37
- max_output_tokens: null,
38
- }, (startedCellId) => {
39
- cellId = startedCellId;
40
- this.cellTools.set(startedCellId, this.indexTools(tools));
41
- if (options.signal?.aborted === true) {
42
- abort();
43
- }
44
- }, options.signal);
45
- this.throwIfAborted(options.signal);
46
- return toCodeModeResponse(response);
47
- }
48
- finally {
49
- options.signal?.removeEventListener("abort", abort);
50
- }
51
- }
52
- async wait(cellId, yieldTimeMs = 10_000, signal) {
53
- this.assertOpen();
54
- this.throwIfAborted(signal);
55
- const outcome = await this.client.wait(this.id, cellId, yieldTimeMs, signal);
56
- this.throwIfAborted(signal);
57
- return this.unwrapWait(outcome);
58
- }
59
- async terminate(cellId) {
60
- this.assertOpen();
61
- return this.unwrapWait(await this.client.terminate(this.id, cellId));
62
- }
63
- async run(source, options = {}) {
64
- const responses = [];
65
- const contentItems = [];
66
- let response = await this.execute(source, options);
67
- for (;;) {
68
- responses.push(response);
69
- contentItems.push(...response.contentItems);
70
- if (response.state !== "yielded") {
71
- const text = contentItems
72
- .filter((item) => item.type === "input_text")
73
- .map((item) => item.text)
74
- .join("\n");
75
- return response.errorText === undefined
76
- ? {
77
- state: response.state,
78
- cellId: response.cellId,
79
- contentItems,
80
- responses,
81
- text,
82
- }
83
- : {
84
- state: response.state,
85
- cellId: response.cellId,
86
- contentItems,
87
- errorText: response.errorText,
88
- responses,
89
- text,
90
- };
91
- }
92
- response = await this.wait(response.cellId, options.yieldTimeMs ?? 10_000, options.signal);
93
- }
94
- }
95
- async close() {
96
- if (this.closed) {
97
- return;
98
- }
99
- this.closed = true;
100
- try {
101
- const response = await this.client.shutdownSession(this.id);
102
- if (response.type !== "session/closed") {
103
- throw new Error(`Expected session/closed, received ${response.type}.`);
104
- }
105
- }
106
- finally {
107
- this.cellTools.clear();
108
- this.onClose();
109
- }
110
- }
111
- async handleDelegate(message, signal) {
112
- if (message.request.type === "notification/send") {
113
- await this.options.onNotification?.({
114
- callId: message.request.callId,
115
- cellId: message.request.cellId,
116
- text: message.request.text,
117
- });
118
- return { type: "notification/delivered" };
119
- }
120
- const invocation = message.request.invocation;
121
- const tools = this.cellTools.get(invocation.cell_id);
122
- const tool = tools?.get(this.toolKey(invocation.tool_name));
123
- if (tool === undefined) {
124
- throw new Error(`Code Mode requested an unknown tool: ${this.toolKey(invocation.tool_name)}`);
125
- }
126
- const context = {
127
- cellId: invocation.cell_id,
128
- runtimeToolCallId: invocation.runtime_tool_call_id,
129
- signal,
130
- toolKind: invocation.tool_kind,
131
- toolName: invocation.tool_name.namespace === null
132
- ? { name: invocation.tool_name.name }
133
- : {
134
- name: invocation.tool_name.name,
135
- namespace: invocation.tool_name.namespace,
136
- },
137
- };
138
- const result = await tool.execute(invocation.input ?? undefined, context);
139
- return { type: "tool/result", result };
140
- }
141
- handleCellClosed(cellId) {
142
- this.cellTools.delete(cellId);
143
- this.options.onCellClosed?.(cellId);
144
- }
145
- assertOpen() {
146
- if (this.closed) {
147
- throw new Error(`Code Mode session ${this.id} is closed.`);
148
- }
149
- }
150
- indexTools(tools) {
151
- return new Map(tools.map((tool) => [
152
- this.toolKey(tool.toolName ?? { name: tool.name, namespace: null }),
153
- tool,
154
- ]));
155
- }
156
- mergeTools(overrides) {
157
- if (overrides === undefined) {
158
- return this.defaultTools;
159
- }
160
- const merged = new Map(this.defaultTools.map((tool) => [tool.name, tool]));
161
- for (const tool of overrides) {
162
- merged.set(tool.name, tool);
163
- }
164
- return [...merged.values()];
165
- }
166
- throwIfAborted(signal) {
167
- if (signal?.aborted === true) {
168
- throw signal.reason instanceof Error
169
- ? signal.reason
170
- : new DOMException("Code Mode execution aborted.", "AbortError");
171
- }
172
- }
173
- toolKey(toolName) {
174
- return `${toolName.namespace ?? ""}\u0000${toolName.name}`;
175
- }
176
- toWireTool(tool) {
177
- const toolName = tool.toolName ?? { name: tool.name };
178
- return {
179
- name: tool.name,
180
- tool_name: { name: toolName.name, namespace: toolName.namespace ?? null },
181
- description: tool.description ?? "",
182
- kind: tool.kind ?? "function",
183
- input_schema: tool.inputSchema ?? null,
184
- output_schema: tool.outputSchema ?? null,
185
- };
186
- }
187
- unwrapWait(outcome) {
188
- return toCodeModeResponse("LiveCell" in outcome ? outcome.LiveCell : outcome.MissingCell);
189
- }
190
- validateTools(tools) {
191
- const globalNames = new Set();
192
- const toolNames = new Set();
193
- for (const tool of tools) {
194
- if (tool.name.trim() === "") {
195
- throw new Error("Code Mode tool names must not be empty.");
196
- }
197
- if (!globalNames.add(tool.name)) {
198
- throw new Error(`Duplicate Code Mode global tool name: ${tool.name}`);
199
- }
200
- const key = this.toolKey(tool.toolName ?? { name: tool.name });
201
- if (!toolNames.add(key)) {
202
- throw new Error(`Duplicate Code Mode tool identity: ${key.replace("\u0000", "")}`);
203
- }
204
- }
205
- }
206
- }
207
- //# sourceMappingURL=CodeModeSession.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeModeSession.js","sourceRoot":"","sources":["../sources/CodeModeSession.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export declare class Deferred<T> {
2
- readonly promise: Promise<T>;
3
- resolve: (value: T | PromiseLike<T>) => void;
4
- reject: (reason?: unknown) => void;
5
- constructor();
6
- }
7
- //# sourceMappingURL=Deferred.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Deferred.d.ts","sourceRoot":"","sources":["../sources/Deferred.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ,CAAC,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,EAAG,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAG,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;;CAQvC"}
package/dist/Deferred.js DELETED
@@ -1,12 +0,0 @@
1
- export class Deferred {
2
- promise;
3
- resolve;
4
- reject;
5
- constructor() {
6
- this.promise = new Promise((resolve, reject) => {
7
- this.resolve = resolve;
8
- this.reject = reject;
9
- });
10
- }
11
- }
12
- //# sourceMappingURL=Deferred.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Deferred.js","sourceRoot":"","sources":["../sources/Deferred.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAQ;IACR,OAAO,CAAa;IAC7B,OAAO,CAAuC;IAC9C,MAAM,CAA8B;IAEpC;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,21 +0,0 @@
1
- import type { ChildProcessWithoutNullStreams } from "node:child_process";
2
- import { type ClientMessage, type HostMessage } from "./protocol.js";
3
- export declare class FramedProcess {
4
- private readonly child;
5
- private readonly onMessage;
6
- private readonly onFailure;
7
- private buffer;
8
- private closed;
9
- private readonly exitPromise;
10
- private failure;
11
- private stderr;
12
- private writeTail;
13
- constructor(child: ChildProcessWithoutNullStreams, onMessage: (message: HostMessage) => void, onFailure: (error: Error) => void);
14
- send(message: ClientMessage): Promise<void>;
15
- close(): Promise<void>;
16
- kill(): void;
17
- private fail;
18
- private read;
19
- private readStderr;
20
- }
21
- //# sourceMappingURL=FramedProcess.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FramedProcess.d.ts","sourceRoot":"","sources":["../sources/FramedProcess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAItF,qBAAa,aAAa;IASlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAV9B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAqB;gBAGjB,KAAK,EAAE,8BAA8B,EACrC,SAAS,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,EACzC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IA0BtD,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,IAAI;IAyBZ,OAAO,CAAC,UAAU;CAMrB"}
@@ -1,125 +0,0 @@
1
- import { assertJsonValue } from "./assertJsonValue.js";
2
- import { MAX_FRAME_BYTES } from "./protocol.js";
3
- const MAX_STDERR_BYTES = 64 * 1024;
4
- export class FramedProcess {
5
- child;
6
- onMessage;
7
- onFailure;
8
- buffer = Buffer.alloc(0);
9
- closed = false;
10
- exitPromise;
11
- failure;
12
- stderr = Buffer.alloc(0);
13
- writeTail = Promise.resolve();
14
- constructor(child, onMessage, onFailure) {
15
- this.child = child;
16
- this.onMessage = onMessage;
17
- this.onFailure = onFailure;
18
- this.child.stdout.on("data", (chunk) => this.read(chunk));
19
- this.child.stderr.on("data", (chunk) => this.readStderr(chunk));
20
- this.child.stdin.on("error", (error) => this.fail(error));
21
- this.child.stdout.on("error", (error) => this.fail(error));
22
- this.child.stderr.on("error", (error) => this.fail(error));
23
- this.child.once("error", (error) => this.fail(error));
24
- this.exitPromise = new Promise((resolve) => {
25
- this.child.once("exit", (code, signal) => {
26
- if (!this.closed) {
27
- const suffix = this.stderr.length === 0 ? "" : `\n${this.stderr.toString("utf8")}`;
28
- this.fail(new Error(signal === null
29
- ? `Code Mode host exited with code ${String(code)}.${suffix}`
30
- : `Code Mode host exited from signal ${signal}.${suffix}`));
31
- }
32
- resolve();
33
- });
34
- });
35
- }
36
- send(message) {
37
- if (this.failure !== undefined) {
38
- return Promise.reject(this.failure);
39
- }
40
- assertJsonValue(message);
41
- const payload = Buffer.from(JSON.stringify(message), "utf8");
42
- if (payload.length > MAX_FRAME_BYTES) {
43
- return Promise.reject(new Error(`Code Mode frame exceeds ${String(MAX_FRAME_BYTES)} bytes.`));
44
- }
45
- const header = Buffer.allocUnsafe(4);
46
- header.writeUInt32LE(payload.length);
47
- const frame = Buffer.concat([header, payload]);
48
- const sent = this.writeTail.then(() => new Promise((resolve, reject) => {
49
- this.child.stdin.write(frame, (error) => {
50
- if (error === null || error === undefined) {
51
- resolve();
52
- }
53
- else {
54
- reject(error);
55
- }
56
- });
57
- }));
58
- this.writeTail = sent.catch(() => undefined);
59
- return sent;
60
- }
61
- async close() {
62
- if (this.closed) {
63
- return this.exitPromise;
64
- }
65
- this.closed = true;
66
- const timeout = setTimeout(() => this.child.kill("SIGKILL"), 6_000);
67
- timeout.unref();
68
- try {
69
- await this.writeTail;
70
- this.child.stdin.end();
71
- await this.exitPromise;
72
- }
73
- catch (error) {
74
- this.child.kill("SIGKILL");
75
- await this.exitPromise;
76
- throw error;
77
- }
78
- finally {
79
- clearTimeout(timeout);
80
- }
81
- }
82
- kill() {
83
- this.child.kill();
84
- }
85
- fail(error) {
86
- if (this.failure !== undefined || this.closed) {
87
- return;
88
- }
89
- this.failure = error;
90
- this.onFailure(error);
91
- this.child.kill("SIGKILL");
92
- }
93
- read(chunk) {
94
- if (this.failure !== undefined) {
95
- return;
96
- }
97
- this.buffer = Buffer.concat([this.buffer, chunk]);
98
- while (this.buffer.length >= 4) {
99
- const length = this.buffer.readUInt32LE(0);
100
- if (length > MAX_FRAME_BYTES) {
101
- this.fail(new Error(`Code Mode frame exceeds ${String(MAX_FRAME_BYTES)} bytes.`));
102
- return;
103
- }
104
- if (this.buffer.length < length + 4) {
105
- return;
106
- }
107
- const payload = this.buffer.subarray(4, length + 4);
108
- this.buffer = this.buffer.subarray(length + 4);
109
- try {
110
- this.onMessage(JSON.parse(payload.toString("utf8")));
111
- }
112
- catch (error) {
113
- this.fail(error instanceof Error ? error : new Error(String(error)));
114
- return;
115
- }
116
- }
117
- }
118
- readStderr(chunk) {
119
- this.stderr = Buffer.concat([this.stderr, chunk]);
120
- if (this.stderr.length > MAX_STDERR_BYTES) {
121
- this.stderr = this.stderr.subarray(this.stderr.length - MAX_STDERR_BYTES);
122
- }
123
- }
124
- }
125
- //# sourceMappingURL=FramedProcess.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FramedProcess.js","sourceRoot":"","sources":["../sources/FramedProcess.ts"],"names":[],"mappings":"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"}