@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.
Files changed (78) hide show
  1. package/README.md +111 -0
  2. package/dist/agent.d.ts +240 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +592 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/errors.d.ts +27 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +33 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/hooks/fs.d.ts +26 -0
  11. package/dist/hooks/fs.d.ts.map +1 -0
  12. package/dist/hooks/fs.js +61 -0
  13. package/dist/hooks/fs.js.map +1 -0
  14. package/dist/hooks/index.d.ts +18 -0
  15. package/dist/hooks/index.d.ts.map +1 -0
  16. package/dist/hooks/index.js +2 -0
  17. package/dist/hooks/index.js.map +1 -0
  18. package/dist/hooks/permissions.d.ts +42 -0
  19. package/dist/hooks/permissions.d.ts.map +1 -0
  20. package/dist/hooks/permissions.js +79 -0
  21. package/dist/hooks/permissions.js.map +1 -0
  22. package/dist/hooks/terminal.d.ts +56 -0
  23. package/dist/hooks/terminal.d.ts.map +1 -0
  24. package/dist/hooks/terminal.js +127 -0
  25. package/dist/hooks/terminal.js.map +1 -0
  26. package/dist/index.d.ts +32 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +31 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/internal/acp-client-interface.d.ts +107 -0
  31. package/dist/internal/acp-client-interface.d.ts.map +1 -0
  32. package/dist/internal/acp-client-interface.js +17 -0
  33. package/dist/internal/acp-client-interface.js.map +1 -0
  34. package/dist/internal/acp-types.d.ts +64 -0
  35. package/dist/internal/acp-types.d.ts.map +1 -0
  36. package/dist/internal/acp-types.js +17 -0
  37. package/dist/internal/acp-types.js.map +1 -0
  38. package/dist/internal/agent-runtime-interface.d.ts +40 -0
  39. package/dist/internal/agent-runtime-interface.d.ts.map +1 -0
  40. package/dist/internal/agent-runtime-interface.js +17 -0
  41. package/dist/internal/agent-runtime-interface.js.map +1 -0
  42. package/dist/internal/local-acp-client.d.ts +27 -0
  43. package/dist/internal/local-acp-client.d.ts.map +1 -0
  44. package/dist/internal/local-acp-client.js +26 -0
  45. package/dist/internal/local-acp-client.js.map +1 -0
  46. package/dist/internal/sdk-adapter.d.ts +24 -0
  47. package/dist/internal/sdk-adapter.d.ts.map +1 -0
  48. package/dist/internal/sdk-adapter.js +453 -0
  49. package/dist/internal/sdk-adapter.js.map +1 -0
  50. package/dist/internal/session-accumulator.d.ts +55 -0
  51. package/dist/internal/session-accumulator.d.ts.map +1 -0
  52. package/dist/internal/session-accumulator.js +133 -0
  53. package/dist/internal/session-accumulator.js.map +1 -0
  54. package/dist/prompt-handle.d.ts +70 -0
  55. package/dist/prompt-handle.d.ts.map +1 -0
  56. package/dist/prompt-handle.js +137 -0
  57. package/dist/prompt-handle.js.map +1 -0
  58. package/dist/recording/index.d.ts +10 -0
  59. package/dist/recording/index.d.ts.map +1 -0
  60. package/dist/recording/index.js +10 -0
  61. package/dist/recording/index.js.map +1 -0
  62. package/dist/recording/replayer.d.ts +17 -0
  63. package/dist/recording/replayer.d.ts.map +1 -0
  64. package/dist/recording/replayer.js +68 -0
  65. package/dist/recording/replayer.js.map +1 -0
  66. package/dist/recording/writer.d.ts +32 -0
  67. package/dist/recording/writer.d.ts.map +1 -0
  68. package/dist/recording/writer.js +122 -0
  69. package/dist/recording/writer.js.map +1 -0
  70. package/dist/telemetry/index.d.ts +8 -0
  71. package/dist/telemetry/index.d.ts.map +1 -0
  72. package/dist/telemetry/index.js +8 -0
  73. package/dist/telemetry/index.js.map +1 -0
  74. package/dist/telemetry/otel-adapter.d.ts +105 -0
  75. package/dist/telemetry/otel-adapter.d.ts.map +1 -0
  76. package/dist/telemetry/otel-adapter.js +153 -0
  77. package/dist/telemetry/otel-adapter.js.map +1 -0
  78. 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":"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"}
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
+ }