@ekairos/openai-reactor 1.22.3 → 1.22.4-beta.development.0

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.
package/dist/index.js CHANGED
@@ -1,149 +1,2 @@
1
- import { OUTPUT_TEXT_ITEM_TYPE, createAiSdkReactor, } from "@ekairos/thread";
2
- function asString(value) {
3
- if (typeof value === "string")
4
- return value;
5
- if (value === null || value === undefined)
6
- return "";
7
- return String(value);
8
- }
9
- function asRecord(value) {
10
- if (!value || typeof value !== "object")
11
- return {};
12
- return value;
13
- }
14
- function textFromParts(parts) {
15
- if (!Array.isArray(parts))
16
- return "";
17
- const out = [];
18
- for (const part of parts) {
19
- const record = asRecord(part);
20
- const partType = asString(record.type);
21
- if (partType === "text") {
22
- const value = asString(record.text).trim();
23
- if (value)
24
- out.push(value);
25
- continue;
26
- }
27
- if (partType === "input_text") {
28
- const value = asString(record.input_text).trim();
29
- if (value)
30
- out.push(value);
31
- continue;
32
- }
33
- const inline = asString(record.text).trim();
34
- if (inline)
35
- out.push(inline);
36
- }
37
- return out.join("\n").trim();
38
- }
39
- function defaultInstructionFromTrigger(event) {
40
- const content = asRecord(event.content);
41
- const message = textFromParts(content.parts);
42
- return message || "Continue with the current task.";
43
- }
44
- function buildCodexParts(params) {
45
- const parts = [];
46
- const assistantText = asString(params.result.assistantText).trim();
47
- const reasoningText = asString(params.result.reasoningText).trim();
48
- if (assistantText) {
49
- parts.push({ type: "text", text: assistantText });
50
- }
51
- if (params.includeReasoningPart && reasoningText) {
52
- parts.push({ type: "reasoning", text: reasoningText });
53
- }
54
- const metadata = {
55
- threadId: params.result.threadId,
56
- turnId: params.result.turnId,
57
- diff: params.result.diff ?? "",
58
- toolParts: params.result.toolParts ?? [],
59
- ...(params.result.metadata ?? {}),
60
- };
61
- parts.push({
62
- type: `tool-${params.toolName}`,
63
- toolCallId: params.result.turnId || params.result.threadId,
64
- state: "output-available",
65
- input: { instruction: params.instruction },
66
- output: metadata,
67
- metadata,
68
- });
69
- return parts;
70
- }
71
- /**
72
- * Default AI SDK reactor exported by package for convenience.
73
- */
74
- export function createOpenAIReactor(options) {
75
- return createAiSdkReactor(options);
76
- }
77
- /**
78
- * Codex App Server reactor for @ekairos/thread.
79
- *
80
- * This maps one Thread loop iteration to one Codex turn and returns a persisted
81
- * assistant event compatible with the Thread engine.
82
- *
83
- * Workflow compatibility:
84
- * - `resolveConfig` and `executeTurn` should be implemented with `"use step"`
85
- * wrappers when they perform I/O.
86
- */
87
- export function createCodexReactor(options) {
88
- const toolName = asString(options.toolName).trim() || "codex";
89
- const includeReasoningPart = Boolean(options.includeReasoningPart);
90
- return async (params) => {
91
- const context = asRecord(params.context.content);
92
- const instruction = (options.buildInstruction
93
- ? await options.buildInstruction({
94
- env: params.env,
95
- context,
96
- triggerEvent: params.triggerEvent,
97
- })
98
- : defaultInstructionFromTrigger(params.triggerEvent)).trim();
99
- const config = await options.resolveConfig({
100
- env: params.env,
101
- context,
102
- triggerEvent: params.triggerEvent,
103
- contextId: params.contextId,
104
- eventId: params.eventId,
105
- executionId: params.executionId,
106
- stepId: params.stepId,
107
- iteration: params.iteration,
108
- });
109
- const turn = await options.executeTurn({
110
- env: params.env,
111
- context,
112
- triggerEvent: params.triggerEvent,
113
- contextId: params.contextId,
114
- eventId: params.eventId,
115
- executionId: params.executionId,
116
- stepId: params.stepId,
117
- iteration: params.iteration,
118
- instruction,
119
- config,
120
- writable: params.writable,
121
- silent: params.silent,
122
- });
123
- const assistantEvent = {
124
- id: params.eventId,
125
- type: OUTPUT_TEXT_ITEM_TYPE,
126
- channel: "web",
127
- createdAt: new Date().toISOString(),
128
- status: "completed",
129
- content: {
130
- parts: buildCodexParts({
131
- toolName,
132
- includeReasoningPart,
133
- result: turn,
134
- instruction,
135
- }),
136
- },
137
- };
138
- return {
139
- assistantEvent,
140
- toolCalls: [],
141
- messagesForModel: [],
142
- llm: {
143
- provider: "openai",
144
- model: asString(config.model || "codex"),
145
- },
146
- };
147
- };
148
- }
1
+ export { createCodexReactor, defaultMapCodexChunk, mapCodexAppServerNotification, mapCodexChunkType, } from "./codex.reactor.js";
149
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GAMnB,MAAM,iBAAiB,CAAA;AAKxB,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACpD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAClD,OAAO,KAAkB,CAAA;AAC3B,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;YAC1C,IAAI,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;YAChD,IAAI,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3C,IAAI,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAC9B,CAAC;AAED,SAAS,6BAA6B,CAAC,KAAiB;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5C,OAAO,OAAO,IAAI,iCAAiC,CAAA;AACrD,CAAC;AAoED,SAAS,eAAe,CAAC,MAKxB;IACC,MAAM,KAAK,GAAgB,EAAE,CAAA;IAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;IAClE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;IAElE,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,oBAAoB,IAAI,aAAa,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;QAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;QAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE;QACxC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;KAClC,CAAA;IAED,KAAK,CAAC,IAAI,CAAC;QACT,IAAI,EAAE,QAAQ,MAAM,CAAC,QAAQ,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;QAC1D,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;QAC1C,MAAM,EAAE,QAAQ;QAChB,QAAQ;KACT,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAKjC,OAAyD;IAEzD,OAAO,kBAAkB,CAAuB,OAAO,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAKhC,OAAwD;IAExD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAA;IAC7D,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAElE,OAAO,KAAK,EACV,MAAyC,EACV,EAAE;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAChD,MAAM,WAAW,GAAG,CAClB,OAAO,CAAC,gBAAgB;YACtB,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC;gBAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO;gBACP,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC;YACJ,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC,YAAY,CAAC,CACvD,CAAC,IAAI,EAAE,CAAA;QAER,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;YACzC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;YACP,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;YACP,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW;YACX,MAAM;YACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAA;QAEF,MAAM,cAAc,GAAe;YACjC,EAAE,EAAE,MAAM,CAAC,OAAO;YAClB,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,eAAe,CAAC;oBACrB,QAAQ;oBACR,oBAAoB;oBACpB,MAAM,EAAE,IAAI;oBACZ,WAAW;iBACZ,CAAC;aACH;SACF,CAAA;QAED,OAAO;YACL,cAAc;YACd,SAAS,EAAE,EAAE;YACb,gBAAgB,EAAE,EAAE;YACpB,GAAG,EAAE;gBACH,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC;aACzC;SACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,iBAAiB,GAQlB,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { ContextItem } from "@ekairos/events";
2
+ export type AnyRecord = Record<string, unknown>;
3
+ export declare function asString(value: unknown): string;
4
+ export declare function asRecord(value: unknown): AnyRecord;
5
+ export declare function defaultInstructionFromTrigger(event: ContextItem): string;
6
+ export declare function buildCodexParts(params: {
7
+ toolName: string;
8
+ includeReasoningPart: boolean;
9
+ completedOnly?: boolean;
10
+ semanticChunks?: unknown[];
11
+ rawChunks?: unknown[];
12
+ result: {
13
+ providerContextId: string;
14
+ turnId: string;
15
+ assistantText: string;
16
+ reasoningText?: string;
17
+ diff?: string;
18
+ toolParts?: unknown[];
19
+ metadata?: Record<string, unknown>;
20
+ };
21
+ instruction: string;
22
+ streamTrace?: unknown;
23
+ }): AnyRecord[];
24
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI/C;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAGlD;AA4BD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAIxE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,OAAO,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;IACrB,MAAM,EAAE;QACN,iBAAiB,EAAE,MAAM,CAAA;QACzB,MAAM,EAAE,MAAM,CAAA;QACd,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,CAAA;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,eA6TA"}
package/dist/shared.js ADDED
@@ -0,0 +1,336 @@
1
+ export function asString(value) {
2
+ if (typeof value === "string")
3
+ return value;
4
+ if (value === null || value === undefined)
5
+ return "";
6
+ return String(value);
7
+ }
8
+ export function asRecord(value) {
9
+ if (!value || typeof value !== "object")
10
+ return {};
11
+ return value;
12
+ }
13
+ function asArray(value) {
14
+ return Array.isArray(value) ? value : [];
15
+ }
16
+ function textFromParts(parts) {
17
+ if (!Array.isArray(parts))
18
+ return "";
19
+ const out = [];
20
+ for (const part of parts) {
21
+ const record = asRecord(part);
22
+ const partType = asString(record.type);
23
+ if (partType === "text") {
24
+ const value = asString(record.text).trim();
25
+ if (value)
26
+ out.push(value);
27
+ continue;
28
+ }
29
+ if (partType === "input_text") {
30
+ const value = asString(record.input_text || record.text).trim();
31
+ if (value)
32
+ out.push(value);
33
+ continue;
34
+ }
35
+ const inline = asString(record.text).trim();
36
+ if (inline)
37
+ out.push(inline);
38
+ }
39
+ return out.join("\n").trim();
40
+ }
41
+ export function defaultInstructionFromTrigger(event) {
42
+ const content = asRecord(event.content);
43
+ const message = textFromParts(content.parts);
44
+ return message || "Continue with the current task.";
45
+ }
46
+ export function buildCodexParts(params) {
47
+ const parts = [];
48
+ const streamTrace = asRecord(params.streamTrace);
49
+ const capturedChunks = asArray(params.rawChunks).length > 0
50
+ ? asArray(params.rawChunks)
51
+ : asArray(params.semanticChunks).length > 0
52
+ ? asArray(params.semanticChunks)
53
+ : asArray(streamTrace.chunks);
54
+ const semanticChunks = asArray(params.semanticChunks).length > 0
55
+ ? asArray(params.semanticChunks)
56
+ : asArray(streamTrace.chunks);
57
+ const lastChunkSequence = capturedChunks.reduce((max, chunk) => {
58
+ const sequence = typeof chunk.sequence === "number" ? chunk.sequence : 0;
59
+ return Math.max(max, sequence);
60
+ }, 0);
61
+ function findLastChunk(predicate) {
62
+ for (let index = capturedChunks.length - 1; index >= 0; index -= 1) {
63
+ const chunk = capturedChunks[index];
64
+ if (!predicate(chunk))
65
+ continue;
66
+ return {
67
+ sequence: typeof chunk.sequence === "number" ? chunk.sequence : 0,
68
+ at: asString(chunk.at),
69
+ };
70
+ }
71
+ return null;
72
+ }
73
+ const turnCompletedChunk = findLastChunk((chunk) => {
74
+ const data = asRecord(chunk.data);
75
+ const method = asString(data.method);
76
+ return method === "turn/completed";
77
+ });
78
+ const completedAgentMessages = semanticChunks
79
+ .map((chunk) => {
80
+ const data = asRecord(chunk.data);
81
+ const method = asString(data.method);
82
+ const paramsRecord = asRecord(data.params);
83
+ const item = asRecord(paramsRecord.item);
84
+ if (method !== "item/completed" || asString(item.type) !== "agentMessage")
85
+ return null;
86
+ const text = asString(item.text).trim();
87
+ if (!text)
88
+ return null;
89
+ return {
90
+ sequence: typeof chunk.sequence === "number" ? chunk.sequence : 0,
91
+ at: asString(chunk.at),
92
+ itemId: asString(item.id),
93
+ text,
94
+ };
95
+ })
96
+ .filter(Boolean);
97
+ const reasoningFromStream = capturedChunks
98
+ .filter((chunk) => {
99
+ const data = asRecord(chunk.data);
100
+ const method = asString(data.method);
101
+ return method === "item/reasoning/summaryTextDelta" || method === "item/reasoning/textDelta";
102
+ })
103
+ .map((chunk) => asString(asRecord(asRecord(chunk.data).params).delta))
104
+ .join("")
105
+ .trim();
106
+ const completedReasoningItems = semanticChunks
107
+ .map((chunk) => {
108
+ const data = asRecord(chunk.data);
109
+ const method = asString(data.method);
110
+ const paramsRecord = asRecord(data.params);
111
+ const item = asRecord(paramsRecord.item);
112
+ if (method !== "item/completed" || asString(item.type) !== "reasoning")
113
+ return null;
114
+ const text = asString(item.summary || item.text).trim();
115
+ if (!text)
116
+ return null;
117
+ return {
118
+ sequence: typeof chunk.sequence === "number" ? chunk.sequence : 0,
119
+ at: asString(chunk.at),
120
+ itemId: asString(item.id),
121
+ text,
122
+ };
123
+ })
124
+ .filter(Boolean);
125
+ for (const message of completedAgentMessages) {
126
+ if (params.completedOnly === true || params.completedOnly === false || params.completedOnly === undefined) {
127
+ parts.push({
128
+ sequence: message.sequence,
129
+ part: {
130
+ type: "text",
131
+ text: message.text,
132
+ metadata: {
133
+ source: "codex.timeline",
134
+ sequence: message.sequence,
135
+ at: message.at,
136
+ itemId: message.itemId,
137
+ },
138
+ },
139
+ });
140
+ }
141
+ }
142
+ if (params.includeReasoningPart && reasoningFromStream) {
143
+ const lastReasoningChunk = findLastChunk((chunk) => {
144
+ const data = asRecord(chunk.data);
145
+ const method = asString(data.method);
146
+ return method === "item/reasoning/summaryTextDelta" || method === "item/reasoning/textDelta";
147
+ });
148
+ parts.push({
149
+ sequence: lastReasoningChunk?.sequence ?? lastChunkSequence + 1,
150
+ part: {
151
+ type: "reasoning",
152
+ text: reasoningFromStream,
153
+ metadata: {
154
+ source: "codex.timeline.full",
155
+ sequence: lastReasoningChunk?.sequence ?? lastChunkSequence + 1,
156
+ at: lastReasoningChunk?.at ?? "",
157
+ },
158
+ },
159
+ });
160
+ }
161
+ else if (params.includeReasoningPart) {
162
+ for (const reasoningItem of completedReasoningItems) {
163
+ parts.push({
164
+ sequence: reasoningItem.sequence,
165
+ part: {
166
+ type: "reasoning",
167
+ text: reasoningItem.text,
168
+ metadata: {
169
+ source: "codex.timeline",
170
+ sequence: reasoningItem.sequence,
171
+ at: reasoningItem.at,
172
+ itemId: reasoningItem.itemId,
173
+ },
174
+ },
175
+ });
176
+ }
177
+ }
178
+ const commands = new Map();
179
+ for (const chunk of capturedChunks) {
180
+ const data = asRecord(chunk.data);
181
+ const method = asString(data.method);
182
+ const paramsRecord = asRecord(data.params);
183
+ if (method === "item/started") {
184
+ const item = asRecord(paramsRecord.item);
185
+ if (asString(item.type) === "commandExecution") {
186
+ commands.set(asString(item.id), {
187
+ ...(commands.get(asString(item.id)) ?? {}),
188
+ input: item,
189
+ sequence: typeof chunk.sequence === "number" ? chunk.sequence : undefined,
190
+ at: asString(chunk.at),
191
+ });
192
+ }
193
+ continue;
194
+ }
195
+ if (method === "item/commandExecution/outputDelta") {
196
+ const itemId = asString(paramsRecord.itemId);
197
+ if (!itemId)
198
+ continue;
199
+ const current = commands.get(itemId) ?? {};
200
+ current.outputText = `${current.outputText ?? ""}${asString(paramsRecord.delta)}`;
201
+ current.sequence =
202
+ typeof chunk.sequence === "number"
203
+ ? Math.max(current.sequence ?? 0, chunk.sequence)
204
+ : current.sequence;
205
+ current.at = asString(chunk.at) || current.at;
206
+ commands.set(itemId, current);
207
+ continue;
208
+ }
209
+ if (method === "item/completed") {
210
+ const item = asRecord(paramsRecord.item);
211
+ if (asString(item.type) === "commandExecution") {
212
+ const itemId = asString(item.id);
213
+ const current = commands.get(itemId) ?? {};
214
+ current.completed = item;
215
+ current.sequence =
216
+ typeof chunk.sequence === "number"
217
+ ? Math.max(current.sequence ?? 0, chunk.sequence)
218
+ : current.sequence;
219
+ current.at = asString(chunk.at) || current.at;
220
+ commands.set(itemId, current);
221
+ }
222
+ }
223
+ }
224
+ if (completedAgentMessages.length === 0) {
225
+ const assistantText = asString(params.result.assistantText).trim();
226
+ if (assistantText && !params.completedOnly) {
227
+ parts.push({
228
+ sequence: lastChunkSequence + 1,
229
+ part: {
230
+ type: "text",
231
+ text: assistantText,
232
+ metadata: {
233
+ source: "codex.timeline.fallback",
234
+ sequence: lastChunkSequence + 1,
235
+ at: "",
236
+ },
237
+ },
238
+ });
239
+ }
240
+ }
241
+ if (params.includeReasoningPart &&
242
+ !reasoningFromStream &&
243
+ completedReasoningItems.length === 0) {
244
+ const reasoningText = asString(params.result.reasoningText || reasoningFromStream).trim();
245
+ if (reasoningText && !params.completedOnly) {
246
+ parts.push({
247
+ sequence: lastChunkSequence + 1,
248
+ part: {
249
+ type: "reasoning",
250
+ text: reasoningText,
251
+ metadata: {
252
+ source: "codex.timeline.fallback",
253
+ sequence: lastChunkSequence + 1,
254
+ at: "",
255
+ },
256
+ },
257
+ });
258
+ }
259
+ }
260
+ for (const [toolCallId, command] of commands.entries()) {
261
+ const input = asRecord(command.input);
262
+ const completed = asRecord(command.completed);
263
+ const outputText = asString(completed.aggregatedOutput || command.outputText).trim();
264
+ const status = asString(completed.status || input.status || "completed").trim();
265
+ const exitCode = typeof completed.exitCode === "number" ? completed.exitCode : undefined;
266
+ parts.push({
267
+ sequence: command.sequence ?? 0,
268
+ part: {
269
+ type: "tool-commandExecution",
270
+ toolName: "commandExecution",
271
+ toolCallId,
272
+ state: status === "failed" || (typeof exitCode === "number" && exitCode !== 0)
273
+ ? "output-error"
274
+ : "output-available",
275
+ input: {
276
+ command: asString(input.command),
277
+ cwd: asString(input.cwd),
278
+ commandActions: asArray(input.commandActions),
279
+ },
280
+ output: {
281
+ text: outputText,
282
+ exitCode,
283
+ durationMs: typeof completed.durationMs === "number" ? completed.durationMs : undefined,
284
+ status,
285
+ },
286
+ errorText: status === "failed"
287
+ ? asString(completed.error || completed.message || "command_execution_failed")
288
+ : undefined,
289
+ metadata: {
290
+ source: "codex.timeline",
291
+ sequence: command.sequence ?? 0,
292
+ at: command.at ?? "",
293
+ },
294
+ },
295
+ });
296
+ }
297
+ const tokenUsageChunk = [...semanticChunks]
298
+ .reverse()
299
+ .find((chunk) => {
300
+ const data = asRecord(chunk.data);
301
+ const method = asString(data.method);
302
+ return method === "thread/tokenUsage/updated" || method === "context/tokenUsage/updated";
303
+ });
304
+ const tokenUsage = tokenUsageChunk
305
+ ? asRecord(asRecord(asRecord(tokenUsageChunk.data).params).tokenUsage)
306
+ : {};
307
+ if (!params.completedOnly || turnCompletedChunk) {
308
+ parts.push({
309
+ sequence: turnCompletedChunk?.sequence ?? lastChunkSequence + 1,
310
+ part: {
311
+ type: "tool-turnMetadata",
312
+ toolName: "turnMetadata",
313
+ toolCallId: params.result.turnId || params.result.providerContextId,
314
+ state: "output-available",
315
+ input: { instruction: params.instruction },
316
+ output: {
317
+ providerContextId: params.result.providerContextId,
318
+ turnId: params.result.turnId,
319
+ diff: params.result.diff ?? "",
320
+ tokenUsage,
321
+ streamTrace: params.streamTrace,
322
+ ...(params.result.metadata ?? {}),
323
+ },
324
+ metadata: {
325
+ source: "codex.timeline",
326
+ sequence: turnCompletedChunk?.sequence ?? lastChunkSequence + 1,
327
+ at: turnCompletedChunk?.at ?? "",
328
+ },
329
+ },
330
+ });
331
+ }
332
+ return parts
333
+ .sort((a, b) => a.sequence - b.sequence)
334
+ .map((entry) => entry.part);
335
+ }
336
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACpD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAClD,OAAO,KAAkB,CAAA;AAC3B,CAAC;AAED,SAAS,OAAO,CAAc,KAAc;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,EAAE,CAAA;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;YAC1C,IAAI,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;YAC/D,IAAI,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3C,IAAI,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAkB;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5C,OAAO,OAAO,IAAI,iCAAiC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAiB/B;IACC,MAAM,KAAK,GAAiD,EAAE,CAAA;IAC9D,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAChD,MAAM,cAAc,GAClB,OAAO,CAAY,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAY,MAAM,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,OAAO,CAAY,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC;YACpD,CAAC,CAAC,OAAO,CAAY,MAAM,CAAC,cAAc,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAY,WAAW,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,cAAc,GAClB,OAAO,CAAY,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC;QAClD,CAAC,CAAC,OAAO,CAAY,MAAM,CAAC,cAAc,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAY,WAAW,CAAC,MAAM,CAAC,CAAA;IAE5C,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7D,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEL,SAAS,aAAa,CACpB,SAAwC;QAExC,KAAK,IAAI,KAAK,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACnE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAC/B,OAAO;gBACL,QAAQ,EAAE,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;aACvB,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,OAAO,MAAM,KAAK,gBAAgB,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,sBAAsB,GAAG,cAAc;SAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,MAAM,KAAK,gBAAgB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,cAAc;YAAE,OAAO,IAAI,CAAA;QACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,OAAO;YACL,QAAQ,EAAE,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI;SACL,CAAA;IACH,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAA0E,CAAA;IAE3F,MAAM,mBAAmB,GAAG,cAAc;SACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,OAAO,MAAM,KAAK,iCAAiC,IAAI,MAAM,KAAK,0BAA0B,CAAA;IAC9F,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;SACrE,IAAI,CAAC,EAAE,CAAC;SACR,IAAI,EAAE,CAAA;IACT,MAAM,uBAAuB,GAAG,cAAc;SAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,MAAM,KAAK,gBAAgB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW;YAAE,OAAO,IAAI,CAAA;QACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,OAAO;YACL,QAAQ,EAAE,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI;SACL,CAAA;IACH,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAA0E,CAAA;IAE3F,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC1G,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,QAAQ,EAAE;wBACR,MAAM,EAAE,gBAAgB;wBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,oBAAoB,IAAI,mBAAmB,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpC,OAAO,MAAM,KAAK,iCAAiC,IAAI,MAAM,KAAK,0BAA0B,CAAA;QAC9F,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,IAAI,iBAAiB,GAAG,CAAC;YAC/D,IAAI,EAAE;gBACJ,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE;oBACR,MAAM,EAAE,qBAAqB;oBAC7B,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,IAAI,iBAAiB,GAAG,CAAC;oBAC/D,EAAE,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE;iBACjC;aACF;SACF,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACvC,KAAK,MAAM,aAAa,IAAI,uBAAuB,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,QAAQ,EAAE;wBACR,MAAM,EAAE,gBAAgB;wBACxB,QAAQ,EAAE,aAAa,CAAC,QAAQ;wBAChC,EAAE,EAAE,aAAa,CAAC,EAAE;wBACpB,MAAM,EAAE,aAAa,CAAC,MAAM;qBAC7B;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EASrB,CAAA;IAEH,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,kBAAkB,EAAE,CAAC;gBAC/C,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;oBAC9B,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC1C,KAAK,EAAE,IAAI;oBACX,QAAQ,EACN,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;oBACjE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;iBACvB,CAAC,CAAA;YACJ,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,KAAK,mCAAmC,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAC5C,IAAI,CAAC,MAAM;gBAAE,SAAQ;YACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAC1C,OAAO,CAAC,UAAU,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAA;YACjF,OAAO,CAAC,QAAQ;gBACd,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;oBAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;oBACjD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;YACtB,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAA;YAC7C,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC7B,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,kBAAkB,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAC1C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAA;gBACxB,OAAO,CAAC,QAAQ;oBACd,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;wBAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;wBACjD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;gBACtB,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAA;gBAC7C,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAA;QAClE,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,iBAAiB,GAAG,CAAC;gBAC/B,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE;wBACR,MAAM,EAAE,yBAAyB;wBACjC,QAAQ,EAAE,iBAAiB,GAAG,CAAC;wBAC/B,EAAE,EAAE,EAAE;qBACP;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IACE,MAAM,CAAC,oBAAoB;QAC3B,CAAC,mBAAmB;QACpB,uBAAuB,CAAC,MAAM,KAAK,CAAC,EACpC,CAAC;QACD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAA;QACzF,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC;gBACT,QAAQ,EAAE,iBAAiB,GAAG,CAAC;gBAC/B,IAAI,EAAE;oBACJ,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE;wBACR,MAAM,EAAE,yBAAyB;wBACjC,QAAQ,EAAE,iBAAiB,GAAG,CAAC;wBAC/B,EAAE,EAAE,EAAE;qBACP;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;QACpF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/E,MAAM,QAAQ,GACZ,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;YAC/B,IAAI,EAAE;gBACJ,IAAI,EAAE,uBAAuB;gBAC7B,QAAQ,EAAE,kBAAkB;gBAC5B,UAAU;gBACV,KAAK,EACH,MAAM,KAAK,QAAQ,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC;oBACrE,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,kBAAkB;gBACxB,KAAK,EAAE;oBACL,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;oBAChC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;oBACxB,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;iBAC9C;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,UAAU;oBAChB,QAAQ;oBACR,UAAU,EACR,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;oBAC7E,MAAM;iBACP;gBACD,SAAS,EACP,MAAM,KAAK,QAAQ;oBACjB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,IAAI,0BAA0B,CAAC;oBAC9E,CAAC,CAAC,SAAS;gBACf,QAAQ,EAAE;oBACR,MAAM,EAAE,gBAAgB;oBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE;iBACrB;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,GAAG,cAAc,CAAC;SACxC,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,OAAO,MAAM,KAAK,2BAA2B,IAAI,MAAM,KAAK,4BAA4B,CAAA;IAC1F,CAAC,CAAC,CAAA;IACJ,MAAM,UAAU,GAAG,eAAe;QAChC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;QACtE,CAAC,CAAC,EAAE,CAAA;IAEN,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,kBAAkB,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,IAAI,iBAAiB,GAAG,CAAC;YAC/D,IAAI,EAAE;gBACJ,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,cAAc;gBACxB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB;gBACnE,KAAK,EAAE,kBAAkB;gBACzB,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;gBAC1C,MAAM,EAAE;oBACN,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;oBAClD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;oBAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE;oBAC9B,UAAU;oBACV,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAClC;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE,gBAAgB;oBACxB,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,IAAI,iBAAiB,GAAG,CAAC;oBAC/D,EAAE,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE;iBACjC;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,KAAK;SACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;SACvC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ekairos/openai-reactor",
3
- "version": "1.22.3",
4
- "description": "OpenAI/Codex reactors for @ekairos/thread",
3
+ "version": "1.22.4-beta.development.0",
4
+ "description": "Codex-only reactor for @ekairos/events",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -19,16 +19,23 @@
19
19
  "build": "tsc -p tsconfig.json",
