@northflare/runner 0.0.12 → 0.0.14

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 (80) hide show
  1. package/dist/utils/logger.d.ts.map +1 -1
  2. package/dist/utils/logger.js +5 -8
  3. package/dist/utils/logger.js.map +1 -1
  4. package/package.json +1 -2
  5. package/coverage/base.css +0 -224
  6. package/coverage/block-navigation.js +0 -87
  7. package/coverage/coverage-final.json +0 -12
  8. package/coverage/favicon.png +0 -0
  9. package/coverage/index.html +0 -176
  10. package/coverage/lib/index.html +0 -116
  11. package/coverage/lib/preload-script.js.html +0 -964
  12. package/coverage/prettify.css +0 -1
  13. package/coverage/prettify.js +0 -2
  14. package/coverage/sort-arrow-sprite.png +0 -0
  15. package/coverage/sorter.js +0 -196
  16. package/coverage/src/collections/index.html +0 -116
  17. package/coverage/src/collections/runner-messages.ts.html +0 -312
  18. package/coverage/src/components/claude-manager.ts.html +0 -1290
  19. package/coverage/src/components/index.html +0 -146
  20. package/coverage/src/components/message-handler.ts.html +0 -730
  21. package/coverage/src/components/repository-manager.ts.html +0 -841
  22. package/coverage/src/index.html +0 -131
  23. package/coverage/src/index.ts.html +0 -448
  24. package/coverage/src/runner.ts.html +0 -1239
  25. package/coverage/src/utils/config.ts.html +0 -780
  26. package/coverage/src/utils/console.ts.html +0 -121
  27. package/coverage/src/utils/index.html +0 -161
  28. package/coverage/src/utils/logger.ts.html +0 -475
  29. package/coverage/src/utils/status-line.ts.html +0 -445
  30. package/exceptions.log +0 -24
  31. package/lib/codex-sdk/src/codex.ts +0 -38
  32. package/lib/codex-sdk/src/codexOptions.ts +0 -10
  33. package/lib/codex-sdk/src/events.ts +0 -80
  34. package/lib/codex-sdk/src/exec.ts +0 -336
  35. package/lib/codex-sdk/src/index.ts +0 -39
  36. package/lib/codex-sdk/src/items.ts +0 -127
  37. package/lib/codex-sdk/src/outputSchemaFile.ts +0 -40
  38. package/lib/codex-sdk/src/thread.ts +0 -155
  39. package/lib/codex-sdk/src/threadOptions.ts +0 -18
  40. package/lib/codex-sdk/src/turnOptions.ts +0 -6
  41. package/lib/codex-sdk/tests/abort.test.ts +0 -165
  42. package/lib/codex-sdk/tests/codexExecSpy.ts +0 -37
  43. package/lib/codex-sdk/tests/responsesProxy.ts +0 -225
  44. package/lib/codex-sdk/tests/run.test.ts +0 -687
  45. package/lib/codex-sdk/tests/runStreamed.test.ts +0 -211
  46. package/lib/codex-sdk/tsconfig.json +0 -24
  47. package/rejections.log +0 -68
  48. package/runner.log +0 -488
  49. package/src/components/claude-sdk-manager.ts +0 -1425
  50. package/src/components/codex-sdk-manager.ts +0 -1358
  51. package/src/components/enhanced-repository-manager.ts +0 -823
  52. package/src/components/message-handler-sse.ts +0 -1097
  53. package/src/components/repository-manager.ts +0 -337
  54. package/src/index.ts +0 -168
  55. package/src/runner-sse.ts +0 -917
  56. package/src/services/RunnerAPIClient.ts +0 -175
  57. package/src/services/SSEClient.ts +0 -258
  58. package/src/types/claude.ts +0 -66
  59. package/src/types/computer-name.d.ts +0 -4
  60. package/src/types/index.ts +0 -64
  61. package/src/types/messages.ts +0 -39
  62. package/src/types/runner-interface.ts +0 -36
  63. package/src/utils/StateManager.ts +0 -187
  64. package/src/utils/config.ts +0 -327
  65. package/src/utils/console.ts +0 -15
  66. package/src/utils/debug.ts +0 -18
  67. package/src/utils/expand-env.ts +0 -22
  68. package/src/utils/logger.ts +0 -134
  69. package/src/utils/model.ts +0 -29
  70. package/src/utils/status-line.ts +0 -122
  71. package/src/utils/tool-response-sanitizer.ts +0 -160
  72. package/test-debug.sh +0 -26
  73. package/tests/retry-strategies.test.ts +0 -410
  74. package/tests/sdk-integration.test.ts +0 -329
  75. package/tests/sdk-streaming.test.ts +0 -1180
  76. package/tests/setup.ts +0 -5
  77. package/tests/test-claude-manager.ts +0 -120
  78. package/tests/tool-response-sanitizer.test.ts +0 -63
  79. package/tsconfig.json +0 -36
  80. 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
- }