@traceai/codex-sdk 0.0.0-stage → 0.1.1
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/README.md +172 -2
- package/dist/esm/attributes.d.ts +101 -0
- package/dist/esm/attributes.d.ts.map +1 -0
- package/dist/esm/attributes.js +104 -0
- package/dist/esm/attributes.js.map +1 -0
- package/dist/esm/codexWrapper.d.ts +5 -0
- package/dist/esm/codexWrapper.d.ts.map +1 -0
- package/dist/esm/codexWrapper.js +63 -0
- package/dist/esm/codexWrapper.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/instrumentation.d.ts +85 -0
- package/dist/esm/instrumentation.d.ts.map +1 -0
- package/dist/esm/instrumentation.js +195 -0
- package/dist/esm/instrumentation.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/spans.d.ts +152 -0
- package/dist/esm/spans.d.ts.map +1 -0
- package/dist/esm/spans.js +678 -0
- package/dist/esm/spans.js.map +1 -0
- package/dist/esm/threadWrapper.d.ts +35 -0
- package/dist/esm/threadWrapper.d.ts.map +1 -0
- package/dist/esm/threadWrapper.js +208 -0
- package/dist/esm/threadWrapper.js.map +1 -0
- package/dist/esm/types.d.ts +123 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +10 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/version.d.ts +2 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/esnext/attributes.d.ts +101 -0
- package/dist/esnext/attributes.d.ts.map +1 -0
- package/dist/esnext/attributes.js +104 -0
- package/dist/esnext/attributes.js.map +1 -0
- package/dist/esnext/codexWrapper.d.ts +5 -0
- package/dist/esnext/codexWrapper.d.ts.map +1 -0
- package/dist/esnext/codexWrapper.js +65 -0
- package/dist/esnext/codexWrapper.js.map +1 -0
- package/dist/esnext/index.d.ts +8 -0
- package/dist/esnext/index.d.ts.map +1 -0
- package/dist/esnext/index.js +5 -0
- package/dist/esnext/index.js.map +1 -0
- package/dist/esnext/instrumentation.d.ts +85 -0
- package/dist/esnext/instrumentation.d.ts.map +1 -0
- package/dist/esnext/instrumentation.js +200 -0
- package/dist/esnext/instrumentation.js.map +1 -0
- package/dist/esnext/spans.d.ts +152 -0
- package/dist/esnext/spans.d.ts.map +1 -0
- package/dist/esnext/spans.js +688 -0
- package/dist/esnext/spans.js.map +1 -0
- package/dist/esnext/threadWrapper.d.ts +35 -0
- package/dist/esnext/threadWrapper.d.ts.map +1 -0
- package/dist/esnext/threadWrapper.js +206 -0
- package/dist/esnext/threadWrapper.js.map +1 -0
- package/dist/esnext/types.d.ts +123 -0
- package/dist/esnext/types.d.ts.map +1 -0
- package/dist/esnext/types.js +10 -0
- package/dist/esnext/types.js.map +1 -0
- package/dist/esnext/version.d.ts +2 -0
- package/dist/esnext/version.d.ts.map +1 -0
- package/dist/esnext/version.js +2 -0
- package/dist/esnext/version.js.map +1 -0
- package/dist/src/attributes.d.ts +101 -0
- package/dist/src/attributes.d.ts.map +1 -0
- package/dist/src/attributes.js +107 -0
- package/dist/src/attributes.js.map +1 -0
- package/dist/src/codexWrapper.d.ts +5 -0
- package/dist/src/codexWrapper.d.ts.map +1 -0
- package/dist/src/codexWrapper.js +68 -0
- package/dist/src/codexWrapper.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/instrumentation.d.ts +85 -0
- package/dist/src/instrumentation.d.ts.map +1 -0
- package/dist/src/instrumentation.js +222 -0
- package/dist/src/instrumentation.js.map +1 -0
- package/dist/src/spans.d.ts +152 -0
- package/dist/src/spans.d.ts.map +1 -0
- package/dist/src/spans.js +698 -0
- package/dist/src/spans.js.map +1 -0
- package/dist/src/threadWrapper.d.ts +35 -0
- package/dist/src/threadWrapper.d.ts.map +1 -0
- package/dist/src/threadWrapper.js +229 -0
- package/dist/src/threadWrapper.js.map +1 -0
- package/dist/src/types.d.ts +123 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +5 -0
- package/dist/src/version.js.map +1 -0
- package/package.json +76 -3
- package/src/attributes.ts +113 -0
- package/src/codexWrapper.ts +71 -0
- package/src/index.ts +27 -0
- package/src/instrumentation.ts +227 -0
- package/src/spans.ts +729 -0
- package/src/threadWrapper.ts +221 -0
- package/src/types.ts +113 -0
- package/src/version.ts +1 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Span model for one Codex turn (one `Thread.run()` or `Thread.runStreamed()`).
|
|
3
|
+
*
|
|
4
|
+
* The SDK yields `ThreadEvent`s, not spans. `TurnTracer` turns them into:
|
|
5
|
+
*
|
|
6
|
+
* codex.turn (AGENT) session.id = thread id, usage
|
|
7
|
+
* ├─ codex.reasoning (CHAIN)
|
|
8
|
+
* ├─ codex.command_execution (TOOL)
|
|
9
|
+
* ├─ codex.file_change (TOOL)
|
|
10
|
+
* ├─ codex.mcp_tool_call (TOOL)
|
|
11
|
+
* ├─ codex.web_search (TOOL)
|
|
12
|
+
* ├─ codex.todo_list (CHAIN)
|
|
13
|
+
* ├─ codex.agent_message (LLM)
|
|
14
|
+
* └─ codex.error (CHAIN, codex.warning=true) non-fatal error item
|
|
15
|
+
*
|
|
16
|
+
* Every public method swallows its own errors: tracing never fails the agent.
|
|
17
|
+
*/
|
|
18
|
+
import { Context, HrTime, Tracer } from "@opentelemetry/api";
|
|
19
|
+
import { InputLike, ThreadOptionsLike, TurnOptionsLike } from "./types";
|
|
20
|
+
/** Which content the wrapper may copy onto spans. Both default to hidden. */
|
|
21
|
+
export interface ContentPolicy {
|
|
22
|
+
hideInputs: boolean;
|
|
23
|
+
hideOutputs: boolean;
|
|
24
|
+
/** Error details remain hidden even when ordinary outputs are visible. */
|
|
25
|
+
hideErrorDetails: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** How the wrapped event stream stopped. */
|
|
28
|
+
export type FinishOutcome = {
|
|
29
|
+
kind: "completed";
|
|
30
|
+
} | {
|
|
31
|
+
kind: "returned";
|
|
32
|
+
} | {
|
|
33
|
+
kind: "error";
|
|
34
|
+
error: unknown;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* One clock for every start and end time the wrapper sets. OTel falls back to
|
|
38
|
+
* millisecond `Date.now()` for the end of a span whose start time was given,
|
|
39
|
+
* so mixing explicit and implicit times can order a child after its parent.
|
|
40
|
+
*/
|
|
41
|
+
export declare function clockMs(): number;
|
|
42
|
+
export declare function toHrTime(ms: number): HrTime;
|
|
43
|
+
export declare function truncate(value: string, max: number): string;
|
|
44
|
+
export declare function safeJson(value: unknown, max?: number): string;
|
|
45
|
+
/** Same normalization as the SDK's `normalizeInput`: text parts joined by a blank line. */
|
|
46
|
+
export declare function normalizeInput(input: InputLike | undefined): {
|
|
47
|
+
prompt: string;
|
|
48
|
+
images: number;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* The SDK builds its thrown messages from raw data: `Codex Exec exited with
|
|
52
|
+
* code 1: <the binary's stderr>` and `Failed to parse item: <the raw line>`
|
|
53
|
+
* (dist/index.js of 0.162.1). Stderr can hold config lines, local paths and
|
|
54
|
+
* the user name; the raw line can hold the prompt or command output. With
|
|
55
|
+
* outputs hidden only this fixed summary is exported.
|
|
56
|
+
*/
|
|
57
|
+
export declare function errorSummary(error: unknown): string;
|
|
58
|
+
type UsageTotals = {
|
|
59
|
+
input_tokens?: number;
|
|
60
|
+
cached_input_tokens?: number;
|
|
61
|
+
cache_write_input_tokens?: number;
|
|
62
|
+
output_tokens?: number;
|
|
63
|
+
reasoning_output_tokens?: number;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Last running total seen per thread id in this process (LRU, 1000 threads).
|
|
67
|
+
* Exact while a thread's turns run in one process; see the README.
|
|
68
|
+
*/
|
|
69
|
+
declare class UsageBaselines {
|
|
70
|
+
private readonly totals;
|
|
71
|
+
get(threadId: string): UsageTotals | undefined;
|
|
72
|
+
set(threadId: string, totals: UsageTotals): void;
|
|
73
|
+
clear(): void;
|
|
74
|
+
get size(): number;
|
|
75
|
+
}
|
|
76
|
+
export declare const usageBaselines: UsageBaselines;
|
|
77
|
+
export declare class TurnTracer {
|
|
78
|
+
private readonly tracer;
|
|
79
|
+
private readonly policy;
|
|
80
|
+
private readonly parentContext;
|
|
81
|
+
private readonly startTimeMs;
|
|
82
|
+
private readonly input;
|
|
83
|
+
private readonly turnOptions;
|
|
84
|
+
private readonly threadOptions;
|
|
85
|
+
private readonly contextAttributes;
|
|
86
|
+
private readonly appSetSession;
|
|
87
|
+
private readonly resumed;
|
|
88
|
+
private turn?;
|
|
89
|
+
private turnContext?;
|
|
90
|
+
private finished;
|
|
91
|
+
private threadId?;
|
|
92
|
+
private lastEventMs;
|
|
93
|
+
private finalResponse?;
|
|
94
|
+
private completed;
|
|
95
|
+
/** `turn.failed` text; the turn failed. */
|
|
96
|
+
private failedMessage?;
|
|
97
|
+
/** Last `error` event text. Fatal only if the turn ends without `turn.completed`. */
|
|
98
|
+
private streamErrorMessage?;
|
|
99
|
+
private streamErrorCount;
|
|
100
|
+
private readonly items;
|
|
101
|
+
private anonymousItems;
|
|
102
|
+
constructor(args: {
|
|
103
|
+
tracer: Tracer;
|
|
104
|
+
policy: ContentPolicy;
|
|
105
|
+
parentContext: Context;
|
|
106
|
+
input: InputLike | undefined;
|
|
107
|
+
turnOptions?: TurnOptionsLike;
|
|
108
|
+
threadOptions?: ThreadOptionsLike;
|
|
109
|
+
threadId?: string | null;
|
|
110
|
+
startTimeMs?: number;
|
|
111
|
+
});
|
|
112
|
+
private get hideErrorText();
|
|
113
|
+
get isFinished(): boolean;
|
|
114
|
+
/** Open the turn span. Called on the first `next()`; idempotent. */
|
|
115
|
+
start(): void;
|
|
116
|
+
/** Record one SDK event. Never throws and never mutates the event. */
|
|
117
|
+
onEvent(event: unknown): void;
|
|
118
|
+
/**
|
|
119
|
+
* End every open span for this turn, the turn span last. Idempotent.
|
|
120
|
+
* The spans always end, even if recording their attributes throws: item
|
|
121
|
+
* spans that already ended were exported with the turn as their parent.
|
|
122
|
+
*/
|
|
123
|
+
finish(outcome: FinishOutcome): void;
|
|
124
|
+
/** Statuses and attributes for `finish()`; closes open item spans. */
|
|
125
|
+
private recordFinish;
|
|
126
|
+
private turnStartAttributes;
|
|
127
|
+
private sessionAttributes;
|
|
128
|
+
private setThreadId;
|
|
129
|
+
/**
|
|
130
|
+
* `turn.completed.usage` is the thread's running total, not the turn's own
|
|
131
|
+
* spend (measured on 0.162.1: each resumed turn reports the previous total
|
|
132
|
+
* plus its own requests, also across processes). The promoted
|
|
133
|
+
* `gen_ai.usage.*` keys carry only this turn's new spend: the total minus
|
|
134
|
+
* the last total this process saw for the thread. A new thread starts at
|
|
135
|
+
* zero. A resumed thread with no total seen in this process promotes nothing
|
|
136
|
+
* (`codex.usage.baseline_unknown`); later turns promote their delta.
|
|
137
|
+
* A failed or cancelled turn reports no usage, so its spend lands on the
|
|
138
|
+
* thread's next completed turn. Running totals are always on
|
|
139
|
+
* `codex.cumulative.*`.
|
|
140
|
+
*/
|
|
141
|
+
private setUsage;
|
|
142
|
+
private itemKey;
|
|
143
|
+
private onItemStarted;
|
|
144
|
+
private onItemUpdated;
|
|
145
|
+
private onItemCompleted;
|
|
146
|
+
private startItemSpan;
|
|
147
|
+
/** Structural fields always; content only when the policy allows it. */
|
|
148
|
+
private applyItemAttributes;
|
|
149
|
+
private applyItemStatus;
|
|
150
|
+
}
|
|
151
|
+
export {};
|
|
152
|
+
//# sourceMappingURL=spans.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spans.d.ts","sourceRoot":"","sources":["../../src/spans.ts"],"names":[],"mappings":"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"}
|