@sandagent/daemon 0.9.7 → 0.9.9-beta.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/dist/nextjs.js CHANGED
@@ -74905,7 +74905,7 @@ var require_encodings = __commonJS({
74905
74905
  });
74906
74906
  return out;
74907
74907
  }
74908
- function formEncoder(sep6) {
74908
+ function formEncoder(sep7) {
74909
74909
  return (key, value2, options2) => {
74910
74910
  let out = "";
74911
74911
  const pairs = options2?.explode ? explode(key, value2) : [[key, value2]];
@@ -74916,7 +74916,7 @@ var require_encodings = __commonJS({
74916
74916
  return options2?.charEncoding === "percent" ? encodeURIComponent(v2) : v2;
74917
74917
  };
74918
74918
  const encodeValue = (v2) => encodeString(serializeValue(v2));
74919
- const encodedSep = encodeString(sep6);
74919
+ const encodedSep = encodeString(sep7);
74920
74920
  pairs.forEach(([pk, pv]) => {
74921
74921
  let tmp = "";
74922
74922
  let encValue = null;
@@ -164390,10 +164390,10 @@ var require_resolve_block_map = __commonJS({
164390
164390
  let offset = bm.offset;
164391
164391
  let commentEnd = null;
164392
164392
  for (const collItem of bm.items) {
164393
- const { start, key, sep: sep6, value: value2 } = collItem;
164393
+ const { start, key, sep: sep7, value: value2 } = collItem;
164394
164394
  const keyProps = resolveProps.resolveProps(start, {
164395
164395
  indicator: "explicit-key-ind",
164396
- next: key ?? sep6?.[0],
164396
+ next: key ?? sep7?.[0],
164397
164397
  offset,
164398
164398
  onError: onError2,
164399
164399
  parentIndent: bm.indent,
@@ -164407,7 +164407,7 @@ var require_resolve_block_map = __commonJS({
164407
164407
  else if ("indent" in key && key.indent !== bm.indent)
164408
164408
  onError2(offset, "BAD_INDENT", startColMsg);
164409
164409
  }
164410
- if (!keyProps.anchor && !keyProps.tag && !sep6) {
164410
+ if (!keyProps.anchor && !keyProps.tag && !sep7) {
164411
164411
  commentEnd = keyProps.end;
164412
164412
  if (keyProps.comment) {
164413
164413
  if (map3.comment)
@@ -164431,7 +164431,7 @@ var require_resolve_block_map = __commonJS({
164431
164431
  ctx.atKey = false;
164432
164432
  if (utilMapIncludes.mapIncludes(ctx, map3.items, keyNode))
164433
164433
  onError2(keyStart, "DUPLICATE_KEY", "Map keys must be unique");
164434
- const valueProps = resolveProps.resolveProps(sep6 ?? [], {
164434
+ const valueProps = resolveProps.resolveProps(sep7 ?? [], {
164435
164435
  indicator: "map-value-ind",
164436
164436
  next: value2,
164437
164437
  offset: keyNode.range[2],
@@ -164447,7 +164447,7 @@ var require_resolve_block_map = __commonJS({
164447
164447
  if (ctx.options.strict && keyProps.start < valueProps.found.offset - 1024)
164448
164448
  onError2(keyNode.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key");
164449
164449
  }
164450
- const valueNode = value2 ? composeNode(ctx, value2, valueProps, onError2) : composeEmptyNode(ctx, offset, sep6, null, valueProps, onError2);
164450
+ const valueNode = value2 ? composeNode(ctx, value2, valueProps, onError2) : composeEmptyNode(ctx, offset, sep7, null, valueProps, onError2);
164451
164451
  if (ctx.schema.compat)
164452
164452
  utilFlowIndentCheck.flowIndentCheck(bm.indent, value2, onError2);
164453
164453
  offset = valueNode.range[2];
@@ -164538,7 +164538,7 @@ var require_resolve_end = __commonJS({
164538
164538
  let comment = "";
164539
164539
  if (end) {
164540
164540
  let hasSpace = false;
164541
- let sep6 = "";
164541
+ let sep7 = "";
164542
164542
  for (const token of end) {
164543
164543
  const { source, type } = token;
164544
164544
  switch (type) {
@@ -164552,13 +164552,13 @@ var require_resolve_end = __commonJS({
164552
164552
  if (!comment)
164553
164553
  comment = cb;
164554
164554
  else
164555
- comment += sep6 + cb;
164556
- sep6 = "";
164555
+ comment += sep7 + cb;
164556
+ sep7 = "";
164557
164557
  break;
164558
164558
  }
164559
164559
  case "newline":
164560
164560
  if (comment)
164561
- sep6 += source;
164561
+ sep7 += source;
164562
164562
  hasSpace = true;
164563
164563
  break;
164564
164564
  default:
@@ -164601,18 +164601,18 @@ var require_resolve_flow_collection = __commonJS({
164601
164601
  let offset = fc.offset + fc.start.source.length;
164602
164602
  for (let i2 = 0; i2 < fc.items.length; ++i2) {
164603
164603
  const collItem = fc.items[i2];
164604
- const { start, key, sep: sep6, value: value2 } = collItem;
164604
+ const { start, key, sep: sep7, value: value2 } = collItem;
164605
164605
  const props = resolveProps.resolveProps(start, {
164606
164606
  flow: fcName,
164607
164607
  indicator: "explicit-key-ind",
164608
- next: key ?? sep6?.[0],
164608
+ next: key ?? sep7?.[0],
164609
164609
  offset,
164610
164610
  onError: onError2,
164611
164611
  parentIndent: fc.indent,
164612
164612
  startOnNewline: false
164613
164613
  });
164614
164614
  if (!props.found) {
164615
- if (!props.anchor && !props.tag && !sep6 && !value2) {
164615
+ if (!props.anchor && !props.tag && !sep7 && !value2) {
164616
164616
  if (i2 === 0 && props.comma)
164617
164617
  onError2(props.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${fcName}`);
164618
164618
  else if (i2 < fc.items.length - 1)
@@ -164666,8 +164666,8 @@ var require_resolve_flow_collection = __commonJS({
164666
164666
  }
164667
164667
  }
164668
164668
  }
164669
- if (!isMap && !sep6 && !props.found) {
164670
- const valueNode = value2 ? composeNode(ctx, value2, props, onError2) : composeEmptyNode(ctx, props.end, sep6, null, props, onError2);
164669
+ if (!isMap && !sep7 && !props.found) {
164670
+ const valueNode = value2 ? composeNode(ctx, value2, props, onError2) : composeEmptyNode(ctx, props.end, sep7, null, props, onError2);
164671
164671
  coll.items.push(valueNode);
164672
164672
  offset = valueNode.range[2];
164673
164673
  if (isBlock(value2))
@@ -164679,7 +164679,7 @@ var require_resolve_flow_collection = __commonJS({
164679
164679
  if (isBlock(key))
164680
164680
  onError2(keyNode.range, "BLOCK_IN_FLOW", blockMsg);
164681
164681
  ctx.atKey = false;
164682
- const valueProps = resolveProps.resolveProps(sep6 ?? [], {
164682
+ const valueProps = resolveProps.resolveProps(sep7 ?? [], {
164683
164683
  flow: fcName,
164684
164684
  indicator: "map-value-ind",
164685
164685
  next: value2,
@@ -164690,8 +164690,8 @@ var require_resolve_flow_collection = __commonJS({
164690
164690
  });
164691
164691
  if (valueProps.found) {
164692
164692
  if (!isMap && !props.found && ctx.options.strict) {
164693
- if (sep6)
164694
- for (const st2 of sep6) {
164693
+ if (sep7)
164694
+ for (const st2 of sep7) {
164695
164695
  if (st2 === valueProps.found)
164696
164696
  break;
164697
164697
  if (st2.type === "newline") {
@@ -164708,7 +164708,7 @@ var require_resolve_flow_collection = __commonJS({
164708
164708
  else
164709
164709
  onError2(valueProps.start, "MISSING_CHAR", `Missing , or : between ${fcName} items`);
164710
164710
  }
164711
- const valueNode = value2 ? composeNode(ctx, value2, valueProps, onError2) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep6, null, valueProps, onError2) : null;
164711
+ const valueNode = value2 ? composeNode(ctx, value2, valueProps, onError2) : valueProps.found ? composeEmptyNode(ctx, valueProps.end, sep7, null, valueProps, onError2) : null;
164712
164712
  if (valueNode) {
164713
164713
  if (isBlock(value2))
164714
164714
  onError2(valueNode.range, "BLOCK_IN_FLOW", blockMsg);
@@ -164888,7 +164888,7 @@ var require_resolve_block_scalar = __commonJS({
164888
164888
  chompStart = i2 + 1;
164889
164889
  }
164890
164890
  let value2 = "";
164891
- let sep6 = "";
164891
+ let sep7 = "";
164892
164892
  let prevMoreIndented = false;
164893
164893
  for (let i2 = 0; i2 < contentStart; ++i2)
164894
164894
  value2 += lines[i2][0].slice(trimIndent) + "\n";
@@ -164905,24 +164905,24 @@ var require_resolve_block_scalar = __commonJS({
164905
164905
  indent = "";
164906
164906
  }
164907
164907
  if (type === Scalar.Scalar.BLOCK_LITERAL) {
164908
- value2 += sep6 + indent.slice(trimIndent) + content;
164909
- sep6 = "\n";
164908
+ value2 += sep7 + indent.slice(trimIndent) + content;
164909
+ sep7 = "\n";
164910
164910
  } else if (indent.length > trimIndent || content[0] === " ") {
164911
- if (sep6 === " ")
164912
- sep6 = "\n";
164913
- else if (!prevMoreIndented && sep6 === "\n")
164914
- sep6 = "\n\n";
164915
- value2 += sep6 + indent.slice(trimIndent) + content;
164916
- sep6 = "\n";
164911
+ if (sep7 === " ")
164912
+ sep7 = "\n";
164913
+ else if (!prevMoreIndented && sep7 === "\n")
164914
+ sep7 = "\n\n";
164915
+ value2 += sep7 + indent.slice(trimIndent) + content;
164916
+ sep7 = "\n";
164917
164917
  prevMoreIndented = true;
164918
164918
  } else if (content === "") {
164919
- if (sep6 === "\n")
164919
+ if (sep7 === "\n")
164920
164920
  value2 += "\n";
164921
164921
  else
164922
- sep6 = "\n";
164922
+ sep7 = "\n";
164923
164923
  } else {
164924
- value2 += sep6 + content;
164925
- sep6 = " ";
164924
+ value2 += sep7 + content;
164925
+ sep7 = " ";
164926
164926
  prevMoreIndented = false;
164927
164927
  }
164928
164928
  }
@@ -165104,25 +165104,25 @@ var require_resolve_flow_scalar = __commonJS({
165104
165104
  if (!match2)
165105
165105
  return source;
165106
165106
  let res = match2[1];
165107
- let sep6 = " ";
165107
+ let sep7 = " ";
165108
165108
  let pos = first.lastIndex;
165109
165109
  line.lastIndex = pos;
165110
165110
  while (match2 = line.exec(source)) {
165111
165111
  if (match2[1] === "") {
165112
- if (sep6 === "\n")
165113
- res += sep6;
165112
+ if (sep7 === "\n")
165113
+ res += sep7;
165114
165114
  else
165115
- sep6 = "\n";
165115
+ sep7 = "\n";
165116
165116
  } else {
165117
- res += sep6 + match2[1];
165118
- sep6 = " ";
165117
+ res += sep7 + match2[1];
165118
+ sep7 = " ";
165119
165119
  }
165120
165120
  pos = line.lastIndex;
165121
165121
  }
165122
165122
  const last = /[ \t]*(.*)/sy;
165123
165123
  last.lastIndex = pos;
165124
165124
  match2 = last.exec(source);
165125
- return res + sep6 + (match2?.[1] ?? "");
165125
+ return res + sep7 + (match2?.[1] ?? "");
165126
165126
  }
165127
165127
  function doubleQuotedValue(source, onError2) {
165128
165128
  let res = "";
@@ -165924,14 +165924,14 @@ var require_cst_stringify = __commonJS({
165924
165924
  }
165925
165925
  }
165926
165926
  }
165927
- function stringifyItem({ start, key, sep: sep6, value: value2 }) {
165927
+ function stringifyItem({ start, key, sep: sep7, value: value2 }) {
165928
165928
  let res = "";
165929
165929
  for (const st2 of start)
165930
165930
  res += st2.source;
165931
165931
  if (key)
165932
165932
  res += stringifyToken(key);
165933
- if (sep6)
165934
- for (const st2 of sep6)
165933
+ if (sep7)
165934
+ for (const st2 of sep7)
165935
165935
  res += st2.source;
165936
165936
  if (value2)
165937
165937
  res += stringifyToken(value2);
@@ -167081,18 +167081,18 @@ var require_parser2 = __commonJS({
167081
167081
  if (this.type === "map-value-ind") {
167082
167082
  const prev = getPrevProps(this.peek(2));
167083
167083
  const start = getFirstKeyStartProps(prev);
167084
- let sep6;
167084
+ let sep7;
167085
167085
  if (scalar.end) {
167086
- sep6 = scalar.end;
167087
- sep6.push(this.sourceToken);
167086
+ sep7 = scalar.end;
167087
+ sep7.push(this.sourceToken);
167088
167088
  delete scalar.end;
167089
167089
  } else
167090
- sep6 = [this.sourceToken];
167090
+ sep7 = [this.sourceToken];
167091
167091
  const map3 = {
167092
167092
  type: "block-map",
167093
167093
  offset: scalar.offset,
167094
167094
  indent: scalar.indent,
167095
- items: [{ start, key: scalar, sep: sep6 }]
167095
+ items: [{ start, key: scalar, sep: sep7 }]
167096
167096
  };
167097
167097
  this.onKeyLine = true;
167098
167098
  this.stack[this.stack.length - 1] = map3;
@@ -167245,15 +167245,15 @@ var require_parser2 = __commonJS({
167245
167245
  } else if (isFlowToken(it2.key) && !includesToken(it2.sep, "newline")) {
167246
167246
  const start2 = getFirstKeyStartProps(it2.start);
167247
167247
  const key = it2.key;
167248
- const sep6 = it2.sep;
167249
- sep6.push(this.sourceToken);
167248
+ const sep7 = it2.sep;
167249
+ sep7.push(this.sourceToken);
167250
167250
  delete it2.key;
167251
167251
  delete it2.sep;
167252
167252
  this.stack.push({
167253
167253
  type: "block-map",
167254
167254
  offset: this.offset,
167255
167255
  indent: this.indent,
167256
- items: [{ start: start2, key, sep: sep6 }]
167256
+ items: [{ start: start2, key, sep: sep7 }]
167257
167257
  });
167258
167258
  } else if (start.length > 0) {
167259
167259
  it2.sep = it2.sep.concat(start, this.sourceToken);
@@ -167447,13 +167447,13 @@ var require_parser2 = __commonJS({
167447
167447
  const prev = getPrevProps(parent);
167448
167448
  const start = getFirstKeyStartProps(prev);
167449
167449
  fixFlowSeqItems(fc);
167450
- const sep6 = fc.end.splice(1, fc.end.length);
167451
- sep6.push(this.sourceToken);
167450
+ const sep7 = fc.end.splice(1, fc.end.length);
167451
+ sep7.push(this.sourceToken);
167452
167452
  const map3 = {
167453
167453
  type: "block-map",
167454
167454
  offset: fc.offset,
167455
167455
  indent: fc.indent,
167456
- items: [{ start, key: fc, sep: sep6 }]
167456
+ items: [{ start, key: fc, sep: sep7 }]
167457
167457
  };
167458
167458
  this.onKeyLine = true;
167459
167459
  this.stack[this.stack.length - 1] = map3;
@@ -206415,6 +206415,28 @@ var require_lib4 = __commonJS({
206415
206415
  }
206416
206416
  });
206417
206417
 
206418
+ // src/coding-run-env.ts
206419
+ function isValidEnvKey(key) {
206420
+ return /^[A-Za-z_][A-Za-z0-9_]*$/.test(key);
206421
+ }
206422
+ function sanitizeCodingRunBodyEnv(parsed) {
206423
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
206424
+ return void 0;
206425
+ }
206426
+ const out = {};
206427
+ for (const [k2, v2] of Object.entries(parsed)) {
206428
+ if (!isValidEnvKey(k2)) continue;
206429
+ if (typeof v2 === "string") out[k2] = v2;
206430
+ }
206431
+ return Object.keys(out).length > 0 ? out : void 0;
206432
+ }
206433
+ function mergeCodingRunProcessEnv(daemonEnv, body) {
206434
+ let merged = { ...daemonEnv };
206435
+ const inline2 = sanitizeCodingRunBodyEnv(body.env);
206436
+ if (inline2) merged = { ...merged, ...inline2 };
206437
+ return merged;
206438
+ }
206439
+
206418
206440
  // src/multipart.ts
206419
206441
  function parseMultipart(contentType, body) {
206420
206442
  const match2 = contentType.match(/boundary=(?:"([^"]+)"|([^\s;]+))/);
@@ -206471,12 +206493,13 @@ function resolveVolumeRoot(state, volume) {
206471
206493
  }
206472
206494
  function resolveUnderRoot(root, raw) {
206473
206495
  if (!raw.trim()) throw new AppError(400, "empty path");
206496
+ const normalizedRoot = path.resolve(root);
206474
206497
  const normalized = path.normalize(raw);
206475
- if (path.isAbsolute(normalized) && !normalized.startsWith(root)) {
206498
+ if (path.isAbsolute(normalized) && !normalized.startsWith(normalizedRoot + path.sep) && normalized !== normalizedRoot) {
206476
206499
  throw new AppError(400, `invalid path: ${raw}`);
206477
206500
  }
206478
- const resolved = path.resolve(root, normalized.replace(/^\/+/, ""));
206479
- if (!resolved.startsWith(root)) {
206501
+ const resolved = path.resolve(normalizedRoot, normalized.replace(/^\/+/, ""));
206502
+ if (resolved !== normalizedRoot && !resolved.startsWith(normalizedRoot + path.sep)) {
206480
206503
  throw new AppError(400, `path traversal rejected: ${raw}`);
206481
206504
  }
206482
206505
  return resolved;
@@ -206509,7 +206532,9 @@ async function fsList(state, q2) {
206509
206532
  name: e2.name,
206510
206533
  path: fullPath,
206511
206534
  is_dir: e2.isDirectory(),
206512
- size: stat6?.isFile() ? stat6.size : 0
206535
+ size: stat6?.isFile() ? stat6.size : 0,
206536
+ created_at: stat6?.birthtime?.toISOString() ?? null,
206537
+ modified_at: stat6?.mtime?.toISOString() ?? null
206513
206538
  };
206514
206539
  })
206515
206540
  );
@@ -232998,7 +233023,7 @@ function wrapRegisteredTools(registeredTools, runner) {
232998
233023
  // ../../node_modules/.pnpm/@mariozechner+pi-coding-agent@0.61.0_ws@8.19.0_zod@4.3.6/node_modules/@mariozechner/pi-coding-agent/dist/core/prompt-templates.js
232999
233024
  import { existsSync as existsSync10, readdirSync as readdirSync5, readFileSync as readFileSync7, statSync as statSync5 } from "fs";
233000
233025
  import { homedir as homedir5 } from "os";
233001
- import { basename as basename5, isAbsolute as isAbsolute3, join as join15, resolve as resolve5, sep } from "path";
233026
+ import { basename as basename5, isAbsolute as isAbsolute3, join as join15, resolve as resolve5, sep as sep2 } from "path";
233002
233027
  function parseCommandArgs(argsString) {
233003
233028
  const args = [];
233004
233029
  let current = "";
@@ -233141,7 +233166,7 @@ function loadPromptTemplates(options2 = {}) {
233141
233166
  if (target === normalizedRoot) {
233142
233167
  return true;
233143
233168
  }
233144
- const prefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;
233169
+ const prefix = normalizedRoot.endsWith(sep2) ? normalizedRoot : `${normalizedRoot}${sep2}`;
233145
233170
  return target.startsWith(prefix);
233146
233171
  };
233147
233172
  const getSourceInfo = (resolvedPath) => {
@@ -233218,12 +233243,12 @@ var BUILTIN_SLASH_COMMANDS = [
233218
233243
  var import_ignore = __toESM(require_ignore(), 1);
233219
233244
  import { existsSync as existsSync11, readdirSync as readdirSync6, readFileSync as readFileSync8, realpathSync, statSync as statSync6 } from "fs";
233220
233245
  import { homedir as homedir6 } from "os";
233221
- import { basename as basename6, dirname as dirname7, isAbsolute as isAbsolute4, join as join16, relative, resolve as resolve6, sep as sep2 } from "path";
233246
+ import { basename as basename6, dirname as dirname7, isAbsolute as isAbsolute4, join as join16, relative, resolve as resolve6, sep as sep3 } from "path";
233222
233247
  var MAX_NAME_LENGTH = 64;
233223
233248
  var MAX_DESCRIPTION_LENGTH = 1024;
233224
233249
  var IGNORE_FILE_NAMES = [".gitignore", ".ignore", ".fdignore"];
233225
233250
  function toPosixPath(p) {
233226
- return p.split(sep2).join("/");
233251
+ return p.split(sep3).join("/");
233227
233252
  }
233228
233253
  function prefixIgnorePattern(line, prefix) {
233229
233254
  const trimmed = line.trim();
@@ -233496,7 +233521,7 @@ function loadSkills(options2 = {}) {
233496
233521
  if (target === normalizedRoot) {
233497
233522
  return true;
233498
233523
  }
233499
- const prefix = normalizedRoot.endsWith(sep2) ? normalizedRoot : `${normalizedRoot}${sep2}`;
233524
+ const prefix = normalizedRoot.endsWith(sep3) ? normalizedRoot : `${normalizedRoot}${sep3}`;
233500
233525
  return target.startsWith(prefix);
233501
233526
  };
233502
233527
  const getSource = (resolvedPath) => {
@@ -245355,7 +245380,7 @@ import { spawn as spawn8, spawnSync as spawnSync6 } from "node:child_process";
245355
245380
  import { createHash } from "node:crypto";
245356
245381
  import { existsSync as existsSync18, mkdirSync as mkdirSync7, readdirSync as readdirSync9, readFileSync as readFileSync13, rmSync as rmSync2, statSync as statSync9, writeFileSync as writeFileSync8 } from "node:fs";
245357
245382
  import { homedir as homedir8, tmpdir as tmpdir4 } from "node:os";
245358
- import { basename as basename8, dirname as dirname12, join as join22, relative as relative2, resolve as resolve9, sep as sep4 } from "node:path";
245383
+ import { basename as basename8, dirname as dirname12, join as join22, relative as relative2, resolve as resolve9, sep as sep5 } from "node:path";
245359
245384
 
245360
245385
  // ../../node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js
245361
245386
  var balanced = (a, b, str3) => {
@@ -246419,8 +246444,8 @@ var path14 = {
246419
246444
  win32: { sep: "\\" },
246420
246445
  posix: { sep: "/" }
246421
246446
  };
246422
- var sep3 = defaultPlatform === "win32" ? path14.win32.sep : path14.posix.sep;
246423
- minimatch.sep = sep3;
246447
+ var sep4 = defaultPlatform === "win32" ? path14.win32.sep : path14.posix.sep;
246448
+ minimatch.sep = sep4;
246424
246449
  var GLOBSTAR = /* @__PURE__ */ Symbol("globstar **");
246425
246450
  minimatch.GLOBSTAR = GLOBSTAR;
246426
246451
  var qmark2 = "[^/]";
@@ -247330,7 +247355,7 @@ var FILE_PATTERNS = {
247330
247355
  };
247331
247356
  var IGNORE_FILE_NAMES2 = [".gitignore", ".ignore", ".fdignore"];
247332
247357
  function toPosixPath3(p) {
247333
- return p.split(sep4).join("/");
247358
+ return p.split(sep5).join("/");
247334
247359
  }
247335
247360
  function getHomeDir() {
247336
247361
  return process.env.HOME || homedir8();
@@ -248868,7 +248893,7 @@ var DefaultPackageManager = class {
248868
248893
  // ../../node_modules/.pnpm/@mariozechner+pi-coding-agent@0.61.0_ws@8.19.0_zod@4.3.6/node_modules/@mariozechner/pi-coding-agent/dist/core/resource-loader.js
248869
248894
  import { existsSync as existsSync19, readdirSync as readdirSync10, readFileSync as readFileSync14, statSync as statSync10 } from "node:fs";
248870
248895
  import { homedir as homedir9 } from "node:os";
248871
- import { join as join23, resolve as resolve10, sep as sep5 } from "node:path";
248896
+ import { join as join23, resolve as resolve10, sep as sep6 } from "node:path";
248872
248897
  function resolvePromptInput(input, description) {
248873
248898
  if (!input) {
248874
248899
  return void 0;
@@ -249222,7 +249247,7 @@ var DefaultResourceLoader = class {
249222
249247
  if (this.pathMetadata.has(normalizedResourcePath) || this.pathMetadata.has(resourcePath)) {
249223
249248
  continue;
249224
249249
  }
249225
- const match2 = normalized.find((entry) => normalizedResourcePath === entry.path || normalizedResourcePath.startsWith(`${entry.path}${sep5}`));
249250
+ const match2 = normalized.find((entry) => normalizedResourcePath === entry.path || normalizedResourcePath.startsWith(`${entry.path}${sep6}`));
249226
249251
  if (match2) {
249227
249252
  this.pathMetadata.set(normalizedResourcePath, match2.metadata);
249228
249253
  }
@@ -249441,7 +249466,7 @@ var DefaultResourceLoader = class {
249441
249466
  if (target === normalizedRoot) {
249442
249467
  return true;
249443
249468
  }
249444
- const prefix = normalizedRoot.endsWith(sep5) ? normalizedRoot : `${normalizedRoot}${sep5}`;
249469
+ const prefix = normalizedRoot.endsWith(sep6) ? normalizedRoot : `${normalizedRoot}${sep6}`;
249445
249470
  return target.startsWith(prefix);
249446
249471
  }
249447
249472
  detectExtensionConflicts(extensions2) {
@@ -250376,8 +250401,8 @@ var ConfigSelectorHeader = class {
250376
250401
  }
250377
250402
  render(width) {
250378
250403
  const title = theme.bold("Resource Configuration");
250379
- const sep6 = theme.fg("muted", " \xB7 ");
250380
- const hint = rawKeyHint("space", "toggle") + sep6 + rawKeyHint("esc", "close");
250404
+ const sep7 = theme.fg("muted", " \xB7 ");
250405
+ const hint = rawKeyHint("space", "toggle") + sep7 + rawKeyHint("esc", "close");
250381
250406
  const hintWidth = visibleWidth(hint);
250382
250407
  const titleWidth = visibleWidth(title);
250383
250408
  const spacing = Math.max(1, width - titleWidth - hintWidth);
@@ -251410,8 +251435,8 @@ var SessionSelectorHeader = class {
251410
251435
  hintLine2 = "";
251411
251436
  } else {
251412
251437
  const pathState = this.showPath ? "(on)" : "(off)";
251413
- const sep6 = theme.fg("muted", " \xB7 ");
251414
- const hint1 = keyHint("tui.input.tab", "scope") + sep6 + theme.fg("muted", 're:<pattern> regex \xB7 "phrase" exact');
251438
+ const sep7 = theme.fg("muted", " \xB7 ");
251439
+ const hint1 = keyHint("tui.input.tab", "scope") + sep7 + theme.fg("muted", 're:<pattern> regex \xB7 "phrase" exact');
251415
251440
  const hint2Parts = [
251416
251441
  keyHint("app.session.toggleSort", "sort"),
251417
251442
  keyHint("app.session.toggleNamedFilter", "named"),
@@ -251421,7 +251446,7 @@ var SessionSelectorHeader = class {
251421
251446
  if (this.showRenameHint) {
251422
251447
  hint2Parts.push(keyHint("app.session.rename", "rename"));
251423
251448
  }
251424
- const hint2 = hint2Parts.join(sep6);
251449
+ const hint2 = hint2Parts.join(sep7);
251425
251450
  hintLine1 = truncateToWidth(hint1, width, "\u2026");
251426
251451
  hintLine2 = truncateToWidth(hint2, width, "\u2026");
251427
251452
  }
@@ -262135,7 +262160,7 @@ function createPiRunner(options2 = {}) {
262135
262160
  if (model == null) {
262136
262161
  const baseUrlEnvKey = `${provider.toUpperCase().replace(/-/g, "_")}_BASE_URL`;
262137
262162
  const apiKeyEnvKey = `${provider.toUpperCase().replace(/-/g, "_")}_API_KEY`;
262138
- const baseUrl = process.env[baseUrlEnvKey] ?? process.env.OPENAI_BASE_URL;
262163
+ const baseUrl = getEnvValue(options2.env, baseUrlEnvKey) ?? getEnvValue(options2.env, "OPENAI_BASE_URL");
262139
262164
  if (!baseUrl) {
262140
262165
  throw new Error(`Pi runner: model "${modelSpec}" not found in built-in catalog. Set ${baseUrlEnvKey} (or OPENAI_BASE_URL) to auto-register it.`);
262141
262166
  }
@@ -262448,8 +262473,15 @@ function codingRunStream(req, env2) {
262448
262473
  } catch (err) {
262449
262474
  const msg = err instanceof Error ? err.message : String(err);
262450
262475
  controller.enqueue(
262451
- new TextEncoder().encode(`${JSON.stringify({ error: msg })}
262452
- `)
262476
+ new TextEncoder().encode(
262477
+ `data: ${JSON.stringify({ type: "error", errorText: msg })}
262478
+
262479
+ data: ${JSON.stringify({ type: "finish", finishReason: "error" })}
262480
+
262481
+ data: [DONE]
262482
+
262483
+ `
262484
+ )
262453
262485
  );
262454
262486
  } finally {
262455
262487
  controller.close();
@@ -262482,7 +262514,8 @@ function createNextHandler(opts) {
262482
262514
  const method = req.method ?? "GET";
262483
262515
  if (method === "POST" && pathname === "/api/coding/run") {
262484
262516
  const body = await req.json().catch(() => ({}));
262485
- return codingRunStream(body, env2);
262517
+ const mergedEnv = mergeCodingRunProcessEnv(env2, body);
262518
+ return codingRunStream(body, mergedEnv);
262486
262519
  }
262487
262520
  if (method === "POST" && pathname === "/api/fs/upload") {
262488
262521
  try {
@@ -9,6 +9,8 @@ export interface RunRequest {
9
9
  resume?: string;
10
10
  skillPaths?: string[];
11
11
  cwd?: string;
12
+ /** Inline runner env (string map); same keys override. */
13
+ env?: Record<string, string>;
12
14
  }
13
15
  /**
14
16
  * POST /api/coding/run — Node http.ServerResponse version (standalone daemon)
@@ -1 +1 @@
1
- {"version":3,"file":"coding.d.ts","sourceRoot":"","sources":["../../src/routes/coding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAGvC,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,QAAQ,CA0CV"}
1
+ {"version":3,"file":"coding.d.ts","sourceRoot":"","sources":["../../src/routes/coding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,WAAW,CAAC;AAGvC,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,QAAQ,CA8CV"}
@@ -40,6 +40,8 @@ export declare function fsList(state: AppState, q: ListQuery): Promise<import(".
40
40
  path: string;
41
41
  is_dir: boolean;
42
42
  size: number;
43
+ created_at: string | null;
44
+ modified_at: string | null;
43
45
  }[]>>;
44
46
  export declare function fsRead(state: AppState, q: PathQuery): Promise<import("../utils.js").ApiEnvelope<{
45
47
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/routes/fs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAU5C,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;;;MAkBzD;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;IAKzD;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;;IASzD;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;IAQ3D;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;UAMhD,MAAM;UACN,MAAM;YACJ,OAAO;UACT,MAAM;MA4Bf;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;;;IAQ7D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;;IAQ9D;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;;IAK7D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;;IAU/D;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;;IAS/D;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;;IAS/D;AAID,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE;IACL,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;;IAuBF"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/routes/fs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAU5C,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;;;;;MAoBzD;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;IAKzD;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;;IASzD;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;;;IAQ3D;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS;UAMhD,MAAM;UACN,MAAM;YACJ,OAAO;UACT,MAAM;MA4Bf;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;;;IAQ7D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;;IAQ9D;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;;IAK7D;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;;IAU/D;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;;IAS/D;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;;IAS/D;AAID,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE;IACL,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;;IAuBF"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAQlC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,CA2D9D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AASlC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,CAiG9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAE7C;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAErD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAYlE;AAQD,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAIlB;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAE7C;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAErD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBlE;AAQD,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAIlB;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sandagent/daemon",
3
- "version": "0.9.7",
3
+ "version": "0.9.9-beta.0",
4
4
  "description": "SandAgent Daemon - Unified API gateway for sandbox services (file, git, volumes)",
5
5
  "type": "module",
6
6
  "bin": {