@scottwalker/claude-connector 0.2.0 → 0.3.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 (51) hide show
  1. package/README.md +77 -20
  2. package/dist/builder/args-builder.d.ts +2 -1
  3. package/dist/builder/args-builder.d.ts.map +1 -1
  4. package/dist/builder/args-builder.js +38 -31
  5. package/dist/builder/args-builder.js.map +1 -1
  6. package/dist/client/chat-handle.d.ts +115 -0
  7. package/dist/client/chat-handle.d.ts.map +1 -0
  8. package/dist/client/chat-handle.js +246 -0
  9. package/dist/client/chat-handle.js.map +1 -0
  10. package/dist/client/claude.d.ts +51 -53
  11. package/dist/client/claude.d.ts.map +1 -1
  12. package/dist/client/claude.js +72 -45
  13. package/dist/client/claude.js.map +1 -1
  14. package/dist/client/session.d.ts +4 -2
  15. package/dist/client/session.d.ts.map +1 -1
  16. package/dist/client/session.js +19 -12
  17. package/dist/client/session.js.map +1 -1
  18. package/dist/client/stream-handle.d.ts +99 -0
  19. package/dist/client/stream-handle.d.ts.map +1 -0
  20. package/dist/client/stream-handle.js +158 -0
  21. package/dist/client/stream-handle.js.map +1 -0
  22. package/dist/constants.d.ts +116 -0
  23. package/dist/constants.d.ts.map +1 -0
  24. package/dist/constants.js +160 -0
  25. package/dist/constants.js.map +1 -0
  26. package/dist/errors/errors.d.ts.map +1 -1
  27. package/dist/errors/errors.js +7 -6
  28. package/dist/errors/errors.js.map +1 -1
  29. package/dist/executor/cli-executor.d.ts.map +1 -1
  30. package/dist/executor/cli-executor.js +7 -11
  31. package/dist/executor/cli-executor.js.map +1 -1
  32. package/dist/executor/sdk-executor.d.ts +5 -4
  33. package/dist/executor/sdk-executor.d.ts.map +1 -1
  34. package/dist/executor/sdk-executor.js +33 -38
  35. package/dist/executor/sdk-executor.js.map +1 -1
  36. package/dist/index.d.ts +3 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +18 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/parser/json-parser.d.ts.map +1 -1
  41. package/dist/parser/json-parser.js +20 -19
  42. package/dist/parser/json-parser.js.map +1 -1
  43. package/dist/parser/stream-parser.d.ts.map +1 -1
  44. package/dist/parser/stream-parser.js +26 -25
  45. package/dist/parser/stream-parser.js.map +1 -1
  46. package/dist/scheduler/scheduler.js +6 -11
  47. package/dist/scheduler/scheduler.js.map +1 -1
  48. package/dist/utils/validation.d.ts.map +1 -1
  49. package/dist/utils/validation.js +5 -6
  50. package/dist/utils/validation.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,5 +1,7 @@
1
1
  import { buildArgs, mergeOptions, resolveEnv } from '../builder/args-builder.js';
2
2
  import { validateQueryOptions, validatePrompt } from '../utils/validation.js';
3
+ import { FORMAT_JSON, FORMAT_STREAM_JSON, EVENT_RESULT } from '../constants.js';
4
+ import { StreamHandle } from './stream-handle.js';
3
5
  /**
4
6
  * A stateful conversation session.
5
7
  *
@@ -61,11 +63,11 @@ export class Session {
61
63
  validatePrompt(prompt);
62
64
  if (options)
63
65
  validateQueryOptions(options);
64
- const args = this.buildSessionArgs(prompt, 'json', options);
66
+ const args = this.buildSessionArgs(prompt, FORMAT_JSON, options);
65
67
  const env = resolveEnv(this.clientOptions, options);
66
68
  const resolved = mergeOptions(this.clientOptions, options, {
67
69
  prompt,
68
- outputFormat: 'json',
70
+ outputFormat: FORMAT_JSON,
69
71
  });
70
72
  const result = await this.executor.execute(args, {
71
73
  cwd: resolved.cwd,
@@ -78,29 +80,34 @@ export class Session {
78
80
  }
79
81
  /**
80
82
  * Send a query with streaming response within this session.
83
+ * Returns a {@link StreamHandle} with fluent callbacks and Node.js stream support.
81
84
  */