20
20
  "dev": "tsc -p tsconfig.json --watch",
21
21
  "clean": "node -e \"require('fs').rmSync('dist', {recursive:true, force:true})\"",
22
- "typecheck": "tsc --noEmit"
22
+ "typecheck": "tsc --noEmit",
23
+ "test": "vitest run",
24
+ "test:reactor": "vitest run src/tests/codex.reactor.test.ts --reporter=verbose",
25
+ "test:reactor:instant": "vitest run src/tests/codex.reactor.instant.test.ts --reporter=verbose"
23
26
  },
24
27
  "peerDependencies": {
25
- "@ekairos/thread": "*"
28
+ "@ekairos/events": "workspace:*"
26
29
  },
27
30
  "devDependencies": {
28
- "@ekairos/thread": "workspace:*",
31
+ "@ekairos/domain": "workspace:*",
32
+ "@ekairos/events": "workspace:*",
33
+ "@instantdb/admin": "0.22.158",
29
34
  "@ekairos/tsconfig": "workspace:*",
30
35
  "@types/node": "^24.5.0",
31
- "typescript": "^5.9.2"
36
+ "dotenv": "^17.2.3",
37
+ "typescript": "^5.9.2",
38
+ "vitest": "^4.0.8"
32
39
  },
33
40
  "repository": {
34
41
  "type": "git",