@gkorepanov/ccodex 0.3.0 → 0.4.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 (201) hide show
  1. package/README.md +141 -63
  2. package/assets/ccodex/goals/continuation.md +1 -0
  3. package/compatibility.json +5 -6
  4. package/config.example.toml +19 -4
  5. package/dist/claude/asyncQueue.d.ts +3 -0
  6. package/dist/claude/asyncQueue.js +13 -2
  7. package/dist/claude/asyncQueue.js.map +1 -1
  8. package/dist/claude/commandActions.d.ts +6 -0
  9. package/dist/claude/commandActions.js +57 -0
  10. package/dist/claude/commandActions.js.map +1 -0
  11. package/dist/claude/compactCommand.d.ts +2 -0
  12. package/dist/claude/compactCommand.js +7 -0
  13. package/dist/claude/compactCommand.js.map +1 -0
  14. package/dist/claude/goalTools.d.ts +15 -0
  15. package/dist/claude/goalTools.js +128 -0
  16. package/dist/claude/goalTools.js.map +1 -0
  17. package/dist/claude/hookMapper.d.ts +17 -4
  18. package/dist/claude/hookMapper.js +7 -5
  19. package/dist/claude/hookMapper.js.map +1 -1
  20. package/dist/claude/inputMapper.d.ts +1 -0
  21. package/dist/claude/inputMapper.js +1 -0
  22. package/dist/claude/inputMapper.js.map +1 -1
  23. package/dist/claude/rateLimits.d.ts +72 -0
  24. package/dist/claude/rateLimits.js +330 -0
  25. package/dist/claude/rateLimits.js.map +1 -0
  26. package/dist/claude/responseItemValidation.d.ts +2 -0
  27. package/dist/claude/responseItemValidation.js +40 -0
  28. package/dist/claude/responseItemValidation.js.map +1 -0
  29. package/dist/claude/resultClassifier.d.ts +8 -2
  30. package/dist/claude/resultClassifier.js +9 -1
  31. package/dist/claude/resultClassifier.js.map +1 -1
  32. package/dist/claude/service.d.ts +116 -29
  33. package/dist/claude/service.js +1337 -680
  34. package/dist/claude/service.js.map +1 -1
  35. package/dist/claude/session/backgroundOutput.d.ts +2 -0
  36. package/dist/claude/session/backgroundOutput.js +29 -0
  37. package/dist/claude/session/backgroundOutput.js.map +1 -0
  38. package/dist/claude/session/commands.d.ts +862 -0
  39. package/dist/claude/session/commands.js +2 -0
  40. package/dist/claude/session/commands.js.map +1 -0
  41. package/dist/claude/session/goalState.d.ts +49 -0
  42. package/dist/claude/session/goalState.js +407 -0
  43. package/dist/claude/session/goalState.js.map +1 -0
  44. package/dist/claude/session/mailbox.d.ts +52 -0
  45. package/dist/claude/session/mailbox.js +190 -0
  46. package/dist/claude/session/mailbox.js.map +1 -0
  47. package/dist/claude/session/outputAdapter.d.ts +11 -0
  48. package/dist/claude/session/outputAdapter.js +31 -0
  49. package/dist/claude/session/outputAdapter.js.map +1 -0
  50. package/dist/claude/session/permissionUpdates.d.ts +4 -0
  51. package/dist/claude/session/permissionUpdates.js +17 -0
  52. package/dist/claude/session/permissionUpdates.js.map +1 -0
  53. package/dist/claude/session/providerFacts.d.ts +47 -0
  54. package/dist/claude/session/providerFacts.js +84 -0
  55. package/dist/claude/session/providerFacts.js.map +1 -0
  56. package/dist/claude/session/providerRuntime.d.ts +1 -0
  57. package/dist/claude/session/providerRuntime.js +2 -0
  58. package/dist/claude/session/providerRuntime.js.map +1 -0
  59. package/dist/claude/session/providerRuntimeFactory.d.ts +49 -0
  60. package/dist/claude/session/providerRuntimeFactory.js +122 -0
  61. package/dist/claude/session/providerRuntimeFactory.js.map +1 -0
  62. package/dist/claude/session/repository.d.ts +57 -0
  63. package/dist/claude/session/repository.js +161 -0
  64. package/dist/claude/session/repository.js.map +1 -0
  65. package/dist/claude/session/runtime.d.ts +46 -0
  66. package/dist/claude/session/runtime.js +140 -0
  67. package/dist/claude/session/runtime.js.map +1 -0
  68. package/dist/claude/session/scopeState.d.ts +61 -0
  69. package/dist/claude/session/scopeState.js +74 -0
  70. package/dist/claude/session/scopeState.js.map +1 -0
  71. package/dist/claude/session/session.d.ts +285 -0
  72. package/dist/claude/session/session.js +6778 -0
  73. package/dist/claude/session/session.js.map +1 -0
  74. package/dist/claude/session/shellRunner.d.ts +13 -0
  75. package/dist/claude/session/shellRunner.js +103 -0
  76. package/dist/claude/session/shellRunner.js.map +1 -0
  77. package/dist/claude/session/usage.d.ts +2 -0
  78. package/dist/claude/session/usage.js +10 -0
  79. package/dist/claude/session/usage.js.map +1 -0
  80. package/dist/claude/sessionRegistry.d.ts +26 -0
  81. package/dist/claude/sessionRegistry.js +118 -0
  82. package/dist/claude/sessionRegistry.js.map +1 -0
  83. package/dist/claude/shellSupervisor.d.ts +1 -0
  84. package/dist/claude/shellSupervisor.js +69 -0
  85. package/dist/claude/shellSupervisor.js.map +1 -0
  86. package/dist/claude/statusCommand.d.ts +21 -0
  87. package/dist/claude/statusCommand.js +97 -0
  88. package/dist/claude/statusCommand.js.map +1 -0
  89. package/dist/claude/toolMapper.d.ts +9 -1
  90. package/dist/claude/toolMapper.js +98 -18
  91. package/dist/claude/toolMapper.js.map +1 -1
  92. package/dist/claude/transcriptBrancher.d.ts +37 -0
  93. package/dist/claude/transcriptBrancher.js +103 -0
  94. package/dist/claude/transcriptBrancher.js.map +1 -0
  95. package/dist/cli/delegate.js +23 -1
  96. package/dist/cli/delegate.js.map +1 -1
  97. package/dist/cli/main.js +28 -12
  98. package/dist/cli/main.js.map +1 -1
  99. package/dist/codex/generated/ResponseItemRuntimeSchema.d.ts +8 -0
  100. package/dist/codex/generated/ResponseItemRuntimeSchema.js +7 -0
  101. package/dist/codex/generated/ResponseItemRuntimeSchema.js.map +1 -0
  102. package/dist/compatibility/probe.js +11 -6
  103. package/dist/compatibility/probe.js.map +1 -1
  104. package/dist/config/config.d.ts +12 -0
  105. package/dist/config/config.js +103 -11
  106. package/dist/config/config.js.map +1 -1
  107. package/dist/daemon/daemon.js +91 -43
  108. package/dist/daemon/daemon.js.map +1 -1
  109. package/dist/daemon/ownership.d.ts +15 -0
  110. package/dist/daemon/ownership.js +185 -0
  111. package/dist/daemon/ownership.js.map +1 -0
  112. package/dist/daemon/probe.js +1 -1
  113. package/dist/daemon/supervisor.d.ts +3 -0
  114. package/dist/daemon/supervisor.js +37 -1
  115. package/dist/daemon/supervisor.js.map +1 -1
  116. package/dist/gateway/clientConnection.d.ts +7 -1
  117. package/dist/gateway/clientConnection.js +656 -60
  118. package/dist/gateway/clientConnection.js.map +1 -1
  119. package/dist/gateway/logicalThreadProjection.d.ts +8 -0
  120. package/dist/gateway/logicalThreadProjection.js +59 -0
  121. package/dist/gateway/logicalThreadProjection.js.map +1 -0
  122. package/dist/gateway/remoteRelay.js +0 -1
  123. package/dist/gateway/remoteRelay.js.map +1 -1
  124. package/dist/gateway/server.d.ts +1 -1
  125. package/dist/gateway/server.js +69 -11
  126. package/dist/gateway/server.js.map +1 -1
  127. package/dist/gateway/stockRpc.d.ts +5 -2
  128. package/dist/gateway/stockRpc.js +52 -6
  129. package/dist/gateway/stockRpc.js.map +1 -1
  130. package/dist/gateway/subscriptions.d.ts +19 -3
  131. package/dist/gateway/subscriptions.js +152 -13
  132. package/dist/gateway/subscriptions.js.map +1 -1
  133. package/dist/gateway/threadList.d.ts +7 -2
  134. package/dist/gateway/threadList.js +8 -4
  135. package/dist/gateway/threadList.js.map +1 -1
  136. package/dist/gateway/transientNotice.d.ts +15 -0
  137. package/dist/gateway/transientNotice.js +96 -1
  138. package/dist/gateway/transientNotice.js.map +1 -1
  139. package/dist/handoff/providerEpochs.d.ts +18 -0
  140. package/dist/handoff/providerEpochs.js +77 -0
  141. package/dist/handoff/providerEpochs.js.map +1 -0
  142. package/dist/handoff/service.d.ts +86 -6
  143. package/dist/handoff/service.js +1276 -168
  144. package/dist/handoff/service.js.map +1 -1
  145. package/dist/handoff/store.d.ts +189 -2
  146. package/dist/handoff/store.js +618 -7
  147. package/dist/handoff/store.js.map +1 -1
  148. package/dist/handoff/titleGeneration.d.ts +28 -0
  149. package/dist/handoff/titleGeneration.js +138 -0
  150. package/dist/handoff/titleGeneration.js.map +1 -0
  151. package/dist/management/doctor.d.ts +1 -1
  152. package/dist/management/doctor.js +32 -23
  153. package/dist/management/doctor.js.map +1 -1
  154. package/dist/management/lifecycle.js +14 -2
  155. package/dist/management/lifecycle.js.map +1 -1
  156. package/dist/management/remoteShim.d.ts +10 -0
  157. package/dist/management/remoteShim.js +65 -0
  158. package/dist/management/remoteShim.js.map +1 -0
  159. package/dist/management/setup.d.ts +5 -0
  160. package/dist/management/setup.js +120 -39
  161. package/dist/management/setup.js.map +1 -1
  162. package/dist/observability/metrics.d.ts +2 -0
  163. package/dist/observability/metrics.js +6 -0
  164. package/dist/observability/metrics.js.map +1 -1
  165. package/dist/protocol/errors.d.ts +1 -0
  166. package/dist/protocol/errors.js +4 -1
  167. package/dist/protocol/errors.js.map +1 -1
  168. package/dist/runtime/dependencies.js +3 -3
  169. package/dist/runtime/dependencies.js.map +1 -1
  170. package/dist/runtime/providerAvailability.d.ts +24 -0
  171. package/dist/runtime/providerAvailability.js +107 -0
  172. package/dist/runtime/providerAvailability.js.map +1 -0
  173. package/dist/state/stateCommand.d.ts +21 -0
  174. package/dist/state/stateCommand.js +198 -0
  175. package/dist/state/stateCommand.js.map +1 -0
  176. package/dist/state/stockStateTracker.d.ts +16 -0
  177. package/dist/state/stockStateTracker.js +137 -0
  178. package/dist/state/stockStateTracker.js.map +1 -0
  179. package/dist/store/HybridStore.d.ts +118 -2
  180. package/dist/store/HybridStore.js +23 -1
  181. package/dist/store/HybridStore.js.map +1 -1
  182. package/dist/store/memoryStore.d.ts +57 -7
  183. package/dist/store/memoryStore.js +337 -5
  184. package/dist/store/memoryStore.js.map +1 -1
  185. package/dist/store/sqliteStore.d.ts +30 -4
  186. package/dist/store/sqliteStore.js +395 -42
  187. package/dist/store/sqliteStore.js.map +1 -1
  188. package/install.sh +2 -2
  189. package/{LICENSES.md → legal/LICENSES.md} +2 -2
  190. package/{THIRD_PARTY_NOTICES.md → legal/THIRD_PARTY_NOTICES.md} +177 -148
  191. package/package.json +28 -18
  192. package/vendor/codex/continuation.md +51 -0
  193. package/BUILD_BENCHMARKS.md +0 -27
  194. package/RELEASING.md +0 -98
  195. package/SSH_VERIFY.md +0 -69
  196. package/dist/claude/interactions.d.ts +0 -23
  197. package/dist/claude/interactions.js +0 -77
  198. package/dist/claude/interactions.js.map +0 -1
  199. package/dist/claude/sessionRuntime.d.ts +0 -102
  200. package/dist/claude/sessionRuntime.js +0 -1361
  201. package/dist/claude/sessionRuntime.js.map +0 -1
