reeval 0.0.1

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 (213) hide show
  1. package/LICENSE +202 -0
  2. package/THIRD_PARTY_NOTICES.md +2160 -0
  3. package/assets/package.json +9 -0
  4. package/assets/pnpm-lock.yaml +1336 -0
  5. package/dist/agent-DVHkx8aT.js +532 -0
  6. package/dist/agent-DVHkx8aT.js.map +1 -0
  7. package/dist/analysis-CxSCt1YY.js +16 -0
  8. package/dist/analysis-CxSCt1YY.js.map +1 -0
  9. package/dist/assemble-B-nmz8oH.js +695 -0
  10. package/dist/assemble-B-nmz8oH.js.map +1 -0
  11. package/dist/assemble-CmRVDZ2Q.js +2 -0
  12. package/dist/attempt-BdRQ9jKX.js +176 -0
  13. package/dist/attempt-BdRQ9jKX.js.map +1 -0
  14. package/dist/bridge/index.mjs +1911 -0
  15. package/dist/bridge/package.json +13 -0
  16. package/dist/bridge/pnpm-lock.yaml +1041 -0
  17. package/dist/bridge/pnpm-workspace.yaml +2 -0
  18. package/dist/budget-DBUrH4jX.js +8 -0
  19. package/dist/budget-DBUrH4jX.js.map +1 -0
  20. package/dist/cli--CQ3Iy9q.js +1865 -0
  21. package/dist/cli--CQ3Iy9q.js.map +1 -0
  22. package/dist/cli-spec-DKAu09Gi.js +478 -0
  23. package/dist/cli-spec-DKAu09Gi.js.map +1 -0
  24. package/dist/cli.d.ts +1 -0
  25. package/dist/cli.js +8 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/colors-QV9dFVhN.js +34 -0
  28. package/dist/colors-QV9dFVhN.js.map +1 -0
  29. package/dist/command-BSJzHMtP.js +280 -0
  30. package/dist/command-BSJzHMtP.js.map +1 -0
  31. package/dist/command-CEm8PZ1N.js +1043 -0
  32. package/dist/command-CEm8PZ1N.js.map +1 -0
  33. package/dist/command-D-jnQWVG.js +673 -0
  34. package/dist/command-D-jnQWVG.js.map +1 -0
  35. package/dist/command-DQAvbG7d.js +432 -0
  36. package/dist/command-DQAvbG7d.js.map +1 -0
  37. package/dist/commands-A4udfyKZ.js +2 -0
  38. package/dist/commands-CF8mOfiu.js +207 -0
  39. package/dist/commands-CF8mOfiu.js.map +1 -0
  40. package/dist/config-Cuj0kVYj.js +415 -0
  41. package/dist/config-Cuj0kVYj.js.map +1 -0
  42. package/dist/context-loi9OCZv.js +106 -0
  43. package/dist/context-loi9OCZv.js.map +1 -0
  44. package/dist/core-tLN-z1Be.js +96 -0
  45. package/dist/core-tLN-z1Be.js.map +1 -0
  46. package/dist/db-Cjj2ZsfQ.js +2 -0
  47. package/dist/db-DxDzMhtB.js +827 -0
  48. package/dist/db-DxDzMhtB.js.map +1 -0
  49. package/dist/debug-D24NOQH1.js +89 -0
  50. package/dist/debug-D24NOQH1.js.map +1 -0
  51. package/dist/debug-SEmW4w8f.js +2 -0
  52. package/dist/dist-BZXYHN2X.js +1673 -0
  53. package/dist/dist-BZXYHN2X.js.map +1 -0
  54. package/dist/docker-DQDZWXF9.js +20 -0
  55. package/dist/docker-DQDZWXF9.js.map +1 -0
  56. package/dist/docker-DnWAVdEm.js +2 -0
  57. package/dist/docker-oSbCExHL.js +153 -0
  58. package/dist/docker-oSbCExHL.js.map +1 -0
  59. package/dist/doctor-CxlH1pDM.js +525 -0
  60. package/dist/doctor-CxlH1pDM.js.map +1 -0
  61. package/dist/egress-73SQfKdx.js +619 -0
  62. package/dist/egress-73SQfKdx.js.map +1 -0
  63. package/dist/env-BQqj93gu.js +21 -0
  64. package/dist/env-BQqj93gu.js.map +1 -0
  65. package/dist/environment-Mz7wvrtD.js +552 -0
  66. package/dist/environment-Mz7wvrtD.js.map +1 -0
  67. package/dist/errors-C9w_ud7g.js +160 -0
  68. package/dist/errors-C9w_ud7g.js.map +1 -0
  69. package/dist/errors-CSxfJ4qu.js +11 -0
  70. package/dist/errors-CSxfJ4qu.js.map +1 -0
  71. package/dist/files--6CEUXm7.js +2 -0
  72. package/dist/files-BLlrhU4-.js +62 -0
  73. package/dist/files-BLlrhU4-.js.map +1 -0
  74. package/dist/files-Bd25OAQH.js +2 -0
  75. package/dist/files-BvHCFWgD.js +2 -0
  76. package/dist/files-D2-qn_Dl.js +275 -0
  77. package/dist/files-D2-qn_Dl.js.map +1 -0
  78. package/dist/files-bF2fPuT9.js +99 -0
  79. package/dist/files-bF2fPuT9.js.map +1 -0
  80. package/dist/git-D6hMeieS.js +44 -0
  81. package/dist/git-D6hMeieS.js.map +1 -0
  82. package/dist/harness-ls5aX1UO.js +131 -0
  83. package/dist/harness-ls5aX1UO.js.map +1 -0
  84. package/dist/harness.d.ts +74 -0
  85. package/dist/harness.js +2 -0
  86. package/dist/header-DzFDoMCI.js +78 -0
  87. package/dist/header-DzFDoMCI.js.map +1 -0
  88. package/dist/ids-Bp6ut7ZD.js +49 -0
  89. package/dist/ids-Bp6ut7ZD.js.map +1 -0
  90. package/dist/images-Cc1-coFc.js +286 -0
  91. package/dist/images-Cc1-coFc.js.map +1 -0
  92. package/dist/index.d.ts +97 -0
  93. package/dist/index.js +1959 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/init-CFljS8BJ.js +344 -0
  96. package/dist/init-CFljS8BJ.js.map +1 -0
  97. package/dist/init-z2ZPn9Tj.js +2 -0
  98. package/dist/invocations-rXktgSAn.js +157 -0
  99. package/dist/invocations-rXktgSAn.js.map +1 -0
  100. package/dist/jiti-BOLXpKyG.js +46 -0
  101. package/dist/jiti-BOLXpKyG.js.map +1 -0
  102. package/dist/judge-D8Uf4dA9.js +146 -0
  103. package/dist/judge-D8Uf4dA9.js.map +1 -0
  104. package/dist/judge.d.ts +21 -0
  105. package/dist/judge.js +19 -0
  106. package/dist/judge.js.map +1 -0
  107. package/dist/live-Bs3LReMV.js +98 -0
  108. package/dist/live-Bs3LReMV.js.map +1 -0
  109. package/dist/matchers-DyLvm7EG.js +374 -0
  110. package/dist/matchers-DyLvm7EG.js.map +1 -0
  111. package/dist/model-BdO79gWz.js +44 -0
  112. package/dist/model-BdO79gWz.js.map +1 -0
  113. package/dist/model-CDL98xue.js +725 -0
  114. package/dist/model-CDL98xue.js.map +1 -0
  115. package/dist/model-v-0_Ik7S.js +2 -0
  116. package/dist/node-kG64XxdE.js +506 -0
  117. package/dist/node-kG64XxdE.js.map +1 -0
  118. package/dist/opencode-providers-DZuD_oYt.js +3149 -0
  119. package/dist/opencode-providers-DZuD_oYt.js.map +1 -0
  120. package/dist/options-CAQhu--C.js +452 -0
  121. package/dist/options-CAQhu--C.js.map +1 -0
  122. package/dist/patch-BkKje4cp.js +69 -0
  123. package/dist/patch-BkKje4cp.js.map +1 -0
  124. package/dist/paths-CBvm6pap.js +72 -0
  125. package/dist/paths-CBvm6pap.js.map +1 -0
  126. package/dist/plan-gwk6dJ8c.js +237 -0
  127. package/dist/plan-gwk6dJ8c.js.map +1 -0
  128. package/dist/preflight-BtubXKQ8.js +2 -0
  129. package/dist/preflight-BypZMNBG.js +185 -0
  130. package/dist/preflight-BypZMNBG.js.map +1 -0
  131. package/dist/prepare-Cwv0bHs_.js +3 -0
  132. package/dist/prepare-D6Uzcubb.js +213 -0
  133. package/dist/prepare-D6Uzcubb.js.map +1 -0
  134. package/dist/provenance-Dfb8YY5Y.js +129 -0
  135. package/dist/provenance-Dfb8YY5Y.js.map +1 -0
  136. package/dist/provider-BDbNOQhQ.js +2 -0
  137. package/dist/provider-CmAYTQQs.js +14 -0
  138. package/dist/provider-CmAYTQQs.js.map +1 -0
  139. package/dist/providers-2p3ylMHI.js +107 -0
  140. package/dist/providers-2p3ylMHI.js.map +1 -0
  141. package/dist/providers-BUOxitcT.js +2 -0
  142. package/dist/query-CFATHZmV.js +91 -0
  143. package/dist/query-CFATHZmV.js.map +1 -0
  144. package/dist/query-DR4m6CXf.js +2 -0
  145. package/dist/record-DQ8wzyco.js +99 -0
  146. package/dist/record-DQ8wzyco.js.map +1 -0
  147. package/dist/redact-C4fL_bZP.js +167 -0
  148. package/dist/redact-C4fL_bZP.js.map +1 -0
  149. package/dist/results-CeXb8Wde.js +37 -0
  150. package/dist/results-CeXb8Wde.js.map +1 -0
  151. package/dist/root-CFDjpWuc.js +110 -0
  152. package/dist/root-CFDjpWuc.js.map +1 -0
  153. package/dist/sandbox-By2gkdkC.js +133 -0
  154. package/dist/sandbox-By2gkdkC.js.map +1 -0
  155. package/dist/sandbox.d.ts +41 -0
  156. package/dist/sandbox.js +2 -0
  157. package/dist/server-Bi61uiY0.js +350 -0
  158. package/dist/server-Bi61uiY0.js.map +1 -0
  159. package/dist/server-CsSBL8NC.js +2 -0
  160. package/dist/source-BXzrmof5.js +2 -0
  161. package/dist/source-Bsfa3LZH.js +40 -0
  162. package/dist/source-Bsfa3LZH.js.map +1 -0
  163. package/dist/src-55j1zNHH.js +3 -0
  164. package/dist/src-AEwxd1UP.js +602 -0
  165. package/dist/src-AEwxd1UP.js.map +1 -0
  166. package/dist/src-BDwSuyIo.js +3 -0
  167. package/dist/src-BQyMiWri.js +490 -0
  168. package/dist/src-BQyMiWri.js.map +1 -0
  169. package/dist/src-C-LHyTSV.js +3 -0
  170. package/dist/src-Cmp-7YrD.js +1136 -0
  171. package/dist/src-Cmp-7YrD.js.map +1 -0
  172. package/dist/src-D0RdqpNb.js +252 -0
  173. package/dist/src-D0RdqpNb.js.map +1 -0
  174. package/dist/src-D8KYzxBX.js +793 -0
  175. package/dist/src-D8KYzxBX.js.map +1 -0
  176. package/dist/src-DEgff9Z7.js +4 -0
  177. package/dist/src-DXx_29pq.js +567 -0
  178. package/dist/src-DXx_29pq.js.map +1 -0
  179. package/dist/src-DwwiVLqv.js +2937 -0
  180. package/dist/src-DwwiVLqv.js.map +1 -0
  181. package/dist/src-N7E_mfcZ.js +2 -0
  182. package/dist/src-W9g-y5X5.js +3 -0
  183. package/dist/src-daS0wKH2.js +3 -0
  184. package/dist/state-Cyw3QTsN.js +2 -0
  185. package/dist/state-DZ7eqb1F.js +167 -0
  186. package/dist/state-DZ7eqb1F.js.map +1 -0
  187. package/dist/stats-BNAHlNMD.js +114 -0
  188. package/dist/stats-BNAHlNMD.js.map +1 -0
  189. package/dist/studio-app/assets/index-D6XyfFSH.js +58 -0
  190. package/dist/studio-app/assets/index-xwzWdcE_.css +2 -0
  191. package/dist/studio-app/favicon.svg +1 -0
  192. package/dist/studio-app/index.html +15 -0
  193. package/dist/summary-D7Ttky0z.js +166 -0
  194. package/dist/summary-D7Ttky0z.js.map +1 -0
  195. package/dist/text-gEcKjAyp.js +29 -0
  196. package/dist/text-gEcKjAyp.js.map +1 -0
  197. package/dist/types-C5vI3g1C.js +9 -0
  198. package/dist/types-C5vI3g1C.js.map +1 -0
  199. package/dist/types-DLec-6Cx.d.ts +1535 -0
  200. package/dist/usage-DsYUqIUM.js +24 -0
  201. package/dist/usage-DsYUqIUM.js.map +1 -0
  202. package/dist/view/index.d.ts +645 -0
  203. package/dist/view/index.js +8 -0
  204. package/dist/views-BrHOv6wg.js +220 -0
  205. package/dist/views-BrHOv6wg.js.map +1 -0
  206. package/dist/views-CwCWLWqo.js +3 -0
  207. package/dist/worker-entry-DnYkANPG.js +506 -0
  208. package/dist/worker-entry-DnYkANPG.js.map +1 -0
  209. package/dist/workspace-C2S0Z6gl.js +327 -0
  210. package/dist/workspace-C2S0Z6gl.js.map +1 -0
  211. package/dist/workspace-CyoXG6CY.js +2 -0
  212. package/docker/Dockerfile +19 -0
  213. package/package.json +79 -0
