pi-outpost 0.6.0 → 0.6.2

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 (100) hide show
  1. package/dist/pi-outpost.mjs +88 -4
  2. package/dist/pi-outpost.sea.mjs +88 -4
  3. package/dist/sea-prep.blob +0 -0
  4. package/dist/web/assets/{abnfDiagram-VRR7QNED-Ddbaevlx.js → abnfDiagram-VRR7QNED-H5_VO-B1.js} +1 -1
  5. package/dist/web/assets/{arc-DKRCl6TA.js → arc-CE2zETyi.js} +1 -1
  6. package/dist/web/assets/architecture-TIHT7OUA-quq76HPk.js +1 -0
  7. package/dist/web/assets/{architectureDiagram-ZJ3FMSHR-9NxjIUZS.js → architectureDiagram-ZJ3FMSHR-CIvYQchB.js} +1 -1
  8. package/dist/web/assets/{blockDiagram-677ZJIJ3-RZPAuAVe.js → blockDiagram-677ZJIJ3-DGQEZrPB.js} +1 -1
  9. package/dist/web/assets/{c4Diagram-LMCZKHZV-CtnM3Ckx.js → c4Diagram-LMCZKHZV-BirInSYC.js} +1 -1
  10. package/dist/web/assets/channel-CZQNpXwJ.js +1 -0
  11. package/dist/web/assets/{chunk-32BRIVSS-QnUqBdzD.js → chunk-32BRIVSS-B7fJk0ll.js} +1 -1
  12. package/dist/web/assets/{chunk-52WLFC77-EpnBnafN.js → chunk-52WLFC77-C56wZyRg.js} +1 -1
  13. package/dist/web/assets/{chunk-C7G6YPKG--UKrostC.js → chunk-C7G6YPKG-BVEnGhWm.js} +1 -1
  14. package/dist/web/assets/{chunk-EX3LRPZG-Ce4UE9ek.js → chunk-EX3LRPZG-qrTscY2a.js} +1 -1
  15. package/dist/web/assets/{chunk-FWX5IMBZ-CpoeAqxN.js → chunk-FWX5IMBZ-DE1AOCYK.js} +2 -2
  16. package/dist/web/assets/{chunk-HOUHSVGY-C_0OHgvt.js → chunk-HOUHSVGY-ByqVYtdv.js} +1 -1
  17. package/dist/web/assets/{chunk-ICXQ74PX-BuQxyBm4.js → chunk-ICXQ74PX-DXqI_eYD.js} +1 -1
  18. package/dist/web/assets/{chunk-MOJQB5TN-nQbQpJtl.js → chunk-MOJQB5TN-CtF6fAD2.js} +1 -1
  19. package/dist/web/assets/{chunk-OGEWGWER-qmp8nYAi.js → chunk-OGEWGWER-BN9LPPms.js} +1 -1
  20. package/dist/web/assets/{chunk-PUDLZKDR-CfrXFVaP.js → chunk-PUDLZKDR-W3AI4jJR.js} +1 -1
  21. package/dist/web/assets/{chunk-Q4XR5HBZ-B_ZVMZ1_.js → chunk-Q4XR5HBZ-DyN60MoF.js} +1 -1
  22. package/dist/web/assets/{chunk-RYQCIY6F-BNLDnl1E.js → chunk-RYQCIY6F-BasDWW7n.js} +1 -1
  23. package/dist/web/assets/{chunk-V7JOEXUC-CCJ4gaG4.js → chunk-V7JOEXUC-o82vAXi1.js} +1 -1
  24. package/dist/web/assets/{chunk-VAUOI2AC-DH_aJUsJ.js → chunk-VAUOI2AC-C9EyY67a.js} +1 -1
  25. package/dist/web/assets/{chunk-VR4S4FIN-BvhW0AYV.js → chunk-VR4S4FIN-CeQJxF3W.js} +1 -1
  26. package/dist/web/assets/{chunk-WYO6CB5R-BnZu-GH5.js → chunk-WYO6CB5R-krESB1wz.js} +3 -3
  27. package/dist/web/assets/{chunk-XXDRQBXY-CIhKgouH.js → chunk-XXDRQBXY-DwNOw26j.js} +1 -1
  28. package/dist/web/assets/{chunk-ZGVPDNZ5-CG5sR8Hi.js → chunk-ZGVPDNZ5-Ch60IWeh.js} +1 -1
  29. package/dist/web/assets/classDiagram-OUVF2IWQ-cofE0NaO.js +1 -0
  30. package/dist/web/assets/classDiagram-v2-EOCWNBFH-cofE0NaO.js +1 -0
  31. package/dist/web/assets/{core-DY7rIyDC.js → core-BYdjv-3f.js} +1 -1
  32. package/dist/web/assets/{cose-bilkent-JH36ORCC-Dr8iIC07.js → cose-bilkent-JH36ORCC-7oO-5ii0.js} +1 -1
  33. package/dist/web/assets/{cynefin-VYW2F7L2-Csc5Skqi.js → cynefin-VYW2F7L2-BXr0328D.js} +1 -1
  34. package/dist/web/assets/{cynefinDiagram-TSTJHNR4-sGiyDLSd.js → cynefinDiagram-TSTJHNR4-BjcrCkzf.js} +1 -1
  35. package/dist/web/assets/{dagre-VKFMJZFB-C5vxZhtT.js → dagre-VKFMJZFB-C6__cGMT.js} +1 -1
  36. package/dist/web/assets/{diagram-FQU43EPY-8B2nlFf4.js → diagram-FQU43EPY-Cv5jVU9J.js} +1 -1
  37. package/dist/web/assets/{diagram-G47NLZAW-C6vzPEqq.js → diagram-G47NLZAW-Cr471EU0.js} +1 -1
  38. package/dist/web/assets/{diagram-NH7WQ7WH-Cug03yLJ.js → diagram-NH7WQ7WH-goB_dq72.js} +1 -1
  39. package/dist/web/assets/{diagram-OA4YK3LP-CucHVkAE.js → diagram-OA4YK3LP-DmY1Aze_.js} +1 -1
  40. package/dist/web/assets/{diagram-WEI45ONY-CrS4YdfL.js → diagram-WEI45ONY-WkHev95e.js} +1 -1
  41. package/dist/web/assets/{dist-4WHbW7kW.js → dist-eoi0_oI4.js} +1 -1
  42. package/dist/web/assets/{ebnfDiagram-CCIWWBDH-CXGiUUds.js → ebnfDiagram-CCIWWBDH-9LnP4grp.js} +1 -1
  43. package/dist/web/assets/{erDiagram-Q63AITRT-By3BwsLJ.js → erDiagram-Q63AITRT-DLfvk9F1.js} +1 -1
  44. package/dist/web/assets/eventmodeling-45OFAUF4-B5yLU1sh.js +1 -0
  45. package/dist/web/assets/flowDiagram-23GEKE2U-YSOb8q4v.js +1 -0
  46. package/dist/web/assets/{ganttDiagram-NO4QXBWP-7cpdUdRJ.js → ganttDiagram-NO4QXBWP-BmevG3Zb.js} +1 -1
  47. package/dist/web/assets/{gitGraph-TEB2WS4Q-8uES_n1N.js → gitGraph-TEB2WS4Q-DJhMk0an.js} +1 -1
  48. package/dist/web/assets/{gitGraphDiagram-IHSO6WYX-5Ob04v9V.js → gitGraphDiagram-IHSO6WYX-m9L6aHPB.js} +1 -1
  49. package/dist/web/assets/index-B1kaPMNw.css +2 -0
  50. package/dist/web/assets/{index-DpbRLjEE.js → index-CATcFyvk.js} +7 -7
  51. package/dist/web/assets/{info-DKCQHKI2-CwnMgns7.js → info-DKCQHKI2-B4Vc-IRj.js} +1 -1
  52. package/dist/web/assets/{infoDiagram-FWYZ7A6U-ClO-D-F6.js → infoDiagram-FWYZ7A6U-Ba1fhnL8.js} +1 -1
  53. package/dist/web/assets/{ishikawaDiagram-FXEZZL3T-D-Ze2Ql8.js → ishikawaDiagram-FXEZZL3T-ChAwvE3-.js} +1 -1
  54. package/dist/web/assets/{journeyDiagram-5HDEW3XC-Tc3Wdzm9.js → journeyDiagram-5HDEW3XC-BirgNixk.js} +1 -1
  55. package/dist/web/assets/{kanban-definition-HUTT4EX6-CcVQNWZZ.js → kanban-definition-HUTT4EX6-Chp-drog.js} +1 -1
  56. package/dist/web/assets/{line-LCszX-93.js → line-D_9HoxN3.js} +1 -1
  57. package/dist/web/assets/{linear-D4uAB447.js → linear-DgrpbYUZ.js} +1 -1
  58. package/dist/web/assets/{mermaid-parser.core-DEPnbzQd.js → mermaid-parser.core-BqDBKvZM.js} +3 -3
  59. package/dist/web/assets/{mermaid.core-BwWIg80u.js → mermaid.core-BhqnioBn.js} +3 -3
  60. package/dist/web/assets/{mindmap-definition-LN4V7U3C-B0t31b8v.js → mindmap-definition-LN4V7U3C-JRUH2JOn.js} +1 -1
  61. package/dist/web/assets/{packet-7NZHBO7P-Cq4ml33w.js → packet-7NZHBO7P-BgUQPLIU.js} +1 -1
  62. package/dist/web/assets/{pegDiagram-2B236MQR-GehivSub.js → pegDiagram-2B236MQR-VvS6nn8t.js} +1 -1
  63. package/dist/web/assets/{pie-RZYD4A2V-hKQqRwR1.js → pie-RZYD4A2V-B2jlWZgR.js} +1 -1
  64. package/dist/web/assets/{pieDiagram-ENE6RG2P-Di20TWWF.js → pieDiagram-ENE6RG2P-BKW9rLOB.js} +1 -1
  65. package/dist/web/assets/{quadrantDiagram-ABIIQ3AL-BS2DM0o1.js → quadrantDiagram-ABIIQ3AL-VnibnYiD.js} +1 -1
  66. package/dist/web/assets/{radar-I7S5WNFK-DIelC7WS.js → radar-I7S5WNFK-DMqKgGE4.js} +1 -1
  67. package/dist/web/assets/{railroad-3IZDKUUU-BGqOpgb2.js → railroad-3IZDKUUU-CQISkGus.js} +1 -1
  68. package/dist/web/assets/railroad-abnf-AHOZXSZD-Cqb4QybP.js +1 -0
  69. package/dist/web/assets/railroad-ebnf-EBAXGLYW-B2HJhkLZ.js +1 -0
  70. package/dist/web/assets/railroad-peg-LSFZ7HO6-BAkQmUhL.js +1 -0
  71. package/dist/web/assets/{railroadDiagram-RFXS5EU6-JnUSd2SZ.js → railroadDiagram-RFXS5EU6-B2mmn-YE.js} +1 -1
  72. package/dist/web/assets/{requirementDiagram-TGXJPOKE-BOl8gS8C.js → requirementDiagram-TGXJPOKE-Dr95ZcIq.js} +1 -1
  73. package/dist/web/assets/{sankeyDiagram-HTMAVEWB-DcywXXIN.js → sankeyDiagram-HTMAVEWB-BdQaFrYL.js} +1 -1
  74. package/dist/web/assets/{sequenceDiagram-DBY2YBRQ-ONvF5cHm.js → sequenceDiagram-DBY2YBRQ-Bw4pvzkf.js} +1 -1
  75. package/dist/web/assets/{src-BuJdKDww.js → src-D_DMwmBd.js} +1 -1
  76. package/dist/web/assets/{stateDiagram-2N3HPSRC-xg3Onc8v.js → stateDiagram-2N3HPSRC-Q0qvHsf_.js} +1 -1
  77. package/dist/web/assets/stateDiagram-v2-6OUMAXLB-ChUyBpFH.js +1 -0
  78. package/dist/web/assets/{swimlanes-5IMT3BWC-DPJceuSw.js → swimlanes-5IMT3BWC-K22dJ96l.js} +1 -1
  79. package/dist/web/assets/swimlanesDiagram-G3AALYLV-0kss8Lg_.js +8 -0
  80. package/dist/web/assets/{timeline-definition-FHXFAJF6-4Q0cNBZa.js → timeline-definition-FHXFAJF6-DBnf2O5F.js} +1 -1
  81. package/dist/web/assets/{treeView-QDETBFTQ-BFyEFFDW.js → treeView-QDETBFTQ-vEgp8rG6.js} +1 -1
  82. package/dist/web/assets/{treemap-6X3UGDF4-CLak8Uij.js → treemap-6X3UGDF4-DTG5XbMU.js} +1 -1
  83. package/dist/web/assets/{vennDiagram-L72KCM5P-CnMeax8n.js → vennDiagram-L72KCM5P-yvzldEn_.js} +1 -1
  84. package/dist/web/assets/{wardley-OPB4EBWU-CUMtRrUi.js → wardley-OPB4EBWU-CiJqxxnE.js} +1 -1
  85. package/dist/web/assets/{wardleyDiagram-EHGQE667-CzFqvDxe.js → wardleyDiagram-EHGQE667-CGhW5qOc.js} +1 -1
  86. package/dist/web/assets/{xychartDiagram-FW5EYKEG-C86ZCbK8.js → xychartDiagram-FW5EYKEG-DuI96QQ9.js} +1 -1
  87. package/dist/web/index.html +2 -2
  88. package/package.json +1 -1
  89. package/dist/web/assets/architecture-TIHT7OUA-CXs7lqrB.js +0 -1
  90. package/dist/web/assets/channel-BRTsEjH0.js +0 -1
  91. package/dist/web/assets/classDiagram-OUVF2IWQ-oxDyX2ry.js +0 -1
  92. package/dist/web/assets/classDiagram-v2-EOCWNBFH-oxDyX2ry.js +0 -1
  93. package/dist/web/assets/eventmodeling-45OFAUF4-BBqgpOjt.js +0 -1
  94. package/dist/web/assets/flowDiagram-23GEKE2U-DUiF3T5Y.js +0 -1
  95. package/dist/web/assets/index-Bz_82pCM.css +0 -2
  96. package/dist/web/assets/railroad-abnf-AHOZXSZD-CY8YCNrM.js +0 -1
  97. package/dist/web/assets/railroad-ebnf-EBAXGLYW-DK8c1XBp.js +0 -1
  98. package/dist/web/assets/railroad-peg-LSFZ7HO6-3FkEERnx.js +0 -1
  99. package/dist/web/assets/stateDiagram-v2-6OUMAXLB-D1aOFa-9.js +0 -1
  100. package/dist/web/assets/swimlanesDiagram-G3AALYLV-BDD3cg35.js +0 -8
