@northflare/runner 0.0.11 → 0.0.13

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 (81) hide show
  1. package/dist/utils/config.d.ts +1 -0
  2. package/dist/utils/config.d.ts.map +1 -1
  3. package/dist/utils/config.js +13 -2
  4. package/dist/utils/config.js.map +1 -1
  5. package/package.json +1 -2
  6. package/coverage/base.css +0 -224
  7. package/coverage/block-navigation.js +0 -87
  8. package/coverage/coverage-final.json +0 -12
  9. package/coverage/favicon.png +0 -0
  10. package/coverage/index.html +0 -176
  11. package/coverage/lib/index.html +0 -116
  12. package/coverage/lib/preload-script.js.html +0 -964
  13. package/coverage/prettify.css +0 -1
  14. package/coverage/prettify.js +0 -2
  15. package/coverage/sort-arrow-sprite.png +0 -0
  16. package/coverage/sorter.js +0 -196
  17. package/coverage/src/collections/index.html +0 -116
  18. package/coverage/src/collections/runner-messages.ts.html +0 -312
  19. package/coverage/src/components/claude-manager.ts.html +0 -1290
  20. package/coverage/src/components/index.html +0 -146
  21. package/coverage/src/components/message-handler.ts.html +0 -730
  22. package/coverage/src/components/repository-manager.ts.html +0 -841
  23. package/coverage/src/index.html +0 -131
  24. package/coverage/src/index.ts.html +0 -448
  25. package/coverage/src/runner.ts.html +0 -1239
  26. package/coverage/src/utils/config.ts.html +0 -780
  27. package/coverage/src/utils/console.ts.html +0 -121
  28. package/coverage/src/utils/index.html +0 -161
  29. package/coverage/src/utils/logger.ts.html +0 -475
  30. package/coverage/src/utils/status-line.ts.html +0 -445
  31. package/exceptions.log +0 -24
  32. package/lib/codex-sdk/src/codex.ts +0 -38
  33. package/lib/codex-sdk/src/codexOptions.ts +0 -10
  34. package/lib/codex-sdk/src/events.ts +0 -80
  35. package/lib/codex-sdk/src/exec.ts +0 -336
  36. package/lib/codex-sdk/src/index.ts +0 -39
  37. package/lib/codex-sdk/src/items.ts +0 -127
  38. package/lib/codex-sdk/src/outputSchemaFile.ts +0 -40
  39. package/lib/codex-sdk/src/thread.ts +0 -155
  40. package/lib/codex-sdk/src/threadOptions.ts +0 -18
  41. package/lib/codex-sdk/src/turnOptions.ts +0 -6
  42. package/lib/codex-sdk/tests/abort.test.ts +0 -165
  43. package/lib/codex-sdk/tests/codexExecSpy.ts +0 -37
  44. package/lib/codex-sdk/tests/responsesProxy.ts +0 -225
  45. package/lib/codex-sdk/tests/run.test.ts +0 -687
  46. package/lib/codex-sdk/tests/runStreamed.test.ts +0 -211
  47. package/lib/codex-sdk/tsconfig.json +0 -24
  48. package/rejections.log +0 -68
  49. package/runner.log +0 -488
  50. package/src/components/claude-sdk-manager.ts +0 -1425
  51. package/src/components/codex-sdk-manager.ts +0 -1358
  52. package/src/components/enhanced-repository-manager.ts +0 -823
  53. package/src/components/message-handler-sse.ts +0 -1097
  54. package/src/components/repository-manager.ts +0 -337
  55. package/src/index.ts +0 -168
  56. package/src/runner-sse.ts +0 -917
  57. package/src/services/RunnerAPIClient.ts +0 -175
  58. package/src/services/SSEClient.ts +0 -258
  59. package/src/types/claude.ts +0 -66
  60. package/src/types/computer-name.d.ts +0 -4
  61. package/src/types/index.ts +0 -64
  62. package/src/types/messages.ts +0 -39
  63. package/src/types/runner-interface.ts +0 -36
  64. package/src/utils/StateManager.ts +0 -187
  65. package/src/utils/config.ts +0 -316
  66. package/src/utils/console.ts +0 -15
  67. package/src/utils/debug.ts +0 -18
  68. package/src/utils/expand-env.ts +0 -22
  69. package/src/utils/logger.ts +0 -134
  70. package/src/utils/model.ts +0 -29
  71. package/src/utils/status-line.ts +0 -122
  72. package/src/utils/tool-response-sanitizer.ts +0 -160
  73. package/test-debug.sh +0 -26
  74. package/tests/retry-strategies.test.ts +0 -410
  75. package/tests/sdk-integration.test.ts +0 -329
  76. package/tests/sdk-streaming.test.ts +0 -1180
  77. package/tests/setup.ts +0 -5
  78. package/tests/test-claude-manager.ts +0 -120
  79. package/tests/tool-response-sanitizer.test.ts +0 -63
  80. package/tsconfig.json +0 -36
  81. package/vitest.config.ts +0 -27