82
- async *stream(prompt, options) {
85
+ stream(prompt, options) {
83
86
  validatePrompt(prompt);
84
87
  if (options)
85
88
  validateQueryOptions(options);
86
- const args = this.buildSessionArgs(prompt, 'stream-json', options);
89
+ const args = this.buildSessionArgs(prompt, FORMAT_STREAM_JSON, options);
87
90
  const env = resolveEnv(this.clientOptions, options);
88
91
  const resolved = mergeOptions(this.clientOptions, options, {
89
92
  prompt,
90
- outputFormat: 'stream-json',
93
+ outputFormat: FORMAT_STREAM_JSON,
91
94
  });
92
- for await (const event of this.executor.stream(args, {
95
+ const executor = this.executor;
96
+ const updateState = (id) => this.updateSessionState(id);
97
+ const execOpts = {
93
98
  cwd: resolved.cwd,
94
99
  env,
95
100
  input: options?.input,
96
101
  systemPrompt: resolved.systemPrompt,
97
- })) {
98
- // Capture session ID from result events
99
- if (event.type === 'result' && event.sessionId) {
100
- this.updateSessionState(event.sessionId);
102
+ };
103
+ return new StreamHandle(async function* () {
104
+ for await (const event of executor.stream(args, execOpts)) {
105
+ if (event.type === EVENT_RESULT && event.sessionId) {
106
+ updateState(event.sessionId);
107
+ }
108
+ yield event;
101
109
  }
102
- yield event;
103
- }
110
+ });
104
111
  }
105
112
  /**
106
113
  * Abort the current running query in this session.
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/client/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/client/session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,OAAO;IACD,aAAa,CAA0B;IACvC,QAAQ,CAAY;IACpB,cAAc,CAAiB;IAEhD,6DAA6D;IACrD,UAAU,CAAgB;IAElC,kDAAkD;IAC1C,WAAW,GAAG,CAAC,CAAC;IAExB,YACE,aAAsC,EACtC,QAAmB,EACnB,iBAAiC,EAAE;QAEnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,iEAAiE;IACjE,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAAsB;QAChD,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,OAAO;YAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;YACzD,MAAM;YACN,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;YAC/C,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,GAAG;YACH,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAc,EAAE,OAAsB;QAC3C,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,OAAO;YAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;YACzD,MAAM;YACN,YAAY,EAAE,kBAAkB;SACjC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG;YACf,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,GAAG;YACH,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC;QAEF,OAAO,IAAI,YAAY,CAAC,KAAK,SAAS,CAAC;YACrC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACnD,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1B,CAAC;IAED,qEAAqE;IAE7D,gBAAgB,CACtB,MAAc,EACd,YAAoC,EACpC,YAA2B;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE;YAC9D,MAAM;YACN,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;YACvC,eAAe,EAAE,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ;YAC7D,WAAW,EAAE,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI;SACtD,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAEO,kBAAkB,CAAC,SAAiB;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,99 @@
1
+ import { Readable } from 'node:stream';
2
+ import { EVENT_TEXT, EVENT_TOOL_USE, EVENT_RESULT, EVENT_ERROR, EVENT_SYSTEM } from '../constants.js';
3
+ import type { StreamEvent, StreamToolUseEvent, StreamResultEvent, StreamErrorEvent, StreamSystemEvent } from '../types/index.js';
4
+ type TextCallback = (text: string) => void;
5
+ type ToolUseCallback = (event: StreamToolUseEvent) => void;
6
+ type ResultCallback = (event: StreamResultEvent) => void;
7
+ type ErrorCallback = (event: StreamErrorEvent) => void;
8
+ type SystemCallback = (event: StreamSystemEvent) => void;
9
+ /**
10
+ * A streaming response handle with fluent callback API and Node.js stream support.
11
+ *
12
+ * ## 1. Fluent callbacks
13
+ *
14
+ * ```ts
15
+ * await claude.stream('Refactor auth')
16
+ * .on('text', (text) => process.stdout.write(text))
17
+ * .on('tool_use', (event) => console.log(event.toolName))
18
+ * .done()
19
+ * ```
20
+ *
21
+ * ## 2. Convenience methods
22
+ *
23
+ * ```ts
24
+ * const text = await claude.stream('Summarize').text()
25
+ * const result = await claude.stream('Explain').pipe(process.stdout)
26
+ * ```
27
+ *
28
+ * ## 3. Node.js Readable stream
29
+ *
30
+ * ```ts
31
+ * import { pipeline } from 'node:stream/promises'
32
+ * await pipeline(claude.stream('Generate').toReadable(), createGzip(), file)
33
+ * ```
34
+ *
35
+ * ## 4. Raw async iteration (backward compat)
36
+ *
37
+ * ```ts
38
+ * for await (const event of claude.stream('Analyze')) { ... }
39
+ * ```
40
+ */
41
+ export declare class StreamHandle implements AsyncIterable<StreamEvent> {
42
+ private readonly source;
43
+ private readonly textCallbacks;
44
+ private readonly toolUseCallbacks;
45
+ private readonly resultCallbacks;
46
+ private readonly errorCallbacks;
47
+ private readonly systemCallbacks;
48
+ constructor(source: () => AsyncIterable<StreamEvent>);
49
+ /**
50
+ * Register a callback for a specific event type. Returns `this` for chaining.
51
+ *
52
+ * `text` callback receives just the string. All others receive the full event.
53
+ */
54
+ on(type: typeof EVENT_TEXT, callback: TextCallback): this;
55
+ on(type: typeof EVENT_TOOL_USE, callback: ToolUseCallback): this;
56
+ on(type: typeof EVENT_RESULT, callback: ResultCallback): this;
57
+ on(type: typeof EVENT_ERROR, callback: ErrorCallback): this;
58
+ on(type: typeof EVENT_SYSTEM, callback: SystemCallback): this;
59
+ /**
60
+ * Consume the stream, fire all registered callbacks, return the final result.
61
+ */
62
+ done(): Promise<StreamResultEvent>;
63
+ /**
64
+ * Collect all text chunks into a single string.
65
+ */
66
+ text(): Promise<string>;
67
+ /**
68
+ * Pipe text to a writable stream. Returns the final result.
69
+ *
70
+ * ```ts
71
+ * const result = await claude.stream('Explain').pipe(process.stdout)
72
+ * ```
73
+ */
74
+ pipe(writable: {
75
+ write(chunk: string): unknown;
76
+ }): Promise<StreamResultEvent>;
77
+ /**
78
+ * Get a Node.js Readable that emits text chunks.
79
+ * Use for `pipeline()`, standard `.pipe()` chaining, HTTP responses, etc.
80
+ *
81
+ * ```ts
82
+ * claude.stream('Generate').toReadable().pipe(res)
83
+ *
84
+ * await pipeline(
85
+ * claude.stream('Report').toReadable(),
86
+ * createGzip(),
87
+ * createWriteStream('report.gz'),
88
+ * )
89
+ * ```
90
+ */
91
+ toReadable(): Readable;
92
+ /**
93
+ * Async iteration — yields StreamEvent objects. Backward compatible with `for await`.
94
+ */
95
+ [Symbol.asyncIterator](): AsyncIterator<StreamEvent>;
96
+ private dispatch;
97
+ }
98
+ export {};
99
+ //# sourceMappingURL=stream-handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-handle.d.ts","sourceRoot":"","sources":["../../src/client/stream-handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAC3C,KAAK,eAAe,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAC3D,KAAK,cAAc,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AACzD,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AACvD,KAAK,cAAc,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,YAAa,YAAW,aAAa,CAAC,WAAW,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;gBAE5C,MAAM,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC;IAIpD;;;;OAIG;IACH,EAAE,CAAC,IAAI,EAAE,OAAO,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IACzD,EAAE,CAAC,IAAI,EAAE,OAAO,cAAc,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAChE,EAAE,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IAC7D,EAAE,CAAC,IAAI,EAAE,OAAO,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAC3D,EAAE,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IAY7D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAcxC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAW7B;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKnF;;;;;;;;;;;;;OAaG;IACH,UAAU,IAAI,QAAQ;IAUtB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;IAI3D,OAAO,CAAC,QAAQ;CAmBjB"}
@@ -0,0 +1,158 @@
1
+ import { Readable } from 'node:stream';
2
+ import { EVENT_TEXT, EVENT_TOOL_USE, EVENT_RESULT, EVENT_ERROR, EVENT_SYSTEM, } from '../constants.js';
3
+ /**
4
+ * A streaming response handle with fluent callback API and Node.js stream support.
5
+ *
6
+ * ## 1. Fluent callbacks
7
+ *
8
+ * ```ts
9
+ * await claude.stream('Refactor auth')
10
+ * .on('text', (text) => process.stdout.write(text))
11
+ * .on('tool_use', (event) => console.log(event.toolName))
12
+ * .done()
13
+ * ```
14
+ *
15
+ * ## 2. Convenience methods
16
+ *
17
+ * ```ts
18
+ * const text = await claude.stream('Summarize').text()
19
+ * const result = await claude.stream('Explain').pipe(process.stdout)
20
+ * ```
21
+ *
22
+ * ## 3. Node.js Readable stream
23
+ *
24
+ * ```ts
25
+ * import { pipeline } from 'node:stream/promises'
26
+ * await pipeline(claude.stream('Generate').toReadable(), createGzip(), file)
27
+ * ```
28
+ *
29
+ * ## 4. Raw async iteration (backward compat)
30
+ *
31
+ * ```ts
32
+ * for await (const event of claude.stream('Analyze')) { ... }
33
+ * ```
34
+ */
35
+ export class StreamHandle {
36
+ source;
37
+ textCallbacks = [];
38
+ toolUseCallbacks = [];
39
+ resultCallbacks = [];
40
+ errorCallbacks = [];
41
+ systemCallbacks = [];
42
+ constructor(source) {
43
+ this.source = source;
44
+ }
45
+ on(type, callback) {
46
+ switch (type) {
47
+ case EVENT_TEXT:
48
+ this.textCallbacks.push(callback);
49
+ break;
50
+ case EVENT_TOOL_USE:
51
+ this.toolUseCallbacks.push(callback);
52
+ break;
53
+ case EVENT_RESULT:
54
+ this.resultCallbacks.push(callback);
55
+ break;
56
+ case EVENT_ERROR:
57
+ this.errorCallbacks.push(callback);
58
+ break;
59
+ case EVENT_SYSTEM:
60
+ this.systemCallbacks.push(callback);
61
+ break;
62
+ }
63
+ return this;
64
+ }
65
+ /**
66
+ * Consume the stream, fire all registered callbacks, return the final result.
67
+ */
68
+ async done() {
69
+ let result = null;
70
+ for await (const event of this.source()) {
71
+ this.dispatch(event);
72
+ if (event.type === EVENT_RESULT)
73
+ result = event;
74
+ }
75
+ if (!result) {
76
+ throw new Error('Stream ended without a result event');
77
+ }
78
+ return result;
79
+ }
80
+ /**
81
+ * Collect all text chunks into a single string.
82
+ */
83
+ async text() {
84
+ let collected = '';
85
+ for await (const event of this.source()) {
86
+ if (event.type === EVENT_TEXT)
87
+ collected += event.text;
88
+ this.dispatch(event);
89
+ }
90
+ return collected;
91
+ }
92
+ /**
93
+ * Pipe text to a writable stream. Returns the final result.
94
+ *
95
+ * ```ts
96
+ * const result = await claude.stream('Explain').pipe(process.stdout)
97
+ * ```
98
+ */
99
+ async pipe(writable) {
100
+ this.textCallbacks.push((text) => writable.write(text));
101
+ return this.done();
102
+ }
103
+ /**
104
+ * Get a Node.js Readable that emits text chunks.
105
+ * Use for `pipeline()`, standard `.pipe()` chaining, HTTP responses, etc.
106
+ *
107
+ * ```ts
108
+ * claude.stream('Generate').toReadable().pipe(res)
109
+ *
110
+ * await pipeline(
111
+ * claude.stream('Report').toReadable(),
112
+ * createGzip(),
113
+ * createWriteStream('report.gz'),
114
+ * )
115
+ * ```
116
+ */
117
+ toReadable() {
118
+ const source = this.source;
119
+ const textStream = async function* () {
120
+ for await (const event of source()) {
121
+ if (event.type === EVENT_TEXT)
122
+ yield event.text;
123
+ }
124
+ };
125
+ return Readable.from(textStream(), { encoding: 'utf-8' });
126
+ }
127
+ /**
128
+ * Async iteration — yields StreamEvent objects. Backward compatible with `for await`.
129
+ */
130
+ async *[Symbol.asyncIterator]() {
131
+ yield* this.source();
132
+ }
133
+ dispatch(event) {
134
+ switch (event.type) {
135
+ case EVENT_TEXT:
136
+ for (const cb of this.textCallbacks)
137
+ cb(event.text);
138
+ break;
139
+ case EVENT_TOOL_USE:
140
+ for (const cb of this.toolUseCallbacks)
141
+ cb(event);
142
+ break;
143
+ case EVENT_RESULT:
144
+ for (const cb of this.resultCallbacks)
145
+ cb(event);
146
+ break;
147
+ case EVENT_ERROR:
148
+ for (const cb of this.errorCallbacks)
149
+ cb(event);
150
+ break;
151
+ case EVENT_SYSTEM:
152
+ for (const cb of this.systemCallbacks)
153
+ cb(event);
154
+ break;
155
+ }
156
+ }
157
+ }
158
+ //# sourceMappingURL=stream-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-handle.js","sourceRoot":"","sources":["../../src/client/stream-handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAC;AAezB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,OAAO,YAAY;IACN,MAAM,CAAmC;IACzC,aAAa,GAAmB,EAAE,CAAC;IACnC,gBAAgB,GAAsB,EAAE,CAAC;IACzC,eAAe,GAAqB,EAAE,CAAC;IACvC,cAAc,GAAoB,EAAE,CAAC;IACrC,eAAe,GAAqB,EAAE,CAAC;IAExD,YAAY,MAAwC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAYD,EAAE,CAAC,IAAY,EAAE,QAAoC;QACnD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,UAAU;gBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAwB,CAAC,CAAC;gBAAC,MAAM;YAC1E,KAAK,cAAc;gBAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAA2B,CAAC,CAAC;gBAAC,MAAM;YACpF,KAAK,YAAY;gBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAA0B,CAAC,CAAC;gBAAC,MAAM;YAChF,KAAK,WAAW;gBAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAyB,CAAC,CAAC;gBAAC,MAAM;YAC7E,KAAK,YAAY;gBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAA0B,CAAC,CAAC;gBAAC,MAAM;QAClF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,MAAM,GAA6B,IAAI,CAAC;QAE5C,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;gBAAE,MAAM,GAAG,KAAK,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,QAA2C;QACpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,SAAS,CAAC;YAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;oBAAE,MAAM,KAAK,CAAC,IAAI,CAAC;YAClD,CAAC;QACH,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAEO,QAAQ,CAAC,KAAkB;QACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,aAAa;oBAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,cAAc;gBACjB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB;oBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,eAAe;oBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,WAAW;gBACd,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc;oBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,eAAe;oBAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM;QACV,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Centralized constants — no magic strings in the codebase.
3
+ *
4
+ * Every string literal used as a discriminator, event name, CLI flag,
5
+ * or protocol key is defined here.
6
+ */
7
+ export declare const EVENT_TEXT: "text";
8
+ export declare const EVENT_TOOL_USE: "tool_use";
9
+ export declare const EVENT_RESULT: "result";
10
+ export declare const EVENT_ERROR: "error";
11
+ export declare const EVENT_SYSTEM: "system";
12
+ export declare const FORMAT_JSON: "json";
13
+ export declare const FORMAT_STREAM_JSON: "stream-json";
14
+ export declare const PERMISSION_DEFAULT: "default";
15
+ export declare const PERMISSION_ACCEPT_EDITS: "acceptEdits";
16
+ export declare const PERMISSION_PLAN: "plan";
17
+ export declare const PERMISSION_DONT_ASK: "dontAsk";
18
+ export declare const PERMISSION_BYPASS: "bypassPermissions";
19
+ export declare const PERMISSION_AUTO: "auto";
20
+ export declare const VALID_PERMISSION_MODES: readonly ["default", "acceptEdits", "plan", "dontAsk", "bypassPermissions", "auto"];
21
+ export declare const EFFORT_LOW: "low";
22
+ export declare const EFFORT_MEDIUM: "medium";
23
+ export declare const EFFORT_HIGH: "high";
24
+ export declare const EFFORT_MAX: "max";
25
+ export declare const VALID_EFFORT_LEVELS: readonly ["low", "medium", "high", "max"];
26
+ export declare const INIT_IMPORTING: "importing";
27
+ export declare const INIT_CREATING: "creating";
28
+ export declare const INIT_CONNECTING: "connecting";
29
+ export declare const INIT_READY: "ready";
30
+ export declare const ROLE_USER: "user";
31
+ export declare const ROLE_ASSISTANT: "assistant";
32
+ export declare const BLOCK_TEXT: "text";
33
+ export declare const BLOCK_TOOL_USE: "tool_use";
34
+ export declare const BLOCK_TOOL_RESULT: "tool_result";
35
+ export declare const MCP_STDIO: "stdio";
36
+ export declare const MCP_HTTP: "http";
37
+ export declare const MCP_SSE: "sse";
38
+ export declare const CHAT_USER_MESSAGE: "user_message";
39
+ export declare const SYSTEM_STDERR: "stderr";
40
+ export declare const SYSTEM_INIT: "init";
41
+ export declare const SYSTEM_UNKNOWN: "unknown";
42
+ export declare const SIGNAL_SIGTERM: "SIGTERM";
43
+ export declare const ERR_ENOENT: "ENOENT";
44
+ export declare const SCHED_RESULT: "result";
45
+ export declare const SCHED_ERROR: "error";
46
+ export declare const SCHED_TICK: "tick";
47
+ export declare const SCHED_STOP: "stop";
48
+ export declare const INIT_EVENT_STAGE: "init:stage";
49
+ export declare const INIT_EVENT_READY: "init:ready";
50
+ export declare const INIT_EVENT_ERROR: "init:error";
51
+ export declare const UNIT_SECONDS: "s";
52
+ export declare const UNIT_MINUTES: "m";
53
+ export declare const UNIT_HOURS: "h";
54
+ export declare const UNIT_DAYS: "d";
55
+ export declare const INTERVAL_MULTIPLIERS: Record<string, number>;
56
+ export declare const FLAG_PRINT: "--print";
57
+ export declare const FLAG_OUTPUT_FORMAT: "--output-format";
58
+ export declare const FLAG_INPUT_FORMAT: "--input-format";
59
+ export declare const FLAG_VERBOSE: "--verbose";
60
+ export declare const FLAG_CONTINUE: "--continue";
61
+ export declare const FLAG_RESUME: "--resume";
62
+ export declare const FLAG_FORK_SESSION: "--fork-session";
63
+ export declare const FLAG_MODEL: "--model";
64
+ export declare const FLAG_FALLBACK_MODEL: "--fallback-model";
65
+ export declare const FLAG_EFFORT: "--effort";
66
+ export declare const FLAG_PERMISSION_MODE: "--permission-mode";
67
+ export declare const FLAG_ALLOWED_TOOLS: "--allowedTools";
68
+ export declare const FLAG_DISALLOWED_TOOLS: "--disallowedTools";
69
+ export declare const FLAG_TOOLS: "--tools";
70
+ export declare const FLAG_SYSTEM_PROMPT: "--system-prompt";
71
+ export declare const FLAG_APPEND_SYSTEM_PROMPT: "--append-system-prompt";
72
+ export declare const FLAG_MAX_TURNS: "--max-turns";
73
+ export declare const FLAG_MAX_BUDGET: "--max-budget-usd";
74
+ export declare const FLAG_ADD_DIR: "--add-dir";
75
+ export declare const FLAG_MCP_CONFIG: "--mcp-config";
76
+ export declare const FLAG_STRICT_MCP_CONFIG: "--strict-mcp-config";
77
+ export declare const FLAG_AGENTS: "--agents";
78
+ export declare const FLAG_AGENT: "--agent";
79
+ export declare const FLAG_JSON_SCHEMA: "--json-schema";
80
+ export declare const FLAG_WORKTREE: "--worktree";
81
+ export declare const FLAG_NO_SESSION_PERSISTENCE: "--no-session-persistence";
82
+ export declare const FLAG_NAME: "--name";
83
+ export declare const FLAG_SETTINGS: "--settings";
84
+ export declare const FLAG_SESSION_ID: "--session-id";
85
+ export declare const FLAGS_WITH_VALUE: readonly ["--output-format", "--model", "--fallback-model", "--permission-mode", "--system-prompt", "--append-system-prompt", "--max-turns", "--max-budget-usd", "--add-dir", "--mcp-config", "--agents", "--json-schema", "--worktree", "--resume", "--session-id", "--allowedTools", "--disallowedTools", "--agent", "--tools", "--name", "--settings", "--effort", "--input-format"];
86
+ export declare const KEY_TYPE: "type";
87
+ export declare const KEY_RESULT: "result";
88
+ export declare const KEY_SESSION_ID: "session_id";
89
+ export declare const KEY_USAGE: "usage";
90
+ export declare const KEY_INPUT_TOKENS: "input_tokens";
91
+ export declare const KEY_OUTPUT_TOKENS: "output_tokens";
92
+ export declare const KEY_TOTAL_COST: "total_cost_usd";
93
+ export declare const KEY_DURATION: "duration_ms";
94
+ export declare const KEY_STRUCTURED_OUTPUT: "structured_output";
95
+ export declare const KEY_MESSAGES: "messages";
96
+ export declare const KEY_MESSAGE: "message";
97
+ export declare const KEY_CONTENT: "content";
98
+ export declare const KEY_ROLE: "role";
99
+ export declare const KEY_TEXT: "text";
100
+ export declare const KEY_NAME: "name";
101
+ export declare const KEY_INPUT: "input";
102
+ export declare const KEY_ERROR: "error";
103
+ export declare const KEY_CODE: "code";
104
+ export declare const KEY_MODEL: "model";
105
+ export declare const KEY_TOOLS: "tools";
106
+ export declare const KEY_SUBTYPE: "subtype";
107
+ export declare const ERR_NAME_BASE: "ClaudeConnectorError";
108
+ export declare const ERR_NAME_NOT_FOUND: "CliNotFoundError";
109
+ export declare const ERR_NAME_EXECUTION: "CliExecutionError";
110
+ export declare const ERR_NAME_TIMEOUT: "CliTimeoutError";
111
+ export declare const ERR_NAME_PARSE: "ParseError";
112
+ export declare const ERR_NAME_VALIDATION: "ValidationError";
113
+ export declare const DEFAULT_EXECUTABLE: "claude";
114
+ export declare const DEFAULT_MODEL: "sonnet";
115
+ export declare const DEFAULT_TIMEOUT_MS = 600000;
116
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Centralized constants — no magic strings in the codebase.
3
+ *
4
+ * Every string literal used as a discriminator, event name, CLI flag,
5
+ * or protocol key is defined here.
6
+ */
7
+ // ── Stream Event Types ──────────────────────────────────────────────
8
+ export const EVENT_TEXT = 'text';
9
+ export const EVENT_TOOL_USE = 'tool_use';
10
+ export const EVENT_RESULT = 'result';
11
+ export const EVENT_ERROR = 'error';
12
+ export const EVENT_SYSTEM = 'system';
13
+ // ── Output / Input Formats ──────────────────────────────────────────
14
+ export const FORMAT_JSON = 'json';
15
+ export const FORMAT_STREAM_JSON = 'stream-json';
16
+ // ── Permission Modes ────────────────────────────────────────────────
17
+ export const PERMISSION_DEFAULT = 'default';
18
+ export const PERMISSION_ACCEPT_EDITS = 'acceptEdits';
19
+ export const PERMISSION_PLAN = 'plan';
20
+ export const PERMISSION_DONT_ASK = 'dontAsk';
21
+ export const PERMISSION_BYPASS = 'bypassPermissions';
22
+ export const PERMISSION_AUTO = 'auto';
23
+ export const VALID_PERMISSION_MODES = [
24
+ PERMISSION_DEFAULT,
25
+ PERMISSION_ACCEPT_EDITS,
26
+ PERMISSION_PLAN,
27
+ PERMISSION_DONT_ASK,
28
+ PERMISSION_BYPASS,
29
+ PERMISSION_AUTO,
30
+ ];
31
+ // ── Effort Levels ───────────────────────────────────────────────────
32
+ export const EFFORT_LOW = 'low';
33
+ export const EFFORT_MEDIUM = 'medium';
34
+ export const EFFORT_HIGH = 'high';
35
+ export const EFFORT_MAX = 'max';
36
+ export const VALID_EFFORT_LEVELS = [
37
+ EFFORT_LOW,
38
+ EFFORT_MEDIUM,
39
+ EFFORT_HIGH,
40
+ EFFORT_MAX,
41
+ ];
42
+ // ── SDK Init Stages ─────────────────────────────────────────────────
43
+ export const INIT_IMPORTING = 'importing';
44
+ export const INIT_CREATING = 'creating';
45
+ export const INIT_CONNECTING = 'connecting';
46
+ export const INIT_READY = 'ready';
47
+ // ── Message Roles ───────────────────────────────────────────────────
48
+ export const ROLE_USER = 'user';
49
+ export const ROLE_ASSISTANT = 'assistant';
50
+ // ── Content Block Types ─────────────────────────────────────────────
51
+ export const BLOCK_TEXT = 'text';
52
+ export const BLOCK_TOOL_USE = 'tool_use';
53
+ export const BLOCK_TOOL_RESULT = 'tool_result';
54
+ // ── MCP Transport Types ─────────────────────────────────────────────
55
+ export const MCP_STDIO = 'stdio';
56
+ export const MCP_HTTP = 'http';
57
+ export const MCP_SSE = 'sse';
58
+ // ── Chat Protocol ───────────────────────────────────────────────────
59
+ export const CHAT_USER_MESSAGE = 'user_message';
60
+ // ── System Event Subtypes ───────────────────────────────────────────
61
+ export const SYSTEM_STDERR = 'stderr';
62
+ export const SYSTEM_INIT = 'init';
63
+ export const SYSTEM_UNKNOWN = 'unknown';
64
+ // ── Process Signals ─────────────────────────────────────────────────
65
+ export const SIGNAL_SIGTERM = 'SIGTERM';
66
+ // ── Node Error Codes ────────────────────────────────────────────────
67
+ export const ERR_ENOENT = 'ENOENT';
68
+ // ── Scheduler Events ────────────────────────────────────────────────
69
+ export const SCHED_RESULT = 'result';
70
+ export const SCHED_ERROR = 'error';
71
+ export const SCHED_TICK = 'tick';
72
+ export const SCHED_STOP = 'stop';
73
+ // ── Init Events ─────────────────────────────────────────────────────
74
+ export const INIT_EVENT_STAGE = 'init:stage';
75
+ export const INIT_EVENT_READY = 'init:ready';
76
+ export const INIT_EVENT_ERROR = 'init:error';
77
+ // ── Interval Units ──────────────────────────────────────────────────
78
+ export const UNIT_SECONDS = 's';
79
+ export const UNIT_MINUTES = 'm';
80
+ export const UNIT_HOURS = 'h';
81
+ export const UNIT_DAYS = 'd';
82
+ export const INTERVAL_MULTIPLIERS = {
83
+ [UNIT_SECONDS]: 1_000,
84
+ [UNIT_MINUTES]: 60_000,
85
+ [UNIT_HOURS]: 3_600_000,
86
+ [UNIT_DAYS]: 86_400_000,
87
+ };
88
+ // ── CLI Flags ───────────────────────────────────────────────────────
89
+ export const FLAG_PRINT = '--print';
90
+ export const FLAG_OUTPUT_FORMAT = '--output-format';
91
+ export const FLAG_INPUT_FORMAT = '--input-format';
92
+ export const FLAG_VERBOSE = '--verbose';
93
+ export const FLAG_CONTINUE = '--continue';
94
+ export const FLAG_RESUME = '--resume';
95
+ export const FLAG_FORK_SESSION = '--fork-session';
96
+ export const FLAG_MODEL = '--model';
97
+ export const FLAG_FALLBACK_MODEL = '--fallback-model';
98
+ export const FLAG_EFFORT = '--effort';
99
+ export const FLAG_PERMISSION_MODE = '--permission-mode';
100
+ export const FLAG_ALLOWED_TOOLS = '--allowedTools';
101
+ export const FLAG_DISALLOWED_TOOLS = '--disallowedTools';
102
+ export const FLAG_TOOLS = '--tools';
103
+ export const FLAG_SYSTEM_PROMPT = '--system-prompt';
104
+ export const FLAG_APPEND_SYSTEM_PROMPT = '--append-system-prompt';
105
+ export const FLAG_MAX_TURNS = '--max-turns';
106
+ export const FLAG_MAX_BUDGET = '--max-budget-usd';
107
+ export const FLAG_ADD_DIR = '--add-dir';
108
+ export const FLAG_MCP_CONFIG = '--mcp-config';
109
+ export const FLAG_STRICT_MCP_CONFIG = '--strict-mcp-config';
110
+ export const FLAG_AGENTS = '--agents';
111
+ export const FLAG_AGENT = '--agent';
112
+ export const FLAG_JSON_SCHEMA = '--json-schema';
113
+ export const FLAG_WORKTREE = '--worktree';
114
+ export const FLAG_NO_SESSION_PERSISTENCE = '--no-session-persistence';
115
+ export const FLAG_NAME = '--name';
116
+ export const FLAG_SETTINGS = '--settings';
117
+ export const FLAG_SESSION_ID = '--session-id';
118
+ // Flags that take a value argument (used by extractPrompt in SDK executor)
119
+ export const FLAGS_WITH_VALUE = [
120
+ FLAG_OUTPUT_FORMAT, FLAG_MODEL, FLAG_FALLBACK_MODEL, FLAG_PERMISSION_MODE,
121
+ FLAG_SYSTEM_PROMPT, FLAG_APPEND_SYSTEM_PROMPT, FLAG_MAX_TURNS, FLAG_MAX_BUDGET,
122
+ FLAG_ADD_DIR, FLAG_MCP_CONFIG, FLAG_AGENTS, FLAG_JSON_SCHEMA, FLAG_WORKTREE,
123
+ FLAG_RESUME, FLAG_SESSION_ID, FLAG_ALLOWED_TOOLS, FLAG_DISALLOWED_TOOLS,
124
+ FLAG_AGENT, FLAG_TOOLS, FLAG_NAME, FLAG_SETTINGS, FLAG_EFFORT,
125
+ FLAG_INPUT_FORMAT,
126
+ ];
127
+ // ── JSON Protocol Keys ──────────────────────────────────────────────
128
+ export const KEY_TYPE = 'type';
129
+ export const KEY_RESULT = 'result';
130
+ export const KEY_SESSION_ID = 'session_id';
131
+ export const KEY_USAGE = 'usage';
132
+ export const KEY_INPUT_TOKENS = 'input_tokens';
133
+ export const KEY_OUTPUT_TOKENS = 'output_tokens';
134
+ export const KEY_TOTAL_COST = 'total_cost_usd';
135
+ export const KEY_DURATION = 'duration_ms';
136
+ export const KEY_STRUCTURED_OUTPUT = 'structured_output';
137
+ export const KEY_MESSAGES = 'messages';
138
+ export const KEY_MESSAGE = 'message';
139
+ export const KEY_CONTENT = 'content';
140
+ export const KEY_ROLE = 'role';
141
+ export const KEY_TEXT = 'text';
142
+ export const KEY_NAME = 'name';
143
+ export const KEY_INPUT = 'input';
144
+ export const KEY_ERROR = 'error';
145
+ export const KEY_CODE = 'code';
146
+ export const KEY_MODEL = 'model';
147
+ export const KEY_TOOLS = 'tools';
148
+ export const KEY_SUBTYPE = 'subtype';
149
+ // ── Error Class Names ───────────────────────────────────────────────
150
+ export const ERR_NAME_BASE = 'ClaudeConnectorError';
151
+ export const ERR_NAME_NOT_FOUND = 'CliNotFoundError';
152
+ export const ERR_NAME_EXECUTION = 'CliExecutionError';
153
+ export const ERR_NAME_TIMEOUT = 'CliTimeoutError';
154
+ export const ERR_NAME_PARSE = 'ParseError';
155
+ export const ERR_NAME_VALIDATION = 'ValidationError';
156
+ // ── Default Values ──────────────────────────────────────────────────
157
+ export const DEFAULT_EXECUTABLE = 'claude';
158
+ export const DEFAULT_MODEL = 'sonnet';
159
+ export const DEFAULT_TIMEOUT_MS = 600_000;
160
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}