@pineforge/backtest-mcp 0.9.18

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
package/dist/engine.js ADDED
@@ -0,0 +1,327 @@
1
+ /**
2
+ * @pineforge/backtest-mcp — docker engine primitives.
3
+ *
4
+ * Low-level Docker plumbing for the engine image: Pine → C++ transpile,
5
+ * backtest invocation, image freshness/pull. Extracted from index.ts so a
6
+ * second backend can live alongside it. No behavior change.
7
+ */
8
+ import { spawn } from "node:child_process";
9
+ import { mkdtemp, writeFile, rm, readFile } from "node:fs/promises";
10
+ import { tmpdir } from "node:os";
11
+ import { join } from "node:path";
12
+ // ─── Config ───────────────────────────────────────────────────────────────
13
+ export const DEFAULT_IMAGE = process.env.PINEFORGE_IMAGE ?? "ghcr.io/pineforge-4pass/pineforge-release:latest";
14
+ export const DOCKER_TIMEOUT_MS = Number(process.env.PINEFORGE_DOCKER_TIMEOUT_MS ?? 120_000);
15
+ // ─── Local transpile (Pine → C++ via the engine container) ──────────────────
16
+ // Runs the engine image in transpile-only mode: writes the Pine source to a
17
+ // temp file, mounts it read-only, and returns the generated C++ on stdout.
18
+ // No network (`--network=none`), no API key — codegen is bundled in the image.
19
+ export async function dockerTranspile(source, image) {
20
+ const tmp = await mkdtemp(join(tmpdir(), "pineforge-tr-"));
21
+ const pinePath = join(tmp, "strategy.pine");
22
+ await writeFile(pinePath, source, "utf8");
23
+ try {
24
+ const dockerArgs = [
25
+ "run", "--rm", "--network=none",
26
+ "-e", "PINEFORGE_TRANSPILE_ONLY=1",
27
+ "-v", `${pinePath}:/in/strategy.pine:ro`,
28
+ image,
29
+ ];
30
+ const child = spawn("docker", dockerArgs, { stdio: ["ignore", "pipe", "pipe"] });
31
+ const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
32
+ if (code !== 0) {
33
+ throw new Error(`transpile failed (docker exit ${code}):\n${stderr.slice(-2048)}`);
34
+ }
35
+ return stdout;
36
+ }
37
+ finally {
38
+ rm(tmp, { recursive: true, force: true }).catch(() => undefined);
39
+ }
40
+ }
41
+ export async function pullImage(image) {
42
+ const child = spawn("docker", ["pull", image], { stdio: ["ignore", "pipe", "pipe"] });
43
+ const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
44
+ if (code !== 0)
45
+ throw new Error(`docker pull failed (${code}): ${stderr.slice(-1024)}`);
46
+ return { image, pulled: true, output: (stdout + stderr).trim().slice(-2048) };
47
+ }
48
+ // Compare local image manifest digest vs registry per-platform digest without
49
+ // downloading layers. `docker manifest inspect --verbose` returns either a
50
+ // single object (single-arch tag) or an array (multi-arch / manifest list);
51
+ // each entry exposes `.Descriptor.digest`, which is exactly the digest format
52
+ // stored in the local image's RepoDigests. Up-to-date iff local digest is in
53
+ // the remote per-platform set.
54
+ export async function checkEngineImage(image, autoPull) {
55
+ const notes = [];
56
+ let local_present = false;
57
+ let local_digest = null;
58
+ let remote_digest = null;
59
+ let remote_digests_all = [];
60
+ let error;
61
+ {
62
+ const child = spawn("docker", ["image", "inspect", "--format", "{{json .RepoDigests}}", image], { stdio: ["ignore", "pipe", "pipe"] });
63
+ const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
64
+ if (code === 0) {
65
+ try {
66
+ const arr = JSON.parse(stdout.trim());
67
+ const digests = arr
68
+ .map((r) => r.split("@")[1])
69
+ .filter((s) => !!s && s.startsWith("sha256:"));
70
+ if (digests.length > 0) {
71
+ local_present = true;
72
+ local_digest = digests[0] ?? null;
73
+ }
74
+ else {
75
+ local_present = true;
76
+ notes.push("local image present but has no RepoDigest (likely built locally, not pulled)");
77
+ }
78
+ }
79
+ catch (e) {
80
+ notes.push(`failed to parse local RepoDigests: ${e.message}`);
81
+ }
82
+ }
83
+ else {
84
+ const msg = (stderr || stdout).toLowerCase();
85
+ if (msg.includes("no such image") || msg.includes("no such object")) {
86
+ notes.push("local image absent");
87
+ }
88
+ else {
89
+ notes.push(`docker image inspect failed (${code}): ${(stderr || stdout).trim().slice(-512)}`);
90
+ }
91
+ }
92
+ }
93
+ {
94
+ const child = spawn("docker", ["manifest", "inspect", "--verbose", image], { stdio: ["ignore", "pipe", "pipe"] });
95
+ const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
96
+ if (code === 0) {
97
+ try {
98
+ const parsed = JSON.parse(stdout.trim());
99
+ const items = Array.isArray(parsed) ? parsed : [parsed];
100
+ remote_digests_all = items
101
+ .map((it) => it?.Descriptor?.digest)
102
+ .filter((s) => !!s && s.startsWith("sha256:"));
103
+ if (remote_digests_all.length === 0) {
104
+ error = "remote manifest contained no Descriptor.digest entries";
105
+ }
106
+ }
107
+ catch (e) {
108
+ error = `failed to parse manifest inspect output: ${e.message}`;
109
+ }
110
+ }
111
+ else {
112
+ error = `docker manifest inspect failed (${code}): ${(stderr || stdout).trim().slice(-512)}`;
113
+ }
114
+ }
115
+ let up_to_date = false;
116
+ if (local_digest && remote_digests_all.length > 0) {
117
+ up_to_date = remote_digests_all.includes(local_digest);
118
+ remote_digest = up_to_date ? local_digest : (remote_digests_all[0] ?? null);
119
+ }
120
+ else if (remote_digests_all.length > 0) {
121
+ remote_digest = remote_digests_all[0] ?? null;
122
+ }
123
+ // recommend_pull defaults to "not up-to-date". When remote query failed,
124
+ // only recommend pulling if the local image is missing — otherwise we
125
+ // can't actually tell whether a pull is needed.
126
+ let recommend_pull = !up_to_date;
127
+ if (error && local_present)
128
+ recommend_pull = false;
129
+ const result = {
130
+ image,
131
+ local_present,
132
+ local_digest,
133
+ remote_digest,
134
+ remote_digests_all,
135
+ up_to_date,
136
+ recommend_pull,
137
+ notes,
138
+ ...(error ? { error } : {}),
139
+ };
140
+ if (autoPull && recommend_pull) {
141
+ try {
142
+ const pulled = await pullImage(image);
143
+ result.pulled = true;
144
+ result.pull_output = pulled.output;
145
+ }
146
+ catch (e) {
147
+ result.pulled = false;
148
+ result.notes.push(`auto_pull failed: ${e.message}`);
149
+ }
150
+ }
151
+ return result;
152
+ }
153
+ // ─── Param stringify helper ───────────────────────────────────────────────
154
+ export function stringifyParams(p) {
155
+ if (!p)
156
+ return {};
157
+ const out = {};
158
+ for (const [k, v] of Object.entries(p))
159
+ out[k] = String(v);
160
+ return out;
161
+ }
162
+ export async function dockerBacktest(args) {
163
+ const dockerArgs = [
164
+ "run", "--rm",
165
+ "--network=none",
166
+ ];
167
+ const inputsObj = stringifyParams(args.inputs);
168
+ const overridesObj = stringifyParams(args.overrides);
169
+ if (Object.keys(inputsObj).length) {
170
+ dockerArgs.push("-e", `PINEFORGE_INPUTS=${JSON.stringify(inputsObj)}`);
171
+ }
172
+ if (Object.keys(overridesObj).length) {
173
+ dockerArgs.push("-e", `PINEFORGE_OVERRIDES=${JSON.stringify(overridesObj)}`);
174
+ }
175
+ const r = args.runtime ?? {};
176
+ if (r.input_tf !== undefined && r.input_tf !== "") {
177
+ dockerArgs.push("-e", `PINEFORGE_INPUT_TF=${r.input_tf}`);
178
+ }
179
+ if (r.script_tf !== undefined && r.script_tf !== "") {
180
+ dockerArgs.push("-e", `PINEFORGE_SCRIPT_TF=${r.script_tf}`);
181
+ }
182
+ if (r.bar_magnifier !== undefined) {
183
+ dockerArgs.push("-e", `PINEFORGE_BAR_MAGNIFIER=${r.bar_magnifier ? "true" : "false"}`);
184
+ }
185
+ if (r.magnifier_samples !== undefined) {
186
+ dockerArgs.push("-e", `PINEFORGE_MAGNIFIER_SAMPLES=${r.magnifier_samples}`);
187
+ }
188
+ if (r.magnifier_dist !== undefined) {
189
+ dockerArgs.push("-e", `PINEFORGE_MAGNIFIER_DIST=${r.magnifier_dist}`);
190
+ }
191
+ dockerArgs.push("-v", `${args.cppPath}:/in/strategy.cpp:ro`, "-v", `${args.csvPath}:/in/ohlcv.csv:ro`, args.image);
192
+ const child = spawn("docker", dockerArgs, { stdio: ["ignore", "pipe", "pipe"] });
193
+ const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
194
+ if (code !== 0) {
195
+ throw new Error(`docker exited ${code}\n` +
196
+ `stderr (last 2KB):\n${stderr.slice(-2048)}`);
197
+ }
198
+ try {
199
+ return JSON.parse(stdout);
200
+ }
201
+ catch {
202
+ throw new Error(`backtest produced non-JSON output (first 500B):\n${stdout.slice(0, 500)}`);
203
+ }
204
+ }
205
+ export function collectChild(child, timeoutMs) {
206
+ return new Promise((resolveP, rejectP) => {
207
+ let stdout = "", stderr = "";
208
+ child.stdout?.on("data", (d) => { stdout += d.toString(); });
209
+ child.stderr?.on("data", (d) => { stderr += d.toString(); });
210
+ const timer = setTimeout(() => {
211
+ child.kill("SIGKILL");
212
+ rejectP(new Error(`docker timed out after ${timeoutMs}ms`));
213
+ }, timeoutMs);
214
+ child.on("error", (e) => { clearTimeout(timer); rejectP(e); });
215
+ child.on("close", (code) => {
216
+ clearTimeout(timer);
217
+ resolveP({ stdout, stderr, code: code ?? 1 });
218
+ });
219
+ });
220
+ }
221
+ export class DockerRunner {
222
+ image;
223
+ mode = "docker";
224
+ constructor(image = DEFAULT_IMAGE) {
225
+ this.image = image;
226
+ }
227
+ transpile(source, image) {
228
+ return dockerTranspile(source, image ?? this.image);
229
+ }
230
+ backtest(call) {
231
+ return dockerBacktest({ ...call, image: call.image ?? this.image });
232
+ }
233
+ async engineInfo() {
234
+ return { mode: "docker", baked_in: false, version: null, image: this.image };
235
+ }
236
+ checkImage(image, autoPull) {
237
+ return checkEngineImage(image, autoPull);
238
+ }
239
+ pullImage(image) {
240
+ return pullImage(image);
241
+ }
242
+ }
243
+ // ─── Local backend (in-process entrypoint.sh) ──────────────────────────────
244
+ // Builds the PINEFORGE_* env the entrypoint reads. Shared contract with the
245
+ // docker backend's -e flags so both speak identically.
246
+ function engineEnv(call) {
247
+ const env = {};
248
+ const inputs = stringifyParams(call.inputs);
249
+ const overrides = stringifyParams(call.overrides);
250
+ if (Object.keys(inputs).length)
251
+ env.PINEFORGE_INPUTS = JSON.stringify(inputs);
252
+ if (Object.keys(overrides).length)
253
+ env.PINEFORGE_OVERRIDES = JSON.stringify(overrides);
254
+ const r = call.runtime ?? {};
255
+ if (r.input_tf !== undefined && r.input_tf !== "")
256
+ env.PINEFORGE_INPUT_TF = r.input_tf;
257
+ if (r.script_tf !== undefined && r.script_tf !== "")
258
+ env.PINEFORGE_SCRIPT_TF = r.script_tf;
259
+ if (r.bar_magnifier !== undefined)
260
+ env.PINEFORGE_BAR_MAGNIFIER = r.bar_magnifier ? "true" : "false";
261
+ if (r.magnifier_samples !== undefined)
262
+ env.PINEFORGE_MAGNIFIER_SAMPLES = String(r.magnifier_samples);
263
+ if (r.magnifier_dist !== undefined)
264
+ env.PINEFORGE_MAGNIFIER_DIST = r.magnifier_dist;
265
+ return env;
266
+ }
267
+ export class LocalRunner {
268
+ prefix;
269
+ mode = "local";
270
+ constructor(prefix = process.env.PINEFORGE_PREFIX ?? "/opt/pineforge") {
271
+ this.prefix = prefix;
272
+ }
273
+ entrypoint() {
274
+ return join(this.prefix, "bin", "entrypoint.sh");
275
+ }
276
+ async run(inDir, extraEnv) {
277
+ const child = spawn("bash", [this.entrypoint()], {
278
+ stdio: ["ignore", "pipe", "pipe"],
279
+ env: { ...process.env, PINEFORGE_PREFIX: this.prefix, PINEFORGE_IN_DIR: inDir, ...extraEnv },
280
+ });
281
+ const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
282
+ if (code !== 0) {
283
+ const map = { 2: "missing input", 3: "compile failure", 4: "backtest failure", 5: "transpile failure" };
284
+ throw new Error(`engine ${map[code] ?? "error"} (exit ${code}):\n${stderr.slice(-2048)}`);
285
+ }
286
+ return stdout;
287
+ }
288
+ async transpile(source, _image) {
289
+ const dir = await mkdtemp(join(tmpdir(), "pineforge-lr-tr-"));
290
+ try {
291
+ await writeFile(join(dir, "strategy.pine"), source, "utf8");
292
+ return await this.run(dir, { PINEFORGE_TRANSPILE_ONLY: "1" });
293
+ }
294
+ finally {
295
+ rm(dir, { recursive: true, force: true }).catch(() => undefined);
296
+ }
297
+ }
298
+ async backtest(call) {
299
+ const dir = await mkdtemp(join(tmpdir(), "pineforge-lr-bt-"));
300
+ try {
301
+ const cpp = await readFile(call.cppPath, "utf8");
302
+ await writeFile(join(dir, "strategy.cpp"), cpp, "utf8");
303
+ const csv = await readFile(call.csvPath, "utf8");
304
+ await writeFile(join(dir, "ohlcv.csv"), csv, "utf8");
305
+ const out = await this.run(dir, engineEnv(call));
306
+ try {
307
+ return JSON.parse(out);
308
+ }
309
+ catch {
310
+ throw new Error(`backtest produced non-JSON output (first 500B):\n${out.slice(0, 500)}`);
311
+ }
312
+ }
313
+ finally {
314
+ rm(dir, { recursive: true, force: true }).catch(() => undefined);
315
+ }
316
+ }
317
+ async engineInfo() {
318
+ return { mode: "local", baked_in: true, version: process.env.PINEFORGE_VERSION ?? null };
319
+ }
320
+ async checkImage() {
321
+ return this.engineInfo();
322
+ }
323
+ async pullImage(image) {
324
+ return { image, pulled: false, output: "engine is baked into the image (local mode); nothing to pull" };
325
+ }
326
+ }
327
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @pineforge/backtest-mcp — docker (npx/host) entrypoint.
4
+ *
5
+ * Drives the host Docker daemon (DockerRunner) and exposes the engine-image
6
+ * management tools (pull_engine_image, check_engine_image). All tool logic
7
+ * lives in ./server.ts; this entry only picks the runner + tool surface.
8
+ */
9
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
+ import { DockerRunner, DEFAULT_IMAGE } from "./engine.js";
11
+ import { createServer } from "./server.js";
12
+ const server = createServer(new DockerRunner(), { imageTools: true });
13
+ const transport = new StdioServerTransport();
14
+ await server.connect(transport);
15
+ console.error("[pineforge-mcp] ready (stdio) — docker transpile + backtest, image:", DEFAULT_IMAGE);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AACtE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,qEAAqE,EAAE,aAAa,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @pineforge/backtest-mcp — local (in-container) entrypoint.
4
+ *
5
+ * Used by the self-contained Docker image where the pineforge-release base
6
+ * (engine runtime + bundled codegen) is baked in: runs the engine in-process
7
+ * (LocalRunner), no host Docker daemon. The MCP
8
+ * image *is* the container, so the image-management tools are omitted; a
9
+ * read-only engine_info tool is registered instead. All tool logic lives in
10
+ * ./server.ts.
11
+ */
12
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
13
+ import { LocalRunner } from "./engine.js";
14
+ import { createServer } from "./server.js";
15
+ const server = createServer(new LocalRunner(), { imageTools: false });
16
+ const transport = new StdioServerTransport();
17
+ await server.connect(transport);
18
+ console.error("[pineforge-mcp] ready (stdio) — local in-process transpile + backtest");
19
+ //# sourceMappingURL=index.local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.local.js","sourceRoot":"","sources":["../src/index.local.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC"}