@@ -0,0 +1,490 @@
1
+ import { l as ownFileURL } from "./root-CFDjpWuc.js";
2
+ import { posix } from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { Readable } from "node:stream";
5
+ import { readFile } from "node:fs/promises";
6
+ import { HarnessCapabilityUnsupportedError, commonTool, harnessSessionDataDirectoryPath, harnessStateDirectoryPath } from "@ai-sdk/harness";
7
+ import { createCredentialRequestTransformation, generateSandboxCredentialPlaceholder, isHarnessAuthenticationEnvironment, resolveSandboxHomeDir, shellQuote, writeInstructions, writeSkills } from "@ai-sdk/harness/utils";
8
+ import { tool } from "@ai-sdk/provider-utils";
9
+ import { createInterface } from "node:readline";
10
+ import { z } from "zod";
11
+ //#region ../harness-pi/src/pi-bootstrap.ts
12
+ /** Relative to the harness state directory, `$HOME/.ai-sdk-harness`. */
13
+ const PI_BOOTSTRAP_DIR = ".harness-bootstrap/pi";
14
+ /** The CLI's path relative to the bootstrap directory. */
15
+ const PI_CLI_PATH = "node_modules/.bin/pi";
16
+ const ASSETS = ownFileURL("assets/");
17
+ const asset = (name) => readFile(new URL(name, ASSETS), "utf8");
18
+ /**
19
+ * Installs pi from its lockfile. pi runs without the build scripts of `@google/genai`, `esbuild`
20
+ * and `protobufjs`, so none run.
21
+ */
22
+ async function getPiBootstrap() {
23
+ const [manifest, lockfile] = await Promise.all([asset("package.json"), asset("pnpm-lock.yaml")]);
24
+ return {
25
+ harnessId: "pi",
26
+ bootstrapDir: PI_BOOTSTRAP_DIR,
27
+ files: [{
28
+ path: `${PI_BOOTSTRAP_DIR}/package.json`,
29
+ content: manifest
30
+ }, {
31
+ path: `${PI_BOOTSTRAP_DIR}/pnpm-lock.yaml`,
32
+ content: lockfile
33
+ }],
34
+ commands: [{ command: "pnpm install --frozen-lockfile --prod --ignore-scripts" }]
35
+ };
36
+ }
37
+ //#endregion
38
+ //#region ../harness-pi/src/pi-stream.ts
39
+ /** pi's counts in the AI SDK's shape. `input` is uncached; pi's is too. */
40
+ function toUsage(usage) {
41
+ const noCache = usage?.input;
42
+ const cacheRead = usage?.cacheRead;
43
+ const cacheWrite = usage?.cacheWrite;
44
+ const output = usage?.output;
45
+ const reasoning = usage?.reasoning;
46
+ return {
47
+ inputTokens: {
48
+ total: noCache !== void 0 ? noCache + (cacheRead ?? 0) + (cacheWrite ?? 0) : void 0,
49
+ noCache,
50
+ cacheRead,
51
+ cacheWrite
52
+ },
53
+ outputTokens: {
54
+ total: output,
55
+ text: output !== void 0 && reasoning !== void 0 ? output - reasoning : void 0,
56
+ reasoning
57
+ }
58
+ };
59
+ }
60
+ const add = (a, b) => ({
61
+ input: (a?.input ?? 0) + (b.input ?? 0),
62
+ output: (a?.output ?? 0) + (b.output ?? 0),
63
+ cacheRead: (a?.cacheRead ?? 0) + (b.cacheRead ?? 0),
64
+ cacheWrite: (a?.cacheWrite ?? 0) + (b.cacheWrite ?? 0),
65
+ reasoning: (a?.reasoning ?? 0) + (b.reasoning ?? 0)
66
+ });
67
+ /** pi's stop reasons for a call that didn't fail; `error` is an error part instead. */
68
+ const UNIFIED = {
69
+ stop: "stop",
70
+ toolUse: "tool-calls",
71
+ length: "length",
72
+ aborted: "other"
73
+ };
74
+ const text = (content) => (content ?? []).flatMap((c) => c.type === "text" && c.text ? [c.text] : []).join("");
75
+ /**
76
+ * Turns one `pi --mode json` process's NDJSON into harness stream parts. Each assistant message
77
+ * is one model call: its `message_end` is a `finish-step` with that call's usage, and the turn's
78
+ * `finish` has their sum. A call pi reports as failed (`stopReason: 'error'`) is an error part.
79
+ */
80
+ var PiStreamTranslator = class {
81
+ sessionId;
82
+ started = false;
83
+ finished = false;
84
+ /** The block a `*_start` opened; its start part goes out with its first non-empty delta. */
85
+ open;
86
+ total;
87
+ failed = false;
88
+ /** Parts for one stdout line. Lines that aren't JSON events are passed through as raw. */
89
+ push(line) {
90
+ const trimmed = line.trim();
91
+ if (!trimmed) return [];
92
+ let event;
93
+ try {
94
+ event = JSON.parse(trimmed);
95
+ } catch {
96
+ return [{
97
+ type: "raw",
98
+ rawValue: { unparsed: trimmed }
99
+ }];
100
+ }
101
+ const parts = [];
102
+ if (!this.finished) this.translate(event, parts);
103
+ parts.push({
104
+ type: "raw",
105
+ rawValue: event
106
+ });
107
+ return parts;
108
+ }
109
+ /** Closes the turn when the process ends: its `agent_end` finished it, or it died first. */
110
+ end(options) {
111
+ if (this.finished) return [];
112
+ const parts = [];
113
+ this.start(parts);
114
+ this.close(parts);
115
+ if (!options.aborted) {
116
+ const detail = options.stderr?.trim();
117
+ parts.push({
118
+ type: "error",
119
+ error: /* @__PURE__ */ new Error(`pi exited with code ${options.exitCode} before ending the turn${detail ? `: ${detail}` : ""}`)
120
+ });
121
+ }
122
+ this.finish(parts, options.aborted ? "aborted" : `exit ${options.exitCode}`);
123
+ return parts;
124
+ }
125
+ translate(e, parts) {
126
+ if (e.type === "session") {
127
+ this.sessionId = e.id ?? this.sessionId;
128
+ return;
129
+ }
130
+ const m = e.message;
131
+ if (e.type === "message_start" && m?.role === "assistant") {
132
+ this.start(parts, m.model);
133
+ return;
134
+ }
135
+ if (e.type === "message_update") {
136
+ this.update(e, parts);
137
+ return;
138
+ }
139
+ if (e.type === "message_end" && m?.role === "assistant") {
140
+ this.close(parts);
141
+ if (m.stopReason === "error") {
142
+ this.failed = true;
143
+ parts.push({
144
+ type: "error",
145
+ error: new Error(m.errorMessage || "pi reported a failed model call")
146
+ });
147
+ return;
148
+ }
149
+ if (m.usage) this.total = add(this.total, m.usage);
150
+ parts.push({
151
+ type: "finish-step",
152
+ finishReason: {
153
+ unified: UNIFIED[m.stopReason ?? "stop"] ?? "stop",
154
+ raw: m.stopReason ?? "stop"
155
+ },
156
+ usage: toUsage(m.usage)
157
+ });
158
+ return;
159
+ }
160
+ if (e.type === "tool_execution_end" && e.toolCallId) {
161
+ const output = text(e.result?.content);
162
+ parts.push({
163
+ type: "tool-result",
164
+ toolCallId: e.toolCallId,
165
+ toolName: e.toolName ?? "unknown",
166
+ result: e.result?.details !== void 0 ? {
167
+ output,
168
+ details: e.result.details
169
+ } : output,
170
+ ...e.isError ? { isError: true } : {}
171
+ });
172
+ return;
173
+ }
174
+ if (e.type === "agent_end") {
175
+ this.start(parts);
176
+ this.close(parts);
177
+ this.finish(parts, this.failed ? "error" : "stop");
178
+ }
179
+ }
180
+ update(e, parts) {
181
+ const u = e.assistantMessageEvent;
182
+ if (!u?.type) return;
183
+ const id = `${u.type.startsWith("thinking") ? "reasoning" : "text"}-${u.contentIndex ?? 0}`;
184
+ if (u.type === "text_start" || u.type === "thinking_start") {
185
+ this.close(parts);
186
+ const type = u.type === "text_start" ? "text" : "reasoning";
187
+ this.open = {
188
+ id,
189
+ type,
190
+ emitted: false
191
+ };
192
+ } else if ((u.type === "text_delta" || u.type === "thinking_delta") && u.delta) {
193
+ if (!this.open) return;
194
+ if (!this.open.emitted) {
195
+ parts.push({
196
+ type: `${this.open.type}-start`,
197
+ id: this.open.id
198
+ });
199
+ this.open.emitted = true;
200
+ }
201
+ parts.push({
202
+ type: `${this.open.type}-delta`,
203
+ id: this.open.id,
204
+ delta: u.delta
205
+ });
206
+ } else if (u.type === "text_end" || u.type === "thinking_end") this.close(parts);
207
+ else if (u.type === "toolcall_end" && u.toolCall?.id) {
208
+ this.close(parts);
209
+ parts.push({
210
+ type: "tool-call",
211
+ toolCallId: u.toolCall.id,
212
+ toolName: u.toolCall.name ?? "unknown",
213
+ input: JSON.stringify(u.toolCall.arguments ?? {}),
214
+ providerExecuted: true
215
+ });
216
+ }
217
+ }
218
+ start(parts, modelId) {
219
+ if (this.started) return;
220
+ this.started = true;
221
+ parts.push({
222
+ type: "stream-start",
223
+ ...modelId ? { modelId } : {}
224
+ });
225
+ }
226
+ close(parts) {
227
+ if (this.open?.emitted) parts.push({
228
+ type: `${this.open.type}-end`,
229
+ id: this.open.id
230
+ });
231
+ this.open = void 0;
232
+ }
233
+ finish(parts, raw) {
234
+ this.finished = true;
235
+ parts.push({
236
+ type: "finish",
237
+ finishReason: {
238
+ unified: raw === "stop" ? "stop" : raw === "aborted" ? "other" : "error",
239
+ raw
240
+ },
241
+ totalUsage: toUsage(this.total)
242
+ });
243
+ }
244
+ };
245
+ //#endregion
246
+ //#region ../harness-pi/src/pi-tools.ts
247
+ const PI_BUILTIN_TOOLS = {
248
+ bash: {
249
+ ...commonTool("bash", {
250
+ nativeName: "bash",
251
+ toolUseKind: "bash",
252
+ inputSchema: z.looseObject({
253
+ command: z.string(),
254
+ timeout: z.number().optional()
255
+ })
256
+ }),
257
+ title: "bash"
258
+ },
259
+ read: {
260
+ ...tool({
261
+ title: "read",
262
+ inputSchema: z.looseObject({ path: z.string() })
263
+ }),
264
+ toolUseKind: "readonly"
265
+ },
266
+ write: {
267
+ ...tool({
268
+ title: "write",
269
+ inputSchema: z.looseObject({
270
+ path: z.string(),
271
+ content: z.string()
272
+ })
273
+ }),
274
+ toolUseKind: "edit"
275
+ },
276
+ edit: {
277
+ ...tool({
278
+ title: "edit",
279
+ inputSchema: z.looseObject({
280
+ path: z.string(),
281
+ edits: z.array(z.looseObject({
282
+ oldText: z.string(),
283
+ newText: z.string()
284
+ }))
285
+ })
286
+ }),
287
+ toolUseKind: "edit"
288
+ }
289
+ };
290
+ /** The only credential the adapter uses: a Gemini API key, for pi's `google` provider. */
291
+ const PI_CREDENTIAL_ENV = "GEMINI_API_KEY";
292
+ const GEMINI_API_URL = "https://generativelanguage.googleapis.com";
293
+ /** The header pi's `google` provider sends the key in. */
294
+ const GEMINI_API_KEY_HEADER = "x-goog-api-key";
295
+ /** pi's agent directory under the home: its sessions, settings, global skills and rules. */
296
+ const PI_AGENT_DIR = ".pi/agent";
297
+ /** Where harness-placed skills go, under the sandbox home. */
298
+ const PI_HOME_SKILLS_DIR = `${PI_AGENT_DIR}/skills`;
299
+ /** Global rules, which pi loads before the workspace's; `instructions` go here. */
300
+ const PI_INSTRUCTIONS_FILE = `${PI_AGENT_DIR}/AGENTS.md`;
301
+ new URL(GEMINI_API_URL).hostname;
302
+ const lifecycleData = z.object({ sessionId: z.string() });
303
+ const unsupported = (what) => new HarnessCapabilityUnsupportedError({
304
+ message: `pi's print mode has no ${what}`,
305
+ harnessId: "pi"
306
+ });
307
+ function promptText(prompt) {
308
+ if (typeof prompt === "string") return prompt;
309
+ const { content } = prompt;
310
+ if (typeof content === "string") return content;
311
+ return content.map((part) => {
312
+ if (part.type !== "text") throw new HarnessCapabilityUnsupportedError({
313
+ message: `pi takes text prompts only (got a ${part.type} part)`,
314
+ harnessId: "pi"
315
+ });
316
+ return part.text;
317
+ }).join("\n");
318
+ }
319
+ const lines = (stream) => createInterface({
320
+ input: Readable.fromWeb(stream),
321
+ crlfDelay: Infinity
322
+ });
323
+ async function tail(stream, max = 4e3) {
324
+ let text = "";
325
+ for await (const line of lines(stream)) text = `${text}${line}\n`.slice(-max);
326
+ return text;
327
+ }
328
+ const canBroker = (sandbox) => "addRequestTransformations" in sandbox && typeof sandbox.addRequestTransformations === "function";
329
+ /**
330
+ * The pi turn command: print mode with JSON events, the project trusted (so its `.pi/skills`
331
+ * load), no extensions or startup network operations, one session id for every turn. The
332
+ * prompt is an argument, so it must stay under the shell's 128 KiB.
333
+ */
334
+ function buildPiCommand(options) {
335
+ return [
336
+ `cd ${shellQuote(options.workDir)} &&`,
337
+ `exec ${shellQuote(options.cli)} --mode json -p --offline --approve --no-extensions`,
338
+ "--provider google",
339
+ ...options.model ? [`--model ${shellQuote(options.model)}`] : [],
340
+ `--session-id ${shellQuote(options.sessionId)} --session-dir ${shellQuote(options.sessionDir)}`,
341
+ `-- "$(cat ${shellQuote(options.promptFile)})"`
342
+ ].join(" ");
343
+ }
344
+ /**
345
+ * pi (`pi --mode json`) as an AI SDK harness, in the sandbox: one process per turn, resumed by
346
+ * session id, its NDJSON translated into harness stream parts with each model call's tokens.
347
+ * Unlike `@ai-sdk/harness-pi`, nothing runs on the host: pi, its model calls and its tools are
348
+ * all in the sandbox. pi has no MCP client, so MCP servers are refused.
349
+ */
350
+ function createPi(settings) {
351
+ const key = isHarnessAuthenticationEnvironment(settings.auth) ? settings.auth[PI_CREDENTIAL_ENV] : void 0;
352
+ if (!key) throw new Error(`pi auth must be an environment object with ${PI_CREDENTIAL_ENV} (a Gemini API key)`);
353
+ return {
354
+ specificationVersion: "harness-v1",
355
+ harnessId: "pi",
356
+ builtinTools: PI_BUILTIN_TOOLS,
357
+ lifecycleStateSchema: lifecycleData,
358
+ getBootstrap: getPiBootstrap,
359
+ doStart: (options) => startSession(settings, key, options)
360
+ };
361
+ }
362
+ async function startSession(settings, key, options) {
363
+ const { sandboxSession: sandbox, sessionWorkDir, abortSignal } = options;
364
+ let sandboxKey = key;
365
+ if (canBroker(sandbox)) {
366
+ sandboxKey = generateSandboxCredentialPlaceholder();
367
+ await sandbox.addRequestTransformations([createCredentialRequestTransformation({
368
+ matchUrl: GEMINI_API_URL,
369
+ matchHeaders: { [GEMINI_API_KEY_HEADER]: sandboxKey },
370
+ transformHeaders: {
371
+ ...options.headers,
372
+ [GEMINI_API_KEY_HEADER]: key
373
+ }
374
+ })]);
375
+ } else if (settings.requireCredentialBrokering) throw new Error(`The sandbox can't broker ${PI_CREDENTIAL_ENV} (it has no request transformations), and requireCredentialBrokering is set, so the key stays out of it.`);
376
+ const home = await resolveSandboxHomeDir({
377
+ sandbox,
378
+ abortSignal
379
+ });
380
+ const stateDir = harnessStateDirectoryPath({ sandboxHomeDir: home });
381
+ const cli = posix.join(stateDir, PI_BOOTSTRAP_DIR, PI_CLI_PATH);
382
+ const dataDir = harnessSessionDataDirectoryPath({
383
+ stateDirectory: stateDir,
384
+ sessionId: options.sessionId
385
+ });
386
+ const resumed = lifecycleData.safeParse(options.resumeFrom?.data);
387
+ const piSession = resumed.success ? resumed.data.sessionId : randomUUID();
388
+ const env = {
389
+ [PI_CREDENTIAL_ENV]: sandboxKey,
390
+ PI_OFFLINE: "1"
391
+ };
392
+ let turns = 0;
393
+ let running;
394
+ let ended = false;
395
+ const state = () => ({
396
+ type: "resume-session",
397
+ harnessId: "pi",
398
+ specificationVersion: "harness-v1",
399
+ data: { sessionId: piSession }
400
+ });
401
+ const stop = async () => {
402
+ ended = true;
403
+ await running?.kill();
404
+ running = void 0;
405
+ };
406
+ return {
407
+ sessionId: options.sessionId,
408
+ isResume: options.resumeFrom !== void 0,
409
+ async doPromptTurn(turn) {
410
+ if (ended) throw new Error("This pi session has ended");
411
+ if (turn.tools.length > 0) throw unsupported("host-executed tools");
412
+ const n = ++turns;
413
+ await writeSkills({
414
+ sandbox,
415
+ homePath: home,
416
+ skillsDir: PI_HOME_SKILLS_DIR,
417
+ skills: turn.skills,
418
+ ...turn.abortSignal ? { abortSignal: turn.abortSignal } : {}
419
+ });
420
+ await writeInstructions({
421
+ sandbox,
422
+ homePath: home,
423
+ instructionsFile: PI_INSTRUCTIONS_FILE,
424
+ ...turn.instructions !== void 0 ? { instructions: turn.instructions } : {},
425
+ ...turn.abortSignal ? { abortSignal: turn.abortSignal } : {}
426
+ });
427
+ const promptFile = posix.join(dataDir, `prompt-${n}.txt`);
428
+ await sandbox.writeTextFile({
429
+ path: promptFile,
430
+ content: promptText(turn.prompt),
431
+ abortSignal: turn.abortSignal
432
+ });
433
+ const command = buildPiCommand({
434
+ cli,
435
+ workDir: sessionWorkDir,
436
+ promptFile,
437
+ model: turn.model,
438
+ sessionId: piSession,
439
+ sessionDir: posix.join(home, PI_AGENT_DIR, "sessions")
440
+ });
441
+ const translator = new PiStreamTranslator();
442
+ const emit = (parts) => {
443
+ for (const part of parts) turn.emit(part);
444
+ };
445
+ const proc = await sandbox.spawn({
446
+ command,
447
+ workingDirectory: sessionWorkDir,
448
+ env,
449
+ ...turn.abortSignal ? { abortSignal: turn.abortSignal } : {}
450
+ });
451
+ running = proc;
452
+ const onAbort = () => void proc.kill();
453
+ turn.abortSignal?.addEventListener("abort", onAbort, { once: true });
454
+ return {
455
+ submitToolResult: () => Promise.reject(unsupported("host-executed tools")),
456
+ done: (async () => {
457
+ const stderr = tail(proc.stderr).catch(() => "");
458
+ try {
459
+ for await (const line of lines(proc.stdout)) emit(translator.push(line));
460
+ const { exitCode } = await proc.wait();
461
+ emit(translator.end({
462
+ exitCode,
463
+ stderr: await stderr,
464
+ aborted: turn.abortSignal?.aborted === true
465
+ }));
466
+ } finally {
467
+ turn.abortSignal?.removeEventListener("abort", onAbort);
468
+ if (running === proc) running = void 0;
469
+ }
470
+ })()
471
+ };
472
+ },
473
+ doCompact: () => Promise.reject(unsupported("manual compaction")),
474
+ doContinueTurn: () => Promise.reject(unsupported("turn continuation")),
475
+ doSuspendTurn: () => Promise.reject(unsupported("turn suspension")),
476
+ async doDetach() {
477
+ await stop();
478
+ return state();
479
+ },
480
+ async doStop() {
481
+ await stop();
482
+ return state();
483
+ },
484
+ doDestroy: stop
485
+ };
486
+ }
487
+ //#endregion
488
+ export { PI_HOME_SKILLS_DIR as a, createPi as c, toUsage as d, PI_BOOTSTRAP_DIR as f, PI_CREDENTIAL_ENV as i, PI_BUILTIN_TOOLS as l, getPiBootstrap as m, GEMINI_API_URL as n, PI_INSTRUCTIONS_FILE as o, PI_CLI_PATH as p, PI_AGENT_DIR as r, buildPiCommand as s, GEMINI_API_KEY_HEADER as t, PiStreamTranslator as u };
489
+
490
+ //# sourceMappingURL=src-BQyMiWri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-BQyMiWri.js","names":["__esOwnFileURL"],"sources":["../../harness-pi/src/pi-bootstrap.ts","../../harness-pi/src/pi-stream.ts","../../harness-pi/src/pi-tools.ts","../../harness-pi/src/pi-harness.ts"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import "./state-DZ7eqb1F.js";
2
+ import { u as createGoose } from "./src-D0RdqpNb.js";
3
+ export { createGoose };