@moxt-ai/mobius 0.0.161 → 0.0.163

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.
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-directory.d.ts","sourceRoot":"","sources":["../../src/authorization/workspace-directory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,qBAAa,yBAAyB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,YACI,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,iBAAiB,EAAE,MAAM,EAM5B;CACJ;AA0BD;sEACsE;AACtE,qBAAa,yBAAyB;;IAIlC,YAAY,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAGtD;IAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI/B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAc5B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAuB1B;IAEF,OAAO,CAAC,QAAQ,CAAC,KAAK,CASpB;IAEF,QAAQ,CAAC,QAAQ,cACF,MAAM,iBACF,MAAM,UACb,WAAW,KACpB,OAAO,CAAC;QACP,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KAC1B,CAAC,CASA;IAEF,QAAQ,CAAC,OAAO,cAAqB,MAAM,MAAM,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,MAAM,CAAC,CAG5F;IAEF,QAAQ,CAAC,IAAI,cAAqB,MAAM,MAAM,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,yBAAyB,CAAC,CA4C5G;IAEF,QAAQ,CAAC,WAAW,cACL,MAAM,OACZ,SAAS,MAAM,EAAE,UACd,WAAW,KACpB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAM3B;CACL"}
1
+ {"version":3,"file":"workspace-directory.d.ts","sourceRoot":"","sources":["../../src/authorization/workspace-directory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D,qBAAa,yBAAyB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,YACI,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,iBAAiB,EAAE,MAAM,EAM5B;CACJ;AAmCD;sEACsE;AACtE,qBAAa,yBAAyB;;IAIlC,YAAY,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAGtD;IAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAI/B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAc5B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAuB1B;IAEF,OAAO,CAAC,QAAQ,CAAC,KAAK,CASpB;IAEF,QAAQ,CAAC,QAAQ,cACF,MAAM,iBACF,MAAM,UACb,WAAW,KACpB,OAAO,CAAC;QACP,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KAC1B,CAAC,CASA;IAEF,QAAQ,CAAC,OAAO,cAAqB,MAAM,MAAM,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,MAAM,CAAC,CAG5F;IAEF,QAAQ,CAAC,IAAI,cAAqB,MAAM,MAAM,MAAM,UAAU,WAAW,KAAG,OAAO,CAAC,yBAAyB,CAAC,CA4C5G;IAEF,QAAQ,CAAC,WAAW,cACL,MAAM,OACZ,SAAS,MAAM,EAAE,UACd,WAAW,KACpB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAM3B;CACL"}
@@ -21,15 +21,22 @@ function encodePath(path) {
21
21
  }
22
22
  return `path-${encoded}`;
23
23
  }
