@pineforge/codegen-mcp 0.7.0 → 0.8.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.
package/LICENSE CHANGED
@@ -1,197 +1,21 @@
1
- PineForge Codegen MCP — License
2
- ================================
3
-
4
- Copyright 2025 PineForge <luis@4pass.com.tw>
5
-
6
- This software is made available under the **PolyForm Noncommercial License
7
- 1.0.0** (reproduced in full below), as modified by the two supplemental
8
- sections that follow. In case of any conflict, the supplemental sections
9
- ("Additional Permission" and "Commercial Use") control over the base license.
10
-
11
- Required Notice: Copyright 2025 PineForge (https://github.com/pineforge-4pass/pineforge-codegen-mcp)
12
-
13
-
14
- Additional Permission — Personal Trading
15
- ----------------------------------------
16
-
17
- Notwithstanding the limitation to noncommercial purposes in the base license,
18
- the licensor grants you, free of charge, an additional license to use the
19
- software for **Personal Trading**, and Personal Trading is hereby a permitted
20
- purpose under the base license including its Copyright License, Distribution
21
- License, Changes and New Works License, and Patent License.
22
-
23
- **Personal Trading** means use of the software by a natural person to research,
24
- develop, backtest, and execute trades in financial instruments, where:
25
-
26
- (a) the trades are placed for that same natural person's own account; and
27
-
28
- (b) the trades are funded solely by that person's own capital.
29
-
30
- Personal Trading does **not** include, and this Additional Permission does
31
- **not** cover:
32
-
33
- (1) managing, advising on, or trading capital belonging to any other person
34
- or entity, whether or not for a fee;
35
-
36
- (2) use by, for, or on behalf of any company, fund, partnership, or other
37
- organization, including use by an individual in the course of work for
38
- such an organization;
39
-
40
- (3) embedding the software, or output generated by it, into any product or
41
- service made available to others; or
42
-
43
- (4) operating any hosted, software-as-a-service, or otherwise public-facing
44
- service that uses the software.
45
-
46
- The use described in (1)–(4) is Commercial Use.
47
-
48
-
49
- Commercial Use
50
- --------------
51
-
52
- Any use that is not a permitted purpose under the base license and is not
53
- covered by the Additional Permission above — including the uses listed in
54
- (1)–(4) of that section — requires a separate commercial license from the
55
- licensor.
56
-
57
- To obtain a commercial license, contact: luis@4pass.com.tw
58
-
59
-
60
- ================================================================================
61
- The remainder of this file is the verbatim text of the PolyForm Noncommercial
62
- License 1.0.0. Where it differs from the supplemental sections above, the
63
- supplemental sections control.
64
- ================================================================================
65
-
66
-
67
- # PolyForm Noncommercial License 1.0.0
68
-
69
- <https://polyformproject.org/licenses/noncommercial/1.0.0>
70
-
71
- ## Acceptance
72
-
73
- In order to get any license under these terms, you must agree
74
- to them as both strict obligations and conditions to all
75
- your licenses.
76
-
77
- ## Copyright License
78
-
79
- The licensor grants you a copyright license for the
80
- software to do everything you might do with the software
81
- that would otherwise infringe the licensor's copyright
82
- in it for any permitted purpose. However, you may
83
- only distribute the software according to [Distribution
84
- License](#distribution-license) and make changes or new works
85
- based on the software according to [Changes and New Works
86
- License](#changes-and-new-works-license).
87
-
88
- ## Distribution License
89
-
90
- The licensor grants you an additional copyright license
91
- to distribute copies of the software. Your license
92
- to distribute covers distributing the software with
93
- changes and new works permitted by [Changes and New Works
94
- License](#changes-and-new-works-license).
95
-
96
- ## Notices
97
-
98
- You must ensure that anyone who gets a copy of any part of
99
- the software from you also gets a copy of these terms or the
100
- URL for them above, as well as copies of any plain-text lines
101
- beginning with `Required Notice:` that the licensor provided
102
- with the software. For example:
103
-
104
- > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
105
-
106
- ## Changes and New Works License
107
-
108
- The licensor grants you an additional copyright license to
109
- make changes and new works based on the software for any
110
- permitted purpose.
111
-
112
- ## Patent License
113
-
114
- The licensor grants you a patent license for the software that
115
- covers patent claims the licensor can license, or becomes able
116
- to license, that you would infringe by using the software.
117
-
118
- ## Noncommercial Purposes
119
-
120
- Any noncommercial purpose is a permitted purpose.
121
-
122
- ## Personal Uses
123
-
124
- Personal use for research, experiment, and testing for
125
- the benefit of public knowledge, personal study, private
126
- entertainment, hobby projects, amateur pursuits, or religious
127
- observance, without any anticipated commercial application,
128
- is use for a permitted purpose.
129
-
130
- ## Noncommercial Organizations
131
-
132
- Use by any charitable organization, educational institution,
133
- public research organization, public safety or health
134
- organization, environmental protection organization,
135
- or government institution is use for a permitted purpose
136
- regardless of the source of funding or obligations resulting
137
- from the funding.
138
-
139
- ## Fair Use
140
-
141
- You may have "fair use" rights for the software under the
142
- law. These terms do not limit them.
143
-
144
- ## No Other Rights
145
-
146
- These terms do not allow you to sublicense or transfer any of
147
- your licenses to anyone else, or prevent the licensor from
148
- granting licenses to anyone else. These terms do not imply
149
- any other licenses.
150
-
151
- ## Patent Defense
152
-
153
- If you make any written claim that the software infringes or
154
- contributes to infringement of any patent, your patent license
155
- for the software granted under these terms ends immediately. If
156
- your company makes such a claim, your patent license ends
157
- immediately for work on behalf of your company.
158
-
159
- ## Violations
160
-
161
- The first time you are notified in writing that you have
162
- violated any of these terms, or done anything with the software
163
- not covered by your licenses, your licenses can nonetheless
164
- continue if you come into full compliance with these terms,
165
- and take practical steps to correct past violations, within
166
- 32 days of receiving notice. Otherwise, all your licenses
167
- end immediately.
168
-
169
- ## No Liability
170
-
171
- ***As far as the law allows, the software comes as is, without
172
- any warranty or condition, and the licensor will not be liable
173
- to you for any damages arising out of these terms or the use
174
- or nature of the software, under any kind of legal claim.***
175
-
176
- ## Definitions
177
-
178
- The **licensor** is the individual or entity offering these
179
- terms, and the **software** is the software the licensor makes
180
- available under these terms.
181
-
182
- **You** refers to the individual or entity agreeing to these
183
- terms.
184
-
185
- **Your company** is any legal entity, sole proprietorship,
186
- or other kind of organization that you work for, plus all
187
- organizations that have control over, are under the control of,
188
- or are under common control with that organization. **Control**
189
- means ownership of substantially all the assets of an entity,
190
- or the power to direct its management and policies by vote,
191
- contract, or otherwise. Control can be direct or indirect.
192
-
193
- **Your licenses** are all the licenses granted to you for the
194
- software under these terms.
195
-
196
- **Use** means anything you do with the software requiring one
197
- of your licenses.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 PineForge
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -6,6 +6,8 @@ bundles the [`pineforge-codegen`](https://github.com/pineforge-4pass/pineforge-c
6
6
  transpiler, so Pine → C++ → backtest all run on the user's machine. **No API
7
7
  key, nothing leaves the box.**
8
8
 
9
+ [![pineforge-4pass/pineforge-codegen-mcp MCP server](https://glama.ai/mcp/servers/pineforge-4pass/pineforge-codegen-mcp/badges/score.svg)](https://glama.ai/mcp/servers/pineforge-4pass/pineforge-codegen-mcp)
10
+
9
11
  ## Tools
10
12
 
11
13
  | name | runs on | purpose |
@@ -32,6 +34,17 @@ Requires:
32
34
  No API key. The first backtest pulls the `pineforge-engine` image (or run
33
35
  `pull_engine_image` ahead of time).
34
36
 
37
+ ### Run as a container (self-contained — no host Docker)
38
+
39
+ ```bash
40
+ docker run --rm -i ghcr.io/pineforge-4pass/pineforge-codegen-mcp:latest
41
+ ```
42
+
43
+ This image bundles the backtest engine, so every tool works without a host
44
+ Docker daemon (`PINEFORGE_ENGINE_MODE=local`). The `npx` install above instead
45
+ runs on your host and drives your **host** Docker daemon (`PINEFORGE_ENGINE_MODE=docker`,
46
+ the default). Binance fetch tools require outbound network in either mode.
47
+
35
48
  ## Client configuration
36
49
 
37
50
  ### Claude Desktop / generic JSON
@@ -223,12 +236,3 @@ export PINEFORGE_ALLOW_ANYWHERE=1
223
236
  | `PINEFORGE_IMAGE` | `ghcr.io/pineforge-4pass/pineforge-engine:latest` | Engine image used for transpile + backtest |
224
237
  | `PINEFORGE_ALLOW_ANYWHERE` | `0` | Allow OHLCV paths outside cwd |
225
238
  | `PINEFORGE_DOCKER_TIMEOUT_MS` | `120000` | Hard kill for `docker pull` / `docker run` |
226
-
227
- ## License
228
-
229
- Source-available under the [PolyForm Noncommercial License 1.0.0](LICENSE), with a
230
- **Personal Trading exception** — free to research, backtest, and trade your own
231
- account with your own capital. **Commercial use** (companies, funds, managing
232
- third-party capital, embedding in a product, or operating a hosted / public-facing
233
- service) requires a commercial license: **luis@4pass.com.tw**. Source-available,
234
- not OSI open source.
package/dist/engine.js ADDED
@@ -0,0 +1,335 @@
1
+ /**
2
+ * @pineforge/codegen-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-engine: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
+ // ─── Runner selection ──────────────────────────────────────────────────────
328
+ // Pick the engine backend once from PINEFORGE_ENGINE_MODE. Default is docker;
329
+ // "local" runs the baked-in entrypoint in-process.
330
+ export function selectRunner(image = DEFAULT_IMAGE) {
331
+ return process.env.PINEFORGE_ENGINE_MODE === "local"
332
+ ? new LocalRunner()
333
+ : new DockerRunner(image);
334
+ }
335
+ //# 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 CHANGED
@@ -14,62 +14,40 @@
14
14
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
15
15
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
16
  import { z } from "zod";
17
- import { spawn } from "node:child_process";
18
17
  import { mkdtemp, mkdir, writeFile, rm, stat, readFile } from "node:fs/promises";
19
18
  import { tmpdir } from "node:os";
20
19
  import { join, resolve, isAbsolute, dirname } from "node:path";
21
20
  import { VERSION } from "./version.js";
21
+ import { DEFAULT_IMAGE, selectRunner, stringifyParams, } from "./engine.js";
22
22
  // ─── Config ───────────────────────────────────────────────────────────────
23
- const DEFAULT_IMAGE = process.env.PINEFORGE_IMAGE ?? "ghcr.io/pineforge-4pass/pineforge-engine:latest";
24
23
  const ALLOW_ANYWHERE = process.env.PINEFORGE_ALLOW_ANYWHERE === "1";
25
- const DOCKER_TIMEOUT_MS = Number(process.env.PINEFORGE_DOCKER_TIMEOUT_MS ?? 120_000);
24
+ // Pick the engine backend once at startup (docker by default, local via
25
+ // PINEFORGE_ENGINE_MODE=local). All transpile/backtest calls route through it.
26
+ const engine = selectRunner();
26
27
  const BINANCE_SPOT_BASE = "https://api.binance.com";
27
28
  const BINANCE_FAPI_BASE = "https://fapi.binance.com";
28
29
  const BINANCE_KLINES_LIMIT = 1000;
29
30
  const BINANCE_PAGE_DELAY_MS = 200;
30
- // ─── Local transpile (Pine → C++ via the engine container) ──────────────────
31
- // Runs the engine image in transpile-only mode: writes the Pine source to a
32
- // temp file, mounts it read-only, and returns the generated C++ on stdout.
33
- // No network (`--network=none`), no API key — codegen is bundled in the image.
34
- async function dockerTranspile(source, image) {
35
- const tmp = await mkdtemp(join(tmpdir(), "pineforge-tr-"));
36
- const pinePath = join(tmp, "strategy.pine");
37
- await writeFile(pinePath, source, "utf8");
38
- try {
39
- const dockerArgs = [
40
- "run", "--rm", "--network=none",
41
- "-e", "PINEFORGE_TRANSPILE_ONLY=1",
42
- "-v", `${pinePath}:/in/strategy.pine:ro`,
43
- image,
44
- ];
45
- const child = spawn("docker", dockerArgs, { stdio: ["ignore", "pipe", "pipe"] });
46
- const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
47
- if (code !== 0) {
48
- throw new Error(`transpile failed (docker exit ${code}):\n${stderr.slice(-2048)}`);
49
- }
50
- return stdout;
51
- }
52
- finally {
53
- rm(tmp, { recursive: true, force: true }).catch(() => undefined);
54
- }
55
- }
56
31
  async function runBacktest(args) {
57
32
  const csvPath = await resolveCsvPath(args.ohlcv_csv_path);
58
33
  const image = args.image ?? DEFAULT_IMAGE;
59
- const cpp = await dockerTranspile(args.source, image);
34
+ const cpp = await engine.transpile(args.source, args.image);
60
35
  const tmp = await mkdtemp(join(tmpdir(), "pineforge-bt-"));
61
36
  const cppPath = join(tmp, "strategy.cpp");
62
37
  await writeFile(cppPath, cpp, "utf8");
63
38
  try {
64
- const report = await dockerBacktest({
65
- image,
39
+ const report = await engine.backtest({
66
40
  cppPath,
67
41
  csvPath,
42
+ image: args.image,
68
43
  inputs: args.inputs,
69
44
  overrides: args.overrides,
70
45
  runtime: args.runtime,
71
46
  });
72
- return { ...report, _meta: { strategy_cpp_bytes: cpp.length, image } };
47
+ return {
48
+ ...report,
49
+ _meta: { strategy_cpp_bytes: cpp.length, image: engine.mode === "docker" ? image : "local" },
50
+ };
73
51
  }
74
52
  finally {
75
53
  rm(tmp, { recursive: true, force: true }).catch(() => undefined);
@@ -90,15 +68,16 @@ async function runBacktestGrid(args) {
90
68
  throw new Error(`${combos.length} combinations exceeds max_combinations=${maxCombos}. ` +
91
69
  `Either reduce the grid or raise max_combinations.`);
92
70
  }
93
- const cpp = await dockerTranspile(args.source, image);
71
+ const cpp = await engine.transpile(args.source, args.image);
94
72
  const tmp = await mkdtemp(join(tmpdir(), "pineforge-grid-"));
95
73
  const cppPath = join(tmp, "strategy.cpp");
96
74
  await writeFile(cppPath, cpp, "utf8");
97
75
  try {
98
76
  const rows = await pMap(combos, concurrency, async (combo) => {
99
77
  try {
100
- const report = await dockerBacktest({
101
- image, cppPath, csvPath,
78
+ const report = await engine.backtest({
79
+ cppPath, csvPath,
80
+ image: args.image,
102
81
  inputs: combo.inputs, overrides: combo.overrides,
103
82
  runtime: args.runtime,
104
83
  });
@@ -136,7 +115,7 @@ async function runBacktestGrid(args) {
136
115
  succeeded: succeeded.length,
137
116
  failed: failed.length,
138
117
  sort_by: sortBy,
139
- image,
118
+ image: engine.mode === "docker" ? image : "local",
140
119
  _meta: { strategy_cpp_bytes: cpp.length, concurrency },
141
120
  best: succeeded[0] ?? null,
142
121
  results: [...succeeded, ...failed],
@@ -146,127 +125,7 @@ async function runBacktestGrid(args) {
146
125
  rm(tmp, { recursive: true, force: true }).catch(() => undefined);
147
126
  }
148
127
  }
149
- async function pullImage(image) {
150
- const child = spawn("docker", ["pull", image], { stdio: ["ignore", "pipe", "pipe"] });
151
- const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
152
- if (code !== 0)
153
- throw new Error(`docker pull failed (${code}): ${stderr.slice(-1024)}`);
154
- return { image, pulled: true, output: (stdout + stderr).trim().slice(-2048) };
155
- }
156
- // Compare local image manifest digest vs registry per-platform digest without
157
- // downloading layers. `docker manifest inspect --verbose` returns either a
158
- // single object (single-arch tag) or an array (multi-arch / manifest list);
159
- // each entry exposes `.Descriptor.digest`, which is exactly the digest format
160
- // stored in the local image's RepoDigests. Up-to-date iff local digest is in
161
- // the remote per-platform set.
162
- async function checkEngineImage(image, autoPull) {
163
- const notes = [];
164
- let local_present = false;
165
- let local_digest = null;
166
- let remote_digest = null;
167
- let remote_digests_all = [];
168
- let error;
169
- {
170
- const child = spawn("docker", ["image", "inspect", "--format", "{{json .RepoDigests}}", image], { stdio: ["ignore", "pipe", "pipe"] });
171
- const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
172
- if (code === 0) {
173
- try {
174
- const arr = JSON.parse(stdout.trim());
175
- const digests = arr
176
- .map((r) => r.split("@")[1])
177
- .filter((s) => !!s && s.startsWith("sha256:"));
178
- if (digests.length > 0) {
179
- local_present = true;
180
- local_digest = digests[0] ?? null;
181
- }
182
- else {
183
- local_present = true;
184
- notes.push("local image present but has no RepoDigest (likely built locally, not pulled)");
185
- }
186
- }
187
- catch (e) {
188
- notes.push(`failed to parse local RepoDigests: ${e.message}`);
189
- }
190
- }
191
- else {
192
- const msg = (stderr || stdout).toLowerCase();
193
- if (msg.includes("no such image") || msg.includes("no such object")) {
194
- notes.push("local image absent");
195
- }
196
- else {
197
- notes.push(`docker image inspect failed (${code}): ${(stderr || stdout).trim().slice(-512)}`);
198
- }
199
- }
200
- }
201
- {
202
- const child = spawn("docker", ["manifest", "inspect", "--verbose", image], { stdio: ["ignore", "pipe", "pipe"] });
203
- const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
204
- if (code === 0) {
205
- try {
206
- const parsed = JSON.parse(stdout.trim());
207
- const items = Array.isArray(parsed) ? parsed : [parsed];
208
- remote_digests_all = items
209
- .map((it) => it?.Descriptor?.digest)
210
- .filter((s) => !!s && s.startsWith("sha256:"));
211
- if (remote_digests_all.length === 0) {
212
- error = "remote manifest contained no Descriptor.digest entries";
213
- }
214
- }
215
- catch (e) {
216
- error = `failed to parse manifest inspect output: ${e.message}`;
217
- }
218
- }
219
- else {
220
- error = `docker manifest inspect failed (${code}): ${(stderr || stdout).trim().slice(-512)}`;
221
- }
222
- }
223
- let up_to_date = false;
224
- if (local_digest && remote_digests_all.length > 0) {
225
- up_to_date = remote_digests_all.includes(local_digest);
226
- remote_digest = up_to_date ? local_digest : (remote_digests_all[0] ?? null);
227
- }
228
- else if (remote_digests_all.length > 0) {
229
- remote_digest = remote_digests_all[0] ?? null;
230
- }
231
- // recommend_pull defaults to "not up-to-date". When remote query failed,
232
- // only recommend pulling if the local image is missing — otherwise we
233
- // can't actually tell whether a pull is needed.
234
- let recommend_pull = !up_to_date;
235
- if (error && local_present)
236
- recommend_pull = false;
237
- const result = {
238
- image,
239
- local_present,
240
- local_digest,
241
- remote_digest,
242
- remote_digests_all,
243
- up_to_date,
244
- recommend_pull,
245
- notes,
246
- ...(error ? { error } : {}),
247
- };
248
- if (autoPull && recommend_pull) {
249
- try {
250
- const pulled = await pullImage(image);
251
- result.pulled = true;
252
- result.pull_output = pulled.output;
253
- }
254
- catch (e) {
255
- result.pulled = false;
256
- result.notes.push(`auto_pull failed: ${e.message}`);
257
- }
258
- }
259
- return result;
260
- }
261
128
  // ─── Param-grid helpers ───────────────────────────────────────────────────
262
- function stringifyParams(p) {
263
- if (!p)
264
- return {};
265
- const out = {};
266
- for (const [k, v] of Object.entries(p))
267
- out[k] = String(v);
268
- return out;
269
- }
270
129
  function cartesianProduct(grid) {
271
130
  const keys = Object.keys(grid);
272
131
  if (keys.length === 0)
@@ -333,65 +192,6 @@ async function resolveCsvPath(p) {
333
192
  }
334
193
  return abs;
335
194
  }
336
- async function dockerBacktest(args) {
337
- const dockerArgs = [
338
- "run", "--rm",
339
- "--network=none",
340
- ];
341
- const inputsObj = stringifyParams(args.inputs);
342
- const overridesObj = stringifyParams(args.overrides);
343
- if (Object.keys(inputsObj).length) {
344
- dockerArgs.push("-e", `PINEFORGE_INPUTS=${JSON.stringify(inputsObj)}`);
345
- }
346
- if (Object.keys(overridesObj).length) {
347
- dockerArgs.push("-e", `PINEFORGE_OVERRIDES=${JSON.stringify(overridesObj)}`);
348
- }
349
- const r = args.runtime ?? {};
350
- if (r.input_tf !== undefined && r.input_tf !== "") {
351
- dockerArgs.push("-e", `PINEFORGE_INPUT_TF=${r.input_tf}`);
352
- }
353
- if (r.script_tf !== undefined && r.script_tf !== "") {
354
- dockerArgs.push("-e", `PINEFORGE_SCRIPT_TF=${r.script_tf}`);
355
- }
356
- if (r.bar_magnifier !== undefined) {
357
- dockerArgs.push("-e", `PINEFORGE_BAR_MAGNIFIER=${r.bar_magnifier ? "true" : "false"}`);
358
- }
359
- if (r.magnifier_samples !== undefined) {
360
- dockerArgs.push("-e", `PINEFORGE_MAGNIFIER_SAMPLES=${r.magnifier_samples}`);
361
- }
362
- if (r.magnifier_dist !== undefined) {
363
- dockerArgs.push("-e", `PINEFORGE_MAGNIFIER_DIST=${r.magnifier_dist}`);
364
- }
365
- dockerArgs.push("-v", `${args.cppPath}:/in/strategy.cpp:ro`, "-v", `${args.csvPath}:/in/ohlcv.csv:ro`, args.image);
366
- const child = spawn("docker", dockerArgs, { stdio: ["ignore", "pipe", "pipe"] });
367
- const { stdout, stderr, code } = await collectChild(child, DOCKER_TIMEOUT_MS);
368
- if (code !== 0) {
369
- throw new Error(`docker exited ${code}\n` +
370
- `stderr (last 2KB):\n${stderr.slice(-2048)}`);
371
- }
372
- try {
373
- return JSON.parse(stdout);
374
- }
375
- catch {
376
- throw new Error(`backtest produced non-JSON output (first 500B):\n${stdout.slice(0, 500)}`);
377
- }
378
- }
379
- function collectChild(child, timeoutMs) {
380
- return new Promise((resolveP, rejectP) => {
381
- let stdout = "", stderr = "";
382
- child.stdout?.on("data", (d) => { stdout += d.toString(); });
383
- child.stderr?.on("data", (d) => { stderr += d.toString(); });
384
- const timer = setTimeout(() => {
385
- child.kill("SIGKILL");
386
- rejectP(new Error(`docker timed out after ${timeoutMs}ms`));
387
- }, timeoutMs);
388
- child.on("error", (e) => { clearTimeout(timer); rejectP(e); });
389
- child.on("close", (code) => {
390
- clearTimeout(timer);
391
- resolveP({ stdout, stderr, code: code ?? 1 });
392
- });
393
- });
394
- }
395
195
  // ─── Binance public-API client ────────────────────────────────────────────
396
196
  const BINANCE_INTERVAL_MS = {
397
197
  "1s": 1_000,
@@ -762,7 +562,7 @@ server.registerTool("transpile_pine", {
762
562
  }, async ({ source, image }) => ({
763
563
  content: [{
764
564
  type: "text",
765
- text: await dockerTranspile(source, image ?? DEFAULT_IMAGE),
565
+ text: await engine.transpile(source, image),
766
566
  }],
767
567
  }));
768
568
  server.registerTool("backtest_pine", {
@@ -910,7 +710,7 @@ server.registerTool("pull_engine_image", {
910
710
  inputSchema: {
911
711
  image: z.string().optional().describe(`Image to pull. Defaults to ${DEFAULT_IMAGE}.`),
912
712
  },
913
- }, async ({ image }) => asTextResult(await pullImage(image ?? DEFAULT_IMAGE)));
713
+ }, async ({ image }) => asTextResult(await engine.pullImage(image ?? DEFAULT_IMAGE)));
914
714
  server.registerTool("check_engine_image", {
915
715
  description: "Check whether the local pineforge-engine Docker image is up to date " +
916
716
  "with the registry. Compares per-platform manifest digests via " +
@@ -925,7 +725,7 @@ server.registerTool("check_engine_image", {
925
725
  auto_pull: z.boolean().optional().describe("If true and the image is stale or missing, run `docker pull` in " +
926
726
  "the same call. Default false (report only)."),
927
727
  },
928
- }, async ({ image, auto_pull }) => asTextResult(await checkEngineImage(image ?? DEFAULT_IMAGE, auto_pull ?? false)));
728
+ }, async ({ image, auto_pull }) => asTextResult(await engine.checkImage(image ?? DEFAULT_IMAGE, auto_pull === true)));
929
729
  const transport = new StdioServerTransport();
930
730
  await server.connect(transport);
931
731
  console.error("[pineforge-mcp] ready (stdio) — local transpile + backtest, image:", DEFAULT_IMAGE);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED by scripts/sync-version.mjs from /VERSION — do not edit.
2
- export const VERSION = "0.7.0";
2
+ export const VERSION = "0.8.0";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pineforge/codegen-mcp",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Local MCP server: PineScript v6 → C++ + Docker backtest runner with parameter sweeps + Binance OHLCV exporter. Fully local (transpiler bundled in the engine image), no API key.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,7 +21,8 @@
21
21
  "build": "tsc",
22
22
  "predev": "npm run sync-version",
23
23
  "dev": "tsx src/index.ts",
24
- "prepublishOnly": "npm run build"
24
+ "prepublishOnly": "npm run build",
25
+ "test": "node --import tsx --test test/**/*.test.ts"
25
26
  },
26
27
  "dependencies": {
27
28
  "@modelcontextprotocol/sdk": "^1.0.0",
@@ -48,5 +49,5 @@
48
49
  "bugs": {
49
50
  "url": "https://github.com/pineforge-4pass/pineforge-codegen-mcp/issues"
50
51
  },
51
- "license": "SEE LICENSE IN LICENSE"
52
+ "license": "MIT"
52
53
  }