@action-llama/action-llama 0.27.5 → 0.28.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 (226) hide show
  1. package/dist/agents/credential-setup.d.ts +0 -1
  2. package/dist/agents/credential-setup.d.ts.map +1 -1
  3. package/dist/agents/credential-setup.js +2 -23
  4. package/dist/agents/credential-setup.js.map +1 -1
  5. package/dist/agents/prompt.js +1 -1
  6. package/dist/agents/prompt.js.map +1 -1
  7. package/dist/agents/scheduler-tools.d.ts +40 -0
  8. package/dist/agents/scheduler-tools.d.ts.map +1 -0
  9. package/dist/agents/scheduler-tools.js +178 -0
  10. package/dist/agents/scheduler-tools.js.map +1 -0
  11. package/dist/agents/transport-runner.d.ts +95 -0
  12. package/dist/agents/transport-runner.d.ts.map +1 -0
  13. package/dist/agents/transport-runner.js +653 -0
  14. package/dist/agents/transport-runner.js.map +1 -0
  15. package/dist/build-info.json +1 -1
  16. package/dist/cli/commands/add.d.ts +1 -0
  17. package/dist/cli/commands/add.d.ts.map +1 -1
  18. package/dist/cli/commands/add.js +24 -9
  19. package/dist/cli/commands/add.js.map +1 -1
  20. package/dist/cli/commands/agent.d.ts +0 -3
  21. package/dist/cli/commands/agent.d.ts.map +1 -1
  22. package/dist/cli/commands/agent.js +3 -67
  23. package/dist/cli/commands/agent.js.map +1 -1
  24. package/dist/cli/main.js +1 -30
  25. package/dist/cli/main.js.map +1 -1
  26. package/dist/control/routes/dashboard-api.js +1 -1
  27. package/dist/control/routes/dashboard-api.js.map +1 -1
  28. package/dist/control/routes/log-helpers.d.ts +4 -4
  29. package/dist/control/routes/log-helpers.d.ts.map +1 -1
  30. package/dist/control/routes/log-helpers.js +12 -7
  31. package/dist/control/routes/log-helpers.js.map +1 -1
  32. package/dist/control/routes/logs.d.ts.map +1 -1
  33. package/dist/control/routes/logs.js +10 -10
  34. package/dist/control/routes/logs.js.map +1 -1
  35. package/dist/docker/providers/index.d.ts +0 -4
  36. package/dist/docker/providers/index.d.ts.map +1 -1
  37. package/dist/docker/providers/index.js +0 -38
  38. package/dist/docker/providers/index.js.map +1 -1
  39. package/dist/execution/execution.d.ts +0 -1
  40. package/dist/execution/execution.d.ts.map +1 -1
  41. package/dist/execution/execution.js +5 -9
  42. package/dist/execution/execution.js.map +1 -1
  43. package/dist/execution/index.d.ts +1 -11
  44. package/dist/execution/index.d.ts.map +1 -1
  45. package/dist/execution/index.js +1 -8
  46. package/dist/execution/index.js.map +1 -1
  47. package/dist/execution/runner-setup.d.ts +6 -11
  48. package/dist/execution/runner-setup.d.ts.map +1 -1
  49. package/dist/execution/runner-setup.js +18 -14
  50. package/dist/execution/runner-setup.js.map +1 -1
  51. package/dist/execution/runtime-factory.d.ts +1 -15
  52. package/dist/execution/runtime-factory.d.ts.map +1 -1
  53. package/dist/execution/runtime-factory.js +1 -18
  54. package/dist/execution/runtime-factory.js.map +1 -1
  55. package/dist/gateway/index.d.ts +1 -1
  56. package/dist/gateway/index.d.ts.map +1 -1
  57. package/dist/gateway/index.js +6 -47
  58. package/dist/gateway/index.js.map +1 -1
  59. package/dist/gateway/routes/system.d.ts +1 -4
  60. package/dist/gateway/routes/system.d.ts.map +1 -1
  61. package/dist/gateway/routes/system.js +3 -8
  62. package/dist/gateway/routes/system.js.map +1 -1
  63. package/dist/gateway/stores.d.ts +0 -4
  64. package/dist/gateway/stores.d.ts.map +1 -1
  65. package/dist/gateway/stores.js +2 -10
  66. package/dist/gateway/stores.js.map +1 -1
  67. package/dist/gateway/types.d.ts +0 -13
  68. package/dist/gateway/types.d.ts.map +1 -1
  69. package/dist/mcp/server.d.ts.map +1 -1
  70. package/dist/mcp/server.js +11 -0
  71. package/dist/mcp/server.js.map +1 -1
  72. package/dist/scheduler/gateway-setup.d.ts +0 -2
  73. package/dist/scheduler/gateway-setup.d.ts.map +1 -1
  74. package/dist/scheduler/gateway-setup.js +2 -11
  75. package/dist/scheduler/gateway-setup.js.map +1 -1
  76. package/dist/scheduler/index.d.ts.map +1 -1
  77. package/dist/scheduler/index.js +95 -55
  78. package/dist/scheduler/index.js.map +1 -1
  79. package/dist/scheduler/validation.js +1 -1
  80. package/dist/scheduler/validation.js.map +1 -1
  81. package/dist/scheduler/watcher.d.ts +2 -8
  82. package/dist/scheduler/watcher.d.ts.map +1 -1
  83. package/dist/scheduler/watcher.js +7 -104
  84. package/dist/scheduler/watcher.js.map +1 -1
  85. package/dist/shared/config/load-agent.js +2 -2
  86. package/dist/shared/config/load-agent.js.map +1 -1
  87. package/dist/shared/config/load-project.js +2 -2
  88. package/dist/shared/config/load-project.js.map +1 -1
  89. package/dist/shared/config/types.d.ts +10 -2
  90. package/dist/shared/config/types.d.ts.map +1 -1
  91. package/dist/shared/constants.d.ts +1 -1
  92. package/dist/shared/constants.d.ts.map +1 -1
  93. package/dist/shared/constants.js +2 -2
  94. package/dist/shared/constants.js.map +1 -1
  95. package/dist/shared/credential-refs.js +1 -1
  96. package/dist/shared/credential-refs.js.map +1 -1
  97. package/dist/shared/paths.d.ts.map +1 -1
  98. package/dist/shared/paths.js +2 -2
  99. package/dist/shared/paths.js.map +1 -1
  100. package/dist/shared/validation.js +1 -1
  101. package/dist/shared/validation.js.map +1 -1
  102. package/dist/transport/docker-exec.d.ts +41 -0
  103. package/dist/transport/docker-exec.d.ts.map +1 -0
  104. package/dist/transport/docker-exec.js +331 -0
  105. package/dist/transport/docker-exec.js.map +1 -0
  106. package/dist/transport/host-user.d.ts +37 -0
  107. package/dist/transport/host-user.d.ts.map +1 -0
  108. package/dist/transport/host-user.js +232 -0
  109. package/dist/transport/host-user.js.map +1 -0
  110. package/dist/transport/index.d.ts +8 -0
  111. package/dist/transport/index.d.ts.map +1 -0
  112. package/dist/transport/index.js +7 -0
  113. package/dist/transport/index.js.map +1 -0
  114. package/dist/transport/memory.d.ts +35 -0
  115. package/dist/transport/memory.d.ts.map +1 -0
  116. package/dist/transport/memory.js +110 -0
  117. package/dist/transport/memory.js.map +1 -0
  118. package/dist/transport/operations.d.ts +68 -0
  119. package/dist/transport/operations.d.ts.map +1 -0
  120. package/dist/transport/operations.js +164 -0
  121. package/dist/transport/operations.js.map +1 -0
  122. package/dist/transport/ssh.d.ts +43 -0
  123. package/dist/transport/ssh.d.ts.map +1 -0
  124. package/dist/transport/ssh.js +225 -0
  125. package/dist/transport/ssh.js.map +1 -0
  126. package/dist/transport/transport.d.ts +59 -0
  127. package/dist/transport/transport.d.ts.map +1 -0
  128. package/dist/transport/transport.js +29 -0
  129. package/dist/transport/transport.js.map +1 -0
  130. package/package.json +1 -1
  131. package/dist/agents/container-entry.d.ts +0 -31
  132. package/dist/agents/container-entry.d.ts.map +0 -1
  133. package/dist/agents/container-entry.js +0 -302
  134. package/dist/agents/container-entry.js.map +0 -1
  135. package/dist/agents/container-runner.d.ts +0 -59
  136. package/dist/agents/container-runner.d.ts.map +0 -1
  137. package/dist/agents/container-runner.js +0 -472
  138. package/dist/agents/container-runner.js.map +0 -1
  139. package/dist/agents/harness/claude-cli-harness.d.ts +0 -15
  140. package/dist/agents/harness/claude-cli-harness.d.ts.map +0 -1
  141. package/dist/agents/harness/claude-cli-harness.js +0 -260
  142. package/dist/agents/harness/claude-cli-harness.js.map +0 -1
  143. package/dist/agents/harness/consumer.d.ts +0 -31
  144. package/dist/agents/harness/consumer.d.ts.map +0 -1
  145. package/dist/agents/harness/consumer.js +0 -165
  146. package/dist/agents/harness/consumer.js.map +0 -1
  147. package/dist/agents/harness/factory.d.ts +0 -9
  148. package/dist/agents/harness/factory.d.ts.map +0 -1
  149. package/dist/agents/harness/factory.js +0 -25
  150. package/dist/agents/harness/factory.js.map +0 -1
  151. package/dist/agents/harness/index.d.ts +0 -9
  152. package/dist/agents/harness/index.d.ts.map +0 -1
  153. package/dist/agents/harness/index.js +0 -5
  154. package/dist/agents/harness/index.js.map +0 -1
  155. package/dist/agents/harness/pi-harness.d.ts +0 -18
  156. package/dist/agents/harness/pi-harness.d.ts.map +0 -1
  157. package/dist/agents/harness/pi-harness.js +0 -278
  158. package/dist/agents/harness/pi-harness.js.map +0 -1
  159. package/dist/agents/harness/types.d.ts +0 -57
  160. package/dist/agents/harness/types.d.ts.map +0 -1
  161. package/dist/agents/harness/types.js +0 -2
  162. package/dist/agents/harness/types.js.map +0 -1
  163. package/dist/agents/session-loop.d.ts +0 -36
  164. package/dist/agents/session-loop.d.ts.map +0 -1
  165. package/dist/agents/session-loop.js +0 -216
  166. package/dist/agents/session-loop.js.map +0 -1
  167. package/dist/agents/signals.d.ts +0 -34
  168. package/dist/agents/signals.d.ts.map +0 -1
  169. package/dist/agents/signals.js +0 -122
  170. package/dist/agents/signals.js.map +0 -1
  171. package/dist/cli/commands/claude.d.ts +0 -4
  172. package/dist/cli/commands/claude.d.ts.map +0 -1
  173. package/dist/cli/commands/claude.js +0 -6
  174. package/dist/cli/commands/claude.js.map +0 -1
  175. package/dist/cli/commands/run-agent.d.ts +0 -14
  176. package/dist/cli/commands/run-agent.d.ts.map +0 -1
  177. package/dist/cli/commands/run-agent.js +0 -270
  178. package/dist/cli/commands/run-agent.js.map +0 -1
  179. package/dist/docker/cloud-run-runtime.d.ts +0 -48
  180. package/dist/docker/cloud-run-runtime.d.ts.map +0 -1
  181. package/dist/docker/cloud-run-runtime.js +0 -490
  182. package/dist/docker/cloud-run-runtime.js.map +0 -1
  183. package/dist/docker/image.d.ts +0 -19
  184. package/dist/docker/image.d.ts.map +0 -1
  185. package/dist/docker/image.js +0 -111
  186. package/dist/docker/image.js.map +0 -1
  187. package/dist/execution/call-dispatcher.d.ts +0 -11
  188. package/dist/execution/call-dispatcher.d.ts.map +0 -1
  189. package/dist/execution/call-dispatcher.js +0 -75
  190. package/dist/execution/call-dispatcher.js.map +0 -1
  191. package/dist/execution/container-registry.d.ts +0 -42
  192. package/dist/execution/container-registry.d.ts.map +0 -1
  193. package/dist/execution/container-registry.js +0 -76
  194. package/dist/execution/container-registry.js.map +0 -1
  195. package/dist/execution/image-builder.d.ts +0 -48
  196. package/dist/execution/image-builder.d.ts.map +0 -1
  197. package/dist/execution/image-builder.js +0 -155
  198. package/dist/execution/image-builder.js.map +0 -1
  199. package/dist/execution/routes/calls.d.ts +0 -18
  200. package/dist/execution/routes/calls.d.ts.map +0 -1
  201. package/dist/execution/routes/calls.js +0 -74
  202. package/dist/execution/routes/calls.js.map +0 -1
  203. package/dist/execution/routes/locks.d.ts +0 -10
  204. package/dist/execution/routes/locks.d.ts.map +0 -1
  205. package/dist/execution/routes/locks.js +0 -166
  206. package/dist/execution/routes/locks.js.map +0 -1
  207. package/dist/execution/routes/shutdown.d.ts +0 -5
  208. package/dist/execution/routes/shutdown.d.ts.map +0 -1
  209. package/dist/execution/routes/shutdown.js +0 -24
  210. package/dist/execution/routes/shutdown.js.map +0 -1
  211. package/dist/execution/routes/signals.d.ts +0 -12
  212. package/dist/execution/routes/signals.d.ts.map +0 -1
  213. package/dist/execution/routes/signals.js +0 -123
  214. package/dist/execution/routes/signals.js.map +0 -1
  215. package/dist/execution/types.d.ts +0 -23
  216. package/dist/execution/types.d.ts.map +0 -1
  217. package/dist/execution/types.js +0 -2
  218. package/dist/execution/types.js.map +0 -1
  219. package/dist/gateway/routes/execution.d.ts +0 -24
  220. package/dist/gateway/routes/execution.d.ts.map +0 -1
  221. package/dist/gateway/routes/execution.js +0 -13
  222. package/dist/gateway/routes/execution.js.map +0 -1
  223. package/dist/scheduler/orphan-recovery.d.ts +0 -25
  224. package/dist/scheduler/orphan-recovery.d.ts.map +0 -1
  225. package/dist/scheduler/orphan-recovery.js +0 -144
  226. package/dist/scheduler/orphan-recovery.js.map +0 -1