24
+ function expandCurrentUserHome(path) {
25
+ // Adapted from https://github.com/sindresorhus/untildify/blob/main/index.js.
26
+ return path.replace(/^~(?=$|\/|\\)/, homedir());
27
+ }
24
28
  function decodePath(value, prefix) {
25
29
  const encoded = value.slice(prefix.length);
26
30
  if (encoded.length === 0 || encoded.length > 2_000 || !/^[a-zA-Z0-9_-]+$/.test(encoded)) {
27
31
  throw new LocalAuthorizationError("The directory identifier is invalid");
28
32
  }
29
33
  const decoded = Buffer.from(encoded, "base64url").toString("utf8");
34
+ const normalized = process.platform === "win32" && decoded.startsWith("~/")
35
+ ? normalize(decoded).replaceAll("\\", "/")
36
+ : normalize(decoded);
30
37
  if (Buffer.from(decoded, "utf8").toString("base64url") !== encoded ||
31
38
  decoded.includes("\0") ||
32
- normalize(decoded) !== decoded) {
39
+ normalized !== decoded) {
33
40
  throw new LocalAuthorizationError("The directory identifier is invalid");
34
41
  }
35
42
  return decoded;
@@ -56,7 +63,7 @@ export class WorkspaceDirectoryService {
56
63
  return homedir();
57
64
  }
58
65
  if (id.startsWith("path-")) {
59
- const path = decodePath(id, "path-");
66
+ const path = expandCurrentUserHome(decodePath(id, "path-"));
60
67
  if (isAbsolute(path)) {
61
68
  return path;
62
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-directory.js","sourceRoot":"","sources":["../../src/authorization/workspace-directory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-directory.js","sourceRoot":"","sources":["../../src/authorization/workspace-directory.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -3381,7 +3381,7 @@ var program = new Command();
3381
3381
  // package.json
3382
3382
  var package_default = {
3383
3383
  name: "@moxt-ai/mobius",
3384
- version: "0.0.161",
3384
+ version: "0.0.163",
3385
3385
  description: "Mobius CLI for pairing and running local AI agent services.",
3386
3386
  type: "module",
3387
3387
  bin: {
@@ -42350,13 +42350,17 @@ function encodePath(path3) {
42350
42350
  }
42351
42351
  return `path-${encoded}`;
42352
42352
  }
42353
+ function expandCurrentUserHome(path3) {
42354
+ return path3.replace(/^~(?=$|\/|\\)/, homedir2());
42355
+ }
42353
42356
  function decodePath(value, prefix) {
42354
42357
  const encoded = value.slice(prefix.length);
42355
42358
  if (encoded.length === 0 || encoded.length > 2e3 || !/^[a-zA-Z0-9_-]+$/.test(encoded)) {
42356
42359
  throw new LocalAuthorizationError("The directory identifier is invalid");
42357
42360
  }
42358
42361
  const decoded = Buffer.from(encoded, "base64url").toString("utf8");
42359
- if (Buffer.from(decoded, "utf8").toString("base64url") !== encoded || decoded.includes("\0") || normalize3(decoded) !== decoded) {
42362
+ const normalized = process.platform === "win32" && decoded.startsWith("~/") ? normalize3(decoded).replaceAll("\\", "/") : normalize3(decoded);
42363
+ if (Buffer.from(decoded, "utf8").toString("base64url") !== encoded || decoded.includes("\0") || normalized !== decoded) {
42360
42364
  throw new LocalAuthorizationError("The directory identifier is invalid");
42361
42365
  }
42362
42366
  return decoded;
@@ -42381,7 +42385,7 @@ var WorkspaceDirectoryService = class {
42381
42385
  return homedir2();
42382
42386
  }
42383
42387
  if (id.startsWith("path-")) {
42384
- const path3 = decodePath(id, "path-");
42388
+ const path3 = expandCurrentUserHome(decodePath(id, "path-"));
42385
42389
  if (isAbsolute9(path3)) {
42386
42390
  return path3;
42387
42391
  }
@@ -47756,6 +47760,10 @@ import { WebSocket as WebSocket9 } from "undici";
47756
47760
  var MAX_BUFFERED_BYTES = 32 * 1024 * 1024;
47757
47761
  var DaemonSessionEventPublisher = class {
47758
47762
  #socket = null;
47763
+ #store;
47764
+ constructor(store) {
47765
+ this.#store = store;
47766
+ }
47759
47767
  connect = (socket) => {
47760
47768
  this.#socket = socket;
47761
47769
  };
@@ -47792,6 +47800,7 @@ var DaemonSessionEventPublisher = class {
47792
47800
  }
47793
47801
  };
47794
47802
  publishV2 = (event) => {
47803
+ this.#store.appendExecutingPromptEventV2(event);
47795
47804
  const socket = this.#socket;
47796
47805
  if (socket === null || socket.readyState !== WebSocket9.OPEN) {
47797
47806
  return;
@@ -47819,15 +47828,6 @@ var systemDaemonTimer = new SystemDaemonTimer();
47819
47828
 
47820
47829
  // src/session-event-log-v2.ts
47821
47830
  var EXECUTING_PROMPT_EVENT_LIMIT = 1e4;
47822
- function eventArray(tail) {
47823
- const reversed = [];
47824
- let node2 = tail;
47825
- while (node2 !== null) {
47826
- reversed.push(node2.event);
47827
- node2 = node2.previous;
47828
- }
47829
- return reversed.reverse();
47830
- }
47831
47831
  function promptContent(command) {
47832
47832
  const content = [];
47833
47833
  if (command.prompt.length > 0) {
@@ -47875,37 +47875,18 @@ var DaemonSessionEventLogV2 = class {
47875
47875
  }
47876
47876
  for (const event of this.#loadStoredEvents(sessionId)) {
47877
47877
  if (event.type === "acp") {
47878
- const executing = [...this.#requests.values()].find(
47879
- (request) => request.sessionId === sessionId && request.kind === "executing"
47880
- );
47881
- if (executing !== void 0) {
47882
- this.#requests.set(executing.commandId, {
47883
- ...executing,
47884
- eventTail: { event, previous: executing.eventTail }
47885
- });
47886
- }
47887
47878
  continue;
47888
47879
  }
47889
47880
  const payload = event.payload;
47890
47881
  if (payload.kind === "prompt.requested") {
47891
47882
  this.#requests.set(payload.commandId, {
47892
47883
  commandId: payload.commandId,
47893
- eventTail: { event, previous: null },
47894
47884
  kind: "requested",
47895
47885
  sessionId
47896
47886
  });
47897
47887
  continue;
47898
47888
  }
47899
47889
  if ("event" in payload) {
47900
- const executing = [...this.#requests.values()].find(
47901
- (request) => request.sessionId === sessionId && request.kind === "executing"
47902
- );
47903
- if (executing !== void 0) {
47904
- this.#requests.set(executing.commandId, {
47905
- ...executing,
47906
- eventTail: { event, previous: executing.eventTail }
47907
- });
47908
- }
47909
47890
  continue;
47910
47891
  }
47911
47892
  if (!("commandId" in payload)) {
@@ -47920,7 +47901,6 @@ var DaemonSessionEventLogV2 = class {
47920
47901
  attemptId: payload.attemptId,
47921
47902
  commandId: payload.commandId,
47922
47903
  epoch: payload.epoch,
47923
- eventTail: { event, previous: state.eventTail },
47924
47904
  kind: "executing",
47925
47905
  sessionId
47926
47906
  });
@@ -47941,19 +47921,18 @@ var DaemonSessionEventLogV2 = class {
47941
47921
  recordedAt: (/* @__PURE__ */ new Date()).toISOString(),
47942
47922
  sessionId
47943
47923
  };
47944
- this.#positions.set(sessionId, position);
47945
47924
  this.#publisher.publishV2(event);
47925
+ this.#positions.set(sessionId, position);
47946
47926
  return event;
47947
47927
  };
47948
47928
  requested = (command) => {
47949
47929
  const content = promptContent(command);
47950
- const event = this.#append(command.sessionId, {
47930
+ this.#append(command.sessionId, {
47951
47931
  payload: { commandId: command.commandId, content, kind: "prompt.requested" },
47952
47932
  type: "lifecycle-metadata"
47953
47933
  });
47954
47934
  this.#requests.set(command.commandId, {
47955
47935
  commandId: command.commandId,
47956
- eventTail: { event, previous: null },
47957
47936
  kind: "requested",
47958
47937
  sessionId: command.sessionId
47959
47938
  });
@@ -47964,7 +47943,7 @@ var DaemonSessionEventLogV2 = class {
47964
47943
  if (request?.sessionId !== sessionId) {
47965
47944
  return;
47966
47945
  }
47967
- const event = this.#append(sessionId, {
47946
+ this.#append(sessionId, {
47968
47947
  payload: { attemptId, commandId, epoch, kind: "prompt.started" },
47969
47948
  type: "lifecycle-metadata"
47970
47949
  });
@@ -47972,56 +47951,39 @@ var DaemonSessionEventLogV2 = class {
47972
47951
  attemptId,
47973
47952
  commandId,
47974
47953
  epoch,
47975
- eventTail: { event, previous: request.eventTail },
47976
47954
  kind: "executing",
47977
47955
  sessionId
47978
47956
  });
