@goah/cli 0.2.0 → 0.3.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 (116) hide show
  1. package/dist/cli.js +51 -6
  2. package/dist/cli.js.map +1 -1
  3. package/dist/execution.d.ts +2 -0
  4. package/dist/execution.d.ts.map +1 -0
  5. package/dist/execution.js +2 -0
  6. package/dist/execution.js.map +1 -0
  7. package/dist/index.d.ts +5 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +9 -8
  10. package/dist/index.js.map +1 -1
  11. package/dist/inspect.d.ts +60 -0
  12. package/dist/inspect.d.ts.map +1 -0
  13. package/dist/inspect.js +109 -0
  14. package/dist/inspect.js.map +1 -0
  15. package/dist/kernel.d.ts +2 -0
  16. package/dist/kernel.d.ts.map +1 -0
  17. package/dist/kernel.js +2 -0
  18. package/dist/kernel.js.map +1 -0
  19. package/dist/metrics.d.ts +2 -0
  20. package/dist/metrics.d.ts.map +1 -0
  21. package/dist/metrics.js +2 -0
  22. package/dist/metrics.js.map +1 -0
  23. package/dist/runner-pi.d.ts +2 -0
  24. package/dist/runner-pi.d.ts.map +1 -0
  25. package/dist/runner-pi.js +2 -0
  26. package/dist/runner-pi.js.map +1 -0
  27. package/dist/session.d.ts +2 -0
  28. package/dist/session.d.ts.map +1 -0
  29. package/dist/session.js +2 -0
  30. package/dist/session.js.map +1 -0
  31. package/dist/sqlite.d.ts +2 -0
  32. package/dist/sqlite.d.ts.map +1 -0
  33. package/dist/sqlite.js +2 -0
  34. package/dist/sqlite.js.map +1 -0
  35. package/dist/supervisor.d.ts +2 -0
  36. package/dist/supervisor.d.ts.map +1 -0
  37. package/dist/supervisor.js +2 -0
  38. package/dist/supervisor.js.map +1 -0
  39. package/dist/testkit.d.ts +2 -0
  40. package/dist/testkit.d.ts.map +1 -0
  41. package/dist/testkit.js +2 -0
  42. package/dist/testkit.js.map +1 -0
  43. package/node_modules/goah-ledger-contract/dist/execution.d.ts +205 -0
  44. package/node_modules/goah-ledger-contract/dist/execution.d.ts.map +1 -0
  45. package/node_modules/goah-ledger-contract/dist/execution.js +18 -0
  46. package/node_modules/goah-ledger-contract/dist/execution.js.map +1 -0
  47. package/node_modules/goah-ledger-contract/dist/index.d.ts +5 -0
  48. package/node_modules/goah-ledger-contract/dist/index.d.ts.map +1 -0
  49. package/node_modules/goah-ledger-contract/dist/index.js +5 -0
  50. package/node_modules/goah-ledger-contract/dist/index.js.map +1 -0
  51. package/node_modules/goah-ledger-contract/dist/kernel.d.ts +33 -0
  52. package/node_modules/goah-ledger-contract/dist/kernel.d.ts.map +1 -0
  53. package/node_modules/goah-ledger-contract/dist/kernel.js +6 -0
  54. package/node_modules/goah-ledger-contract/dist/kernel.js.map +1 -0
  55. package/node_modules/goah-ledger-contract/dist/metrics.d.ts +40 -0
  56. package/node_modules/goah-ledger-contract/dist/metrics.d.ts.map +1 -0
  57. package/node_modules/goah-ledger-contract/dist/metrics.js +25 -0
  58. package/node_modules/goah-ledger-contract/dist/metrics.js.map +1 -0
  59. package/node_modules/goah-ledger-contract/dist/session.d.ts +37 -0
  60. package/node_modules/goah-ledger-contract/dist/session.d.ts.map +1 -0
  61. package/node_modules/goah-ledger-contract/dist/session.js +53 -0
  62. package/node_modules/goah-ledger-contract/dist/session.js.map +1 -0
  63. package/node_modules/goah-ledger-contract/package.json +29 -0
  64. package/node_modules/goah-ledger-sqlite/dist/index.d.ts +66 -0
  65. package/node_modules/goah-ledger-sqlite/dist/index.d.ts.map +1 -0
  66. package/node_modules/goah-ledger-sqlite/dist/index.js +537 -0
  67. package/node_modules/goah-ledger-sqlite/dist/index.js.map +1 -0
  68. package/node_modules/goah-ledger-sqlite/package.json +26 -0
  69. package/node_modules/goah-runner-pi/dist/index.d.ts +53 -0
  70. package/node_modules/goah-runner-pi/dist/index.d.ts.map +1 -0
  71. package/node_modules/goah-runner-pi/dist/index.js +229 -0
  72. package/node_modules/goah-runner-pi/dist/index.js.map +1 -0
  73. package/node_modules/goah-runner-pi/dist/model-provider.d.ts +13 -0
  74. package/node_modules/goah-runner-pi/dist/model-provider.d.ts.map +1 -0
  75. package/node_modules/goah-runner-pi/dist/model-provider.js +75 -0
  76. package/node_modules/goah-runner-pi/dist/model-provider.js.map +1 -0
  77. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts +14 -0
  78. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts.map +1 -0
  79. package/node_modules/goah-runner-pi/dist/pi-worker.js +278 -0
  80. package/node_modules/goah-runner-pi/dist/pi-worker.js.map +1 -0
  81. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts +2 -0
  82. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts.map +1 -0
  83. package/node_modules/goah-runner-pi/dist/verification-worker.js +48 -0
  84. package/node_modules/goah-runner-pi/dist/verification-worker.js.map +1 -0
  85. package/node_modules/goah-runner-pi/package.json +28 -0
  86. package/node_modules/goah-supervisor/dist/context-view.d.ts +23 -0
  87. package/node_modules/goah-supervisor/dist/context-view.d.ts.map +1 -0
  88. package/node_modules/goah-supervisor/dist/context-view.js +47 -0
  89. package/node_modules/goah-supervisor/dist/context-view.js.map +1 -0
  90. package/node_modules/goah-supervisor/dist/index.d.ts +54 -0
  91. package/node_modules/goah-supervisor/dist/index.d.ts.map +1 -0
  92. package/node_modules/goah-supervisor/dist/index.js +436 -0
  93. package/node_modules/goah-supervisor/dist/index.js.map +1 -0
  94. package/node_modules/goah-supervisor/dist/roles.d.ts +3 -0
  95. package/node_modules/goah-supervisor/dist/roles.d.ts.map +1 -0
  96. package/node_modules/goah-supervisor/dist/roles.js +8 -0
  97. package/node_modules/goah-supervisor/dist/roles.js.map +1 -0
  98. package/node_modules/goah-supervisor/dist/verification.d.ts +82 -0
  99. package/node_modules/goah-supervisor/dist/verification.d.ts.map +1 -0
  100. package/node_modules/goah-supervisor/dist/verification.js +110 -0
  101. package/node_modules/goah-supervisor/dist/verification.js.map +1 -0
  102. package/node_modules/goah-supervisor/package.json +26 -0
  103. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts +2 -0
  104. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts.map +1 -0
  105. package/node_modules/goah-testkit/dist/faux-runner-worker.js +29 -0
  106. package/node_modules/goah-testkit/dist/faux-runner-worker.js.map +1 -0
  107. package/node_modules/goah-testkit/dist/index.d.ts +51 -0
  108. package/node_modules/goah-testkit/dist/index.d.ts.map +1 -0
  109. package/node_modules/goah-testkit/dist/index.js +96 -0
  110. package/node_modules/goah-testkit/dist/index.js.map +1 -0
  111. package/node_modules/goah-testkit/dist/mock-connector-worker.d.ts +2 -0
  112. package/node_modules/goah-testkit/dist/mock-connector-worker.d.ts.map +1 -0
  113. package/node_modules/goah-testkit/dist/mock-connector-worker.js +29 -0
  114. package/node_modules/goah-testkit/dist/mock-connector-worker.js.map +1 -0
  115. package/node_modules/goah-testkit/package.json +29 -0
  116. package/package.json +27 -8
