pi-outpost 0.5.7 → 0.6.1

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 +95 -5
  2. package/dist/pi-outpost.sea.mjs +374327 -0
  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
@@ -36973,7 +36973,8 @@ import {
36973
36973
  createAgentSessionRuntime,
36974
36974
  createAgentSessionServices,
36975
36975
  getAgentDir as getAgentDir2,
36976
- SessionManager
36976
+ SessionManager,
36977
+ VERSION as PI_SDK_VERSION
36977
36978
  } from "@earendil-works/pi-coding-agent";
36978
36979
 
36979
36980
  // ../shared/src/protocol.ts
@@ -37152,6 +37153,15 @@ function loadConfig(launchDir, flags = {}, env2 = process.env) {
37152
37153
  fail(`sandbox.writableRoot does not exist: ${config2.sandbox.writableRoot}`);
37153
37154
  }
37154
37155
  }
37156
+ if (raw.sandboxLocks !== void 0) {
37157
+ const locks = asObject(raw.sandboxLocks, "sandboxLocks");
37158
+ config2.sandboxLocks = {
37159
+ root: optionalBoolean(locks, "root", false),
37160
+ allowWrite: optionalBoolean(locks, "allowWrite", false),
37161
+ allowBash: optionalBoolean(locks, "allowBash", false),
37162
+ writableRoot: optionalBoolean(locks, "writableRoot", false)
37163
+ };
37164
+ }
37155
37165
  config2.tools = optionalStringArray(raw, "tools");
37156
37166
  config2.noExtensions = optionalBoolean(raw, "noExtensions", false);
37157
37167
  config2.extensionPaths = (optionalStringArray(raw, "extensionPaths") ?? []).map(resolve2);