47979
- this.#store.startExecutingPromptEventsV2(sessionId, eventArray({ event, previous: request.eventTail }));
47980
47957
  };
47981
47958
  record = (sessionId, payload) => {
47982
47959
  this.#loadRequests(sessionId);
47983
- const event = this.#append(sessionId, payload);
47984
- this.#appendToExecutingRequest(sessionId, event);
47960
+ this.#append(sessionId, payload);
47985
47961
  };
47986
- #appendToExecutingRequest = (sessionId, event) => {
47987
- const executing = [...this.#requests.values()].find(
47988
- (request) => request.sessionId === sessionId && request.kind === "executing"
47989
- );
47990
- if (executing !== void 0) {
47991
- this.#requests.set(executing.commandId, {
47992
- ...executing,
47993
- eventTail: { event, previous: executing.eventTail }
47994
- });
47995
- this.#store.appendExecutingPromptEventV2(event);
47962
+ #clearCompletedSession = (sessionId) => {
47963
+ if (![...this.#requests.values()].some((request) => request.sessionId === sessionId)) {
47964
+ this.#store.clearExecutingPromptEventsV2(sessionId);
47996
47965
  }
47997
47966
  };
47998
47967
  queueChanged = (sessionId) => {
47999
- const event = this.#append(sessionId, {
47968
+ this.#append(sessionId, {
48000
47969
  payload: { kind: "session.queue.changed" },
48001
47970
  type: "lifecycle-metadata"
48002
47971
  });
