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