@@ -50569,7 +50579,7 @@ function searchSessions(sessions, query, limit) {
50569
50579
  var seaExtensionFactories = [];
50570
50580
 
50571
50581
  // ../server/src/index.ts
50572
- var VERSION2 = true ? "0.5.7" : "dev";
50582
+ var VERSION2 = true ? "0.6.1" : "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);
@@ -50790,6 +50800,8 @@ var WEB_UI_CONTEXT = [
50790
50800
  "Images in the workspace (including ones you create) display inline in the conversation when referenced with a relative path: ![plot](./plot.png). Prefer showing an image that way over describing it.",
50791
50801
  "Avoid terminal-only affordances: no 'open this file in your editor' or 'run this command to view' phrasing, no ASCII art where a mermaid diagram or an image file works better."
50792
50802
  ].join("\n");
50803
+ var DEBUG = process.env.PI_OUTPOST_DEBUG ? console.log : () => {
50804
+ };
50793
50805
  var createRuntime = async ({
50794
50806
  cwd,
50795
50807
  sessionManager,
@@ -50819,6 +50831,14 @@ var createRuntime = async ({
50819
50831
  ...extraFactories.length > 0 ? { extensionFactories: extraFactories } : {}
50820
50832
  }
50821
50833
  });
50834
+ const extResult = services.resourceLoader.getExtensions();
50835
+ if (extResult.errors.length > 0) {
50836
+ for (const err of extResult.errors) {
50837
+ console.error("[pi-outpost] Extension error:", err.path, err.error);
50838
+ }
50839
+ } else {
50840
+ DEBUG("[pi-outpost] No extension errors. Loaded:", extResult.extensions.length, "extensions");
50841
+ }
50822
50842
  return {
50823
50843
  ...await createAgentSessionFromServices({
50824
50844
  services,
@@ -50928,7 +50948,20 @@ function snapshot() {
50928
50948
  contextUsage: contextUsage(),
50929
50949
  writableRoot: WRITABLE_ROOT,
50930
50950
  gitAvailable: GIT !== null,
50931
- credentials: credentialStatus()
50951
+ credentials: credentialStatus(),
50952
+ extensionPaths: session.extensionRunner.getExtensionPaths(),
50953
+ versions: { piOutpost: VERSION2, piSdk: PI_SDK_VERSION },
50954
+ sandbox: (() => {
50955
+ const v2 = config.sandbox ? {
50956
+ root: config.sandbox.root,
50957
+ allowWrite: config.sandbox.allowWrite ?? false,
50958
+ allowBash: config.sandbox.allowBash ?? false,
50959
+ writableRoot: config.sandbox.writableRoot,
50960
+ locks: config.sandboxLocks
50961
+ } : void 0;
50962
+ console.log("[snapshot] sandbox =", JSON.stringify(v2));
50963
+ return v2;
50964
+ })()
50932
50965
  };
50933
50966
  }
50934
50967
  var clients = /* @__PURE__ */ new Set();
@@ -51162,13 +51195,19 @@ async function bindExtensionsForSession() {
51162
51195
  var pendingFileMutations = /* @__PURE__ */ new Map();
51163
51196
  async function announceFileChange(args) {
51164
51197
  const targetPath = args?.path;
51198
+ console.log("[announceFileChange] args type=", typeof args, "targetPath=", targetPath);
51165
51199
  if (typeof targetPath !== "string") return;
51166
51200
  try {
51167
51201
  const resolved = await realResolve(path8.resolve(BROWSER_ROOT, targetPath));
51168
- if (!isWithin(BROWSER_ROOT, resolved)) return;
51202
+ if (!isWithin(BROWSER_ROOT, resolved)) {
51203
+ console.log("[announceFileChange] not within BROWSER_ROOT, skipping");
51204
+ return;
51205
+ }
51169
51206
  const relPath = path8.relative(BROWSER_ROOT, resolved).split(path8.sep).join("/");
51207
+ console.log("[announceFileChange] broadcasting file_changed path=", relPath);
51170
51208
  broadcast({ type: "file_changed", path: relPath });
51171
- } catch {
51209
+ } catch (e) {
51210
+ console.log("[announceFileChange] error:", e);
51172
51211
  }
51173
51212
  }
51174
51213
  function bindSession() {
@@ -51311,6 +51350,45 @@ async function handleSetCredential(socket, provider, apiKey) {
51311
51350
  await runtime.services.modelRuntime.refresh();
51312
51351
  await adoptUsableModel(socket);
51313
51352
  }
51353
+ async function handleUpdateConfig(socket, newSandbox) {
51354
+ if (replacingSession) {
51355
+ send(socket, { type: "error", message: "Session change already in progress" });
51356
+ return;
51357
+ }
51358
+ const locks = config.sandboxLocks ?? {};
51359
+ const mergedSandbox = {
51360
+ root: locks.root ? config.sandbox.root : newSandbox.root,
51361
+ allowWrite: locks.allowWrite ? config.sandbox.allowWrite : newSandbox.allowWrite,
51362
+ allowBash: locks.allowBash ? config.sandbox.allowBash : newSandbox.allowBash,
51363
+ writableRoot: locks.writableRoot ? config.sandbox.writableRoot : newSandbox.writableRoot
51364
+ };
51365
+ replacingSession = true;
51366
+ try {
51367
+ config.sandbox = {
51368
+ root: mergedSandbox.root,
51369
+ allowWrite: mergedSandbox.allowWrite,
51370
+ allowBash: mergedSandbox.allowBash,
51371
+ writableRoot: mergedSandbox.writableRoot,
51372
+ readExceptions: config.sandbox?.readExceptions ?? []
51373
+ };
51374
+ BROWSER_ROOT = await resolveBrowserRoot(config);
51375
+ WRITABLE_ROOT = await resolveWritableRoot(config, BROWSER_ROOT);
51376
+ GIT = await probeGit(BROWSER_ROOT);
51377
+ sandboxedTools = config.sandbox ? await createSandboxedTools(config.sandbox) : void 0;
51378
+ const { cancelled } = await runtime.newSession();
51379
+ if (!cancelled) await rebindAndAnnounce();
51380
+ } catch (error) {
51381
+ reportError(error);
51382
+ try {
51383
+ const { cancelled } = await runtime.newSession();
51384
+ if (!cancelled) await rebindAndAnnounce();
51385
+ } catch (recoveryError) {
51386
+ reportError(recoveryError);
51387
+ }
51388
+ } finally {
51389
+ replacingSession = false;
51390
+ }
51391
+ }
51314
51392
  async function handleDeclareProvider(socket, declaration) {
51315
51393
  try {
51316
51394
  runtime.services.modelRuntime.registerProvider(declaration.provider, providerConfig(declaration));
@@ -51847,6 +51925,18 @@ function handleClientMessage(socket, raw) {
51847
51925
  ...message.compat ? { compat: message.compat } : {}
51848
51926
  }).catch(reportError);
51849
51927
  break;
51928
+ case "update_config": {
51929
+ if (config.sandbox === void 0) {
51930
+ send(socket, { type: "error", message: "No sandbox configured \u2014 cannot update" });
51931
+ return;
51932
+ }
51933
+ 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") {
51934
+ send(socket, { type: "error", message: "Invalid sandbox config" });
51935
+ return;
51936
+ }
51937
+ handleUpdateConfig(socket, message.sandbox).catch(reportError);
51938
+ break;
51939
+ }
51850
51940
  }
51851
51941
  }
51852
51942
  handleWsConnection = (socket) => {