@@ -1,260 +0,0 @@
1
- import { spawn } from "child_process";
2
- import { createInterface } from "readline";
3
- import { zeroTokenUsage } from "../../shared/usage.js";
4
- function mapThinkingLevel(thinkingLevel) {
5
- switch (thinkingLevel) {
6
- case "off":
7
- case "minimal":
8
- return "low";
9
- case "low":
10
- case "medium":
11
- return "medium";
12
- case "high":
13
- return "high";
14
- case "xhigh":
15
- return "max";
16
- default:
17
- return "medium";
18
- }
19
- }
20
- function toTokenUsage(usage) {
21
- if (!usage)
22
- return zeroTokenUsage();
23
- const inputTokens = usage.input_tokens ?? 0;
24
- const outputTokens = usage.output_tokens ?? 0;
25
- const cacheReadTokens = usage.cache_read_input_tokens ?? 0;
26
- const cacheWriteTokens = usage.cache_creation_input_tokens ?? 0;
27
- return {
28
- inputTokens,
29
- outputTokens,
30
- cacheReadTokens,
31
- cacheWriteTokens,
32
- totalTokens: inputTokens + outputTokens,
33
- cost: 0,
34
- turnCount: outputTokens > 0 ? 1 : 0,
35
- };
36
- }
37
- function getMessageBlocks(event) {
38
- if (Array.isArray(event?.message?.content))
39
- return event.message.content;
40
- if (Array.isArray(event?.content))
41
- return event.content;
42
- return [];
43
- }
44
- function getMessageId(event) {
45
- return String(event?.message?.id || event?.uuid || "assistant");
46
- }
47
- export class ClaudeCliHarness {
48
- opts;
49
- child = null;
50
- constructor(opts) {
51
- this.opts = opts;
52
- }
53
- async *run(prompt, runOpts) {
54
- const spawnImpl = this.opts.spawnImpl ?? spawn;
55
- const args = [
56
- "-p",
57
- prompt,
58
- "--verbose",
59
- "--output-format",
60
- "stream-json",
61
- "--include-partial-messages",
62
- "--permission-mode",
63
- "bypassPermissions",
64
- "--add-dir",
65
- runOpts.cwd,
66
- "--model",
67
- this.opts.model.model,
68
- "--effort",
69
- mapThinkingLevel(this.opts.model.thinkingLevel),
70
- ];
71
- const env = {
72
- ...process.env,
73
- ...runOpts.env,
74
- };
75
- const child = spawnImpl("claude", args, {
76
- cwd: runOpts.cwd,
77
- env,
78
- stdio: ["ignore", "pipe", "pipe"],
79
- });
80
- this.child = child;
81
- yield {
82
- type: "log",
83
- level: "info",
84
- message: "creating agent session",
85
- data: { model: this.opts.model.model, thinking: this.opts.model.thinkingLevel },
86
- };
87
- const queue = [];
88
- let done = false;
89
- let waitError;
90
- let finalUsage;
91
- const assistantText = new Map();
92
- const pushEvent = (event) => {
93
- queue.push(event);
94
- };
95
- const handleJsonLine = (line) => {
96
- if (!line.trim())
97
- return;
98
- let parsed;
99
- try {
100
- parsed = JSON.parse(line);
101
- }
102
- catch {
103
- pushEvent({
104
- type: "log",
105
- level: "debug",
106
- message: "event",
107
- data: { raw: line.slice(0, 500) },
108
- });
109
- return;
110
- }
111
- if (parsed.type === "result") {
112
- finalUsage = toTokenUsage(parsed.usage);
113
- return;
114
- }
115
- if (parsed.type === "system" && parsed.subtype === "api_error") {
116
- pushEvent({
117
- type: "log",
118
- level: "error",
119
- message: "session error",
120
- data: { error: String(parsed.error?.error?.error?.message || parsed.error?.message || "Claude CLI API error") },
121
- });
122
- return;
123
- }
124
- if (parsed.type === "assistant") {
125
- const messageId = getMessageId(parsed);
126
- for (const block of getMessageBlocks(parsed)) {
127
- if (block.type === "text" && typeof block.text === "string") {
128
- const previous = assistantText.get(messageId) || "";
129
- const next = block.text;
130
- const delta = next.startsWith(previous) ? next.slice(previous.length) : next;
131
- assistantText.set(messageId, next);
132
- if (delta) {
133
- pushEvent({ type: "text_delta", delta });
134
- }
135
- }
136
- if (block.type === "tool_use") {
137
- const command = typeof block.input?.command === "string" ? block.input.command : undefined;
138
- pushEvent({
139
- type: "tool_start",
140
- toolName: String(block.name || "tool").toLowerCase(),
141
- toolCallId: String(block.id || messageId),
142
- command,
143
- });
144
- }
145
- }
146
- if (parsed.message?.stop_reason && parsed.message?.stop_reason !== "tool_use") {
147
- const data = {
148
- eventType: "message_end",
149
- role: parsed.message?.role || "assistant",
150
- stopReason: parsed.message?.stop_reason,
151
- raw: parsed,
152
- };
153
- // When the API returns stop_reason="error", extract error details
154
- // so they surface in the session-ended log.
155
- if (parsed.message.stop_reason === "error") {
156
- const content = parsed.message.content;
157
- const errDetail = parsed.message.error || parsed.error;
158
- const parts = [];
159
- if (errDetail) {
160
- parts.push(typeof errDetail === "string" ? errDetail : (errDetail.message || JSON.stringify(errDetail)));
161
- }
162
- if (Array.isArray(content)) {
163
- for (const block of content) {
164
- if (block.type === "text" && block.text)
165
- parts.push(String(block.text).slice(0, 500));
166
- }
167
- }
168
- if (parts.length > 0) {
169
- data.errorMessage = parts.join(" — ").slice(0, 500);
170
- }
171
- }
172
- pushEvent({
173
- type: "log",
174
- level: "debug",
175
- message: "conversation.event",
176
- data,
177
- });
178
- }
179
- return;
180
- }
181
- if (parsed.type === "user") {
182
- for (const block of getMessageBlocks(parsed)) {
183
- if (block.type !== "tool_result")
184
- continue;
185
- const result = typeof block.content === "string"
186
- ? block.content
187
- : JSON.stringify({
188
- content: Array.isArray(block.content) ? block.content : [{ type: "text", text: String(block.content ?? "") }],
189
- details: {},
190
- });
191
- pushEvent({
192
- type: "tool_end",
193
- toolName: "tool",
194
- toolCallId: String(block.tool_use_id || "tool"),
195
- result,
196
- isError: !!block.is_error,
197
- raw: parsed,
198
- });
199
- }
200
- }
201
- };
202
- const stdoutRl = createInterface({ input: child.stdout, crlfDelay: Infinity });
203
- stdoutRl.on("line", handleJsonLine);
204
- const stderrRl = createInterface({ input: child.stderr, crlfDelay: Infinity });
205
- stderrRl.on("line", (line) => {
206
- if (!line.trim())
207
- return;
208
- pushEvent({
209
- type: "log",
210
- level: "warn",
211
- message: "claude stderr",
212
- data: { text: line.slice(0, 500) },
213
- });
214
- });
215
- child.on("error", (err) => {
216
- waitError = err;
217
- });
218
- child.on("close", (code, signal) => {
219
- stdoutRl.close();
220
- stderrRl.close();
221
- if (finalUsage) {
222
- pushEvent({ type: "usage", usage: finalUsage });
223
- }
224
- if (signal) {
225
- pushEvent({
226
- type: "log",
227
- level: "warn",
228
- message: "claude process terminated",
229
- data: { signal },
230
- });
231
- }
232
- pushEvent({
233
- type: "exit",
234
- aborted: code !== 0,
235
- allModelsExhausted: false,
236
- });
237
- done = true;
238
- });
239
- while (!done || queue.length > 0) {
240
- while (queue.length > 0) {
241
- yield queue.shift();
242
- }
243
- if (waitError) {
244
- const err = waitError;
245
- waitError = undefined;
246
- throw err;
247
- }
248
- if (!done) {
249
- await new Promise((resolve) => setTimeout(resolve, 25));
250
- }
251
- }
252
- }
253
- dispose() {
254
- if (this.child && !this.child.killed) {
255
- this.child.kill("SIGTERM");
256
- }
257
- this.child = null;
258
- }
259
- }
260
- //# sourceMappingURL=claude-cli-harness.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-cli-harness.js","sourceRoot":"","sources":["../../../src/agents/harness/claude-cli-harness.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import type { TokenUsage } from "../../shared/usage.js";
2
- import type { AgentHarness, HarnessEvent } from "./types.js";
3
- export interface ConsumeHarnessOpts {
4
- log: (level: string, msg: string, data?: Record<string, any>) => void;
5
- onUnrecoverableAbort?: () => void;
6
- }
7
- export interface ConsumeResult {
8
- outputText: string;
9
- usage?: TokenUsage;
10
- unrecoverableErrors: number;
11
- aborted: boolean;
12
- allModelsExhausted: boolean;
13
- errorMessage?: string;
14
- /** Final context window usage as a percentage (0-100). */
15
- contextPercent?: number;
16
- /** The stop_reason from the final message_end event (e.g. "end_turn", "max_tokens"). */
17
- lastStopReason?: string;
18
- /** The last few tool calls with their error status, for terminal-state diagnostics. */
19
- lastToolResults: Array<{
20
- tool: string;
21
- cmd?: string;
22
- isError: boolean;
23
- }>;
24
- /** Tool calls that started but never completed — session ended mid-execution. */
25
- orphanedToolCalls: Array<{
26
- tool: string;
27
- cmd?: string;
28
- }>;
29
- }
30
- export declare function consumeHarness(harness: AgentHarness, events: AsyncIterable<HarnessEvent>, opts: ConsumeHarnessOpts): Promise<ConsumeResult>;
31
- //# sourceMappingURL=consumer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../src/agents/harness/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACtE,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wFAAwF;IACxF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzE,iFAAiF;IACjF,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAmCD,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,EACnC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,aAAa,CAAC,CA2IxB"}
@@ -1,165 +0,0 @@
1
- import { isUnrecoverableError, UNRECOVERABLE_THRESHOLD } from "../../shared/errors.js";
2
- function extractToolErrorText(result) {
3
- try {
4
- const parsed = JSON.parse(result);
5
- if (parsed?.content?.[0]?.text) {
6
- return String(parsed.content[0].text);
7
- }
8
- }
9
- catch {
10
- // Fall back to raw result.
11
- }
12
- return result;
13
- }
14
- function toSerializable(value) {
15
- if (value == null)
16
- return value;
17
- try {
18
- return JSON.parse(JSON.stringify(value));
19
- }
20
- catch {
21
- return String(value);
22
- }
23
- }
24
- function logUsage(log, usage) {
25
- log("info", "token-usage", {
26
- inputTokens: usage.inputTokens,
27
- outputTokens: usage.outputTokens,
28
- cacheReadTokens: usage.cacheReadTokens,
29
- cacheWriteTokens: usage.cacheWriteTokens,
30
- totalTokens: usage.totalTokens,
31
- cost: usage.cost,
32
- turnCount: usage.turnCount,
33
- });
34
- }
35
- export async function consumeHarness(harness, events, opts) {
36
- const pendingCmds = new Map();
37
- const { log, onUnrecoverableAbort } = opts;
38
- let outputText = "";
39
- let currentTurnText = "";
40
- let usage;
41
- let unrecoverableErrors = 0;
42
- let aborted = false;
43
- let allModelsExhausted = false;
44
- let errorMessage;
45
- let lastStopReason;
46
- let lastContextPercent;
47
- const lastToolResults = [];
48
- const activeToolCalls = new Map();
49
- try {
50
- for await (const event of events) {
51
- switch (event.type) {
52
- case "log":
53
- const eventData = event.data;
54
- const eventType = eventData?.eventType ?? eventData?.type;
55
- const isConversationEvent = event.message === "conversation.event" || event.message === "event";
56
- if (isConversationEvent && eventType === "message_end") {
57
- if (eventData?.stopReason) {
58
- lastStopReason = String(eventData.stopReason);
59
- }
60
- // Capture error details from stop_reason="error" messages
61
- if (typeof eventData?.errorMessage === "string") {
62
- errorMessage = eventData.errorMessage;
63
- }
64
- if (currentTurnText.trim()) {
65
- log("info", "conversation.message", {
66
- kind: "conversation",
67
- role: eventData?.role || "assistant",
68
- stopReason: eventData?.stopReason,
69
- text: currentTurnText.trim(),
70
- raw: toSerializable(eventData?.raw),
71
- });
72
- }
73
- currentTurnText = "";
74
- }
75
- if (isConversationEvent && eventType === "turn_end" && typeof eventData?.errorMessage === "string") {
76
- errorMessage = eventData.errorMessage;
77
- }
78
- if (event.message === "context-usage" && event.data?.contextPercent != null) {
79
- lastContextPercent = event.data.contextPercent;
80
- }
81
- log(event.level, event.message, event.data);
82
- break;
83
- case "text_delta":
84
- outputText += event.delta;
85
- currentTurnText += event.delta;
86
- break;
87
- case "tool_start":
88
- if (event.command) {
89
- pendingCmds.set(event.toolCallId, event.command);
90
- }
91
- activeToolCalls.set(event.toolCallId, { tool: event.toolName, cmd: event.command });
92
- log("info", "conversation.tool_call", {
93
- kind: "conversation",
94
- tool: event.toolName,
95
- toolCallId: event.toolCallId,
96
- cmd: event.command,
97
- raw: toSerializable(event.raw),
98
- });
99
- break;
100
- case "tool_end": {
101
- const originCmd = pendingCmds.get(event.toolCallId);
102
- pendingCmds.delete(event.toolCallId);
103
- const resultText = extractToolErrorText(event.result);
104
- log(event.isError ? "error" : "info", "conversation.tool_result", {
105
- kind: "conversation",
106
- tool: event.toolName,
107
- toolCallId: event.toolCallId,
108
- cmd: originCmd,
109
- result: event.result,
110
- resultText,
111
- isError: event.isError,
112
- raw: toSerializable(event.raw),
113
- });
114
- activeToolCalls.delete(event.toolCallId);
115
- lastToolResults.push({ tool: event.toolName, cmd: originCmd, isError: event.isError });
116
- if (lastToolResults.length > 3)
117
- lastToolResults.shift();
118
- if (event.isError) {
119
- if (isUnrecoverableError(resultText)) {
120
- unrecoverableErrors++;
121
- if (unrecoverableErrors >= UNRECOVERABLE_THRESHOLD && !aborted) {
122
- log("error", "Aborting: repeated auth/permission failures — check credentials");
123
- aborted = true;
124
- onUnrecoverableAbort?.();
125
- harness.dispose();
126
- }
127
- }
128
- }
129
- break;
130
- }
131
- case "usage":
132
- usage = event.usage;
133
- logUsage(log, event.usage);
134
- break;
135
- case "exit":
136
- aborted = aborted || event.aborted;
137
- allModelsExhausted = event.allModelsExhausted;
138
- break;
139
- }
140
- }
141
- }
142
- finally {
143
- harness.dispose();
144
- }
145
- if (currentTurnText.trim()) {
146
- log("info", "conversation.message", {
147
- kind: "conversation",
148
- role: "assistant",
149
- text: currentTurnText.trim(),
150
- });
151
- }
152
- return {
153
- outputText,
154
- usage,
155
- unrecoverableErrors,
156
- aborted,
157
- allModelsExhausted,
158
- errorMessage,
159
- contextPercent: lastContextPercent,
160
- lastStopReason,
161
- lastToolResults,
162
- orphanedToolCalls: Array.from(activeToolCalls.values()),
163
- };
164
- }
165
- //# sourceMappingURL=consumer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../../../src/agents/harness/consumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAyBvF,SAAS,oBAAoB,CAAC,MAAc;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAA8B,EAAE,KAAiB;IACjE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE;QACzB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAqB,EACrB,MAAmC,EACnC,IAAwB;IAExB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,MAAM,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;IAE3C,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,KAA6B,CAAC;IAClC,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,YAAgC,CAAC;IACrC,IAAI,cAAkC,CAAC;IACvC,IAAI,kBAAsC,CAAC;IAC3C,MAAM,eAAe,GAA4D,EAAE,CAAC;IACpF,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0C,CAAC;IAE1E,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,KAAK;oBACR,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;oBAC7B,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,SAAS,EAAE,IAAI,CAAC;oBAC1D,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,KAAK,oBAAoB,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;oBAChG,IAAI,mBAAmB,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;wBACvD,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;4BAC1B,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;wBAChD,CAAC;wBACD,0DAA0D;wBAC1D,IAAI,OAAO,SAAS,EAAE,YAAY,KAAK,QAAQ,EAAE,CAAC;4BAChD,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;wBACxC,CAAC;wBACD,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;4BAC3B,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE;gCAClC,IAAI,EAAE,cAAc;gCACpB,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,WAAW;gCACpC,UAAU,EAAE,SAAS,EAAE,UAAU;gCACjC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE;gCAC5B,GAAG,EAAE,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC;6BACpC,CAAC,CAAC;wBACL,CAAC;wBACD,eAAe,GAAG,EAAE,CAAC;oBACvB,CAAC;oBACD,IAAI,mBAAmB,IAAI,SAAS,KAAK,UAAU,IAAI,OAAO,SAAS,EAAE,YAAY,KAAK,QAAQ,EAAE,CAAC;wBACnG,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;oBACxC,CAAC;oBACD,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,EAAE,cAAc,IAAI,IAAI,EAAE,CAAC;wBAC5E,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAwB,CAAC;oBAC3D,CAAC;oBACD,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC5C,MAAM;gBAER,KAAK,YAAY;oBACf,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;oBAC1B,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC;oBAC/B,MAAM;gBAER,KAAK,YAAY;oBACf,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnD,CAAC;oBACD,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpF,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE;wBACpC,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,KAAK,CAAC,QAAQ;wBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,GAAG,EAAE,KAAK,CAAC,OAAO;wBAClB,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;qBAC/B,CAAC,CAAC;oBACH,MAAM;gBAER,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBACpD,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBACrC,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAEtD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,0BAA0B,EAAE;wBAChE,IAAI,EAAE,cAAc;wBACpB,IAAI,EAAE,KAAK,CAAC,QAAQ;wBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,GAAG,EAAE,SAAS;wBACd,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,UAAU;wBACV,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;qBAC/B,CAAC,CAAC;oBAEH,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBACzC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;wBAAE,eAAe,CAAC,KAAK,EAAE,CAAC;oBAExD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClB,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;4BACrC,mBAAmB,EAAE,CAAC;4BACtB,IAAI,mBAAmB,IAAI,uBAAuB,IAAI,CAAC,OAAO,EAAE,CAAC;gCAC/D,GAAG,CAAC,OAAO,EAAE,iEAAiE,CAAC,CAAC;gCAChF,OAAO,GAAG,IAAI,CAAC;gCACf,oBAAoB,EAAE,EAAE,CAAC;gCACzB,OAAO,CAAC,OAAO,EAAE,CAAC;4BACpB,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO;oBACV,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC3B,MAAM;gBAER,KAAK,MAAM;oBACT,OAAO,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;oBACnC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;oBAC9C,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE;YAClC,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,UAAU;QACV,KAAK;QACL,mBAAmB;QACnB,OAAO;QACP,kBAAkB;QAClB,YAAY;QACZ,cAAc,EAAE,kBAAkB;QAClC,cAAc;QACd,eAAe;QACf,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { AgentConfig } from "../../shared/config.js";
2
- import type { AgentHarness } from "./types.js";
3
- export interface CreateHarnessOpts {
4
- resourceLoader: any;
5
- settingsManager: any;
6
- providerKeys?: Map<string, string>;
7
- }
8
- export declare function createHarness(agentConfig: AgentConfig, opts: CreateHarnessOpts): AgentHarness;
9
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/agents/harness/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,wBAAwB,CAAC;AAIvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,GAAG,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AASD,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAgB7F"}
@@ -1,25 +0,0 @@
1
- import { ModelCircuitBreaker } from "../model-fallback.js";
2
- import { ClaudeCliHarness } from "./claude-cli-harness.js";
3
- import { PiHarness } from "./pi-harness.js";
4
- function getPrimaryModel(agentConfig) {
5
- if (!agentConfig.models.length) {
6
- throw new Error(`Agent "${agentConfig.name}" has no models configured.`);
7
- }
8
- return agentConfig.models[0];
9
- }
10
- export function createHarness(agentConfig, opts) {
11
- const harnessType = agentConfig.harness?.type || "pi";
12
- if (harnessType === "claude") {
13
- return new ClaudeCliHarness({
14
- model: getPrimaryModel(agentConfig),
15
- });
16
- }
17
- return new PiHarness({
18
- models: agentConfig.models,
19
- circuitBreaker: new ModelCircuitBreaker(),
20
- resourceLoader: opts.resourceLoader,
21
- settingsManager: opts.settingsManager,
22
- providerKeys: opts.providerKeys,
23
- });
24
- }
25
- //# sourceMappingURL=factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/agents/harness/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,SAAS,eAAe,CAAC,WAAwB;IAC/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,UAAU,WAAW,CAAC,IAAI,6BAA6B,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAwB,EAAE,IAAuB;IAC7E,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC;IAEtD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,gBAAgB,CAAC;YAC1B,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,SAAS,CAAC;QACnB,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,cAAc,EAAE,IAAI,mBAAmB,EAAE;QACzC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -1,9 +0,0 @@
1
- export type { AgentHarness, HarnessConfig, HarnessEvent, HarnessExitEvent, HarnessLogEvent, HarnessRunOpts, HarnessTextDeltaEvent, HarnessToolEndEvent, HarnessToolStartEvent, HarnessType, HarnessUsageEvent, } from "./types.js";
2
- export { PiHarness } from "./pi-harness.js";
3
- export type { PiHarnessOpts } from "./pi-harness.js";
4
- export { ClaudeCliHarness } from "./claude-cli-harness.js";
5
- export type { ClaudeCliHarnessOpts } from "./claude-cli-harness.js";
6
- export { createHarness } from "./factory.js";
7
- export { consumeHarness } from "./consumer.js";
8
- export type { ConsumeResult } from "./consumer.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -1,5 +0,0 @@
1
- export { PiHarness } from "./pi-harness.js";
2
- export { ClaudeCliHarness } from "./claude-cli-harness.js";
3
- export { createHarness } from "./factory.js";
4
- export { consumeHarness } from "./consumer.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/harness/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { ModelConfig } from "../../shared/config.js";
2
- import { ModelCircuitBreaker } from "../model-fallback.js";
3
- import type { AgentHarness, HarnessEvent, HarnessRunOpts } from "./types.js";
4
- export interface PiHarnessOpts {
5
- models: ModelConfig[];
6
- circuitBreaker: ModelCircuitBreaker;
7
- resourceLoader: any;
8
- settingsManager: any;
9
- providerKeys?: Map<string, string>;
10
- }
11
- export declare class PiHarness implements AgentHarness {
12
- private opts;
13
- private session;
14
- constructor(opts: PiHarnessOpts);
15
- run(prompt: string, runOpts: HarnessRunOpts): AsyncIterable<HarnessEvent>;
16
- dispose(): void;
17
- }
18
- //# sourceMappingURL=pi-harness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pi-harness.d.ts","sourceRoot":"","sources":["../../../src/agents/harness/pi-harness.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAA2C,MAAM,sBAAsB,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG7E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,GAAG,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAMD,qBAAa,SAAU,YAAW,YAAY;IAGhC,OAAO,CAAC,IAAI;IAFxB,OAAO,CAAC,OAAO,CAAa;gBAER,IAAI,EAAE,aAAa;IAEhC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC;IAkRhF,OAAO,IAAI,IAAI;CAMhB"}