@@ -37152,6 +37152,15 @@ function loadConfig(launchDir, flags = {}, env2 = process.env) {
37152
37152
  fail(`sandbox.writableRoot does not exist: ${config2.sandbox.writableRoot}`);
37153
37153
  }
37154
37154
  }
37155
+ if (raw.sandboxLocks !== void 0) {
37156
+ const locks = asObject(raw.sandboxLocks, "sandboxLocks");
37157
+ config2.sandboxLocks = {
37158
+ root: optionalBoolean(locks, "root", false),
37159
+ allowWrite: optionalBoolean(locks, "allowWrite", false),
37160
+ allowBash: optionalBoolean(locks, "allowBash", false),
37161
+ writableRoot: optionalBoolean(locks, "writableRoot", false)
37162
+ };
37163
+ }
37155
37164
  config2.tools = optionalStringArray(raw, "tools");
37156
37165
  config2.noExtensions = optionalBoolean(raw, "noExtensions", false);
37157
37166
  config2.extensionPaths = (optionalStringArray(raw, "extensionPaths") ?? []).map(resolve2);
@@ -50569,7 +50578,8 @@ function searchSessions(sessions, query, limit) {
50569
50578
  var seaExtensionFactories = [];
50570
50579
 
50571
50580
  // ../server/src/index.ts
50572
- var VERSION2 = true ? "0.6.0" : "dev";
50581
+ var VERSION2 = true ? "0.6.2" : "dev";
50582
+ var PI_SDK_VERSION = true ? "0.80.9" : "dev";
50573
50583
  var LAUNCH_DIR = process.env.INIT_CWD ?? process.cwd();
50574
50584
  function complain(error) {
50575
50585
  const message = error instanceof Error ? error.message : String(error);
@@ -50766,6 +50776,10 @@ app.get("/files/raw", async (req, reply) => {
50766
50776
  });
50767
50777
  var hasIndexHtml = (candidate) => fs7.stat(path8.join(candidate, "index.html")).then((s) => s.isFile()).catch(() => false);
50768
50778
  var webDistCandidates = process.env.PI_OUTPOST_WEB_DIST ? [path8.resolve(process.env.PI_OUTPOST_WEB_DIST)] : [
50779
+ // Prefer the production build (Vite output) over the source web/ directory,
50780
+ // which contains a Vite-dev index.html referencing /src/main.tsx — that file
50781
+ // would be served as application/octet-stream and fail ESM module loading.
50782
+ path8.resolve(import.meta.dirname, "./web/dist"),
50769
50783
  path8.resolve(import.meta.dirname, "./web"),
50770
50784
  path8.resolve(import.meta.dirname, "../../web/dist")
50771
50785
  ];
@@ -50938,7 +50952,20 @@ function snapshot() {
50938
50952
  contextUsage: contextUsage(),
50939
50953
  writableRoot: WRITABLE_ROOT,
50940
50954
  gitAvailable: GIT !== null,
50941
- credentials: credentialStatus()
50955
+ credentials: credentialStatus(),
50956
+ extensionPaths: session.extensionRunner.getExtensionPaths(),
50957
+ versions: { piOutpost: VERSION2, piSdk: PI_SDK_VERSION },
50958
+ sandbox: (() => {
50959
+ const v2 = config.sandbox ? {
50960
+ root: config.sandbox.root,
50961
+ allowWrite: config.sandbox.allowWrite ?? false,
50962
+ allowBash: config.sandbox.allowBash ?? false,
50963
+ writableRoot: config.sandbox.writableRoot,
50964
+ locks: config.sandboxLocks
50965
+ } : void 0;
50966
+ console.log("[snapshot] sandbox =", JSON.stringify(v2));
50967
+ return v2;
50968
+ })()
50942
50969
  };
50943
50970
  }
50944
50971
  var clients = /* @__PURE__ */ new Set();
@@ -51172,13 +51199,19 @@ async function bindExtensionsForSession() {
51172
51199
  var pendingFileMutations = /* @__PURE__ */ new Map();
51173
51200
  async function announceFileChange(args) {
51174
51201
  const targetPath = args?.path;
51202
+ console.log("[announceFileChange] args type=", typeof args, "targetPath=", targetPath);
51175
51203
  if (typeof targetPath !== "string") return;
51176
51204
  try {
51177
51205
  const resolved = await realResolve(path8.resolve(BROWSER_ROOT, targetPath));
51178
- if (!isWithin(BROWSER_ROOT, resolved)) return;
51206
+ if (!isWithin(BROWSER_ROOT, resolved)) {
51207
+ console.log("[announceFileChange] not within BROWSER_ROOT, skipping");
51208
+ return;
51209
+ }
51179
51210
  const relPath = path8.relative(BROWSER_ROOT, resolved).split(path8.sep).join("/");
51211
+ console.log("[announceFileChange] broadcasting file_changed path=", relPath);
51180
51212
  broadcast({ type: "file_changed", path: relPath });
51181
- } catch {
51213
+ } catch (e) {
51214
+ console.log("[announceFileChange] error:", e);
51182
51215
  }
51183
51216
  }
51184
51217
  function bindSession() {
@@ -51321,6 +51354,45 @@ async function handleSetCredential(socket, provider, apiKey) {
51321
51354
  await runtime.services.modelRuntime.refresh();
51322
51355
  await adoptUsableModel(socket);
51323
51356
  }
51357
+ async function handleUpdateConfig(socket, newSandbox) {
51358
+ if (replacingSession) {
51359
+ send(socket, { type: "error", message: "Session change already in progress" });
51360
+ return;
51361
+ }
51362
+ const locks = config.sandboxLocks ?? {};
51363
+ const mergedSandbox = {
51364
+ root: locks.root ? config.sandbox.root : newSandbox.root,
51365
+ allowWrite: locks.allowWrite ? config.sandbox.allowWrite : newSandbox.allowWrite,
51366
+ allowBash: locks.allowBash ? config.sandbox.allowBash : newSandbox.allowBash,
51367
+ writableRoot: locks.writableRoot ? config.sandbox.writableRoot : newSandbox.writableRoot
51368
+ };
51369
+ replacingSession = true;
51370
+ try {
51371
+ config.sandbox = {
51372
+ root: mergedSandbox.root,
51373
+ allowWrite: mergedSandbox.allowWrite,
51374
+ allowBash: mergedSandbox.allowBash,
51375
+ writableRoot: mergedSandbox.writableRoot,
51376
+ readExceptions: config.sandbox?.readExceptions ?? []
51377
+ };
51378
+ BROWSER_ROOT = await resolveBrowserRoot(config);
51379
+ WRITABLE_ROOT = await resolveWritableRoot(config, BROWSER_ROOT);
51380
+ GIT = await probeGit(BROWSER_ROOT);
51381
+ sandboxedTools = config.sandbox ? await createSandboxedTools(config.sandbox) : void 0;
51382
+ const { cancelled } = await runtime.newSession();
51383
+ if (!cancelled) await rebindAndAnnounce();
51384
+ } catch (error) {
51385
+ reportError(error);
51386
+ try {
51387
+ const { cancelled } = await runtime.newSession();
51388
+ if (!cancelled) await rebindAndAnnounce();
51389
+ } catch (recoveryError) {
51390
+ reportError(recoveryError);
51391
+ }
51392
+ } finally {
51393
+ replacingSession = false;
51394
+ }
51395
+ }
51324
51396
  async function handleDeclareProvider(socket, declaration) {
51325
51397
  try {
51326
51398
  runtime.services.modelRuntime.registerProvider(declaration.provider, providerConfig(declaration));
@@ -51857,6 +51929,18 @@ function handleClientMessage(socket, raw) {
51857
51929
  ...message.compat ? { compat: message.compat } : {}
51858
51930
  }).catch(reportError);
51859
51931
  break;
51932
+ case "update_config": {
51933
+ if (config.sandbox === void 0) {
51934
+ send(socket, { type: "error", message: "No sandbox configured \u2014 cannot update" });
51935
+ return;
51936
+ }
51937
+ if (typeof message.sandbox?.root !== "string" || typeof message.sandbox.allowWrite !== "boolean" || typeof message.sandbox.allowBash !== "boolean" || message.sandbox.writableRoot !== void 0 && typeof message.sandbox.writableRoot !== "string") {
51938
+ send(socket, { type: "error", message: "Invalid sandbox config" });
51939
+ return;
51940
+ }
51941
+ handleUpdateConfig(socket, message.sandbox).catch(reportError);
51942
+ break;
51943
+ }
51860
51944
  }
51861
51945
  }
51862
51946
  handleWsConnection = (socket) => {
@@ -371721,6 +371721,15 @@ function loadConfig(launchDir, flags = {}, env4 = process.env) {
371721
371721
  fail2(`sandbox.writableRoot does not exist: ${config3.sandbox.writableRoot}`);
371722
371722
  }
371723
371723
  }
371724
+ if (raw.sandboxLocks !== void 0) {
371725
+ const locks = asObject(raw.sandboxLocks, "sandboxLocks");
371726
+ config3.sandboxLocks = {
371727
+ root: optionalBoolean(locks, "root", false),
371728
+ allowWrite: optionalBoolean(locks, "allowWrite", false),
371729
+ allowBash: optionalBoolean(locks, "allowBash", false),
371730
+ writableRoot: optionalBoolean(locks, "writableRoot", false)
371731
+ };
371732
+ }
371724
371733
  config3.tools = optionalStringArray(raw, "tools");
371725
371734
  config3.noExtensions = optionalBoolean(raw, "noExtensions", false);
371726
371735
  config3.extensionPaths = (optionalStringArray(raw, "extensionPaths") ?? []).map(resolve15);
@@ -372807,7 +372816,8 @@ function searchSessions(sessions, query, limit2) {
372807
372816
  var seaExtensionFactories = [];
372808
372817
 
372809
372818
  // ../server/src/index.ts
372810
- var VERSION6 = true ? "0.6.0" : "dev";
372819
+ var VERSION6 = true ? "0.6.2" : "dev";
372820
+ var PI_SDK_VERSION = true ? "0.80.9" : "dev";
372811
372821
  var LAUNCH_DIR = process.env.INIT_CWD ?? process.cwd();
372812
372822
  function complain(error40) {
372813
372823
  const message = error40 instanceof Error ? error40.message : String(error40);
@@ -373004,6 +373014,10 @@ app.get("/files/raw", async (req, reply) => {
373004
373014
  });
373005
373015
  var hasIndexHtml = (candidate) => fs17.stat(path22.join(candidate, "index.html")).then((s2) => s2.isFile()).catch(() => false);
373006
373016
  var webDistCandidates = process.env.PI_OUTPOST_WEB_DIST ? [path22.resolve(process.env.PI_OUTPOST_WEB_DIST)] : [
373017
+ // Prefer the production build (Vite output) over the source web/ directory,
373018
+ // which contains a Vite-dev index.html referencing /src/main.tsx — that file
373019
+ // would be served as application/octet-stream and fail ESM module loading.
373020
+ path22.resolve(import.meta.dirname, "./web/dist"),
373007
373021
  path22.resolve(import.meta.dirname, "./web"),
373008
373022
  path22.resolve(import.meta.dirname, "../../web/dist")
373009
373023
  ];
@@ -373176,7 +373190,20 @@ function snapshot() {
373176
373190
  contextUsage: contextUsage(),
373177
373191
  writableRoot: WRITABLE_ROOT,
373178
373192
  gitAvailable: GIT !== null,
373179
- credentials: credentialStatus()
373193
+ credentials: credentialStatus(),
373194
+ extensionPaths: session.extensionRunner.getExtensionPaths(),
373195
+ versions: { piOutpost: VERSION6, piSdk: PI_SDK_VERSION },
373196
+ sandbox: (() => {
373197
+ const v3 = config2.sandbox ? {
373198
+ root: config2.sandbox.root,
373199
+ allowWrite: config2.sandbox.allowWrite ?? false,
373200
+ allowBash: config2.sandbox.allowBash ?? false,
373201
+ writableRoot: config2.sandbox.writableRoot,
373202
+ locks: config2.sandboxLocks
373203
+ } : void 0;
373204
+ console.log("[snapshot] sandbox =", JSON.stringify(v3));
373205
+ return v3;
373206
+ })()
373180
373207
  };
373181
373208
  }
373182
373209
  var clients = /* @__PURE__ */ new Set();
@@ -373410,13 +373437,19 @@ async function bindExtensionsForSession() {
373410
373437
  var pendingFileMutations = /* @__PURE__ */ new Map();
373411
373438
  async function announceFileChange(args) {
373412
373439
  const targetPath = args?.path;
373440
+ console.log("[announceFileChange] args type=", typeof args, "targetPath=", targetPath);
373413
373441
  if (typeof targetPath !== "string") return;
373414
373442
  try {
373415
373443
  const resolved = await realResolve(path22.resolve(BROWSER_ROOT, targetPath));
373416
- if (!isWithin(BROWSER_ROOT, resolved)) return;
373444
+ if (!isWithin(BROWSER_ROOT, resolved)) {
373445
+ console.log("[announceFileChange] not within BROWSER_ROOT, skipping");
373446
+ return;
373447
+ }
373417
373448
  const relPath = path22.relative(BROWSER_ROOT, resolved).split(path22.sep).join("/");
373449
+ console.log("[announceFileChange] broadcasting file_changed path=", relPath);
373418
373450
  broadcast({ type: "file_changed", path: relPath });
373419
- } catch {
373451
+ } catch (e2) {
373452
+ console.log("[announceFileChange] error:", e2);
373420
373453
  }
373421
373454
  }
373422
373455
  function bindSession() {
@@ -373559,6 +373592,45 @@ async function handleSetCredential(socket, provider, apiKey) {
373559
373592
  await runtime.services.modelRuntime.refresh();
373560
373593
  await adoptUsableModel(socket);
373561
373594
  }
373595
+ async function handleUpdateConfig(socket, newSandbox) {
373596
+ if (replacingSession) {
373597
+ send(socket, { type: "error", message: "Session change already in progress" });
373598
+ return;
373599
+ }
373600
+ const locks = config2.sandboxLocks ?? {};
373601
+ const mergedSandbox = {
373602
+ root: locks.root ? config2.sandbox.root : newSandbox.root,
373603
+ allowWrite: locks.allowWrite ? config2.sandbox.allowWrite : newSandbox.allowWrite,
373604
+ allowBash: locks.allowBash ? config2.sandbox.allowBash : newSandbox.allowBash,
373605
+ writableRoot: locks.writableRoot ? config2.sandbox.writableRoot : newSandbox.writableRoot
373606
+ };
373607
+ replacingSession = true;
373608
+ try {
373609
+ config2.sandbox = {
373610
+ root: mergedSandbox.root,
373611
+ allowWrite: mergedSandbox.allowWrite,
373612
+ allowBash: mergedSandbox.allowBash,
373613
+ writableRoot: mergedSandbox.writableRoot,
373614
+ readExceptions: config2.sandbox?.readExceptions ?? []
373615
+ };
373616
+ BROWSER_ROOT = await resolveBrowserRoot(config2);
373617
+ WRITABLE_ROOT = await resolveWritableRoot(config2, BROWSER_ROOT);
373618
+ GIT = await probeGit(BROWSER_ROOT);
373619
+ sandboxedTools = config2.sandbox ? await createSandboxedTools(config2.sandbox) : void 0;
373620
+ const { cancelled } = await runtime.newSession();
373621
+ if (!cancelled) await rebindAndAnnounce();
373622
+ } catch (error40) {
373623
+ reportError(error40);
373624
+ try {
373625
+ const { cancelled } = await runtime.newSession();
373626
+ if (!cancelled) await rebindAndAnnounce();
373627
+ } catch (recoveryError) {
373628
+ reportError(recoveryError);
373629
+ }
373630
+ } finally {
373631
+ replacingSession = false;
373632
+ }
373633
+ }
373562
373634
  async function handleDeclareProvider(socket, declaration) {
373563
373635
  try {
373564
373636
  runtime.services.modelRuntime.registerProvider(declaration.provider, providerConfig(declaration));
@@ -374095,6 +374167,18 @@ function handleClientMessage(socket, raw) {
374095
374167
  ...message.compat ? { compat: message.compat } : {}
374096
374168
  }).catch(reportError);
374097
374169
  break;
374170
+ case "update_config": {
374171
+ if (config2.sandbox === void 0) {
374172
+ send(socket, { type: "error", message: "No sandbox configured \u2014 cannot update" });
374173
+ return;
374174
+ }
374175
+ if (typeof message.sandbox?.root !== "string" || typeof message.sandbox.allowWrite !== "boolean" || typeof message.sandbox.allowBash !== "boolean" || message.sandbox.writableRoot !== void 0 && typeof message.sandbox.writableRoot !== "string") {
374176
+ send(socket, { type: "error", message: "Invalid sandbox config" });
374177
+ return;
374178
+ }
374179
+ handleUpdateConfig(socket, message.sandbox).catch(reportError);
374180
+ break;
374181
+ }
374098
374182
  }
374099
374183
  }
374100
374184
  handleWsConnection = (socket) => {
Binary file
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-DEPnbzQd.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-BuJdKDww.js";import"./chunk-WYO6CB5R-BnZu-GH5.js";import"./chunk-VAUOI2AC-DH_aJUsJ.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-nQbQpJtl.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-BqDBKvZM.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-D_DMwmBd.js";import"./chunk-WYO6CB5R-krESB1wz.js";import"./chunk-VAUOI2AC-C9EyY67a.js";import{n as i,r as a,t as o}from"./chunk-MOJQB5TN-CtF6fAD2.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -1 +1 @@
1
- import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-4WHbW7kW.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
1
+ import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-eoi0_oI4.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -0,0 +1 @@
1
+ import"./chunk-KEIR6QF5-BfrZ3jm6.js";import{M as e}from"./mermaid-parser.core-BqDBKvZM.js";export{e as createArchitectureServices};