@coralai/claude-code-agent 0.1.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/README.md +111 -0
- package/dist/agent.d.ts +240 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +592 -0
- package/dist/agent.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +33 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/fs.d.ts +26 -0
- package/dist/hooks/fs.d.ts.map +1 -0
- package/dist/hooks/fs.js +61 -0
- package/dist/hooks/fs.js.map +1 -0
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/permissions.d.ts +42 -0
- package/dist/hooks/permissions.d.ts.map +1 -0
- package/dist/hooks/permissions.js +79 -0
- package/dist/hooks/permissions.js.map +1 -0
- package/dist/hooks/terminal.d.ts +56 -0
- package/dist/hooks/terminal.d.ts.map +1 -0
- package/dist/hooks/terminal.js +127 -0
- package/dist/hooks/terminal.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/acp-client-interface.d.ts +107 -0
- package/dist/internal/acp-client-interface.d.ts.map +1 -0
- package/dist/internal/acp-client-interface.js +17 -0
- package/dist/internal/acp-client-interface.js.map +1 -0
- package/dist/internal/acp-types.d.ts +64 -0
- package/dist/internal/acp-types.d.ts.map +1 -0
- package/dist/internal/acp-types.js +17 -0
- package/dist/internal/acp-types.js.map +1 -0
- package/dist/internal/agent-runtime-interface.d.ts +40 -0
- package/dist/internal/agent-runtime-interface.d.ts.map +1 -0
- package/dist/internal/agent-runtime-interface.js +17 -0
- package/dist/internal/agent-runtime-interface.js.map +1 -0
- package/dist/internal/local-acp-client.d.ts +27 -0
- package/dist/internal/local-acp-client.d.ts.map +1 -0
- package/dist/internal/local-acp-client.js +26 -0
- package/dist/internal/local-acp-client.js.map +1 -0
- package/dist/internal/sdk-adapter.d.ts +24 -0
- package/dist/internal/sdk-adapter.d.ts.map +1 -0
- package/dist/internal/sdk-adapter.js +453 -0
- package/dist/internal/sdk-adapter.js.map +1 -0
- package/dist/internal/session-accumulator.d.ts +55 -0
- package/dist/internal/session-accumulator.d.ts.map +1 -0
- package/dist/internal/session-accumulator.js +133 -0
- package/dist/internal/session-accumulator.js.map +1 -0
- package/dist/prompt-handle.d.ts +70 -0
- package/dist/prompt-handle.d.ts.map +1 -0
- package/dist/prompt-handle.js +137 -0
- package/dist/prompt-handle.js.map +1 -0
- package/dist/recording/index.d.ts +10 -0
- package/dist/recording/index.d.ts.map +1 -0
- package/dist/recording/index.js +10 -0
- package/dist/recording/index.js.map +1 -0
- package/dist/recording/replayer.d.ts +17 -0
- package/dist/recording/replayer.d.ts.map +1 -0
- package/dist/recording/replayer.js +68 -0
- package/dist/recording/replayer.js.map +1 -0
- package/dist/recording/writer.d.ts +32 -0
- package/dist/recording/writer.d.ts.map +1 -0
- package/dist/recording/writer.js +122 -0
- package/dist/recording/writer.js.map +1 -0
- package/dist/telemetry/index.d.ts +8 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +8 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/otel-adapter.d.ts +105 -0
- package/dist/telemetry/otel-adapter.d.ts.map +1 -0
- package/dist/telemetry/otel-adapter.js +153 -0
- package/dist/telemetry/otel-adapter.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-adapter.d.ts","sourceRoot":"","sources":["../../src/telemetry/otel-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,gDAAgD;AAChD,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAErC,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAED,yCAAyC;AACzC,MAAM,WAAW,IAAI;IACnB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;IAC1D,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;IAC/D,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IACvC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,2CAA2C;AAC3C,MAAM,WAAW,MAAM;IACrB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CACtE;AAMD;;;oCAGoC;AACpC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB,CAgBA;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,cAAc,GACpB,IAAI,CAQN;AAID,2DAA2D;AAC3D,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAqB;gBAE3B,MAAM,EAAE,MAAM;IAI1B;2EACuE;IACvE,YAAY,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAW3E,sCAAsC;IACtC,UAAU,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAezD,6CAA6C;IAC7C,WAAW,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYnE,wDAAwD;IACxD,SAAS,CAAC,IAAI,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;QACF,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,GAAG,IAAI;CAoBT"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTelemetry adapter — wraps session/prompt/tool lifecycle in OTel spans.
|
|
3
|
+
*
|
|
4
|
+
* Per Eng D4 (2026-05-14):
|
|
5
|
+
* - Span hierarchy: agent.session (root) → agent.prompt → agent.tool.call /
|
|
6
|
+
* agent.permission.request / agent.elicitation.request
|
|
7
|
+
* - Attributes follow OTel GenAI semantic conventions:
|
|
8
|
+
* gen_ai.system: 'claude'
|
|
9
|
+
* gen_ai.usage.input_tokens / output_tokens / cache_read_tokens / cache_write_tokens
|
|
10
|
+
* gen_ai.response.finish_reason
|
|
11
|
+
* - Attribute payloads > 8 KB are truncated and marked `truncated: true`
|
|
12
|
+
*
|
|
13
|
+
* Peer dependency: `@opentelemetry/api` ≥1.7 <2 (OPTIONAL — only loaded when
|
|
14
|
+
* caller passes a tracer). The adapter never imports `@opentelemetry/api`;
|
|
15
|
+
* it uses a minimal structural `Tracer` interface that matches the real type.
|
|
16
|
+
* This keeps zero-dep cost for callers who don't use telemetry.
|
|
17
|
+
*
|
|
18
|
+
* Caller pattern:
|
|
19
|
+
*
|
|
20
|
+
* import { trace } from '@opentelemetry/api';
|
|
21
|
+
* const agent = new ClaudeCodeAgent({ cwd, tracer: trace.getTracer('myapp') });
|
|
22
|
+
*
|
|
23
|
+
* Step 1.4.7 ships the adapter + 8 KB truncation. Span hierarchy is wired
|
|
24
|
+
* for session.start, prompt, and turn-end. Tool/permission/elicitation
|
|
25
|
+
* spans land in Step 1.4.8 alongside their respective wirings.
|
|
26
|
+
*/
|
|
27
|
+
// ─── Attribute truncation ───────────────────────────────
|
|
28
|
+
const MAX_ATTRIBUTE_BYTES = 8 * 1024; // 8 KB per D4
|
|
29
|
+
/** Truncate a string-valued attribute if it exceeds 8 KB. Returns the
|
|
30
|
+
* possibly-truncated value paired with a `_truncated` flag attribute name.
|
|
31
|
+
* Callers should write both: setAttribute(key, value) + setAttribute(key+'.truncated', true)
|
|
32
|
+
* when the result is truncated. */
|
|
33
|
+
export function truncateAttributeValue(value) {
|
|
34
|
+
const bytes = Buffer.byteLength(value, 'utf-8');
|
|
35
|
+
if (bytes <= MAX_ATTRIBUTE_BYTES) {
|
|
36
|
+
return { value, truncated: false };
|
|
37
|
+
}
|
|
38
|
+
// Truncate to fit within 8 KB. Byte-safe truncation by scanning back from
|
|
39
|
+
// the end of the byte budget to a complete UTF-8 boundary.
|
|
40
|
+
let end = MAX_ATTRIBUTE_BYTES;
|
|
41
|
+
// Walk back while we're mid-codepoint
|
|
42
|
+
const buf = Buffer.from(value, 'utf-8');
|
|
43
|
+
while (end > 0) {
|
|
44
|
+
const byte = buf[end];
|
|
45
|
+
if (byte === undefined || (byte & 0xc0) !== 0x80)
|
|
46
|
+
break;
|
|
47
|
+
end--;
|
|
48
|
+
}
|
|
49
|
+
return { value: buf.slice(0, end).toString('utf-8'), truncated: true };
|
|
50
|
+
}
|
|
51
|
+
/** Helper: set an attribute with auto-truncation when the value is a string. */
|
|
52
|
+
export function setAttributeSafe(span, key, value) {
|
|
53
|
+
if (typeof value === 'string') {
|
|
54
|
+
const { value: v, truncated } = truncateAttributeValue(value);
|
|
55
|
+
span.setAttribute(key, v);
|
|
56
|
+
if (truncated)
|
|
57
|
+
span.setAttribute(`${key}.truncated`, true);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
span.setAttribute(key, value);
|
|
61
|
+
}
|
|
62
|
+
// ─── Span manager ───────────────────────────────────────
|
|
63
|
+
/** SpanStatusCode mirrors OTel: UNSET=0, OK=1, ERROR=2. */
|
|
64
|
+
export const SpanStatusCode = {
|
|
65
|
+
UNSET: 0,
|
|
66
|
+
OK: 1,
|
|
67
|
+
ERROR: 2,
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Coordinates the span hierarchy for one ClaudeCodeAgent instance.
|
|
71
|
+
* The agent owns a single SpanManager that opens session-scoped spans on
|
|
72
|
+
* start, prompt-scoped spans during each turn, and closes them on settle/fail.
|
|
73
|
+
*/
|
|
74
|
+
export class SpanManager {
|
|
75
|
+
tracer;
|
|
76
|
+
sessionSpan = null;
|
|
77
|
+
promptSpan = null;
|
|
78
|
+
constructor(tracer) {
|
|
79
|
+
this.tracer = tracer;
|
|
80
|
+
}
|
|
81
|
+
/** Open the root span for the agent's session. Returns the span so the
|
|
82
|
+
* caller can stash it (typically just rely on `this.sessionSpan`). */
|
|
83
|
+
startSession(attrs) {
|
|
84
|
+
const attributes = {
|
|
85
|
+
'gen_ai.system': 'claude',
|
|
86
|
+
'gen_ai.session.id': attrs.sessionId,
|
|
87
|
+
'agent.cwd': attrs.cwd,
|
|
88
|
+
};
|
|
89
|
+
if (attrs.pid !== undefined)
|
|
90
|
+
attributes['agent.pid'] = attrs.pid;
|
|
91
|
+
this.sessionSpan = this.tracer.startSpan('agent.session', { attributes });
|
|
92
|
+
return this.sessionSpan;
|
|
93
|
+
}
|
|
94
|
+
/** Mark session ended. Idempotent. */
|
|
95
|
+
endSession(opts) {
|
|
96
|
+
if (!this.sessionSpan)
|
|
97
|
+
return;
|
|
98
|
+
if (opts?.error) {
|
|
99
|
+
this.sessionSpan.recordException(opts.error);
|
|
100
|
+
this.sessionSpan.setStatus({ code: SpanStatusCode.ERROR, message: opts.error.message });
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.sessionSpan.setStatus({ code: SpanStatusCode.OK });
|
|
104
|
+
}
|
|
105
|
+
if (opts?.code !== undefined) {
|
|
106
|
+
this.sessionSpan.setAttribute('agent.exit_code', opts.code);
|
|
107
|
+
}
|
|
108
|
+
this.sessionSpan.end();
|
|
109
|
+
this.sessionSpan = null;
|
|
110
|
+
}
|
|
111
|
+
/** Open a child span for one prompt turn. */
|
|
112
|
+
startPrompt(attrs) {
|
|
113
|
+
const { value: preview, truncated } = truncateAttributeValue(attrs.promptPreview);
|
|
114
|
+
const attributes = {
|
|
115
|
+
'gen_ai.system': 'claude',
|
|
116
|
+
'gen_ai.turn.id': attrs.turnId,
|
|
117
|
+
'gen_ai.prompt': preview,
|
|
118
|
+
};
|
|
119
|
+
if (truncated)
|
|
120
|
+
attributes['gen_ai.prompt.truncated'] = true;
|
|
121
|
+
this.promptSpan = this.tracer.startSpan('agent.prompt', { attributes });
|
|
122
|
+
return this.promptSpan;
|
|
123
|
+
}
|
|
124
|
+
/** Close the prompt span with finish reason + usage. */
|
|
125
|
+
endPrompt(opts) {
|
|
126
|
+
if (!this.promptSpan)
|
|
127
|
+
return;
|
|
128
|
+
this.promptSpan.setAttribute('gen_ai.response.finish_reason', opts.stopReason);
|
|
129
|
+
if (opts.usage) {
|
|
130
|
+
const u = opts.usage;
|
|
131
|
+
if (u.inputTokens !== undefined)
|
|
132
|
+
this.promptSpan.setAttribute('gen_ai.usage.input_tokens', u.inputTokens);
|
|
133
|
+
if (u.outputTokens !== undefined)
|
|
134
|
+
this.promptSpan.setAttribute('gen_ai.usage.output_tokens', u.outputTokens);
|
|
135
|
+
if (u.cacheReadTokens !== undefined)
|
|
136
|
+
this.promptSpan.setAttribute('gen_ai.usage.cache_read_tokens', u.cacheReadTokens);
|
|
137
|
+
if (u.cacheWriteTokens !== undefined)
|
|
138
|
+
this.promptSpan.setAttribute('gen_ai.usage.cache_write_tokens', u.cacheWriteTokens);
|
|
139
|
+
if (u.estimatedCostUsd !== undefined)
|
|
140
|
+
this.promptSpan.setAttribute('gen_ai.cost.usd', u.estimatedCostUsd);
|
|
141
|
+
}
|
|
142
|
+
if (opts.error) {
|
|
143
|
+
this.promptSpan.recordException(opts.error);
|
|
144
|
+
this.promptSpan.setStatus({ code: SpanStatusCode.ERROR, message: opts.error.message });
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
this.promptSpan.setStatus({ code: SpanStatusCode.OK });
|
|
148
|
+
}
|
|
149
|
+
this.promptSpan.end();
|
|
150
|
+
this.promptSpan = null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=otel-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-adapter.js","sourceRoot":"","sources":["../../src/telemetry/otel-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AA6BH,2DAA2D;AAE3D,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,cAAc;AAEpD;;;oCAGoC;AACpC,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAIlD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,KAAK,IAAI,mBAAmB,EAAE,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IACD,0EAA0E;IAC1E,2DAA2D;IAC3D,IAAI,GAAG,GAAG,mBAAmB,CAAC;IAC9B,sCAAsC;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI;YAAE,MAAM;QACxD,GAAG,EAAE,CAAC;IACR,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACzE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAC9B,IAAU,EACV,GAAW,EACX,KAAqB;IAErB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,SAAS;YAAE,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,YAAY,EAAE,IAAI,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,2DAA2D;AAE3D,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,CAAC;IACR,EAAE,EAAE,CAAC;IACL,KAAK,EAAE,CAAC;CACA,CAAC;AAEX;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACL,MAAM,CAAS;IACxB,WAAW,GAAgB,IAAI,CAAC;IAChC,UAAU,GAAgB,IAAI,CAAC;IAEvC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;2EACuE;IACvE,YAAY,CAAC,KAAuD;QAClE,MAAM,UAAU,GAAe;YAC7B,eAAe,EAAE,QAAQ;YACzB,mBAAmB,EAAE,KAAK,CAAC,SAAS;YACpC,WAAW,EAAE,KAAK,CAAC,GAAG;SACvB,CAAC;QACF,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;YAAE,UAAU,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,sCAAsC;IACtC,UAAU,CAAC,IAAuC;QAChD,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,6CAA6C;IAC7C,WAAW,CAAC,KAAgD;QAC1D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClF,MAAM,UAAU,GAAe;YAC7B,eAAe,EAAE,QAAQ;YACzB,gBAAgB,EAAE,KAAK,CAAC,MAAM;YAC9B,eAAe,EAAE,OAAO;SACzB,CAAC;QACF,IAAI,SAAS;YAAE,UAAU,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,wDAAwD;IACxD,SAAS,CAAC,IAUT;QACC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,+BAA+B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,2BAA2B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1G,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,4BAA4B,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;YAC7G,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gCAAgC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;YACvH,IAAI,CAAC,CAAC,gBAAgB,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC1H,IAAI,CAAC,CAAC,gBAAgB,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@coralai/claude-code-agent",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Lean runtime primitive for embedding ACP-compatible agents (Claude Code) in Node.js apps",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": false,
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=18.0.0"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"acp",
|
|
30
|
+
"claude",
|
|
31
|
+
"agent",
|
|
32
|
+
"anthropic",
|
|
33
|
+
"runtime"
|
|
34
|
+
],
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@agentclientprotocol/sdk": "^0.21.0",
|
|
38
|
+
"zod": "^3.25.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^25.5.0",
|
|
42
|
+
"typescript": "^5.9.3",
|
|
43
|
+
"vitest": "^4.1.2"
|
|
44
|
+
}
|
|
45
|
+
}
|