@@ -0,0 +1,190 @@
1
+ export const DEFAULT_CLAUDE_MAILBOX_CAPACITY = 512;
2
+ export class ClaudeMailboxClosedError extends Error {
3
+ constructor(message = "Claude mailbox is closed.") {
4
+ super(message);
5
+ this.name = "ClaudeMailboxClosedError";
6
+ }
7
+ }
8
+ export function createDeferred() {
9
+ let settled = false;
10
+ let resolvePromise;
11
+ let rejectPromise;
12
+ const promise = new Promise((resolve, reject) => {
13
+ resolvePromise = resolve;
14
+ rejectPromise = reject;
15
+ });
16
+ return {
17
+ promise,
18
+ get settled() {
19
+ return settled;
20
+ },
21
+ resolve(value) {
22
+ if (settled)
23
+ return;
24
+ settled = true;
25
+ resolvePromise(value);
26
+ },
27
+ reject(reason) {
28
+ if (settled)
29
+ return;
30
+ settled = true;
31
+ rejectPromise(reason);
32
+ },
33
+ };
34
+ }
35
+ export class ClaudeMailbox {
36
+ capacity;
37
+ control = [];
38
+ regular = [];
39
+ pendingControl = [];
40
+ pendingRegular = [];
41
+ consumer;
42
+ consumerAcquired = false;
43
+ closedError;
44
+ sequence = 0;
45
+ constructor(capacity = DEFAULT_CLAUDE_MAILBOX_CAPACITY) {
46
+ this.capacity = capacity;
47
+ if (!Number.isSafeInteger(capacity) || capacity < 1) {
48
+ throw new RangeError("Claude mailbox capacity must be a positive safe integer.");
49
+ }
50
+ }
51
+ get size() {
52
+ return this.control.length + this.regular.length;
53
+ }
54
+ get pendingAdmissions() {
55
+ return this.pendingControl.length + this.pendingRegular.length;
56
+ }
57
+ get closed() {
58
+ return this.closedError !== undefined;
59
+ }
60
+ enqueue(envelope, options = {}) {
61
+ const completion = envelope.completion;
62
+ const stored = {
63
+ envelope: completion ? { command: envelope.command, completion } : { command: envelope.command },
64
+ lane: options.lane ?? "normal",
65
+ sequence: this.sequence++,
66
+ ...(options.coalesce ? { coalesce: options.coalesce } : {}),
67
+ };
68
+ if (stored.coalesce && stored.lane !== "provider") {
69
+ return this.rejectEnvelope(stored, new TypeError("Only provider-lane envelopes may coalesce."));
70
+ }
71
+ if (this.closedError)
72
+ return this.rejectEnvelope(stored, this.closedError);
73
+ const coalesced = this.tryCoalesce(stored);
74
+ if (coalesced)
75
+ return coalesced;
76
+ if (this.consumer && this.size === 0) {
77
+ const consumer = this.consumer;
78
+ this.consumer = undefined;
79
+ consumer({ value: stored.envelope, done: false });
80
+ return Promise.resolve();
81
+ }
82
+ if (this.size < this.capacity) {
83
+ this.push(stored);
84
+ return Promise.resolve();
85
+ }
86
+ return new Promise((resolve, reject) => {
87
+ const pending = { ...stored, accepted: [{ resolve, reject }] };
88
+ (stored.lane === "control" ? this.pendingControl : this.pendingRegular).push(pending);
89
+ });
90
+ }
91
+ submit(command, options = {}) {
92
+ const completion = createDeferred();
93
+ void this.enqueue({ command, completion }, options).catch((error) => completion.reject(error));
94
+ return completion.promise;
95
+ }
96
+ close(error = new ClaudeMailboxClosedError()) {
97
+ if (this.closedError)
98
+ return;
99
+ this.closedError = error;
100
+ this.rejectPending(error);
101
+ if (this.size === 0)
102
+ this.finishConsumer();
103
+ }
104
+ [Symbol.asyncIterator]() {
105
+ if (this.consumerAcquired)
106
+ throw new Error("Claude mailbox supports exactly one consumer.");
107
+ this.consumerAcquired = true;
108
+ return {
109
+ next: () => this.next(),
110
+ return: () => {
111
+ this.cancel(new ClaudeMailboxClosedError("Claude mailbox consumer stopped."));
112
+ return Promise.resolve({ value: undefined, done: true });
113
+ },
114
+ };
115
+ }
116
+ next() {
117
+ const stored = this.shift();
118
+ if (stored) {
119
+ this.admitPending();
120
+ return Promise.resolve({ value: stored.envelope, done: false });
121
+ }
122
+ if (this.closedError)
123
+ return Promise.resolve({ value: undefined, done: true });
124
+ if (this.consumer)
125
+ throw new Error("Claude mailbox consumer called next() concurrently.");
126
+ return new Promise((resolve) => {
127
+ this.consumer = resolve;
128
+ });
129
+ }
130
+ push(stored) {
131
+ (stored.lane === "control" ? this.control : this.regular).push(stored);
132
+ }
133
+ shift() {
134
+ return this.control.shift() ?? this.regular.shift();
135
+ }
136
+ admitPending() {
137
+ while (!this.closedError && this.size < this.capacity) {
138
+ const pending = this.pendingControl.shift() ?? this.pendingRegular.shift();
139
+ if (!pending)
140
+ return;
141
+ this.push(pending);
142
+ for (const waiter of pending.accepted)
143
+ waiter.resolve();
144
+ }
145
+ }
146
+ tryCoalesce(incoming) {
147
+ if (!incoming.coalesce || incoming.envelope.completion)
148
+ return undefined;
149
+ const pending = this.pendingRegular.at(-1);
150
+ const target = pending ?? this.regular.at(-1);
151
+ if (!target?.coalesce || target.envelope.completion)
152
+ return undefined;
153
+ if (target.lane !== "provider" || target.coalesce.key !== incoming.coalesce.key)
154
+ return undefined;
155
+ const command = incoming.coalesce.merge(target.envelope.command, incoming.envelope.command);
156
+ target.envelope = { command };
157
+ if (pending) {
158
+ return new Promise((resolve, reject) => pending.accepted.push({ resolve, reject }));
159
+ }
160
+ return Promise.resolve();
161
+ }
162
+ rejectEnvelope(stored, error) {
163
+ stored.envelope.completion?.reject(error);
164
+ return Promise.reject(error);
165
+ }
166
+ rejectPending(error) {
167
+ for (const pending of [...this.pendingControl.splice(0), ...this.pendingRegular.splice(0)]) {
168
+ pending.envelope.completion?.reject(error);
169
+ for (const waiter of pending.accepted)
170
+ waiter.reject(error);
171
+ }
172
+ }
173
+ finishConsumer() {
174
+ if (!this.consumer)
175
+ return;
176
+ const consumer = this.consumer;
177
+ this.consumer = undefined;
178
+ consumer({ value: undefined, done: true });
179
+ }
180
+ cancel(error) {
181
+ if (!this.closedError)
182
+ this.closedError = error;
183
+ this.rejectPending(this.closedError);
184
+ for (const stored of [...this.control.splice(0), ...this.regular.splice(0)]) {
185
+ stored.envelope.completion?.reject(this.closedError);
186
+ }
187
+ this.finishConsumer();
188
+ }
189
+ }
190
+ //# sourceMappingURL=mailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../../src/claude/session/mailbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SubscriptionHub } from "../../gateway/subscriptions.js";
2
+ export declare class ClaudeOutputAdapter {
3
+ private readonly hub;
4
+ constructor(hub: SubscriptionHub);
5
+ emit(threadId: string, method: string, params: unknown): void;
6
+ request(threadId: string, requestId: string, method: string, params: unknown, connectionId?: string): boolean;
7
+ suppress(threadId: string): void;
8
+ unsuppress(threadId: string): void;
9
+ withInternalThreadHidden<Result>(threadId: string, operation: () => Promise<Result>): Promise<Result>;
10
+ threadDeleted(threadId: string): void;
11
+ }
@@ -0,0 +1,31 @@
1
+ export class ClaudeOutputAdapter {
2
+ hub;
3
+ constructor(hub) {
4
+ this.hub = hub;
5
+ }
6
+ emit(threadId, method, params) {
7
+ this.hub.emit(threadId, method, params);
8
+ }
9
+ request(threadId, requestId, method, params, connectionId) {
10
+ return this.hub.request(threadId, requestId, method, params, connectionId);
11
+ }
12
+ suppress(threadId) {
13
+ this.hub.suppress(threadId);
14
+ }
15
+ unsuppress(threadId) {
16
+ this.hub.unsuppress(threadId);
17
+ }
18
+ async withInternalThreadHidden(threadId, operation) {
19
+ this.hub.suppress(threadId);
20
+ try {
21
+ return await operation();
22
+ }
23
+ finally {
24
+ this.hub.unsuppress(threadId);
25
+ }
26
+ }
27
+ threadDeleted(threadId) {
28
+ this.hub.threadDeleted(threadId);
29
+ }
30
+ }
31
+ //# sourceMappingURL=outputAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputAdapter.js","sourceRoot":"","sources":["../../../src/claude/session/outputAdapter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IACM;IAApC,YAAoC,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;IAAG,CAAC;IAErD,IAAI,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAe;QAC3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAEM,OAAO,CACZ,QAAgB,EAChB,SAAiB,EACjB,MAAc,EACd,MAAe,EACf,YAAqB;QAErB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7E,CAAC;IAEM,QAAQ,CAAC,QAAgB;QAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,UAAU,CAAC,QAAgB;QAChC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,QAAgB,EAChB,SAAgC;QAEhC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,QAAgB;QACnC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import type { CanUseTool, PermissionUpdate } from "@anthropic-ai/claude-agent-sdk";
2
+ type PermissionOptions = Parameters<CanUseTool>[2];
3
+ export declare function safeSessionPermissionUpdates(options: Pick<PermissionOptions, "matchedAskRule" | "suggestions">): PermissionUpdate[] | undefined;
4
+ export {};
@@ -0,0 +1,17 @@
1
+ export function safeSessionPermissionUpdates(options) {
2
+ const suggestions = options.suggestions;
3
+ if (!suggestions?.length || options.matchedAskRule)
4
+ return undefined;
5
+ if (!suggestions.every((update) => {
6
+ if (update.destination !== "session")
7
+ return false;
8
+ if (update.type === "addDirectories")
9
+ return update.directories.length > 0;
10
+ return update.type === "addRules"
11
+ && update.behavior === "allow"
12
+ && update.rules.length > 0;
13
+ }))
14
+ return undefined;
15
+ return suggestions;
16
+ }
17
+ //# sourceMappingURL=permissionUpdates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissionUpdates.js","sourceRoot":"","sources":["../../../src/claude/session/permissionUpdates.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,4BAA4B,CAC1C,OAAkE;IAElE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,OAAO,CAAC,cAAc;QAAE,OAAO,SAAS,CAAC;IACrE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACnD,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB;YAAE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;eAC5B,MAAM,CAAC,QAAQ,KAAK,OAAO;eAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACrB,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { SDKMessage, SDKResultMessage } from "@anthropic-ai/claude-agent-sdk";
2
+ import type { RuntimeFactSource } from "./commands.js";
3
+ export interface RuntimeFactContext extends RuntimeFactSource {
4
+ readonly activeTurnId: string | null;
5
+ readonly readOnly: boolean;
6
+ }
7
+ export interface ProviderEventIdentity {
8
+ readonly providerEventId: string | null;
9
+ readonly providerEventType: string;
10
+ }
11
+ interface ProviderFactEnvelope extends ProviderEventIdentity {
12
+ readonly runtimeGeneration: number;
13
+ }
14
+ export type ProviderMessageFact = ProviderFactEnvelope & {
15
+ readonly kind: "message";
16
+ readonly message: Exclude<SDKMessage, SDKResultMessage>;
17
+ } | ProviderFactEnvelope & {
18
+ readonly kind: "terminal";
19
+ readonly message: SDKResultMessage;
20
+ };
21
+ export type ClaudeProviderFact = ProviderMessageFact | {
22
+ readonly kind: "inputPending";
23
+ readonly runtimeGeneration: number;
24
+ readonly pendingInputs: number;
25
+ } | {
26
+ readonly kind: "exit";
27
+ readonly runtimeGeneration: number;
28
+ readonly error?: unknown;
29
+ };
30
+ export declare function providerEventIdentity(message: SDKMessage): ProviderEventIdentity;
31
+ export declare function normalizeProviderMessage(runtimeGeneration: number, message: SDKMessage): ProviderMessageFact;
32
+ export declare function assistantHasTools(message: Extract<SDKMessage, {
33
+ type: "assistant";
34
+ }>): boolean;
35
+ export interface ToolResult {
36
+ readonly toolUseId: string;
37
+ readonly output: string;
38
+ readonly isError: boolean;
39
+ }
40
+ export declare function toolResults(message: SDKMessage): ToolResult[];
41
+ export declare function backgroundTaskId(message: SDKMessage): string | undefined;
42
+ export declare function backgroundOutputFile(output: string): string | undefined;
43
+ export declare function serverToolResult(value: unknown): ToolResult | undefined;
44
+ export declare function isNoQueryAcknowledgement(message: Extract<SDKMessage, {
45
+ type: "result";
46
+ }>): boolean;
47
+ export {};
@@ -0,0 +1,84 @@
1
+ export function providerEventIdentity(message) {
2
+ return {
3
+ providerEventId: "uuid" in message && typeof message.uuid === "string" ? message.uuid : null,
4
+ providerEventType: message.type === "system" ? `system/${message.subtype}` : message.type,
5
+ };
6
+ }
7
+ export function normalizeProviderMessage(runtimeGeneration, message) {
8
+ const envelope = {
9
+ runtimeGeneration,
10
+ ...providerEventIdentity(message),
11
+ };
12
+ return message.type === "result"
13
+ ? { ...envelope, kind: "terminal", message }
14
+ : { ...envelope, kind: "message", message };
15
+ }
16
+ function isGoalMcpToolBlock(block) {
17
+ if (!block || typeof block !== "object")
18
+ return false;
19
+ const value = block;
20
+ return ["tool_use", "server_tool_use", "mcp_tool_use"].includes(String(value.type))
21
+ && typeof value.name === "string"
22
+ && value.name.startsWith("mcp__ccodex_goal__");
23
+ }
24
+ export function assistantHasTools(message) {
25
+ return Array.isArray(message.message.content) && message.message.content.some((block) => !isGoalMcpToolBlock(block)
26
+ && (block.type === "tool_use" || block.type === "server_tool_use" || block.type === "mcp_tool_use"));
27
+ }
28
+ function outputText(value) {
29
+ if (typeof value === "string")
30
+ return value;
31
+ if (!Array.isArray(value))
32
+ return "";
33
+ return value.flatMap((block) => {
34
+ if (!block || typeof block !== "object")
35
+ return [];
36
+ const candidate = block;
37
+ return typeof candidate.text === "string" ? [candidate.text] : [];
38
+ }).join("\n");
39
+ }
40
+ export function toolResults(message) {
41
+ if (message.type !== "user" || !Array.isArray(message.message.content))
42
+ return [];
43
+ return message.message.content.flatMap((block) => {
44
+ if (!block || typeof block !== "object" || block.type !== "tool_result")
45
+ return [];
46
+ return [{ toolUseId: block.tool_use_id, output: outputText(block.content), isError: block.is_error === true }];
47
+ });
48
+ }
49
+ export function backgroundTaskId(message) {
50
+ if (message.type !== "user")
51
+ return undefined;
52
+ const value = message.tool_use_result;
53
+ if (!value || typeof value !== "object")
54
+ return undefined;
55
+ const id = value.backgroundTaskId;
56
+ return typeof id === "string" ? id : undefined;
57
+ }
58
+ export function backgroundOutputFile(output) {
59
+ return /Output is being written to: (.+?)(?:\. You will|$)/s.exec(output)?.[1]?.trim();
60
+ }
61
+ export function serverToolResult(value) {
62
+ if (!value || typeof value !== "object")
63
+ return undefined;
64
+ const block = value;
65
+ if (typeof block.type !== "string" || !block.type.endsWith("_tool_result") || typeof block.tool_use_id !== "string")
66
+ return undefined;
67
+ const content = block.content;
68
+ const errorType = content && typeof content === "object" && !Array.isArray(content)
69
+ ? content.type
70
+ : undefined;
71
+ return {
72
+ toolUseId: block.tool_use_id,
73
+ output: typeof content === "string" ? content : content === undefined ? "" : JSON.stringify(content),
74
+ isError: typeof errorType === "string" && errorType.endsWith("_error"),
75
+ };
76
+ }
77
+ export function isNoQueryAcknowledgement(message) {
78
+ return message.subtype === "success"
79
+ && message.is_error === false
80
+ && message.num_turns === 0
81
+ && message.result === ""
82
+ && message.stop_reason === null;
83
+ }
84
+ //# sourceMappingURL=providerFacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerFacts.js","sourceRoot":"","sources":["../../../src/claude/session/providerFacts.ts"],"names":[],"mappings":"AAwCA,MAAM,UAAU,qBAAqB,CAAC,OAAmB;IACvD,OAAO;QACL,eAAe,EAAE,MAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC5F,iBAAiB,EAAE,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;KAC1F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,iBAAyB,EACzB,OAAmB;IAEnB,MAAM,QAAQ,GAAG;QACf,iBAAiB;QACjB,GAAG,qBAAqB,CAAC,OAAO,CAAC;KAClC,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;QAC5C,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,KAA2C,CAAC;IAC1D,OAAO,CAAC,UAAU,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;WAC9E,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;WAC9B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAmD;IACnF,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACtF,CAAC,kBAAkB,CAAC,KAAK,CAAC;WACrB,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CACtG,CAAC;AACJ,CAAC;AAQD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,KAAgC,CAAC;QACnD,OAAO,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAmB;IAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAClF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,OAAO,EAAE,CAAC;QACnF,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,EAAE,GAAI,KAAiC,CAAC,gBAAgB,CAAC;IAC/D,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,qDAAqD,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,SAAS,GAAG,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACjF,CAAC,CAAE,OAAmC,CAAC,IAAI;QAC3C,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,WAAW;QAC5B,MAAM,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpG,OAAO,EAAE,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgD;IACvF,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS;WAC/B,OAAO,CAAC,QAAQ,KAAK,KAAK;WAC1B,OAAO,CAAC,SAAS,KAAK,CAAC;WACvB,OAAO,CAAC,MAAM,KAAK,EAAE;WACrB,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC;AACpC,CAAC"}
@@ -0,0 +1 @@
1
+ export { ClaudeRuntime as ProviderRuntime, type ClaudeRuntimeFact as ProviderRuntimeFact, type ClaudeRuntimeSettings as ProviderRuntimeSettings, } from "./runtime.js";
@@ -0,0 +1,2 @@
1
+ export { ClaudeRuntime as ProviderRuntime, } from "./runtime.js";
2
+ //# sourceMappingURL=providerRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerRuntime.js","sourceRoot":"","sources":["../../../src/claude/session/providerRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,eAAe,GAGjC,MAAM,cAAc,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { type CanUseTool, type ElicitationRequest, type ElicitationResult, type HookInput, type HookJSONOutput, type McpSdkServerConfigWithInstance, type Options } from "@anthropic-ai/claude-agent-sdk";
2
+ import type { Logger } from "../../observability/logger.js";
3
+ import type { ClaudeQueryFactory } from "../queryFactory.js";
4
+ import { ProviderRuntime, type ProviderRuntimeFact, type ProviderRuntimeSettings } from "./providerRuntime.js";
5
+ import type { RuntimeTransportSettings } from "./commands.js";
6
+ export type { RuntimeTransportSettings } from "./commands.js";
7
+ export interface GoalRuntimeEvents {
8
+ readonly mcpServer: McpSdkServerConfigWithInstance;
9
+ }
10
+ export interface ProviderRuntimeCallbacks {
11
+ readonly canUseTool: CanUseTool;
12
+ readonly onElicitation: (request: ElicitationRequest, signal: AbortSignal) => Promise<ElicitationResult>;
13
+ readonly beforeToolUse: (input: HookInput, toolUseId: string | undefined) => Promise<HookJSONOutput>;
14
+ readonly captureFileAfter: (input: HookInput, toolUseId: string | undefined) => Promise<HookJSONOutput>;
15
+ readonly afterCompact: (input: HookInput) => Promise<HookJSONOutput>;
16
+ }
17
+ export declare class StaleClaudeRuntimeSettingsError extends Error {
18
+ readonly reason: "runtime" | "settings";
19
+ readonly settings: RuntimeTransportSettings;
20
+ constructor(message: string, reason: "runtime" | "settings", settings: RuntimeTransportSettings);
21
+ }
22
+ export declare function providerPermissionMode(settings: RuntimeTransportSettings): NonNullable<Options["permissionMode"]>;
23
+ export declare function runtimeTransportSettings(startup: RuntimeStartup): RuntimeTransportSettings;
24
+ export declare function providerRuntimeSettings(settings: RuntimeTransportSettings): ProviderRuntimeSettings;
25
+ export interface RuntimeStartup {
26
+ readonly threadId: string;
27
+ readonly runtimeGeneration: number;
28
+ readonly providerSessionId: string;
29
+ readonly resume: boolean;
30
+ readonly cwd: string;
31
+ readonly ephemeral: boolean;
32
+ readonly claudeBinary: string;
33
+ readonly model: string;
34
+ readonly settingsGeneration: number;
35
+ readonly lastCompletedTurnId: string | null;
36
+ readonly modelContextWindow: number | null;
37
+ readonly approvalPolicy: unknown;
38
+ readonly approvalsReviewer: string;
39
+ readonly sandboxPolicy: unknown;
40
+ readonly baseInstructions: string | null;
41
+ readonly developerInstructions: string | null;
42
+ readonly personality: string | null;
43
+ readonly serviceTier: string | null;
44
+ readonly reasoningEffort: string | null;
45
+ readonly reasoningSummary: string | null;
46
+ readonly collaborationMode: unknown | null;
47
+ readonly outputSchema: unknown | null;
48
+ }
49
+ export declare function createProviderRuntime(startup: RuntimeStartup, logger: Logger, queryFactory: ClaudeQueryFactory, submitFact: (fact: ProviderRuntimeFact) => Promise<void>, callbacks: ProviderRuntimeCallbacks, goalEvents?: GoalRuntimeEvents): ProviderRuntime;
@@ -0,0 +1,122 @@
1
+ import { normalizeClaudeModelIdentifier } from "../modelSelection.js";
2
+ import { ProviderRuntime, } from "./providerRuntime.js";
3
+ const unsupportedProviderReviewTools = ["SendFeedback", "ProposeSkills"];
4
+ export class StaleClaudeRuntimeSettingsError extends Error {
5
+ reason;
6
+ settings;
7
+ constructor(message, reason, settings) {
8
+ super(message);
9
+ this.reason = reason;
10
+ this.settings = settings;
11
+ }
12
+ }
13
+ function appendInstructions(startup) {
14
+ const parts = [startup.baseInstructions, startup.developerInstructions];
15
+ if (startup.personality === "friendly")
16
+ parts.push("Use a friendly, collaborative communication style.");
17
+ if (startup.personality === "pragmatic")
18
+ parts.push("Be direct, pragmatic, and focused on concrete outcomes.");
19
+ const value = parts.filter((part) => Boolean(part)).join("\n\n");
20
+ return value || undefined;
21
+ }
22
+ function effort(value) {
23
+ return value === "low" || value === "medium" || value === "high" || value === "xhigh" || value === "max"
24
+ ? value
25
+ : undefined;
26
+ }
27
+ export function providerPermissionMode(settings) {
28
+ if (settings.approvalsReviewer !== "user")
29
+ return "auto";
30
+ const sandbox = settings.sandboxPolicy && typeof settings.sandboxPolicy === "object" && "type" in settings.sandboxPolicy
31
+ ? settings.sandboxPolicy
32
+ : undefined;
33
+ if (settings.approvalPolicy === "never" && sandbox?.type === "dangerFullAccess")
34
+ return "bypassPermissions";
35
+ if (settings.approvalPolicy === "never")
36
+ return "dontAsk";
37
+ return "default";
38
+ }
39
+ export function runtimeTransportSettings(startup) {
40
+ return {
41
+ cwd: startup.cwd,
42
+ model: startup.model,
43
+ settingsGeneration: startup.settingsGeneration,
44
+ approvalPolicy: startup.approvalPolicy,
45
+ approvalsReviewer: startup.approvalsReviewer,
46
+ sandboxPolicy: startup.sandboxPolicy,
47
+ serviceTier: startup.serviceTier,
48
+ reasoningEffort: startup.reasoningEffort,
49
+ reasoningSummary: startup.reasoningSummary,
50
+ collaborationMode: startup.collaborationMode,
51
+ };
52
+ }
53
+ export function providerRuntimeSettings(settings) {
54
+ const selectedEffort = effort(settings.reasoningEffort);
55
+ return {
56
+ model: normalizeClaudeModelIdentifier(settings.model),
57
+ permissionMode: providerPermissionMode(settings),
58
+ effort: selectedEffort ?? null,
59
+ fastMode: settings.serviceTier === "fast",
60
+ thinkingDisplay: settings.reasoningSummary === "none"
61
+ ? "omitted"
62
+ : settings.reasoningSummary ? "summarized" : null,
63
+ };
64
+ }
65
+ function claudeOutputSchema(value) {
66
+ if (!value || typeof value !== "object" || Array.isArray(value))
67
+ return undefined;
68
+ const { $schema: _dialect, ...schema } = value;
69
+ return schema;
70
+ }
71
+ export function createProviderRuntime(startup, logger, queryFactory, submitFact, callbacks, goalEvents) {
72
+ const transportSettings = runtimeTransportSettings(startup);
73
+ const append = appendInstructions(startup);
74
+ const selectedPermissionMode = providerPermissionMode(transportSettings);
75
+ const selectedEffort = effort(startup.reasoningEffort);
76
+ if (startup.reasoningEffort && !selectedEffort)
77
+ throw new Error(`Unsupported Claude effort '${startup.reasoningEffort}'.`);
78
+ const outputSchema = claudeOutputSchema(startup.outputSchema);
79
+ return new ProviderRuntime(startup.runtimeGeneration, {
80
+ cwd: startup.cwd,
81
+ model: normalizeClaudeModelIdentifier(startup.model),
82
+ ...(startup.resume ? { resume: startup.providerSessionId } : { sessionId: startup.providerSessionId }),
83
+ pathToClaudeCodeExecutable: startup.claudeBinary,
84
+ persistSession: !startup.ephemeral,
85
+ includePartialMessages: true,
86
+ includeHookEvents: true,
87
+ forwardSubagentText: true,
88
+ disallowedTools: unsupportedProviderReviewTools,
89
+ settingSources: ["user", "project", "local"],
90
+ ...(goalEvents ? { mcpServers: { ccodex_goal: goalEvents.mcpServer } } : {}),
91
+ systemPrompt: { type: "preset", preset: "claude_code", ...(append ? { append } : {}) },
92
+ permissionMode: selectedPermissionMode,
93
+ ...(startup.ephemeral || selectedPermissionMode === "bypassPermissions"
94
+ ? { allowDangerouslySkipPermissions: true }
95
+ : {}),
96
+ ...(selectedPermissionMode === "auto" && !startup.ephemeral
97
+ ? {}
98
+ : {
99
+ canUseTool: (name, input, options) => callbacks.canUseTool(name, input, options),
100
+ }),
101
+ onElicitation: (request, options) => callbacks.onElicitation(request, options.signal),
102
+ hooks: {
103
+ PreToolUse: [{ hooks: [(input, toolUseId) => callbacks.beforeToolUse(input, toolUseId)] }],
104
+ PostToolUse: [{ matcher: "Edit|Write|NotebookEdit", hooks: [(input, toolUseId) => callbacks.captureFileAfter(input, toolUseId)] }],
105
+ PostToolUseFailure: [{ matcher: "Edit|Write|NotebookEdit", hooks: [(input, toolUseId) => callbacks.captureFileAfter(input, toolUseId)] }],
106
+ PostCompact: [{ hooks: [(input) => callbacks.afterCompact(input)] }],
107
+ },
108
+ ...(startup.serviceTier === "fast" ? { settings: { fastMode: true } } : {}),
109
+ ...(selectedEffort ? { effort: selectedEffort } : {}),
110
+ ...(startup.reasoningSummary === "none"
111
+ ? { thinking: { type: "adaptive", display: "omitted" } }
112
+ : startup.reasoningSummary
113
+ ? { thinking: { type: "adaptive", display: "summarized" } }
114
+ : {}),
115
+ ...(outputSchema
116
+ ? { outputFormat: { type: "json_schema", schema: outputSchema } }
117
+ : {}),
118
+ env: process.env,
119
+ stderr: (line) => logger.debug("claude.stderr", { threadId: startup.threadId, output: line }),
120
+ }, queryFactory, submitFact);
121
+ }
122
+ //# sourceMappingURL=providerRuntimeFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerRuntimeFactory.js","sourceRoot":"","sources":["../../../src/claude/session/providerRuntimeFactory.ts"],"names":[],"mappings":"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"}