pi-forge 1.1.4 → 1.1.5

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 (97) hide show
  1. package/README.md +1 -1
  2. package/bin/fix-pty-perms.mjs +69 -0
  3. package/dist/client/assets/CodeMirrorEditor-EHkmefTD.js +50 -0
  4. package/dist/client/assets/CodeMirrorEditor-EHkmefTD.js.map +1 -0
  5. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  6. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  7. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  8. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  9. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  12. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  13. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  14. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  15. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  18. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  19. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  20. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  21. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  22. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  23. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  24. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  25. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  26. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  27. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  28. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  29. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  30. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  31. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  32. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  33. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  34. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  35. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  36. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  37. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  38. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  39. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  45. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  46. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  47. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  48. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  49. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  50. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  51. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  52. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  53. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  54. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  55. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  56. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  57. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  58. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  59. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  60. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  61. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  62. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  63. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  64. package/dist/client/assets/index-5KN1PFqY.css +1 -0
  65. package/dist/client/assets/index-B0ffzJ0t.js +356 -0
  66. package/dist/client/assets/index-B0ffzJ0t.js.map +1 -0
  67. package/dist/client/assets/workbox-window.prod.es5-Cch4wiA5.js +3 -0
  68. package/dist/client/assets/workbox-window.prod.es5-Cch4wiA5.js.map +1 -0
  69. package/dist/client/index.html +2 -2
  70. package/dist/client/sw.js +1 -1
  71. package/dist/client/sw.js.map +1 -1
  72. package/dist/server/agent-resource-loader.js +1 -1
  73. package/dist/server/agent-resource-loader.js.map +1 -1
  74. package/dist/server/config-manager.js +8 -5
  75. package/dist/server/config-manager.js.map +1 -1
  76. package/dist/server/extensions-discovery.js +1 -1
  77. package/dist/server/extensions-discovery.js.map +1 -1
  78. package/dist/server/file-manager.js +19 -1
  79. package/dist/server/file-manager.js.map +1 -1
  80. package/dist/server/file-references.js +124 -29
  81. package/dist/server/file-references.js.map +1 -1
  82. package/dist/server/routes/config.js +37 -5
  83. package/dist/server/routes/config.js.map +1 -1
  84. package/dist/server/routes/health.js +38 -13
  85. package/dist/server/routes/health.js.map +1 -1
  86. package/dist/server/session-registry.js +2 -2
  87. package/dist/server/session-registry.js.map +1 -1
  88. package/dist/server/turn-diff-builder.js +1 -1
  89. package/dist/server/turn-diff-builder.js.map +1 -1
  90. package/package.json +7 -4
  91. package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js +0 -34
  92. package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js.map +0 -1
  93. package/dist/client/assets/index-B-529kgJ.css +0 -32
  94. package/dist/client/assets/index-BzKzxXFs.js +0 -392
  95. package/dist/client/assets/index-BzKzxXFs.js.map +0 -1
  96. package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js +0 -3
  97. package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js.map +0 -1
package/README.md CHANGED
@@ -42,7 +42,7 @@ for the full surface and example curl flows.
42
42
 
43
43
  ## Versioning
44
44
 
45
- This package version (`1.1.4`) tracks the [GitHub release](https://github.com/Devin-Marks/pi-forge/releases)
45
+ This package version (`1.1.5`) tracks the [GitHub release](https://github.com/Devin-Marks/pi-forge/releases)
46
46
  of the same name. Docker images and the npm package are published in
47
47
  lockstep on each `v*` tag.
48
48
 
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * pi-forge postinstall: ensure node-pty's prebuilt `spawn-helper`
4
+ * binaries are executable.
5
+ *
6
+ * The bug: `node-pty` ships prebuilt native binaries at
7
+ * `node_modules/node-pty/prebuilds/<platform>/spawn-helper`
8
+ * The tarball's mode bits don't always survive npm's tar extract —
9
+ * fresh installs frequently land `spawn-helper` at `0644` with no
10
+ * exec bit. When pi-forge later spawns a PTY, `posix_spawnp` fails
11
+ * with the unhelpful "spawn EACCES" or "posix_spawnp failed."
12
+ *
13
+ * `node-pty`'s own postinstall script handles the from-source-built
14
+ * path (`build/Release/`) but NOT the prebuilt path (`prebuilds/`),
15
+ * so the bug ships on every npm-published install of pi-forge.
16
+ *
17
+ * Why this script lives in pi-forge and not upstream: the upstream
18
+ * fix would need to land in node-pty itself. Until then, every
19
+ * package that depends on node-pty needs its own postinstall to
20
+ * cover the gap. We pay one trivial chmod per install in exchange
21
+ * for the integrated terminal actually working.
22
+ *
23
+ * Idempotent: chmod +x on something already +x is a no-op.
24
+ * Failure-tolerant: missing node-pty (e.g. `--omit=optional`),
25
+ * missing prebuilds dir (unusual platform), or chmod failure
26
+ * (read-only mount, EPERM) all warn instead of failing the install.
27
+ */
28
+ import { chmodSync, existsSync, readdirSync, statSync } from "node:fs";
29
+ import { dirname, join } from "node:path";
30
+ import { createRequire } from "node:module";
31
+
32
+ const require = createRequire(import.meta.url);
33
+
34
+ let nodePtyDir;
35
+ try {
36
+ nodePtyDir = dirname(require.resolve("node-pty/package.json"));
37
+ } catch {
38
+ // node-pty not installed — no-op.
39
+ process.exit(0);
40
+ }
41
+
42
+ const prebuildsDir = join(nodePtyDir, "prebuilds");
43
+ if (!existsSync(prebuildsDir)) process.exit(0);
44
+
45
+ let fixed = 0;
46
+ for (const platform of readdirSync(prebuildsDir)) {
47
+ const helper = join(prebuildsDir, platform, "spawn-helper");
48
+ if (!existsSync(helper)) continue;
49
+ try {
50
+ const mode = statSync(helper).mode;
51
+ // 0o111 = any-x bits. If even one is set, assume the file is
52
+ // already runnable.
53
+ if ((mode & 0o111) !== 0) continue;
54
+ chmodSync(helper, mode | 0o755);
55
+ fixed++;
56
+ } catch (err) {
57
+ console.warn(
58
+ `[pi-forge postinstall] could not chmod ${helper}: ${err instanceof Error ? err.message : err}`,
59
+ );
60
+ }
61
+ }
62
+
63
+ if (fixed > 0) {
64
+ console.log(
65
+ `[pi-forge postinstall] fixed exec bit on ${fixed} node-pty spawn-helper binar${
66
+ fixed === 1 ? "y" : "ies"
67
+ }`,
68
+ );
69
+ }