pi-forge 0.0.0 → 1.1.4

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 (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -4
  3. package/bin/pi-forge.mjs +37 -0
  4. package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js +34 -0
  5. package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js.map +1 -0
  6. package/dist/client/assets/index-B-529kgJ.css +32 -0
  7. package/dist/client/assets/index-BzKzxXFs.js +392 -0
  8. package/dist/client/assets/index-BzKzxXFs.js.map +1 -0
  9. package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js +3 -0
  10. package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js.map +1 -0
  11. package/dist/client/icons/icon-192.png +0 -0
  12. package/dist/client/icons/icon-512.png +0 -0
  13. package/dist/client/icons/icon-maskable-512.png +0 -0
  14. package/dist/client/icons/icon.svg +9 -0
  15. package/dist/client/index.html +24 -0
  16. package/dist/client/manifest.webmanifest +1 -0
  17. package/dist/client/offline.html +142 -0
  18. package/dist/client/sw.js +3 -0
  19. package/dist/client/sw.js.map +1 -0
  20. package/dist/client/workbox-6d7155ed.js +3 -0
  21. package/dist/client/workbox-6d7155ed.js.map +1 -0
  22. package/dist/server/agent-resource-loader.js +126 -0
  23. package/dist/server/agent-resource-loader.js.map +1 -0
  24. package/dist/server/attachment-converters.js +96 -0
  25. package/dist/server/attachment-converters.js.map +1 -0
  26. package/dist/server/auth.js +209 -0
  27. package/dist/server/auth.js.map +1 -0
  28. package/dist/server/compaction-history.js +106 -0
  29. package/dist/server/compaction-history.js.map +1 -0
  30. package/dist/server/concurrency.js +49 -0
  31. package/dist/server/concurrency.js.map +1 -0
  32. package/dist/server/config-export.js +220 -0
  33. package/dist/server/config-export.js.map +1 -0
  34. package/dist/server/config-manager.js +528 -0
  35. package/dist/server/config-manager.js.map +1 -0
  36. package/dist/server/config.js +326 -0
  37. package/dist/server/config.js.map +1 -0
  38. package/dist/server/conversion-worker.mjs +90 -0
  39. package/dist/server/diagnostics.js +137 -0
  40. package/dist/server/diagnostics.js.map +1 -0
  41. package/dist/server/extensions-discovery.js +147 -0
  42. package/dist/server/extensions-discovery.js.map +1 -0
  43. package/dist/server/file-manager.js +734 -0
  44. package/dist/server/file-manager.js.map +1 -0
  45. package/dist/server/file-references.js +215 -0
  46. package/dist/server/file-references.js.map +1 -0
  47. package/dist/server/file-searcher.js +385 -0
  48. package/dist/server/file-searcher.js.map +1 -0
  49. package/dist/server/git-runner.js +684 -0
  50. package/dist/server/git-runner.js.map +1 -0
  51. package/dist/server/index.js +468 -0
  52. package/dist/server/index.js.map +1 -0
  53. package/dist/server/mcp/config.js +133 -0
  54. package/dist/server/mcp/config.js.map +1 -0
  55. package/dist/server/mcp/manager.js +351 -0
  56. package/dist/server/mcp/manager.js.map +1 -0
  57. package/dist/server/mcp/tool-bridge.js +173 -0
  58. package/dist/server/mcp/tool-bridge.js.map +1 -0
  59. package/dist/server/project-manager.js +301 -0
  60. package/dist/server/project-manager.js.map +1 -0
  61. package/dist/server/pty-manager.js +354 -0
  62. package/dist/server/pty-manager.js.map +1 -0
  63. package/dist/server/routes/_schemas.js +73 -0
  64. package/dist/server/routes/_schemas.js.map +1 -0
  65. package/dist/server/routes/auth.js +164 -0
  66. package/dist/server/routes/auth.js.map +1 -0
  67. package/dist/server/routes/config.js +1163 -0
  68. package/dist/server/routes/config.js.map +1 -0
  69. package/dist/server/routes/control.js +464 -0
  70. package/dist/server/routes/control.js.map +1 -0
  71. package/dist/server/routes/exec.js +217 -0
  72. package/dist/server/routes/exec.js.map +1 -0
  73. package/dist/server/routes/files.js +847 -0
  74. package/dist/server/routes/files.js.map +1 -0
  75. package/dist/server/routes/git.js +837 -0
  76. package/dist/server/routes/git.js.map +1 -0
  77. package/dist/server/routes/health.js +97 -0
  78. package/dist/server/routes/health.js.map +1 -0
  79. package/dist/server/routes/mcp.js +300 -0
  80. package/dist/server/routes/mcp.js.map +1 -0
  81. package/dist/server/routes/projects.js +259 -0
  82. package/dist/server/routes/projects.js.map +1 -0
  83. package/dist/server/routes/prompt.js +496 -0
  84. package/dist/server/routes/prompt.js.map +1 -0
  85. package/dist/server/routes/sessions.js +783 -0
  86. package/dist/server/routes/sessions.js.map +1 -0
  87. package/dist/server/routes/stream.js +69 -0
  88. package/dist/server/routes/stream.js.map +1 -0
  89. package/dist/server/routes/terminal.js +335 -0
  90. package/dist/server/routes/terminal.js.map +1 -0
  91. package/dist/server/session-registry.js +1197 -0
  92. package/dist/server/session-registry.js.map +1 -0
  93. package/dist/server/skill-overrides.js +151 -0
  94. package/dist/server/skill-overrides.js.map +1 -0
  95. package/dist/server/skills-export.js +257 -0
  96. package/dist/server/skills-export.js.map +1 -0
  97. package/dist/server/sse-bridge.js +220 -0
  98. package/dist/server/sse-bridge.js.map +1 -0
  99. package/dist/server/tool-overrides.js +277 -0
  100. package/dist/server/tool-overrides.js.map +1 -0
  101. package/dist/server/turn-diff-builder.js +280 -0
  102. package/dist/server/turn-diff-builder.js.map +1 -0
  103. package/package.json +53 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-runner.js","sourceRoot":"","sources":["../src/git-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,468 @@
1
+ import { existsSync } from "node:fs";
2
+ import { mkdir } from "node:fs/promises";
3
+ import { pathToFileURL } from "node:url";
4
+ import Fastify from "fastify";
5
+ import cors from "@fastify/cors";
6
+ import rateLimit from "@fastify/rate-limit";
7
+ import fastifyStatic from "@fastify/static";
8
+ import swagger from "@fastify/swagger";
9
+ import swaggerUi from "@fastify/swagger-ui";
10
+ import websocket from "@fastify/websocket";
11
+ import multipart from "@fastify/multipart";
12
+ import { config, authEnabled } from "./config.js";
13
+ import { installDiagnostics } from "./diagnostics.js";
14
+ import { extractBearer, verifyApiKey, verifyToken } from "./auth.js";
15
+ import { healthRoutes } from "./routes/health.js";
16
+ import { authRoutes } from "./routes/auth.js";
17
+ import { projectRoutes } from "./routes/projects.js";
18
+ import { sessionRoutes } from "./routes/sessions.js";
19
+ import { streamRoutes } from "./routes/stream.js";
20
+ import { promptRoutes } from "./routes/prompt.js";
21
+ import { controlRoutes } from "./routes/control.js";
22
+ import { configRoutes } from "./routes/config.js";
23
+ import { fileRoutes } from "./routes/files.js";
24
+ import { gitRoutes } from "./routes/git.js";
25
+ import { execRoutes } from "./routes/exec.js";
26
+ import { mcpRoutes } from "./routes/mcp.js";
27
+ import { terminalRoutes } from "./routes/terminal.js";
28
+ import { disposeAll as disposeAllMcp, loadGlobal as loadGlobalMcp } from "./mcp/manager.js";
29
+ import { disposeAllSessions } from "./session-registry.js";
30
+ import { disposeAllPtys, installPtyExitHandler } from "./pty-manager.js";
31
+ import { logSecretHygieneState } from "./agent-resource-loader.js";
32
+ export async function buildServer() {
33
+ // Install before Fastify so unhandledRejection handlers from this
34
+ // module are first in line — they print full cause chains for
35
+ // errors the SDK swallows (TLS handshake failures, DNS errors,
36
+ // ECONNREFUSED, etc.) which would otherwise surface as a terse
37
+ // "Connection Error" with no underlying detail.
38
+ installDiagnostics();
39
+ const fastify = Fastify({
40
+ logger: {
41
+ level: config.logLevel,
42
+ // Scrub the `?token=...` query param from logged URLs. Browsers can't
43
+ // attach Authorization headers to a WebSocket upgrade, so the terminal
44
+ // route ferries its short-TTL JWT in the query string. Without this
45
+ // serializer Fastify's default "incoming request" line logs the URL
46
+ // verbatim, which puts the token into stdout / journald / log shippers.
47
+ serializers: {
48
+ req(req) {
49
+ const url = req.url ?? "";
50
+ const safeUrl = url.includes("token=")
51
+ ? url.replace(/([?&])token=[^&]*/g, "$1token=REDACTED")
52
+ : url;
53
+ return {
54
+ method: req.method,
55
+ url: safeUrl,
56
+ hostname: req.hostname,
57
+ remoteAddress: req.ip,
58
+ };
59
+ },
60
+ },
61
+ // Belt-and-suspenders redaction of secret-shaped log fields. Pino's
62
+ // redact runs across every log line (not just the `req` serializer),
63
+ // so an operator-supplied API key in a request body — or a JWT in
64
+ // an Authorization header that bypasses the serializer — never lands
65
+ // in stdout / journald / log shippers in cleartext.
66
+ //
67
+ // Wildcard syntax (`body.providers["*"].apiKey`) follows pino's
68
+ // documented JSONPath-lite — only key segments separated by `.` and
69
+ // `[*]` patterns work; deeper nesting needs explicit paths.
70
+ redact: {
71
+ paths: [
72
+ "headers.authorization",
73
+ "req.headers.authorization",
74
+ "body.password",
75
+ "body.apiKey",
76
+ 'body.providers["*"].apiKey',
77
+ 'body.providers["*"].apiKeyCommand',
78
+ ],
79
+ censor: "[REDACTED]",
80
+ remove: false,
81
+ },
82
+ },
83
+ disableRequestLogging: config.isTest,
84
+ trustProxy: config.trustProxy,
85
+ // Phase 14 attachment uploads can be up to 8 × 10 MB = 80 MB per
86
+ // request before the per-file `fileSize` cap fires per-part. Lift
87
+ // Fastify's default 1 MB bodyLimit so the request reaches the
88
+ // multipart parser, which then enforces the per-file limit and
89
+ // marks oversize files via `file.truncated`. Pad with a little
90
+ // headroom for boundary + field overhead.
91
+ //
92
+ // Memory worst case: a single request hits ~80 MB of file bytes
93
+ // PLUS ~107 MB of base64-expanded image strings held in memory
94
+ // before they pass to the SDK — call it ~190 MB resident. Single-
95
+ // tenant assumption keeps this acceptable; do NOT raise the
96
+ // bodyLimit further without revisiting `parseMultipart` to stream
97
+ // attachments to disk instead of buffering.
98
+ bodyLimit: 100 * 1024 * 1024,
99
+ });
100
+ // Install the PTY exit handler — was previously fired at module-load
101
+ // of pty-manager.ts, which made test isolation harder (every unit
102
+ // test that imported the module also installed the handler). The
103
+ // production server installs it explicitly here.
104
+ installPtyExitHandler();
105
+ await fastify.register(cors, {
106
+ // Default to `true` (reflect request origin) so the same-origin browser
107
+ // workflow described in the dev plan works without extra config.
108
+ // `false` (the previous default) blocks all CORS preflights, including
109
+ // the dev proxy. Pin to a specific origin via CORS_ORIGIN in production.
110
+ origin: config.corsOrigin ?? true,
111
+ credentials: false,
112
+ });
113
+ // Rate limiting is per-route only — no global cap by design. The login
114
+ // route applies its own limit via route-level `config.rateLimit`.
115
+ await fastify.register(rateLimit, { global: false });
116
+ // Security headers — set on every response, both API and static.
117
+ // Done as an onSend hook rather than via @fastify/helmet to avoid the
118
+ // extra dep; the set we need is small and stable.
119
+ //
120
+ // CSP rationale (see also packages/client/index.html):
121
+ // - script-src 'self' 'wasm-unsafe-eval' — Vite's bundle plus the
122
+ // hash-wasm module the upload path uses for SHA-256 streaming.
123
+ // 'wasm-unsafe-eval' permits WebAssembly.compile/instantiate ONLY;
124
+ // it does NOT re-enable JS eval/new Function (those still require
125
+ // the broader 'unsafe-eval'). Vite dev server doesn't apply our
126
+ // CSP, so this surfaces only on deployed instances.
127
+ // - style-src 'self' — Tailwind v4 emits external CSS to /assets;
128
+ // no inline <style> tags are rendered. We split inline-style
129
+ // attribute (style="...") allowance to style-src-attr so a
130
+ // hypothetical CSP-bypass via inline-script can't also inject
131
+ // a hostile <style> block.
132
+ // - style-src-attr 'unsafe-inline' — React's `style={{...}}` prop
133
+ // in RootErrorBoundary + CodeMirror's inline cursor/selection
134
+ // styles compile to style="..." attributes. Keep also on
135
+ // style-src for Safari < 15.4 which falls back to it.
136
+ // - img-src 'self' data: blob: — chat attachments + diff inline icons.
137
+ // - connect-src 'self' — same-origin only. Browsers normalize
138
+ // ws://same-host to the page origin, so 'self' covers the
139
+ // integrated terminal WS without granting open-to-any-host
140
+ // reach to a hypothetical bypass script.
141
+ // - worker-src 'self' blob: — Vite PWA service worker.
142
+ // - object-src 'none', base-uri 'self', frame-ancestors 'none' —
143
+ // defense in depth against legacy / clickjacking surfaces.
144
+ fastify.addHook("onSend", async (_req, reply) => {
145
+ reply.header("X-Content-Type-Options", "nosniff");
146
+ reply.header("Referrer-Policy", "strict-origin-when-cross-origin");
147
+ reply.header("X-Frame-Options", "DENY");
148
+ // HSTS is harmless on plain HTTP (browsers ignore it without TLS),
149
+ // useful behind a TLS proxy. 180 days is a balance: long enough to
150
+ // matter, short enough that an operator can recover from accidentally
151
+ // setting up HTTPS wrong.
152
+ reply.header("Strict-Transport-Security", "max-age=15552000; includeSubDomains");
153
+ reply.header("Content-Security-Policy", [
154
+ "default-src 'self'",
155
+ "script-src 'self' 'wasm-unsafe-eval'",
156
+ // Keep 'unsafe-inline' on style-src for Safari < 15.4 which
157
+ // falls back to it for inline style attributes. Newer browsers
158
+ // honor the tighter style-src-attr below.
159
+ "style-src 'self' 'unsafe-inline'",
160
+ "style-src-attr 'unsafe-inline'",
161
+ "img-src 'self' data: blob:",
162
+ "font-src 'self' data:",
163
+ "connect-src 'self'",
164
+ "worker-src 'self' blob:",
165
+ "object-src 'none'",
166
+ "base-uri 'self'",
167
+ "frame-ancestors 'none'",
168
+ ].join("; "));
169
+ });
170
+ // WebSocket support for the integrated terminal (Phase 11). Must be
171
+ // registered before any route uses `{ websocket: true }`. Inherits
172
+ // the same listening server as Fastify; no extra port needed.
173
+ await fastify.register(websocket);
174
+ // Multipart support for the prompt route's attachment handling
175
+ // (Phase 14). Per-file cap is enforced via `limits.fileSize`; routes
176
+ // that don't expect attachments will reject multipart with a typed
177
+ // 415 from Fastify's content-type matching, so this register is
178
+ // safe to apply globally.
179
+ await fastify.register(multipart, {
180
+ limits: {
181
+ fileSize: 20 * 1024 * 1024, // 20 MB / file — must match MAX_FILE_BYTES in routes/prompt.ts
182
+ // Tightened from 8 → 6 after security review: the prompt route
183
+ // accepts at most 4 images + 4 text files, so 6 is the smallest
184
+ // cap that doesn't constrain real use (one operator may hit
185
+ // 4-images / 2-text or vice versa). Keeps multipart parsing
186
+ // bounded as defense in depth.
187
+ files: 6,
188
+ fields: 8,
189
+ },
190
+ attachFieldsToBody: false,
191
+ // Default `throwFileSizeLimit: true` makes the plugin throw
192
+ // RequestFileTooLargeError → Fastify renders a generic 413 with
193
+ // "Payload Too Large", losing our typed error code. Set false so
194
+ // the plugin instead marks `file.truncated: true` and lets our
195
+ // route handler decide the response shape.
196
+ throwFileSizeLimit: false,
197
+ });
198
+ await fastify.register(swagger, {
199
+ openapi: {
200
+ info: { title: "pi-forge API", version: "1.0.0" },
201
+ components: {
202
+ securitySchemes: {
203
+ bearerAuth: { type: "http", scheme: "bearer" },
204
+ },
205
+ },
206
+ security: [{ bearerAuth: [] }],
207
+ },
208
+ });
209
+ // Bootstrap script injected into the swagger UI page. Resolves an
210
+ // auth token in priority order — URL ?token=, then sessionStorage
211
+ // (set by an earlier visit), then localStorage["pi-forge/auth-
212
+ // token"] (the JWT the main UI persisted on login). Same-origin so
213
+ // the localStorage read is allowed. Then patches fetch() to attach
214
+ // the token as a Bearer header on every call swagger UI makes to
215
+ // /api/v1/*.
216
+ //
217
+ // Cleanup: if the token came from ?token=, strip it from the URL
218
+ // via history.replaceState so it doesn't sit in the URL bar /
219
+ // browser history. The sessionStorage stash is for in-tab nav only;
220
+ // closing the tab clears it.
221
+ //
222
+ // No-op when no token is found anywhere (e.g. unauthenticated
223
+ // visitor with auth disabled — fetch is left unpatched).
224
+ const swaggerThemeJs = `(function () {
225
+ try {
226
+ var url = new URL(window.location.href);
227
+ var qpToken = url.searchParams.get("token");
228
+ if (qpToken && qpToken.length > 0) {
229
+ sessionStorage.setItem("pi-forge/docs-token", qpToken);
230
+ url.searchParams.delete("token");
231
+ window.history.replaceState({}, document.title, url.toString());
232
+ }
233
+ var token =
234
+ sessionStorage.getItem("pi-forge/docs-token") ||
235
+ localStorage.getItem("pi-forge/auth-token");
236
+ if (token && window.fetch) {
237
+ var origFetch = window.fetch.bind(window);
238
+ window.fetch = function (input, init) {
239
+ init = init || {};
240
+ var url2 = typeof input === "string" ? input : input.url;
241
+ if (url2 && url2.indexOf("/api/v1/") !== -1) {
242
+ init.headers = new Headers(init.headers || {});
243
+ if (!init.headers.has("Authorization")) {
244
+ init.headers.set("Authorization", "Bearer " + token);
245
+ }
246
+ }
247
+ return origFetch(input, init);
248
+ };
249
+ }
250
+ } catch (err) {
251
+ console.warn("pi-forge docs auth bootstrap failed:", err);
252
+ }
253
+ })();`;
254
+ await fastify.register(swaggerUi, {
255
+ routePrefix: "/api/docs",
256
+ uiConfig: { docExpansion: "list", persistAuthorization: true },
257
+ theme: {
258
+ js: [{ filename: "pi-forge-auth.js", content: swaggerThemeJs }],
259
+ },
260
+ });
261
+ /**
262
+ * Auth gate. Applies to:
263
+ * - All `/api/v1/*` routes that are NOT marked `config.public: true`
264
+ * (those are health, auth/login, auth/status — see route definitions).
265
+ * - `/api/docs*` — the OpenAPI UI and JSON spec leak the route catalogue,
266
+ * so they are gated when auth is enabled. (Closes the Phase-8 deferred
267
+ * item.) When auth is disabled (UI_PASSWORD and API_KEY both unset),
268
+ * /api/docs is open — useful for local dev.
269
+ *
270
+ * Token check: accepts a valid JWT or a constant-time-matched API key.
271
+ */
272
+ fastify.addHook("onRequest", async (req, reply) => {
273
+ const url = req.url;
274
+ const path = url.split("?")[0] ?? url;
275
+ // /api/docs* gating — these are not Fastify-defined routes (they're
276
+ // injected by @fastify/swagger-ui) so we can't rely on route config.
277
+ // Three layered checks:
278
+ // 1. EXPOSE_DOCS=false → 404 unconditionally (production default).
279
+ // 2. Auth disabled + EXPOSE_DOCS=true → open (dev default).
280
+ // 3. Auth enabled → require a valid token even when docs are exposed.
281
+ const isDocs = path === "/api/docs" || path.startsWith("/api/docs/");
282
+ if (isDocs) {
283
+ if (!config.exposeDocs) {
284
+ reply.code(404).send({ error: "not_found" });
285
+ return;
286
+ }
287
+ // The /api/docs static UI (HTML / JS / CSS / OpenAPI spec) is
288
+ // open when EXPOSE_DOCS=true, regardless of auth. Browsers
289
+ // can't attach an Authorization header on top-level
290
+ // navigation, so gating the UI page itself on a Bearer header
291
+ // would 401 every logged-in user who hits /api/docs from a
292
+ // new tab. The route catalog the docs page exposes is the
293
+ // same one this project's CLAUDE.md / repo already publish, so
294
+ // the asset-level exposure is the same as before.
295
+ //
296
+ // Real protection lives at the actual API surface: every
297
+ // /api/v1/* call swagger UI makes still goes through the
298
+ // auth gate below. The injected theme bootstrap (see
299
+ // swaggerThemeJs) reads the JWT/API-key out of localStorage
300
+ // (same-origin) — or the one-shot ?token=<...> query param
301
+ // the Settings → "API Docs ↗" button passes — and injects
302
+ // it as a Bearer header on every fetch swagger UI issues.
303
+ return;
304
+ }
305
+ if (!path.startsWith("/api/v1/"))
306
+ return;
307
+ // Route-level public marker — set on health and auth routes via
308
+ // schema/config (see those route files).
309
+ const routeConfig = req.routeOptions?.config;
310
+ if (routeConfig?.public === true)
311
+ return;
312
+ if (!authEnabled())
313
+ return;
314
+ const presented = extractBearer(req.headers.authorization);
315
+ if (presented === undefined) {
316
+ reply.code(401).send({ error: "missing_token" });
317
+ return;
318
+ }
319
+ const tokenPayload = verifyToken(presented);
320
+ if (tokenPayload !== undefined) {
321
+ // Initial-login tokens (issued because the user authenticated
322
+ // with the env-supplied UI_PASSWORD and REQUIRE_PASSWORD_CHANGE
323
+ // is on) are scoped to the change-password endpoint only. Every
324
+ // other API call returns 403 with a stable code the client uses
325
+ // to render the change-password screen.
326
+ if (tokenPayload.mustChangePassword) {
327
+ reply.code(403).send({
328
+ error: "must_change_password",
329
+ message: "this token is scoped to POST /auth/change-password — change " +
330
+ "the initial password before calling other endpoints",
331
+ });
332
+ return;
333
+ }
334
+ return;
335
+ }
336
+ if (verifyApiKey(presented))
337
+ return;
338
+ reply.code(401).send({ error: "invalid_token" });
339
+ });
340
+ await fastify.register(async (api) => {
341
+ await api.register(healthRoutes);
342
+ await api.register(authRoutes);
343
+ await api.register(projectRoutes);
344
+ await api.register(sessionRoutes);
345
+ await api.register(streamRoutes);
346
+ await api.register(promptRoutes);
347
+ await api.register(controlRoutes);
348
+ await api.register(configRoutes);
349
+ await api.register(fileRoutes);
350
+ await api.register(gitRoutes);
351
+ await api.register(execRoutes);
352
+ await api.register(mcpRoutes);
353
+ await api.register(terminalRoutes);
354
+ }, { prefix: "/api/v1" });
355
+ // ---- static client (production) ----
356
+ // In Docker / `npm run build && node dist/index.js`, Fastify serves the
357
+ // Vite build directly so the whole app runs on a single port. In dev,
358
+ // Vite owns :5173 and proxies to us, so we skip this when the dist
359
+ // directory doesn't exist (or `SERVE_CLIENT=false`).
360
+ //
361
+ // SPA fallback: any non-/api/* GET that didn't match a static asset
362
+ // returns `index.html` so the React Router-less hash-free URLs (e.g.
363
+ // bookmarked deep links) hydrate the SPA instead of 404ing.
364
+ if (config.serveClient && existsSync(config.clientDistPath)) {
365
+ // onSend hook tags the right Cache-Control by request path. Doing it
366
+ // here (rather than @fastify/static's `setHeaders`) is reliable because
367
+ // it runs after the static plugin sets its default `max-age=0`, so we
368
+ // overwrite cleanly. /assets/ paths are content-addressed by Vite, so
369
+ // they're year-long immutable; index.html (which is what / and any
370
+ // SPA-fallback path returns) must always revalidate so a fresh deploy
371
+ // lands on the next reload.
372
+ fastify.addHook("onSend", async (req, reply) => {
373
+ const path = req.url.split("?")[0] ?? req.url;
374
+ // API responses already control their own caching headers (or
375
+ // intentionally don't); skip the static-asset branching for them.
376
+ if (path.startsWith("/api/"))
377
+ return;
378
+ if (path.startsWith("/assets/")) {
379
+ reply.header("Cache-Control", "public, max-age=31536000, immutable");
380
+ }
381
+ else if (reply.getHeader("content-type")?.toString().startsWith("text/html") === true) {
382
+ reply.header("Cache-Control", "no-cache");
383
+ }
384
+ });
385
+ await fastify.register(fastifyStatic, {
386
+ root: config.clientDistPath,
387
+ index: "index.html",
388
+ });
389
+ fastify.setNotFoundHandler((req, reply) => {
390
+ const path = req.url.split("?")[0] ?? req.url;
391
+ // The API surface explicitly 404s — never fall through to the SPA.
392
+ if (path.startsWith("/api/")) {
393
+ return reply.code(404).send({ error: "not_found" });
394
+ }
395
+ // SPA fallback: bare GETs without a file extension are deep links
396
+ // (/projects/abc, /sessions/xyz). Anything with an extension that
397
+ // got here is a missing static asset and should 404 honestly so
398
+ // the browser surfaces it instead of silently rendering the shell.
399
+ const lastSegment = path.split("/").pop() ?? "";
400
+ const looksLikeAsset = lastSegment.includes(".");
401
+ if (req.method !== "GET" || looksLikeAsset) {
402
+ return reply.code(404).send({ error: "not_found" });
403
+ }
404
+ return reply.code(200).type("text/html").sendFile("index.html");
405
+ });
406
+ fastify.log.info({ root: config.clientDistPath }, "serving client from disk");
407
+ }
408
+ else {
409
+ fastify.log.info({ dist: config.clientDistPath, exists: existsSync(config.clientDistPath) }, "client dist not served (dev mode or SERVE_CLIENT=false)");
410
+ }
411
+ // Clean teardown on fastify.close() (called by both graceful shutdown and
412
+ // tests via `await fastify.close()`). Disposes every live session, which
413
+ // will also become load-bearing in Phase 5 to flush SSE clients.
414
+ fastify.addHook("onClose", async () => {
415
+ await disposeAllSessions();
416
+ disposeAllPtys();
417
+ await disposeAllMcp();
418
+ });
419
+ // Boot-time MCP load. Eagerly connects every enabled GLOBAL server
420
+ // so /mcp/settings reports honest connection counts before the
421
+ // first session is created. Project-scope servers load lazily on
422
+ // first session-create per project. Failure here is non-fatal —
423
+ // a bad mcp.json shouldn't keep pi-forge from booting.
424
+ loadGlobalMcp().catch((err) => {
425
+ fastify.log.error({ err }, "mcp: initial load failed");
426
+ });
427
+ return fastify;
428
+ }
429
+ export async function start() {
430
+ // Ensure the workspace + forge data dirs exist before anything
431
+ // tries to write under them. mkdir(recursive:true) is a no-op on an
432
+ // existing dir, so this is safe to run on every boot. We do NOT
433
+ // create PI_CONFIG_DIR — that's the SDK's territory and the SDK
434
+ // creates it itself on first auth/models read.
435
+ for (const dir of [config.workspacePath, config.forgeDataDir]) {
436
+ try {
437
+ await mkdir(dir, { recursive: true });
438
+ }
439
+ catch (err) {
440
+ // EACCES on `/workspace` (the legacy default) was the most common
441
+ // dev startup failure. Surface a clear hint instead of letting
442
+ // Fastify start in a broken state.
443
+ console.error(`[pi-forge] failed to create directory ${dir}:`, err.message);
444
+ console.error(`[pi-forge] hint: set WORKSPACE_PATH/FORGE_DATA_DIR to a writable location`);
445
+ process.exit(1);
446
+ }
447
+ }
448
+ const fastify = await buildServer();
449
+ // One-line confirmation of optional security knobs that are easy to
450
+ // typo or forget to wire through. If you add another opt-in
451
+ // behavioral toggle here, log its state too — operators should be
452
+ // able to grep container logs for the answer to "did my env var
453
+ // take effect" without sending a test prompt.
454
+ logSecretHygieneState();
455
+ try {
456
+ await fastify.listen({ port: config.port, host: config.host });
457
+ fastify.log.info(`pi-forge server listening on :${config.port}`);
458
+ }
459
+ catch (err) {
460
+ fastify.log.error(err);
461
+ process.exit(1);
462
+ }
463
+ }
464
+ const isMainModule = process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href;
465
+ if (isMainModule) {
466
+ void start();
467
+ }
468
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}