@@ -1,211 +0,0 @@
1
- import path from "node:path";
2
-
3
- import { describe, expect, it } from "@jest/globals";
4
-
5
- import { Codex } from "../src/codex";
6
- import { ThreadEvent } from "../src/index";
7
-
8
- import {
9
- assistantMessage,
10
- responseCompleted,
11
- responseStarted,
12
- sse,
13
- startResponsesTestProxy,
14
- } from "./responsesProxy";
15
-
16
- const codexExecPath = path.join(process.cwd(), "..", "..", "codex-rs", "target", "debug", "codex");
17
-
18
- describe("Codex", () => {
19
- it("returns thread events", async () => {
20
- const { url, close } = await startResponsesTestProxy({
21
- statusCode: 200,
22
- responseBodies: [sse(responseStarted(), assistantMessage("Hi!"), responseCompleted())],
23
- });
24
-
25
- try {
26
- const client = new Codex({ codexPathOverride: codexExecPath, baseUrl: url, apiKey: "test" });
27
-
28
- const thread = client.startThread();
29
- const result = await thread.runStreamed("Hello, world!");
30
-
31
- const events: ThreadEvent[] = [];
32
- for await (const event of result.events) {
33
- events.push(event);
34
- }
35
-
36
- expect(events).toEqual([
37
- {
38
- type: "thread.started",
39
- thread_id: expect.any(String),
40
- },
41
- {
42
- type: "turn.started",
43
- },
44
- {
45
- type: "item.completed",
46
- item: {
47
- id: "item_0",
48
- type: "agent_message",
49
- text: "Hi!",
50
- },
51
- },
52
- {
53
- type: "turn.completed",
54
- usage: {
55
- cached_input_tokens: 12,
56
- input_tokens: 42,
57
- output_tokens: 5,
58
- },
59
- },
60
- ]);
61
- expect(thread.id).toEqual(expect.any(String));
62
- } finally {
63
- await close();
64
- }
65
- });
66
-
67
- it("sends previous items when runStreamed is called twice", async () => {
68
- const { url, close, requests } = await startResponsesTestProxy({
69
- statusCode: 200,
70
- responseBodies: [
71
- sse(
72
- responseStarted("response_1"),
73
- assistantMessage("First response", "item_1"),
74
- responseCompleted("response_1"),
75
- ),
76
- sse(
77
- responseStarted("response_2"),
78
- assistantMessage("Second response", "item_2"),
79
- responseCompleted("response_2"),
80
- ),
81
- ],
82
- });
83
-
84
- try {
85
- const client = new Codex({ codexPathOverride: codexExecPath, baseUrl: url, apiKey: "test" });
86
-
87
- const thread = client.startThread();
88
- const first = await thread.runStreamed("first input");
89
- await drainEvents(first.events);
90
-
91
- const second = await thread.runStreamed("second input");
92
- await drainEvents(second.events);
93
-
94
- // Check second request continues the same thread
95
- expect(requests.length).toBeGreaterThanOrEqual(2);
96
- const secondRequest = requests[1];
97
- expect(secondRequest).toBeDefined();
98
- const payload = secondRequest!.json;
99
-
100
- const assistantEntry = payload.input.find(
101
- (entry: { role: string }) => entry.role === "assistant",
102
- );
103
- expect(assistantEntry).toBeDefined();
104
- const assistantText = assistantEntry?.content?.find(
105
- (item: { type: string; text: string }) => item.type === "output_text",
106
- )?.text;
107
- expect(assistantText).toBe("First response");
108
- } finally {
109
- await close();
110
- }
111
- });
112
-
113
- it("resumes thread by id when streaming", async () => {
114
- const { url, close, requests } = await startResponsesTestProxy({
115
- statusCode: 200,
116
- responseBodies: [
117
- sse(
118
- responseStarted("response_1"),
119
- assistantMessage("First response", "item_1"),
120
- responseCompleted("response_1"),
121
- ),
122
- sse(
123
- responseStarted("response_2"),
124
- assistantMessage("Second response", "item_2"),
125
- responseCompleted("response_2"),
126
- ),
127
- ],
128
- });
129
-
130
- try {
131
- const client = new Codex({ codexPathOverride: codexExecPath, baseUrl: url, apiKey: "test" });
132
-
133
- const originalThread = client.startThread();
134
- const first = await originalThread.runStreamed("first input");
135
- await drainEvents(first.events);
136
-
137
- const resumedThread = client.resumeThread(originalThread.id!);
138
- const second = await resumedThread.runStreamed("second input");
139
- await drainEvents(second.events);
140
-
141
- expect(resumedThread.id).toBe(originalThread.id);
142
-
143
- expect(requests.length).toBeGreaterThanOrEqual(2);
144
- const secondRequest = requests[1];
145
- expect(secondRequest).toBeDefined();
146
- const payload = secondRequest!.json;
147
-
148
- const assistantEntry = payload.input.find(
149
- (entry: { role: string }) => entry.role === "assistant",
150
- );
151
- expect(assistantEntry).toBeDefined();
152
- const assistantText = assistantEntry?.content?.find(
153
- (item: { type: string; text: string }) => item.type === "output_text",
154
- )?.text;
155
- expect(assistantText).toBe("First response");
156
- } finally {
157
- await close();
158
- }
159
- });
160
-
161
- it("applies output schema turn options when streaming", async () => {
162
- const { url, close, requests } = await startResponsesTestProxy({
163
- statusCode: 200,
164
- responseBodies: [
165
- sse(
166
- responseStarted("response_1"),
167
- assistantMessage("Structured response", "item_1"),
168
- responseCompleted("response_1"),
169
- ),
170
- ],
171
- });
172
-
173
- const schema = {
174
- type: "object",
175
- properties: {
176
- answer: { type: "string" },
177
- },
178
- required: ["answer"],
179
- additionalProperties: false,
180
- } as const;
181
-
182
- try {
183
- const client = new Codex({ codexPathOverride: codexExecPath, baseUrl: url, apiKey: "test" });
184
-
185
- const thread = client.startThread();
186
- const streamed = await thread.runStreamed("structured", { outputSchema: schema });
187
- await drainEvents(streamed.events);
188
-
189
- expect(requests.length).toBeGreaterThanOrEqual(1);
190
- const payload = requests[0];
191
- expect(payload).toBeDefined();
192
- const text = payload!.json.text;
193
- expect(text).toBeDefined();
194
- expect(text?.format).toEqual({
195
- name: "codex_output_schema",
196
- type: "json_schema",
197
- strict: true,
198
- schema,
199
- });
200
- } finally {
201
- await close();
202
- }
203
- });
204
- });
205
-
206
- async function drainEvents(events: AsyncGenerator<ThreadEvent>): Promise<void> {
207
- let done = false;
208
- do {
209
- done = (await events.next()).done ?? false;
210
- } while (!done);
211
- }
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "allowSyntheticDefaultImports": true,
7
- "esModuleInterop": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "skipLibCheck": true,
10
- "strict": true,
11
- "noUncheckedIndexedAccess": true,
12
- "resolveJsonModule": true,
13
- "lib": ["ES2022"],
14
- "types": ["node", "jest"],
15
- "sourceMap": true,
16
- "declaration": true,
17
- "declarationMap": true,
18
- "noImplicitAny": true,
19
- "outDir": "dist",
20
- "stripInternal": true
21
- },
22
- "include": ["src", "tests", "tsup.config.ts", "samples"],
23
- "exclude": ["dist", "node_modules"]
24
- }