48003
- this.#appendToExecutingRequest(sessionId, event);
48004
47972
  };
48005
47973
  completed = (sessionId, commandId, stopReason) => {
48006
47974
  this.#loadRequests(sessionId);
48007
- const request = this.#requests.get(commandId);
48008
- const event = this.#append(sessionId, {
47975
+ this.#append(sessionId, {
48009
47976
  payload: { commandId, kind: "prompt.completed", stopReason },
48010
47977
  type: "lifecycle-metadata"
48011
47978
  });
48012
47979
  this.#requests.delete(commandId);
48013
- if (request?.kind === "executing" && request.sessionId === sessionId) {
48014
- this.#store.clearExecutingPromptEventsV2(sessionId);
48015
- } else {
48016
- this.#appendToExecutingRequest(sessionId, event);
48017
- }
47980
+ this.#clearCompletedSession(sessionId);
48018
47981
  };
48019
47982
  failed = (sessionId, commandId, code, message) => {
48020
47983
  this.#loadRequests(sessionId);
48021
47984
  const request = this.#requests.get(commandId);
48022
- let event;
48023
47985
  if (request?.kind === "executing" && request.commandId === commandId) {
48024
- event = this.#append(sessionId, {
47986
+ this.#append(sessionId, {
48025
47987
  payload: {
48026
47988
  attemptId: request.attemptId,
48027
47989
  code,
@@ -48032,17 +47994,13 @@ var DaemonSessionEventLogV2 = class {
48032
47994
  type: "lifecycle-metadata"
48033
47995
  });
48034
47996
  } else {
48035
- event = this.#append(sessionId, {
47997
+ this.#append(sessionId, {
48036
47998
  payload: { code, commandId, kind: "prompt.failed-before-start", message },
48037
47999
  type: "lifecycle-metadata"
48038
48000
  });
48039
48001
  }
48040
48002
  this.#requests.delete(commandId);
48041
- if (request?.kind === "executing" && request.sessionId === sessionId) {
48042
- this.#store.clearExecutingPromptEventsV2(sessionId);
48043
- } else {
48044
- this.#appendToExecutingRequest(sessionId, event);
48045
- }
48003
+ this.#clearCompletedSession(sessionId);
48046
48004
  };
48047
48005
  executingPromptRequest = (sessionId) => {
48048
48006
  this.#loadRequests(sessionId);
@@ -48052,7 +48010,7 @@ var DaemonSessionEventLogV2 = class {
48052
48010
  if (request?.kind !== "executing") {
48053
48011
  return null;
48054
48012
  }
48055
- const requestEvents = eventArray(request.eventTail);
48013
+ const requestEvents = this.#store.readExecutingPromptEventsV2(sessionId);
48056
48014
  const events = requestEvents.slice(-EXECUTING_PROMPT_EVENT_LIMIT);
48057
48015
  return {
48058
48016
  attemptId: request.attemptId,
@@ -48135,7 +48093,7 @@ async function runDaemon(config2, audit, signal, timer = systemDaemonTimer, opti
48135
48093
  join18(stateDirectory, "sessions", `${createHash7("sha256").update(config2.channelId).digest("hex")}.sqlite`)
48136
48094
  );
48137
48095
  const operations = new DaemonOperationState();
48138
- const publisher = new DaemonSessionEventPublisher();
48096
+ const publisher = new DaemonSessionEventPublisher(sessionStore);
48139
48097
  const eventLogV2 = new DaemonSessionEventLogV2(publisher, sessionStore);
48140
48098
  const activeTurns = new DaemonTurnRegistry(operations);
48141
48099
  const recordSessionEvent = (sessionId, event) => {