@@ -0,0 +1,53 @@
1
+ import { type JsonValue, type AgentCapability, type RunRequest, type Runner, type RunnerHandle, type RunnerResult, type WakeOutput } from "goah-ledger-contract";
2
+ export { createPiModel, parseModelCapabilities } from "./model-provider.js";
3
+ export interface PiStep {
4
+ trace?: Array<{
5
+ type: string;
6
+ data: JsonValue;
7
+ }>;
8
+ handoff?: WakeOutput;
9
+ stopped?: boolean;
10
+ }
11
+ export interface PiSession {
12
+ step(): Promise<PiStep>;
13
+ close(): Promise<void>;
14
+ }
15
+ export interface PiDriver {
16
+ createSession(request: RunRequest): Promise<PiSession>;
17
+ }
18
+ /** In-process adapter for tests and for use inside a ProcessRunner worker. */
19
+ export declare class PiRunnerAdapter {
20
+ #private;
21
+ private readonly driver;
22
+ constructor(driver: PiDriver);
23
+ prepare(request: RunRequest): RunnerHandle;
24
+ terminateProcess(pid: number): Promise<void>;
25
+ }
26
+ export interface ProcessRunnerOptions {
27
+ command: string;
28
+ args?: string[];
29
+ cwd?: string;
30
+ env?: Record<string, string>;
31
+ inheritEnv?: string[];
32
+ killGraceMs?: number;
33
+ timeoutMs?: number;
34
+ }
35
+ export declare function piWorkerPath(): string;
36
+ export declare function verificationWorkerPath(): string;
37
+ type WorkerRequest = Omit<RunRequest, "now" | "emit" | "rpc">;
38
+ /** Real process boundary. The child stays idle until begin() sends its request. */
39
+ export declare class ProcessRunner implements Runner {
40
+ readonly options: ProcessRunnerOptions;
41
+ readonly isolation: "process";
42
+ constructor(options: ProcessRunnerOptions);
43
+ prepare(request: RunRequest): RunnerHandle;
44
+ terminateProcess(pid: number): Promise<void>;
45
+ }
46
+ export type WorkerRpc = (method: AgentCapability, params: JsonValue) => Promise<JsonValue>;
47
+ export type WorkerRun = (request: WorkerRequest, emit: (event: {
48
+ type: string;
49
+ data: JsonValue;
50
+ }) => void, rpc: WorkerRpc) => Promise<RunnerResult>;
51
+ /** Entry helper for runner executables. It exits when its parent disappears. */
52
+ export declare function runProcessWorker(run: WorkerRun): Promise<void>;
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,WAAW,SAAS;IAAG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE;AAC9E,MAAM,WAAW,QAAQ;IAAG,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;CAAE;AAEpF,8EAA8E;AAC9E,qBAAa,eAAe;;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ;IAE7C,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IAgBpC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBnD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,IAAI,MAAM,CAAsE;AAC5G,wBAAgB,sBAAsB,IAAI,MAAM,CAAgF;AAEhI,KAAK,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAS9D,mFAAmF;AACnF,qBAAa,aAAc,YAAW,MAAM;IAE9B,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IADlD,QAAQ,CAAC,SAAS,EAAG,SAAS,CAAU;gBACnB,OAAO,EAAE,oBAAoB;IAElD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,YAAY;IA+DpC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACnD;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAC3F,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,KAAK,IAAI,EAAE,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEpJ,gFAAgF;AAChF,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCpE"}
@@ -0,0 +1,229 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createInterface } from "node:readline";
3
+ import { fileURLToPath } from "node:url";
4
+ import { assertHandoff, } from "goah-ledger-contract";
5
+ export { createPiModel, parseModelCapabilities } from "./model-provider.js";
6
+ /** In-process adapter for tests and for use inside a ProcessRunner worker. */
7
+ export class PiRunnerAdapter {
8
+ driver;
9
+ constructor(driver) {
10
+ this.driver = driver;
11
+ }
12
+ prepare(request) {
13
+ let started = false;
14
+ let resolveResult;
15
+ const result = new Promise((resolve) => { resolveResult = resolve; });
16
+ return {
17
+ pid: null,
18
+ begin: () => {
19
+ if (started)
20
+ return;
21
+ started = true;
22
+ void this.#run(request).then(resolveResult);
23
+ },
24
+ result,
25
+ terminate: async () => undefined,
26
+ };
27
+ }
28
+ async terminateProcess(pid) { await terminatePid(pid, 500); }
29
+ async #run(request) {
30
+ const session = await this.driver.createSession(request);
31
+ try {
32
+ while (true) {
33
+ const step = await session.step();
34
+ for (const trace of step.trace ?? [])
35
+ request.emit(trace);
36
+ if (step.handoff) {
37
+ assertHandoff(step.handoff.handoff);
38
+ return { outcome: "handoff", output: step.handoff };
39
+ }
40
+ if (step.stopped)
41
+ return { outcome: "abnormal", reason: "runner stopped without a valid handoff" };
42
+ }
43
+ }
44
+ catch (error) {
45
+ return { outcome: "abnormal", reason: error instanceof Error ? error.message : String(error) };
46
+ }
47
+ finally {
48
+ await session.close();
49
+ }
50
+ }
51
+ }
52
+ export function piWorkerPath() { return fileURLToPath(new URL("./pi-worker.js", import.meta.url)); }
53
+ export function verificationWorkerPath() { return fileURLToPath(new URL("./verification-worker.js", import.meta.url)); }
54
+ /** Real process boundary. The child stays idle until begin() sends its request. */
55
+ export class ProcessRunner {
56
+ options;
57
+ isolation = "process";
58
+ constructor(options) {
59
+ this.options = options;
60
+ }
61
+ prepare(request) {
62
+ const child = spawn(this.options.command, this.options.args ?? [], {
63
+ detached: process.platform !== "win32",
64
+ ...(this.options.cwd ? { cwd: this.options.cwd } : {}),
65
+ env: childEnvironment(this.options.env, this.options.inheritEnv),
66
+ stdio: ["pipe", "pipe", "pipe"],
67
+ });
68
+ let started = false;
69
+ let timedOut = false;
70
+ let messageResult = null;
71
+ let protocolError = null;
72
+ let stderr = "";
73
+ let timer;
74
+ let settled = false;
75
+ let resolveResult;
76
+ const result = new Promise((resolve) => { resolveResult = resolve; });
77
+ const settle = (value) => { if (!settled) {
78
+ settled = true;
79
+ resolveResult(value);
80
+ } };
81
+ child.stderr?.on("data", (chunk) => { stderr += chunk.toString(); });
82
+ const lines = createInterface({ input: child.stdout });
83
+ lines.on("line", (line) => {
84
+ try {
85
+ const message = JSON.parse(line);
86
+ if (message.type === "trace")
87
+ request.emit(message.event);
88
+ else if (message.type === "rpc_request") {
89
+ void Promise.resolve(request.rpc?.(message.method, message.params) ?? Promise.reject(new Error("runner RPC is unavailable")))
90
+ .then((result) => child.stdin?.write(`${JSON.stringify({ type: "rpc_response", id: message.id, result })}\n`))
91
+ .catch((error) => child.stdin?.write(`${JSON.stringify({ type: "rpc_response", id: message.id, error: error instanceof Error ? error.message : String(error) })}\n`));
92
+ }
93
+ else
94
+ messageResult = message.result;
95
+ }
96
+ catch (error) {
97
+ protocolError = error instanceof Error ? error.message : String(error);
98
+ void terminate();
99
+ }
100
+ });
101
+ child.once("error", (error) => { if (timer)
102
+ clearTimeout(timer); settle({ outcome: "abnormal", reason: error.message }); });
103
+ child.once("close", (code, signal) => {
104
+ if (timer)
105
+ clearTimeout(timer);
106
+ if (protocolError)
107
+ settle({ outcome: "abnormal", reason: `runner protocol error: ${protocolError}` });
108
+ else if (messageResult)
109
+ settle(messageResult);
110
+ else if (timedOut)
111
+ settle({ outcome: "abnormal", reason: "runner-specific timeout exceeded and process was killed" });
112
+ else
113
+ settle({ outcome: "abnormal", reason: stderr.trim() || `runner exited without a result (${code ?? signal ?? "unknown"})` });
114
+ });
115
+ const terminate = async () => {
116
+ if (child.pid)
117
+ await terminateOwnedChild(child, this.options.killGraceMs ?? 500);
118
+ };
119
+ return {
120
+ pid: child.pid ?? null,
121
+ begin: () => {
122
+ if (started)
123
+ return;
124
+ started = true;
125
+ const serializable = {
126
+ wake: request.wake,
127
+ context: request.context,
128
+ };
129
+ child.stdin?.write(`${JSON.stringify({ type: "start", request: serializable })}\n`);
130
+ if (this.options.timeoutMs)
131
+ timer = setTimeout(() => { timedOut = true; void terminate(); }, this.options.timeoutMs);
132
+ },
133
+ result,
134
+ terminate,
135
+ };
136
+ }
137
+ async terminateProcess(pid) { await terminatePid(pid, this.options.killGraceMs ?? 500); }
138
+ }
139
+ /** Entry helper for runner executables. It exits when its parent disappears. */
140
+ export async function runProcessWorker(run) {
141
+ const parent = process.ppid;
142
+ const monitor = setInterval(() => {
143
+ if (process.ppid !== parent || !isAlive(parent))
144
+ process.exit(70);
145
+ }, 250);
146
+ monitor.unref();
147
+ const input = createInterface({ input: process.stdin });
148
+ const iterator = input[Symbol.asyncIterator]();
149
+ const first = await iterator.next();
150
+ if (first.done)
151
+ throw new Error("runner parent closed before start");
152
+ const start = JSON.parse(first.value);
153
+ if (start.type !== "start")
154
+ throw new Error("first runner message must be start");
155
+ const pending = new Map();
156
+ void (async () => {
157
+ for await (const line of { [Symbol.asyncIterator]: () => iterator }) {
158
+ const message = JSON.parse(line);
159
+ if (message.type !== "rpc_response")
160
+ continue;
161
+ const waiter = pending.get(message.id);
162
+ if (!waiter)
163
+ continue;
164
+ pending.delete(message.id);
165
+ if (message.error)
166
+ waiter.reject(new Error(message.error));
167
+ else
168
+ waiter.resolve(message.result ?? null);
169
+ }
170
+ })();
171
+ const rpc = (method, params) => new Promise((resolve, reject) => {
172
+ const id = crypto.randomUUID();
173
+ pending.set(id, { resolve, reject });
174
+ process.stdout.write(`${JSON.stringify({ type: "rpc_request", id, method, params })}\n`);
175
+ });
176
+ const result = await run(start.request, (event) => process.stdout.write(`${JSON.stringify({ type: "trace", event })}\n`), rpc);
177
+ process.stdout.write(`${JSON.stringify({ type: "result", result })}\n`);
178
+ input.close();
179
+ process.stdin.unref();
180
+ clearInterval(monitor);
181
+ }
182
+ async function terminateOwnedChild(child, graceMs) {
183
+ if (!child.pid || child.exitCode !== null || child.signalCode !== null)
184
+ return;
185
+ signalPid(child.pid, "SIGTERM");
186
+ await Promise.race([new Promise((resolve) => child.once("close", () => resolve())), delay(graceMs)]);
187
+ if (child.exitCode === null && child.signalCode === null) {
188
+ signalPid(child.pid, "SIGKILL");
189
+ await new Promise((resolve) => child.once("close", () => resolve()));
190
+ }
191
+ }
192
+ async function terminatePid(pid, graceMs) {
193
+ if (!isAlive(pid))
194
+ return;
195
+ signalPid(pid, "SIGTERM");
196
+ const deadline = Date.now() + graceMs;
197
+ while (isAlive(pid) && Date.now() < deadline)
198
+ await delay(25);
199
+ if (isAlive(pid))
200
+ signalPid(pid, "SIGKILL");
201
+ const killDeadline = Date.now() + graceMs;
202
+ while (isAlive(pid) && Date.now() < killDeadline)
203
+ await delay(25);
204
+ if (isAlive(pid))
205
+ throw new Error(`runner process ${pid} did not exit after SIGKILL`);
206
+ }
207
+ function signalPid(pid, signal) {
208
+ try {
209
+ process.kill(process.platform === "win32" ? pid : -pid, signal);
210
+ }
211
+ catch { }
212
+ }
213
+ function isAlive(pid) { try {
214
+ process.kill(pid, 0);
215
+ return true;
216
+ }
217
+ catch {
218
+ return false;
219
+ } }
220
+ function delay(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); }
221
+ function childEnvironment(explicit = {}, inherited = []) {
222
+ const names = new Set(["PATH", "TMPDIR", "TMP", "TEMP", "SYSTEMROOT", ...inherited]);
223
+ const env = {};
224
+ for (const name of names)
225
+ if (process.env[name] !== undefined)
226
+ env[name] = process.env[name];
227
+ return { ...env, ...explicit };
228
+ }
229
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { createModels, fauxProvider, type Api, type Model } from "@earendil-works/pi-ai";
2
+ export interface ModelCapabilities {
3
+ contextWindowTokens: number;
4
+ maxOutputTokensPerTurn: number;
5
+ }
6
+ export declare function createPiModel(provider: string, modelId: string, env?: NodeJS.ProcessEnv): {
7
+ models: ReturnType<typeof createModels>;
8
+ model: Model<Api>;
9
+ faux?: ReturnType<typeof fauxProvider>;
10
+ };
11
+ export declare function parseModelCapabilities(value: string | undefined): ModelCapabilities;
12
+ export declare function providerApiKey(provider: string): string | undefined;
13
+ //# sourceMappingURL=model-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-provider.d.ts","sourceRoot":"","sources":["../src/model-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,KAAK,GAAG,EACR,KAAK,KAAK,EACX,MAAM,uBAAuB,CAAC;AAO/B,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG;IACtG,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IACxC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;CACxC,CA2CA;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CASnF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnE"}
@@ -0,0 +1,75 @@
1
+ import { createModels, createProvider, envApiKeyAuth, fauxProvider, } from "@earendil-works/pi-ai";
2
+ import { openAIResponsesApi } from "@earendil-works/pi-ai/api/openai-responses.lazy";
3
+ import { anthropicProvider } from "@earendil-works/pi-ai/providers/anthropic";
4
+ import { openaiProvider } from "@earendil-works/pi-ai/providers/openai";
5
+ const ARK_CODING_BASE_URL = "https://ark.cn-beijing.volces.com/api/coding/v3";
6
+ export function createPiModel(provider, modelId, env = process.env) {
7
+ const models = createModels();
8
+ let model;
9
+ if (provider === "anthropic") {
10
+ models.setProvider(anthropicProvider());
11
+ model = models.getModel(provider, modelId);
12
+ }
13
+ else if (provider === "openai") {
14
+ models.setProvider(openaiProvider());
15
+ model = models.getModel(provider, modelId);
16
+ }
17
+ else if (provider === "ark-coding") {
18
+ const baseUrl = env.GOAH_PI_BASE_URL ?? ARK_CODING_BASE_URL;
19
+ const capabilities = parseModelCapabilities(env.GOAH_PI_MODEL_CAPABILITIES);
20
+ const arkModel = {
21
+ id: modelId,
22
+ name: modelId,
23
+ api: "openai-responses",
24
+ provider,
25
+ baseUrl,
26
+ reasoning: true,
27
+ input: ["text"],
28
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
29
+ contextWindow: capabilities.contextWindowTokens,
30
+ maxTokens: capabilities.maxOutputTokensPerTurn,
31
+ compat: { supportsDeveloperRole: false },
32
+ };
33
+ models.setProvider(createProvider({
34
+ id: provider,
35
+ name: "Ark Coding Plan",
36
+ baseUrl,
37
+ auth: { apiKey: envApiKeyAuth("Ark API key", ["ARK_API_KEY"]) },
38
+ models: [arkModel],
39
+ api: openAIResponsesApi(),
40
+ }));
41
+ model = models.getModel(provider, modelId);
42
+ }
43
+ else if (provider === "faux") {
44
+ const faux = fauxProvider({ provider, models: [{ id: modelId, contextWindow: 128_000, maxTokens: 32_000 }] });
45
+ models.setProvider(faux.provider);
46
+ return { models, model: faux.getModel(), faux };
47
+ }
48
+ else {
49
+ throw new Error(`unsupported GOAH Pi provider: ${provider}`);
50
+ }
51
+ if (!model)
52
+ throw new Error(`Pi model not found: ${provider}/${modelId}`);
53
+ return { models, model };
54
+ }
55
+ export function parseModelCapabilities(value) {
56
+ if (value === undefined)
57
+ throw new Error("GOAH_PI_MODEL_CAPABILITIES is required for ark-coding");
58
+ const parsed = JSON.parse(value);
59
+ if (!Number.isInteger(parsed.contextWindowTokens) || parsed.contextWindowTokens <= 0
60
+ || !Number.isInteger(parsed.maxOutputTokensPerTurn) || parsed.maxOutputTokensPerTurn <= 0
61
+ || parsed.maxOutputTokensPerTurn >= parsed.contextWindowTokens) {
62
+ throw new Error("invalid GOAH_PI_MODEL_CAPABILITIES");
63
+ }
64
+ return parsed;
65
+ }
66
+ export function providerApiKey(provider) {
67
+ if (provider === "anthropic")
68
+ return process.env.ANTHROPIC_API_KEY;
69
+ if (provider === "openai")
70
+ return process.env.OPENAI_API_KEY;
71
+ if (provider === "ark-coding")
72
+ return process.env.ARK_API_KEY;
73
+ return undefined;
74
+ }
75
+ //# sourceMappingURL=model-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-provider.js","sourceRoot":"","sources":["../src/model-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type AgentMessage } from "@earendil-works/pi-agent-core";
2
+ import type { JsonValue } from "goah-ledger-contract";
3
+ export declare function compactMessages(messages: AgentMessage[], maxRecent?: number): AgentMessage[];
4
+ export declare function runPiWorker(): Promise<void>;
5
+ /** Persist only model behavior, never transport credentials or abort handles. */
6
+ export declare function snapshotModelConfig(options: unknown): JsonValue;
7
+ export declare function validateNextWakeAt(value: string | undefined, wakeStartedAt: string | null): string | null;
8
+ export interface ContextPolicy {
9
+ compactAtTokens: number;
10
+ retainAfterCompactTokens: number;
11
+ }
12
+ export declare function resolveContextPolicy(contextWindowTokens: number, env: NodeJS.ProcessEnv): ContextPolicy;
13
+ export declare function compactMessagesToTokenBudget(messages: AgentMessage[], retainTokens: number): AgentMessage[];
14
+ //# sourceMappingURL=pi-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-worker.d.ts","sourceRoot":"","sources":["../src/pi-worker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAS,KAAK,YAAY,EAAkB,MAAM,+BAA+B,CAAC;AAEzF,OAAO,KAAK,EAAmB,SAAS,EAA4C,MAAM,sBAAsB,CAAC;AAMjH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,SAAS,SAAI,GAAG,YAAY,EAAE,CASvF;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0FjD;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAK/D;AA8DD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMzG;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,CAMvG;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,EAAE,CAqB3G"}