@cleocode/adapters 2026.5.3 → 2026.5.5

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 (125) hide show
  1. package/dist/index.js +40 -0
  2. package/dist/index.js.map +3 -3
  3. package/package.json +4 -4
  4. package/dist/cant-context.js +0 -711
  5. package/dist/cant-context.js.map +0 -1
  6. package/dist/providers/claude-code/adapter.js +0 -222
  7. package/dist/providers/claude-code/adapter.js.map +0 -1
  8. package/dist/providers/claude-code/context-monitor.js +0 -159
  9. package/dist/providers/claude-code/context-monitor.js.map +0 -1
  10. package/dist/providers/claude-code/hooks.js +0 -428
  11. package/dist/providers/claude-code/hooks.js.map +0 -1
  12. package/dist/providers/claude-code/index.js +0 -41
  13. package/dist/providers/claude-code/index.js.map +0 -1
  14. package/dist/providers/claude-code/install.js +0 -310
  15. package/dist/providers/claude-code/install.js.map +0 -1
  16. package/dist/providers/claude-code/paths.js +0 -41
  17. package/dist/providers/claude-code/paths.js.map +0 -1
  18. package/dist/providers/claude-code/spawn.js +0 -198
  19. package/dist/providers/claude-code/spawn.js.map +0 -1
  20. package/dist/providers/claude-code/statusline.js +0 -130
  21. package/dist/providers/claude-code/statusline.js.map +0 -1
  22. package/dist/providers/claude-code/task-sync.js +0 -119
  23. package/dist/providers/claude-code/task-sync.js.map +0 -1
  24. package/dist/providers/claude-code/transport.js +0 -29
  25. package/dist/providers/claude-code/transport.js.map +0 -1
  26. package/dist/providers/claude-sdk/adapter.js +0 -88
  27. package/dist/providers/claude-sdk/adapter.js.map +0 -1
  28. package/dist/providers/claude-sdk/index.js +0 -34
  29. package/dist/providers/claude-sdk/index.js.map +0 -1
  30. package/dist/providers/claude-sdk/install.js +0 -61
  31. package/dist/providers/claude-sdk/install.js.map +0 -1
  32. package/dist/providers/claude-sdk/mcp-registry.js +0 -66
  33. package/dist/providers/claude-sdk/mcp-registry.js.map +0 -1
  34. package/dist/providers/claude-sdk/session-store.js +0 -84
  35. package/dist/providers/claude-sdk/session-store.js.map +0 -1
  36. package/dist/providers/claude-sdk/spawn.js +0 -251
  37. package/dist/providers/claude-sdk/spawn.js.map +0 -1
  38. package/dist/providers/claude-sdk/tool-bridge.js +0 -50
  39. package/dist/providers/claude-sdk/tool-bridge.js.map +0 -1
  40. package/dist/providers/codex/adapter.js +0 -146
  41. package/dist/providers/codex/adapter.js.map +0 -1
  42. package/dist/providers/codex/hooks.js +0 -113
  43. package/dist/providers/codex/hooks.js.map +0 -1
  44. package/dist/providers/codex/index.js +0 -40
  45. package/dist/providers/codex/index.js.map +0 -1
  46. package/dist/providers/codex/install.js +0 -132
  47. package/dist/providers/codex/install.js.map +0 -1
  48. package/dist/providers/codex/spawn.js +0 -203
  49. package/dist/providers/codex/spawn.js.map +0 -1
  50. package/dist/providers/cursor/adapter.js +0 -151
  51. package/dist/providers/cursor/adapter.js.map +0 -1
  52. package/dist/providers/cursor/hooks.js +0 -208
  53. package/dist/providers/cursor/hooks.js.map +0 -1
  54. package/dist/providers/cursor/index.js +0 -36
  55. package/dist/providers/cursor/index.js.map +0 -1
  56. package/dist/providers/cursor/install.js +0 -281
  57. package/dist/providers/cursor/install.js.map +0 -1
  58. package/dist/providers/cursor/spawn.js +0 -59
  59. package/dist/providers/cursor/spawn.js.map +0 -1
  60. package/dist/providers/gemini-cli/adapter.js +0 -158
  61. package/dist/providers/gemini-cli/adapter.js.map +0 -1
  62. package/dist/providers/gemini-cli/hooks.js +0 -128
  63. package/dist/providers/gemini-cli/hooks.js.map +0 -1
  64. package/dist/providers/gemini-cli/index.js +0 -40
  65. package/dist/providers/gemini-cli/index.js.map +0 -1
  66. package/dist/providers/gemini-cli/install.js +0 -124
  67. package/dist/providers/gemini-cli/install.js.map +0 -1
  68. package/dist/providers/gemini-cli/spawn.js +0 -195
  69. package/dist/providers/gemini-cli/spawn.js.map +0 -1
  70. package/dist/providers/kimi/adapter.js +0 -145
  71. package/dist/providers/kimi/adapter.js.map +0 -1
  72. package/dist/providers/kimi/hooks.js +0 -79
  73. package/dist/providers/kimi/hooks.js.map +0 -1
  74. package/dist/providers/kimi/index.js +0 -40
  75. package/dist/providers/kimi/index.js.map +0 -1
  76. package/dist/providers/kimi/install.js +0 -124
  77. package/dist/providers/kimi/install.js.map +0 -1
  78. package/dist/providers/kimi/spawn.js +0 -225
  79. package/dist/providers/kimi/spawn.js.map +0 -1
  80. package/dist/providers/openai-sdk/adapter.js +0 -121
  81. package/dist/providers/openai-sdk/adapter.js.map +0 -1
  82. package/dist/providers/openai-sdk/guardrails.js +0 -174
  83. package/dist/providers/openai-sdk/guardrails.js.map +0 -1
  84. package/dist/providers/openai-sdk/handoff.js +0 -128
  85. package/dist/providers/openai-sdk/handoff.js.map +0 -1
  86. package/dist/providers/openai-sdk/index.js +0 -40
  87. package/dist/providers/openai-sdk/index.js.map +0 -1
  88. package/dist/providers/openai-sdk/install.js +0 -120
  89. package/dist/providers/openai-sdk/install.js.map +0 -1
  90. package/dist/providers/openai-sdk/spawn.js +0 -361
  91. package/dist/providers/openai-sdk/spawn.js.map +0 -1
  92. package/dist/providers/openai-sdk/tracing.js +0 -159
  93. package/dist/providers/openai-sdk/tracing.js.map +0 -1
  94. package/dist/providers/opencode/adapter.js +0 -166
  95. package/dist/providers/opencode/adapter.js.map +0 -1
  96. package/dist/providers/opencode/hooks.js +0 -206
  97. package/dist/providers/opencode/hooks.js.map +0 -1
  98. package/dist/providers/opencode/index.js +0 -37
  99. package/dist/providers/opencode/index.js.map +0 -1
  100. package/dist/providers/opencode/install.js +0 -242
  101. package/dist/providers/opencode/install.js.map +0 -1
  102. package/dist/providers/opencode/spawn.js +0 -257
  103. package/dist/providers/opencode/spawn.js.map +0 -1
  104. package/dist/providers/pi/adapter.js +0 -220
  105. package/dist/providers/pi/adapter.js.map +0 -1
  106. package/dist/providers/pi/hooks.js +0 -223
  107. package/dist/providers/pi/hooks.js.map +0 -1
  108. package/dist/providers/pi/index.js +0 -38
  109. package/dist/providers/pi/index.js.map +0 -1
  110. package/dist/providers/pi/install.js +0 -183
  111. package/dist/providers/pi/install.js.map +0 -1
  112. package/dist/providers/pi/spawn.js +0 -187
  113. package/dist/providers/pi/spawn.js.map +0 -1
  114. package/dist/providers/shared/conduit-trace-writer.js +0 -65
  115. package/dist/providers/shared/conduit-trace-writer.js.map +0 -1
  116. package/dist/providers/shared/hook-template-installer.js +0 -209
  117. package/dist/providers/shared/hook-template-installer.js.map +0 -1
  118. package/dist/providers/shared/paths.js +0 -77
  119. package/dist/providers/shared/paths.js.map +0 -1
  120. package/dist/providers/shared/sdk-result-mapper.js +0 -55
  121. package/dist/providers/shared/sdk-result-mapper.js.map +0 -1
  122. package/dist/providers/shared/transcript-reader.js +0 -124
  123. package/dist/providers/shared/transcript-reader.js.map +0 -1
  124. package/dist/registry.js +0 -92
  125. package/dist/registry.js.map +0 -1
@@ -1,361 +0,0 @@
1
- /**
2
- * OpenAI SDK spawn provider — Vercel AI SDK edition.
3
- *
4
- * Implements `AdapterSpawnProvider` using the Vercel AI SDK
5
- * (`ai` v6 + `@ai-sdk/openai`) instead of the legacy `@openai/agents`. CLEO
6
- * retains its own orchestration (handoff topology, guardrails, tracing); the
7
- * SDK is strictly the LLM bridge.
8
- *
9
- * Unlike the Claude Code provider (detached fire-and-forget), this provider
10
- * awaits the run and returns `status: 'completed'` or `status: 'failed'` so
11
- * the orchestrator receives rich output immediately.
12
- *
13
- * Key features:
14
- * - Tier-based model selection (lead → gpt-4.1, worker → gpt-4.1-mini)
15
- * - Handoff topology built from `SpawnContext.options.handoffs` (CLEO-native)
16
- * - CLEO path ACL guardrails evaluated before the model call
17
- * - Default-on tracing via `CleoConduitTraceProcessor`
18
- * - CANT prompt enrichment (best-effort, same as Claude Code provider)
19
- *
20
- * @task T582 (original)
21
- * @task T933 (SDK consolidation — Vercel AI SDK migration)
22
- * @see ADR-052 — SDK consolidation decision
23
- */
24
- import { getErrorMessage } from '@cleocode/contracts';
25
- import { mapSdkRunOutcome } from '../shared/sdk-result-mapper.js';
26
- import { buildDefaultGuardrails, evaluateGuardrails } from './guardrails.js';
27
- import { buildAgentTopology } from './handoff.js';
28
- import { CleoConduitTraceProcessor } from './tracing.js';
29
- // ---------------------------------------------------------------------------
30
- // Constants
31
- // ---------------------------------------------------------------------------
32
- const MODEL_LEAD = 'gpt-4.1';
33
- const MODEL_WORKER = 'gpt-4.1-mini';
34
- // ---------------------------------------------------------------------------
35
- // Trace processor registry (module-scoped)
36
- // ---------------------------------------------------------------------------
37
- /** Registered trace processors that receive span events across the module. */
38
- const registeredProcessors = [];
39
- /** Module-level flag that disables span dispatch globally. */
40
- let tracingGlobalDisabled = false;
41
- /**
42
- * Register a CLEO trace processor. Mirrors `addTraceProcessor` from the
43
- * legacy `@openai/agents` surface so existing consumers continue to work.
44
- *
45
- * @param processor - Processor to register.
46
- */
47
- export function registerTraceProcessor(processor) {
48
- registeredProcessors.push(processor);
49
- }
50
- /**
51
- * Remove a previously registered trace processor.
52
- *
53
- * @param processor - Processor to remove.
54
- */
55
- export function unregisterTraceProcessor(processor) {
56
- const idx = registeredProcessors.indexOf(processor);
57
- if (idx >= 0) {
58
- registeredProcessors.splice(idx, 1);
59
- }
60
- }
61
- /**
62
- * Enable or disable global tracing. Equivalent to `setTracingDisabled` from
63
- * the legacy `@openai/agents` surface.
64
- *
65
- * @param disabled - When true, no spans are emitted.
66
- */
67
- export function setTracingDisabled(disabled) {
68
- tracingGlobalDisabled = disabled;
69
- }
70
- /**
71
- * Dispatch a span to every registered trace processor, subject to the global
72
- * `tracingGlobalDisabled` flag.
73
- *
74
- * @param span - Span event to dispatch.
75
- */
76
- async function emitSpan(span) {
77
- if (tracingGlobalDisabled)
78
- return;
79
- for (const processor of registeredProcessors) {
80
- try {
81
- await processor.onSpanEnd(span);
82
- }
83
- catch {
84
- // Tracing failures must never break a run.
85
- }
86
- }
87
- }
88
- // ---------------------------------------------------------------------------
89
- // Provider
90
- // ---------------------------------------------------------------------------
91
- /**
92
- * Spawn provider for the Vercel AI SDK (OpenAI flavour).
93
- *
94
- * Spawns SDK-backed agent runs for a given `SpawnContext`. The run is awaited
95
- * synchronously and the result mapped to a `SpawnResult` with
96
- * `status: 'completed'` or `status: 'failed'`. In-flight runs are tracked by
97
- * instance ID so `listRunning()` and `terminate()` work correctly.
98
- *
99
- * @remarks
100
- * Handoff topology is resolved by this provider, not the SDK. When the entry
101
- * agent is a lead with workers, the provider:
102
- *
103
- * 1. Runs the lead agent's `generateText` with the enriched prompt.
104
- * 2. For each worker listed in handoffs, runs a sequential `generateText`
105
- * using the worker's archetype model, passing the lead's output as the
106
- * worker prompt. Results are concatenated.
107
- *
108
- * This preserves the visible behaviour of the legacy `@openai/agents` runner
109
- * while keeping CLEO as the orchestration owner.
110
- *
111
- * @example
112
- * ```typescript
113
- * const provider = new OpenAiSdkSpawnProvider();
114
- * const result = await provider.spawn({
115
- * taskId: 'T582',
116
- * prompt: 'Implement feature X',
117
- * options: { tier: 'lead', handoffs: ['worker-read', 'worker-write'] },
118
- * });
119
- * console.log(result.status); // 'completed'
120
- * ```
121
- */
122
- export class OpenAiSdkSpawnProvider {
123
- /** Currently running instance IDs (completed runs are removed). */
124
- runningInstances = new Set();
125
- /**
126
- * Check whether the OpenAI SDK can spawn in the current environment.
127
- *
128
- * Requires `OPENAI_API_KEY` to be set. Does not make a network call.
129
- *
130
- * @returns `true` when `OPENAI_API_KEY` is present in the environment.
131
- */
132
- async canSpawn() {
133
- return typeof process.env.OPENAI_API_KEY === 'string' && process.env.OPENAI_API_KEY.length > 0;
134
- }
135
- /**
136
- * Spawn a subagent via the Vercel AI SDK.
137
- *
138
- * Awaits the run to completion and returns a fully-resolved `SpawnResult`.
139
- *
140
- * @param context - Spawn context with task ID, prompt, and options.
141
- * @returns Resolved spawn result with `status: 'completed'` or `'failed'`.
142
- */
143
- async spawn(context) {
144
- const instanceId = `openai-sdk-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
145
- const startTime = new Date().toISOString();
146
- this.runningInstances.add(instanceId);
147
- try {
148
- const opts = this.parseOptions(context.options);
149
- // Enrich prompt with CANT bundle (best-effort, same pattern as Claude Code provider).
150
- let finalPrompt = context.prompt;
151
- try {
152
- const { buildCantEnrichedPrompt } = await import('../../cant-context.js');
153
- finalPrompt = await buildCantEnrichedPrompt({
154
- projectDir: context.workingDirectory ?? process.cwd(),
155
- basePrompt: context.prompt,
156
- agentName: opts.agentName,
157
- });
158
- }
159
- catch {
160
- // CANT enrichment unavailable — use raw prompt.
161
- }
162
- // Build guardrails from ACL options.
163
- const guardrails = buildDefaultGuardrails(opts.allowedGlobs ?? [], opts.allowedTools ?? []);
164
- // Derive model from tier when not explicitly set.
165
- const model = opts.model ?? this.modelForTier(opts.tier ?? 'worker');
166
- // Build agent topology (lead + workers, or standalone worker).
167
- const agent = buildAgentTopology({
168
- instructions: finalPrompt,
169
- model,
170
- tier: opts.tier ?? 'worker',
171
- handoffNames: opts.handoffs ?? [],
172
- guardrails,
173
- });
174
- // Register trace processor globally (default-on).
175
- let traceProcessor;
176
- const previousTracingDisabled = tracingGlobalDisabled;
177
- if (!opts.tracingDisabled) {
178
- traceProcessor = new CleoConduitTraceProcessor(context.taskId);
179
- registerTraceProcessor(traceProcessor);
180
- setTracingDisabled(false);
181
- }
182
- else {
183
- setTracingDisabled(true);
184
- }
185
- try {
186
- // Evaluate guardrails before any model call. A tripped guardrail
187
- // aborts the run with a structured failure.
188
- const guardResult = await evaluateGuardrails(agent.inputGuardrails ?? [], finalPrompt);
189
- if (guardResult.tripwireTriggered) {
190
- this.runningInstances.delete(instanceId);
191
- return mapSdkRunOutcome(instanceId, context.taskId, 'openai-sdk', startTime, {
192
- finalOutput: '',
193
- succeeded: false,
194
- errorMessage: `guardrail tripped: ${JSON.stringify(guardResult.outputInfo)}`,
195
- });
196
- }
197
- // Run the lead/worker topology.
198
- const runOutput = await runAgentTopology(agent, finalPrompt, emitSpan);
199
- this.runningInstances.delete(instanceId);
200
- return mapSdkRunOutcome(instanceId, context.taskId, 'openai-sdk', startTime, {
201
- finalOutput: runOutput,
202
- succeeded: true,
203
- });
204
- }
205
- finally {
206
- // Restore previous tracing state and unregister this run's processor.
207
- if (traceProcessor) {
208
- unregisterTraceProcessor(traceProcessor);
209
- }
210
- setTracingDisabled(previousTracingDisabled);
211
- }
212
- }
213
- catch (error) {
214
- this.runningInstances.delete(instanceId);
215
- return mapSdkRunOutcome(instanceId, context.taskId, 'openai-sdk', startTime, {
216
- finalOutput: '',
217
- succeeded: false,
218
- errorMessage: getErrorMessage(error),
219
- });
220
- }
221
- }
222
- /**
223
- * List currently running OpenAI SDK agent instances.
224
- *
225
- * @returns Array of in-progress spawn results.
226
- */
227
- async listRunning() {
228
- return [...this.runningInstances].map((instanceId) => ({
229
- instanceId,
230
- taskId: 'unknown',
231
- providerId: 'openai-sdk',
232
- status: 'running',
233
- startTime: new Date().toISOString(),
234
- }));
235
- }
236
- /**
237
- * Terminate a running spawn by instance ID.
238
- *
239
- * The Vercel AI SDK does not support external termination of in-flight
240
- * requests; this method removes the instance from the tracking set so it
241
- * will no longer appear in `listRunning()`.
242
- *
243
- * @param instanceId - ID of the spawn instance to terminate.
244
- */
245
- async terminate(instanceId) {
246
- this.runningInstances.delete(instanceId);
247
- }
248
- // ---------------------------------------------------------------------------
249
- // Private helpers
250
- // ---------------------------------------------------------------------------
251
- /**
252
- * Parse and validate `SpawnContext.options` into typed `OpenAiSdkSpawnOptions`.
253
- *
254
- * Unknown fields are silently ignored.
255
- */
256
- parseOptions(raw) {
257
- if (!raw)
258
- return {};
259
- const opts = {};
260
- if (typeof raw.model === 'string')
261
- opts.model = raw.model;
262
- if (raw.tier === 'lead' || raw.tier === 'worker' || raw.tier === 'orchestrator') {
263
- opts.tier = raw.tier;
264
- }
265
- if (Array.isArray(raw.handoffs) && raw.handoffs.every((h) => typeof h === 'string')) {
266
- opts.handoffs = raw.handoffs;
267
- }
268
- if (Array.isArray(raw.allowedGlobs) && raw.allowedGlobs.every((g) => typeof g === 'string')) {
269
- opts.allowedGlobs = raw.allowedGlobs;
270
- }
271
- if (Array.isArray(raw.allowedTools) && raw.allowedTools.every((t) => typeof t === 'string')) {
272
- opts.allowedTools = raw.allowedTools;
273
- }
274
- if (typeof raw.tracingDisabled === 'boolean')
275
- opts.tracingDisabled = raw.tracingDisabled;
276
- if (typeof raw.agentName === 'string')
277
- opts.agentName = raw.agentName;
278
- return opts;
279
- }
280
- /**
281
- * Derive the default model for a given tier.
282
- *
283
- * @param tier - Agent tier.
284
- * @returns Model identifier string.
285
- */
286
- modelForTier(tier) {
287
- return tier === 'worker' ? MODEL_WORKER : MODEL_LEAD;
288
- }
289
- }
290
- // ---------------------------------------------------------------------------
291
- // Topology runner
292
- // ---------------------------------------------------------------------------
293
- /**
294
- * Execute a CLEO agent topology against the Vercel AI SDK.
295
- *
296
- * Runs the entry agent via `generateText`. When the entry agent declares
297
- * handoffs, each worker is executed sequentially with the lead's output as
298
- * input and the concatenated result returned.
299
- *
300
- * @param agent - Entry agent descriptor.
301
- * @param userPrompt - Enriched user prompt.
302
- * @param emit - Span emitter invoked after every agent run.
303
- * @returns Concatenated assistant output.
304
- */
305
- async function runAgentTopology(agent, userPrompt, emit) {
306
- const { createOpenAI } = await import('@ai-sdk/openai');
307
- const { generateText } = await import('ai');
308
- const apiKey = process.env.OPENAI_API_KEY;
309
- if (!apiKey) {
310
- throw new Error('OPENAI_API_KEY is not set — OpenAI SDK provider cannot run');
311
- }
312
- const openai = createOpenAI({ apiKey });
313
- // Run the entry agent.
314
- const startedAt = new Date().toISOString();
315
- const leadResult = await generateText({
316
- model: openai(agent.model),
317
- system: agent.instructions,
318
- prompt: userPrompt,
319
- });
320
- const leadText = (leadResult.text ?? '').trim();
321
- const leadEnd = new Date().toISOString();
322
- await emit({
323
- spanId: `${agent.name}-${Date.now()}`,
324
- startedAt,
325
- endedAt: leadEnd,
326
- spanData: { type: 'agent', name: agent.name },
327
- });
328
- // When there are no handoffs, return the lead output directly.
329
- const workers = agent.handoffs ?? [];
330
- if (workers.length === 0) {
331
- return leadText;
332
- }
333
- // Sequential handoff execution. Each worker receives the lead output as
334
- // input, and the concatenated worker outputs become the final run output.
335
- const workerOutputs = [];
336
- for (const worker of workers) {
337
- const handoffStart = new Date().toISOString();
338
- await emit({
339
- spanId: `handoff-${agent.name}-${worker.name}-${Date.now()}`,
340
- startedAt: handoffStart,
341
- endedAt: handoffStart,
342
- spanData: { type: 'handoff', from_agent: agent.name, to_agent: worker.name },
343
- });
344
- const workerStart = new Date().toISOString();
345
- const workerResult = await generateText({
346
- model: openai(worker.model),
347
- system: worker.instructions,
348
- prompt: leadText,
349
- });
350
- const workerEnd = new Date().toISOString();
351
- await emit({
352
- spanId: `${worker.name}-${Date.now()}`,
353
- startedAt: workerStart,
354
- endedAt: workerEnd,
355
- spanData: { type: 'agent', name: worker.name },
356
- });
357
- workerOutputs.push(`[${worker.name}] ${(workerResult.text ?? '').trim()}`);
358
- }
359
- return [leadText, ...workerOutputs].join('\n\n');
360
- }
361
- //# sourceMappingURL=spawn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/providers/openai-sdk/spawn.ts"],"names":[],"mappings":"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"}
@@ -1,159 +0,0 @@
1
- /**
2
- * CLEO trace processor that writes spans to conduit.db.
3
- *
4
- * `CleoConduitTraceProcessor` implements a CLEO-native tracing processor
5
- * interface that records spans emitted by the OpenAI SDK adapter. Post T933
6
- * (ADR-052 — Vercel AI SDK consolidation) the processor no longer implements
7
- * `@openai/agents` type surfaces; instead it consumes `CleoSpan` events
8
- * produced by `OpenAiSdkSpawnProvider` during a run.
9
- *
10
- * Tracing is on by default for all OpenAI SDK spawns. Set
11
- * `options.tracingDisabled = true` in `SpawnContext.options` to opt out when
12
- * conduit is unavailable.
13
- *
14
- * @task T582 (original)
15
- * @task T933 (SDK consolidation — provider-neutral rewrite)
16
- */
17
- import { writeSpanBatchToConduit } from '../shared/conduit-trace-writer.js';
18
- // ---------------------------------------------------------------------------
19
- // Processor
20
- // ---------------------------------------------------------------------------
21
- /**
22
- * CLEO trace processor that persists OpenAI SDK adapter spans to conduit.db.
23
- *
24
- * Each `onSpanEnd` call extracts span metadata and enqueues a write to conduit
25
- * via the shared `conduit-trace-writer` module. Writes are fire-and-forget —
26
- * failures are logged but never propagated to the caller.
27
- *
28
- * @remarks
29
- * `onTraceEnd` performs a batch flush of any buffered spans. Individual
30
- * `onSpanEnd` calls also write immediately so spans are not lost if the run
31
- * is interrupted.
32
- *
33
- * @example
34
- * ```typescript
35
- * import { registerTraceProcessor } from './spawn.js';
36
- * import { CleoConduitTraceProcessor } from './tracing.js';
37
- *
38
- * const processor = new CleoConduitTraceProcessor('T582');
39
- * registerTraceProcessor(processor);
40
- * ```
41
- */
42
- export class CleoConduitTraceProcessor {
43
- /** CLEO task ID included in every span event for correlation. */
44
- taskId;
45
- /** Pending span events buffered within the current trace. */
46
- pendingEvents = [];
47
- /**
48
- * @param taskId - CLEO task ID to attach to every written span.
49
- */
50
- constructor(taskId) {
51
- this.taskId = taskId;
52
- }
53
- /**
54
- * Called when a new trace starts. Resets the pending event buffer.
55
- *
56
- * @param _trace - The trace that just started (unused).
57
- */
58
- async onTraceStart(_trace) {
59
- this.pendingEvents = [];
60
- }
61
- /**
62
- * Called when a trace ends. Flushes all pending span events to conduit.
63
- *
64
- * @param _trace - The trace that just ended (unused — spans were captured via `onSpanEnd`).
65
- */
66
- async onTraceEnd(_trace) {
67
- if (this.pendingEvents.length > 0) {
68
- await writeSpanBatchToConduit(this.pendingEvents);
69
- this.pendingEvents = [];
70
- }
71
- }
72
- /**
73
- * Called when a new span starts. No-op — we capture on end to have full timing.
74
- *
75
- * @param _span - The span that just started (unused).
76
- */
77
- async onSpanStart(_span) {
78
- // Capture on end so startedAt / endedAt are both populated.
79
- }
80
- /**
81
- * Called when a span ends. Serialises and writes the span to conduit.
82
- *
83
- * @param span - The completed span from the adapter.
84
- */
85
- async onSpanEnd(span) {
86
- const event = this.extractSpanEvent(span);
87
- if (event) {
88
- this.pendingEvents.push(event);
89
- // Also write immediately to survive partial run interruptions.
90
- await writeSpanBatchToConduit([event]);
91
- }
92
- }
93
- /**
94
- * Called during graceful shutdown. Flushes any remaining pending events.
95
- *
96
- * @param _timeout - Shutdown timeout in milliseconds (unused).
97
- */
98
- async shutdown(_timeout) {
99
- if (this.pendingEvents.length > 0) {
100
- await writeSpanBatchToConduit(this.pendingEvents);
101
- this.pendingEvents = [];
102
- }
103
- }
104
- /**
105
- * Force-flush all pending span events to conduit immediately.
106
- */
107
- async forceFlush() {
108
- if (this.pendingEvents.length > 0) {
109
- await writeSpanBatchToConduit(this.pendingEvents);
110
- this.pendingEvents = [];
111
- }
112
- }
113
- // ---------------------------------------------------------------------------
114
- // Private helpers
115
- // ---------------------------------------------------------------------------
116
- /**
117
- * Extract a {@link ConduitSpanEvent} from an adapter span, or `null` if the
118
- * span cannot be meaningfully serialised.
119
- *
120
- * @param span - The adapter span to serialise.
121
- * @returns A conduit span event or `null`.
122
- */
123
- extractSpanEvent(span) {
124
- const spanId = span.spanId ?? `span-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
125
- // Guard against malformed/empty spans (e.g. in unit tests with minimal mocks).
126
- if (!span.spanData)
127
- return null;
128
- const data = span.spanData;
129
- const spanType = data.type;
130
- // Extract agent name from span data shape based on type.
131
- let agentName = 'unknown';
132
- let handoffTarget;
133
- if (data.type === 'agent') {
134
- agentName = data.name;
135
- }
136
- else if (data.type === 'handoff') {
137
- agentName = data.from_agent ?? 'unknown';
138
- handoffTarget = data.to_agent ?? undefined;
139
- }
140
- else if (data.type === 'function') {
141
- agentName = data.name;
142
- }
143
- const startTime = span.startedAt ?? new Date().toISOString();
144
- const endTime = span.endedAt ?? new Date().toISOString();
145
- return {
146
- spanId,
147
- taskId: this.taskId,
148
- agentName,
149
- spanType,
150
- startTime,
151
- endTime,
152
- handoffTarget,
153
- metadata: {
154
- rawSpanData: data,
155
- },
156
- };
157
- }
158
- }
159
- //# sourceMappingURL=tracing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/providers/openai-sdk/tracing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAoF5E,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,yBAAyB;IACpC,iEAAiE;IAChD,MAAM,CAAS;IAEhC,6DAA6D;IACrD,aAAa,GAAuB,EAAE,CAAC;IAE/C;;OAEG;IACH,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,MAAiB;QAClC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAiB;QAChC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,KAAe;QAC/B,4DAA4D;IAC9D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,IAAc;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,+DAA+D;YAC/D,MAAM,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAiB;QAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E;;;;;;OAMG;IACK,gBAAgB,CAAC,IAAc;QACrC,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAEpF,+EAA+E;QAC/E,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAE3B,yDAAyD;QACzD,IAAI,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,aAAiC,CAAC;QAEtC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;YACzC,aAAa,GAAG,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEzD,OAAO;YACL,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS;YACT,QAAQ;YACR,SAAS;YACT,OAAO;YACP,aAAa;YACb,QAAQ,EAAE;gBACR,WAAW,EAAE,IAAI;aAClB;SACF,CAAC;IACJ,CAAC;CACF"}