ashral 0.2.1 → 0.2.3

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 (34) hide show
  1. package/dist/adapters/baseAdapter.d.ts +6 -0
  2. package/dist/adapters/baseAdapter.d.ts.map +1 -1
  3. package/dist/adapters/baseAdapter.js +8 -0
  4. package/dist/adapters/baseAdapter.js.map +1 -1
  5. package/dist/adapters/claudeAdapter.d.ts +1 -0
  6. package/dist/adapters/claudeAdapter.d.ts.map +1 -1
  7. package/dist/adapters/claudeAdapter.js +12 -0
  8. package/dist/adapters/claudeAdapter.js.map +1 -1
  9. package/dist/adapters/codexAdapter.d.ts +1 -0
  10. package/dist/adapters/codexAdapter.d.ts.map +1 -1
  11. package/dist/adapters/codexAdapter.js +10 -0
  12. package/dist/adapters/codexAdapter.js.map +1 -1
  13. package/dist/api/backendClient.d.ts +29 -1
  14. package/dist/api/backendClient.d.ts.map +1 -1
  15. package/dist/api/backendClient.js +98 -2
  16. package/dist/api/backendClient.js.map +1 -1
  17. package/dist/cli.js +62 -30
  18. package/dist/cli.js.map +1 -1
  19. package/dist/proxy/anthropicProxy.d.ts +6 -0
  20. package/dist/proxy/anthropicProxy.d.ts.map +1 -0
  21. package/dist/proxy/anthropicProxy.js +319 -0
  22. package/dist/proxy/anthropicProxy.js.map +1 -0
  23. package/dist/runner/runSession.d.ts.map +1 -1
  24. package/dist/runner/runSession.js +159 -24
  25. package/dist/runner/runSession.js.map +1 -1
  26. package/dist/runner/sessionState.d.ts +1 -1
  27. package/dist/runner/sessionState.d.ts.map +1 -1
  28. package/dist/runner/sessionState.js +2 -1
  29. package/dist/runner/sessionState.js.map +1 -1
  30. package/dist/types/events.d.ts +2 -0
  31. package/dist/types/events.d.ts.map +1 -1
  32. package/dist/types/session.d.ts +1 -1
  33. package/dist/types/session.d.ts.map +1 -1
  34. package/package.json +1 -1
@@ -36,5 +36,11 @@ export declare abstract class BaseAdapter {
36
36
  * This is called on every data chunk so keep it fast.
37
37
  */
38
38
  abstract detectStatus(output: string, currentStatus: SessionStatus): SessionStatus | null;
39
+ /**
40
+ * Scans accumulated startup PTY output for the agent's internal session ID.
41
+ * Called on a growing buffer of early output until a match is found.
42
+ * Returns null if the ID is not yet detectable in the given text.
43
+ */
44
+ extractAgentSessionId(_raw: string): string | null;
39
45
  }
40
46
  //# sourceMappingURL=baseAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/baseAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,8BAAsB,WAAW;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,MAAM,IAAI,IAAI;IAad;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAE9D;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;CAC1F"}
1
+ {"version":3,"file":"baseAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/baseAdapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,8BAAsB,WAAW;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,MAAM,IAAI,IAAI;IAad;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAE9D;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAEzF;;;;OAIG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGnD"}
@@ -27,6 +27,14 @@ class BaseAdapter {
27
27
  `Install it first, then re-run: ashral run ${this.agentName}`);
28
28
  }
29
29
  }
30
+ /**
31
+ * Scans accumulated startup PTY output for the agent's internal session ID.
32
+ * Called on a growing buffer of early output until a match is found.
33
+ * Returns null if the ID is not yet detectable in the given text.
34
+ */
35
+ extractAgentSessionId(_raw) {
36
+ return null;
37
+ }
30
38
  }
31
39
  exports.BaseAdapter = BaseAdapter;
32
40
  //# sourceMappingURL=baseAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseAdapter.js","sourceRoot":"","sources":["../../src/adapters/baseAdapter.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAYzC;;;;;;;;GAQG;AACH,MAAsB,WAAW;IAI/B;;;OAGG;IACH,MAAM;QACJ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,GAAG,KAAK,IAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,IAAI,OAAO,sCAAsC;gBACjD,6CAA6C,IAAI,CAAC,SAAS,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;CAeF;AAlCD,kCAkCC"}
1
+ {"version":3,"file":"baseAdapter.js","sourceRoot":"","sources":["../../src/adapters/baseAdapter.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAYzC;;;;;;;;GAQG;AACH,MAAsB,WAAW;IAI/B;;;OAGG;IACH,MAAM;QACJ,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,GAAG,KAAK,IAAI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,IAAI,OAAO,sCAAsC;gBACjD,6CAA6C,IAAI,CAAC,SAAS,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAgBD;;;;OAIG;IACH,qBAAqB,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA3CD,kCA2CC"}
@@ -4,6 +4,7 @@ export declare class ClaudeAdapter extends BaseAdapter {
4
4
  readonly agentName = "claude";
5
5
  getCommand(passthroughArgs: string[]): AdapterCommand;
6
6
  detectStatus(raw: string, currentStatus: SessionStatus): SessionStatus | null;
7
+ extractAgentSessionId(raw: string): string | null;
7
8
  private matches;
8
9
  }
9
10
  //# sourceMappingURL=claudeAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claudeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6DtD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,SAAS,YAAY;IAE9B,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAWrD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAqB7E,OAAO,CAAC,OAAO;CAGhB"}
1
+ {"version":3,"file":"claudeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiEtD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,SAAS,YAAY;IAE9B,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAWrD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAqB7E,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASjD,OAAO,CAAC,OAAO;CAGhB"}
@@ -45,6 +45,9 @@ const RUNNING_PATTERNS = [
45
45
  /reading|fetching|searching/i,
46
46
  /thinking\.\.\./i,
47
47
  ];
48
+ // Claude's internal session ID — a standard UUID shown in the startup banner
49
+ const SESSION_ID_RE = /[Ss]ession[:\s#]+([0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})/;
50
+ const UUID_RE = /\b([0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})\b/;
48
51
  // Something clearly went wrong
49
52
  const ERROR_PATTERNS = [
50
53
  /^error:/im,
@@ -87,6 +90,15 @@ class ClaudeAdapter extends baseAdapter_1.BaseAdapter {
87
90
  }
88
91
  return null;
89
92
  }
93
+ extractAgentSessionId(raw) {
94
+ // Primary: UUID adjacent to the word "session" (Claude Code startup banner)
95
+ const contextual = SESSION_ID_RE.exec(raw);
96
+ if (contextual)
97
+ return contextual[1];
98
+ // Fallback: first UUID in startup output (Claude Code shows it prominently)
99
+ const any = UUID_RE.exec(raw);
100
+ return any ? any[1] : null;
101
+ }
90
102
  matches(text, patterns) {
91
103
  return patterns.some((p) => p.test(text));
92
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claudeAdapter.js","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAGjE,oEAAoE;AACpE,MAAM,OAAO,GAAG,mDAAmD,CAAC;AAEpE,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AAEH,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG;IACxB,kBAAkB,EAAmB,6BAA6B;IAClE,iBAAiB;IACjB,aAAa;IACb,YAAY,EAAyB,6CAA6C;IAClF,wBAAwB,EAAa,6BAA6B;IAClE,WAAW;IACX,WAAW;IACX,UAAU;IACV,yBAAyB;IACzB,eAAe;IACf,sBAAsB,EAAe,6CAA6C;CACnF,CAAC;AAEF,uDAAuD;AACvD,MAAM,gBAAgB,GAAG;IACvB,SAAS,EAAgB,uBAAuB;IAChD,SAAS,EAAgB,0FAA0F;IACnH,gBAAgB,EAAS,sDAAsD;IAC/E,iBAAiB,EAAQ,iDAAiD;IAC1E,iBAAiB,EAAS,qDAAqD;IAC/E,sBAAsB;IACtB,0BAA0B;IAC1B,cAAc;CACf,CAAC;AAEF,gCAAgC;AAChC,MAAM,gBAAgB,GAAG;IACvB,iCAAiC;IACjC,qCAAqC;IACrC,6BAA6B;IAC7B,iBAAiB;CAClB,CAAC;AAEF,+BAA+B;AAC/B,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,cAAc;IACd,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,4BAA4B;CAC7B,CAAC;AAEF,MAAa,aAAc,SAAQ,yBAAW;IAA9C;;QACW,cAAS,GAAG,QAAQ,CAAC;IAqChC,CAAC;IAnCC,UAAU,CAAC,eAAyB;QAClC,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvE,OAAO;YACL,OAAO;YACP,IAAI,EAAE,eAAe;YACrB,iEAAiE;SAClE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,aAA4B;QACpD,2DAA2D;QAC3D,IAAI,aAAa,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;YAAE,OAAO,OAAO,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAAE,OAAO,mBAAmB,CAAC;QAErE,+DAA+D;QAC/D,IACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;YACpC,CAAC,aAAa,KAAK,mBAAmB,IAAI,aAAa,KAAK,mBAAmB,CAAC,EAChF,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,QAAkB;QAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AAtCD,sCAsCC"}
1
+ {"version":3,"file":"claudeAdapter.js","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class CodexAdapter extends BaseAdapter {
4
4
  readonly agentName = "codex";
5
5
  getCommand(passthroughArgs: string[]): AdapterCommand;
6
6
  detectStatus(raw: string, currentStatus: SessionStatus): SessionStatus | null;
7
+ extractAgentSessionId(raw: string): string | null;
7
8
  private matches;
8
9
  }
9
10
  //# sourceMappingURL=codexAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codexAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/codexAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAqDtD,qBAAa,YAAa,SAAQ,WAAW;IAC3C,QAAQ,CAAC,SAAS,WAAW;IAE7B,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAMrD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAmB7E,OAAO,CAAC,OAAO;CAGhB"}
1
+ {"version":3,"file":"codexAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/codexAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAyDtD,qBAAa,YAAa,SAAQ,WAAW;IAC3C,QAAQ,CAAC,SAAS,WAAW;IAE7B,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAMrD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAmB7E,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOjD,OAAO,CAAC,OAAO;CAGhB"}
@@ -38,6 +38,9 @@ const RUNNING_PATTERNS = [
38
38
  /thinking|planning/i,
39
39
  /applying (changes|patch)/i,
40
40
  ];
41
+ // Codex session IDs: OpenAI thread_ prefix or a plain UUID
42
+ const CODEX_SESSION_RE = /[Ss]ession[:\s#]+([0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}|thread_\S+)/;
43
+ const CODEX_UUID_RE = /\b([0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12})\b/;
41
44
  const ERROR_PATTERNS = [
42
45
  /^error:/im,
43
46
  /fatal error/i,
@@ -73,6 +76,13 @@ class CodexAdapter extends baseAdapter_1.BaseAdapter {
73
76
  }
74
77
  return null;
75
78
  }
79
+ extractAgentSessionId(raw) {
80
+ const contextual = CODEX_SESSION_RE.exec(raw);
81
+ if (contextual)
82
+ return contextual[1];
83
+ const any = CODEX_UUID_RE.exec(raw);
84
+ return any ? any[1] : null;
85
+ }
76
86
  matches(text, patterns) {
77
87
  return patterns.some((p) => p.test(text));
78
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codexAdapter.js","sourceRoot":"","sources":["../../src/adapters/codexAdapter.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAGjE,MAAM,OAAO,GAAG,mDAAmD,CAAC;AAEpE,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,qEAAqE;AACrE,MAAM,iBAAiB,GAAG;IACxB,4BAA4B;IAC5B,uBAAuB;IACvB,WAAW;IACX,WAAW;IACX,UAAU;IACV,eAAe;IACf,iBAAiB;IACjB,yBAAyB;CAC1B,CAAC;AAEF,wCAAwC;AACxC,MAAM,gBAAgB,GAAG;IACvB,SAAS;IACT,SAAS;IACT,gBAAgB,EAAQ,uBAAuB;IAC/C,iBAAiB,EAAO,wBAAwB;IAChD,iBAAiB;IACjB,sBAAsB;IACtB,0BAA0B;IAC1B,iCAAiC;IACjC,gBAAgB,EAAS,wBAAwB;IACjD,oBAAoB;CACrB,CAAC;AAEF,+BAA+B;AAC/B,MAAM,gBAAgB,GAAG;IACvB,4BAA4B;IAC5B,qCAAqC;IACrC,6BAA6B;IAC7B,oBAAoB;IACpB,2BAA2B;CAC5B,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,cAAc;IACd,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,4BAA4B;IAC5B,wBAAwB;CACzB,CAAC;AAEF,MAAa,YAAa,SAAQ,yBAAW;IAA7C;;QACW,cAAS,GAAG,OAAO,CAAC;IA8B/B,CAAC;IA5BC,UAAU,CAAC,eAAyB;QAClC,sDAAsD;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,aAA4B;QACpD,IAAI,aAAa,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;YAAE,OAAO,OAAO,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAAE,OAAO,mBAAmB,CAAC;QAErE,IACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;YACpC,CAAC,aAAa,KAAK,mBAAmB,IAAI,aAAa,KAAK,mBAAmB,CAAC,EAChF,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,QAAkB;QAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AA/BD,oCA+BC"}
1
+ {"version":3,"file":"codexAdapter.js","sourceRoot":"","sources":["../../src/adapters/codexAdapter.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,35 @@ export interface CreateSessionPayload {
6
6
  name: string;
7
7
  }
8
8
  export declare function createSession(payload: CreateSessionPayload): Promise<string>;
9
- export declare function updateSessionStatus(sessionId: string, status: string): Promise<void>;
9
+ export interface PendingAction {
10
+ question?: string;
11
+ options: string[];
12
+ }
13
+ export declare function updateSessionStatus(sessionId: string, status: string, pendingAction?: PendingAction): Promise<void>;
14
+ /** Poll for a response the mobile user submitted. Returns the action string or null. */
15
+ export declare function getSessionResponse(sessionId: string): Promise<string | null>;
10
16
  export declare function notifySession(sessionId: string, title: string, body: string, priority: string, rawText?: string): Promise<void>;
17
+ export declare function appendSessionOutput(sessionId: string, text: string, stream?: 'stdout' | 'stderr', { throwOnError }?: {
18
+ throwOnError?: boolean;
19
+ }): Promise<void>;
20
+ export declare function completeSession(sessionId: string, output?: string): Promise<void>;
21
+ export declare function updateSessionStats(sessionId: string, delta: {
22
+ calls?: number;
23
+ tokens?: number;
24
+ files?: number;
25
+ cost?: number;
26
+ }): Promise<void>;
27
+ export declare function reactivateSession(sessionId: string): Promise<void>;
28
+ export declare function saveAgentSessionId(sessionId: string, agentSessionId: string): Promise<void>;
29
+ export interface SessionSummary {
30
+ sessionId: string;
31
+ name: string;
32
+ agent: string;
33
+ status: string;
34
+ agentSessionId?: string;
35
+ }
36
+ export declare function getSession(sessionId: string): Promise<SessionSummary | null>;
37
+ /** Accepts either a full UUID or an 8-char short ID and returns the full session ID. */
38
+ export declare function resolveSessionId(input: string): Promise<string | null>;
11
39
  export declare function deleteSession(sessionId: string): Promise<void>;
12
40
  //# sourceMappingURL=backendClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backendClient.d.ts","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":"AAIA,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlF;AAED,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1F;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE"}
1
+ {"version":3,"file":"backendClient.d.ts","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":"AAIA,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wFAAwF;AACxF,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASlF;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,QAAQ,GAAG,QAAmB,EACtC,EAAE,YAAoB,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACxD,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcvF;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxE,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxE;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjG;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQlF;AAED,wFAAwF;AACxF,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU5E;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE"}
@@ -3,7 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OutdatedClientError = void 0;
4
4
  exports.createSession = createSession;
5
5
  exports.updateSessionStatus = updateSessionStatus;
6
+ exports.getSessionResponse = getSessionResponse;
6
7
  exports.notifySession = notifySession;
8
+ exports.appendSessionOutput = appendSessionOutput;
9
+ exports.completeSession = completeSession;
10
+ exports.updateSessionStats = updateSessionStats;
11
+ exports.reactivateSession = reactivateSession;
12
+ exports.saveAgentSessionId = saveAgentSessionId;
13
+ exports.getSession = getSession;
14
+ exports.resolveSessionId = resolveSessionId;
7
15
  exports.deleteSession = deleteSession;
8
16
  const package_json_1 = require("../../package.json");
9
17
  const BACKEND_URL = 'https://ashral-web.vercel.app';
@@ -32,13 +40,26 @@ async function createSession(payload) {
32
40
  const data = await res.json();
33
41
  return data.sessionId;
34
42
  }
35
- async function updateSessionStatus(sessionId, status) {
43
+ async function updateSessionStatus(sessionId, status, pendingAction) {
36
44
  await fetch(`${BACKEND_URL}/sessions/${sessionId}/status`, {
37
45
  method: 'PATCH',
38
46
  headers: { 'Content-Type': 'application/json' },
39
- body: JSON.stringify({ status }),
47
+ body: JSON.stringify({ status, ...(pendingAction && { pendingAction }) }),
40
48
  }).catch(() => { }); // best-effort, don't interrupt the session
41
49
  }
50
+ /** Poll for a response the mobile user submitted. Returns the action string or null. */
51
+ async function getSessionResponse(sessionId) {
52
+ try {
53
+ const res = await fetch(`${BACKEND_URL}/sessions/${sessionId}/response`);
54
+ if (!res.ok)
55
+ return null;
56
+ const data = await res.json();
57
+ return data.response ?? null;
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
42
63
  async function notifySession(sessionId, title, body, priority, rawText) {
43
64
  await fetch(`${BACKEND_URL}/sessions/${sessionId}/notify`, {
44
65
  method: 'POST',
@@ -46,6 +67,81 @@ async function notifySession(sessionId, title, body, priority, rawText) {
46
67
  body: JSON.stringify({ title, body, priority, rawText }),
47
68
  }).catch(() => { });
48
69
  }
70
+ async function appendSessionOutput(sessionId, text, stream = 'stdout', { throwOnError = false } = {}) {
71
+ const req = fetch(`${BACKEND_URL}/sessions/${sessionId}/output`, {
72
+ method: 'POST',
73
+ headers: { 'Content-Type': 'application/json' },
74
+ body: JSON.stringify({ text, stream }),
75
+ });
76
+ if (throwOnError) {
77
+ await req;
78
+ }
79
+ else {
80
+ await req.catch(() => { });
81
+ }
82
+ }
83
+ async function completeSession(sessionId, output) {
84
+ try {
85
+ const res = await fetch(`${BACKEND_URL}/sessions/${sessionId}/complete`, {
86
+ method: 'PATCH',
87
+ headers: { 'Content-Type': 'application/json' },
88
+ body: JSON.stringify({ output }),
89
+ });
90
+ if (!res.ok) {
91
+ const body = await res.text();
92
+ process.stderr.write(`[ashral] completeSession failed: ${res.status} ${body}\n`);
93
+ }
94
+ }
95
+ catch (err) {
96
+ process.stderr.write(`[ashral] completeSession error: ${err}\n`);
97
+ }
98
+ }
99
+ async function updateSessionStats(sessionId, delta) {
100
+ await fetch(`${BACKEND_URL}/sessions/${sessionId}/stats`, {
101
+ method: 'PATCH',
102
+ headers: { 'Content-Type': 'application/json' },
103
+ body: JSON.stringify(delta),
104
+ }).catch(() => { });
105
+ }
106
+ async function reactivateSession(sessionId) {
107
+ await fetch(`${BACKEND_URL}/sessions/${sessionId}/reactivate`, {
108
+ method: 'POST',
109
+ headers: { 'Content-Type': 'application/json' },
110
+ });
111
+ }
112
+ async function saveAgentSessionId(sessionId, agentSessionId) {
113
+ await fetch(`${BACKEND_URL}/sessions/${sessionId}/agent-session`, {
114
+ method: 'PATCH',
115
+ headers: { 'Content-Type': 'application/json' },
116
+ body: JSON.stringify({ agentSessionId }),
117
+ }).catch(() => { });
118
+ }
119
+ async function getSession(sessionId) {
120
+ try {
121
+ const res = await fetch(`${BACKEND_URL}/sessions/${sessionId}`);
122
+ if (!res.ok)
123
+ return null;
124
+ return await res.json();
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ }
130
+ /** Accepts either a full UUID or an 8-char short ID and returns the full session ID. */
131
+ async function resolveSessionId(input) {
132
+ if (input.length === 36)
133
+ return input; // already a full UUID
134
+ try {
135
+ const res = await fetch(`${BACKEND_URL}/sessions/short/${input}`);
136
+ if (!res.ok)
137
+ return null;
138
+ const data = await res.json();
139
+ return data.sessionId;
140
+ }
141
+ catch {
142
+ return null;
143
+ }
144
+ }
49
145
  async function deleteSession(sessionId) {
50
146
  await fetch(`${BACKEND_URL}/sessions/${sessionId}`, {
51
147
  method: 'DELETE',
@@ -1 +1 @@
1
- {"version":3,"file":"backendClient.js","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":";;;AAgBA,sCAoBC;AAED,kDAMC;AAED,sCAYC;AAED,sCAIC;AAhED,qDAA6C;AAE7C,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,MAAa,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAOM,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,WAAW,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,sBAAO;SAC5B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA2B,CAAC;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,MAAc;IACzE,MAAM,KAAK,CAAC,GAAG,WAAW,aAAa,SAAS,SAAS,EAAE;QACzD,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,2CAA2C;AACjE,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,OAAgB;IAEhB,MAAM,KAAK,CAAC,GAAG,WAAW,aAAa,SAAS,SAAS,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;KACzD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,SAAiB;IACnD,MAAM,KAAK,CAAC,GAAG,WAAW,aAAa,SAAS,EAAE,EAAE;QAClD,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"backendClient.js","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -10,43 +10,40 @@ const loadEnv_1 = require("./config/loadEnv");
10
10
  const showSessionQr_1 = require("./qr/showSessionQr");
11
11
  const backendClient_1 = require("./api/backendClient");
12
12
  const crypto_1 = require("crypto"); // fallback when backend is unreachable
13
- // ── ANSI helpers ─────────────────────────────────────────────────────────────
14
- const DIM = '\x1b[2m';
15
- const RESET = '\x1b[0m';
16
- const CYAN = '\x1b[36m';
17
- const YELLOW = '\x1b[33m';
18
13
  const RED = '\x1b[31m';
19
- const GREEN = '\x1b[32m';
20
- function timestamp() {
21
- return new Date().toISOString().split('T')[1].replace('Z', '');
22
- }
14
+ const RESET = '\x1b[0m';
23
15
  // ── Event handler ─────────────────────────────────────────────────────────────
24
16
  function makeEventHandler(sessionId, sessionName) {
25
- const tag = `${DIM}[ashral]${RESET}`;
26
17
  const label = sessionName ? `"${sessionName}"` : 'session';
27
18
  const notifier = new backendNotifier_1.BackendNotifier(sessionId);
28
19
  return function onEvent(event) {
29
20
  if (event.type === 'output')
30
21
  return;
31
- const ts = `${DIM}${timestamp()}${RESET}`;
32
22
  switch (event.type) {
33
23
  case 'status_changed': {
34
- process.stderr.write(`\n${tag} ${ts} ${CYAN}status${RESET} ${event.from} → ${event.to}\n`);
35
24
  if (event.to === 'waiting_for_input') {
25
+ // updateSessionStatus (with debounced options) is called by runSession.ts
36
26
  notifier.send({
37
27
  title: label,
38
28
  body: 'AI is waiting for your input.',
39
29
  priority: 'high',
40
30
  rawText: event.text,
41
31
  });
32
+ // Note: output is saved by the Anthropic proxy — don't append here or
33
+ // the PTY-formatted text (with TUI emoji prefix) creates a duplicate chunk.
42
34
  }
43
35
  else if (event.to === 'approval_required') {
36
+ // updateSessionStatus (with debounced options) is called by runSession.ts
44
37
  notifier.send({
45
38
  title: label,
46
39
  body: 'AI is waiting for your approval.',
47
40
  priority: 'urgent',
48
41
  rawText: event.text,
49
42
  });
43
+ // Same as above — proxy handles the clean output chunk.
44
+ }
45
+ else if (event.to === 'running') {
46
+ void (0, backendClient_1.updateSessionStatus)(sessionId, 'running');
50
47
  }
51
48
  else if (event.to === 'error') {
52
49
  notifier.send({
@@ -58,14 +55,7 @@ function makeEventHandler(sessionId, sessionName) {
58
55
  }
59
56
  break;
60
57
  }
61
- case 'agent_prompt':
62
- process.stderr.write(`${tag} ${ts} ${YELLOW}prompt${RESET} ${event.prompt}\n`);
63
- break;
64
- case 'error':
65
- process.stderr.write(`${tag} ${ts} ${RED}error${RESET} ${event.message}\n`);
66
- break;
67
58
  case 'completed':
68
- process.stderr.write(`\n${tag} ${ts} ${GREEN}done${RESET} exit code ${event.exitCode}\n`);
69
59
  notifier.send({
70
60
  title: label,
71
61
  body: 'Session completed.',
@@ -76,7 +66,7 @@ function makeEventHandler(sessionId, sessionName) {
76
66
  };
77
67
  }
78
68
  // ── Shared run logic ──────────────────────────────────────────────────────────
79
- async function runAgent(adapter, options, passthroughArgs) {
69
+ async function runAgent(adapter, options, passthroughArgs, existingSessionId) {
80
70
  try {
81
71
  adapter.verify();
82
72
  }
@@ -84,17 +74,28 @@ async function runAgent(adapter, options, passthroughArgs) {
84
74
  process.stderr.write(`\n${RED}[ashral] ${err instanceof Error ? err.message : err}${RESET}\n\n`);
85
75
  process.exit(1);
86
76
  }
87
- let sessionId = (0, crypto_1.randomUUID)(); // fallback if backend is unreachable
88
- try {
89
- sessionId = await (0, backendClient_1.createSession)({ agent: adapter.agentName, name: options.name ?? adapter.agentName });
77
+ let sessionId = existingSessionId ?? (0, crypto_1.randomUUID)();
78
+ if (existingSessionId) {
79
+ try {
80
+ await (0, backendClient_1.reactivateSession)(existingSessionId);
81
+ }
82
+ catch (err) {
83
+ const msg = err instanceof Error ? err.message : String(err);
84
+ process.stderr.write(`[ashral] Warning: could not reactivate session with backend: ${msg}\n`);
85
+ }
90
86
  }
91
- catch (err) {
92
- if (err instanceof backendClient_1.OutdatedClientError) {
93
- process.stderr.write(`\n${RED}[ashral] ${err.message}${RESET}\n\n`);
94
- process.exit(1);
87
+ else {
88
+ try {
89
+ sessionId = await (0, backendClient_1.createSession)({ agent: adapter.agentName, name: options.name ?? adapter.agentName });
90
+ }
91
+ catch (err) {
92
+ if (err instanceof backendClient_1.OutdatedClientError) {
93
+ process.stderr.write(`\n${RED}[ashral] ${err.message}${RESET}\n\n`);
94
+ process.exit(1);
95
+ }
96
+ const msg = err instanceof Error ? err.message : String(err);
97
+ process.stderr.write(`[ashral] Warning: could not register session with backend: ${msg}\n`);
95
98
  }
96
- const msg = err instanceof Error ? err.message : String(err);
97
- process.stderr.write(`[ashral] Warning: could not register session with backend: ${msg}\n`);
98
99
  }
99
100
  (0, showSessionQr_1.showSessionQr)(sessionId, options.name);
100
101
  try {
@@ -112,7 +113,7 @@ async function runAgent(adapter, options, passthroughArgs) {
112
113
  process.exit(1);
113
114
  }
114
115
  finally {
115
- await (0, backendClient_1.deleteSession)(sessionId);
116
+ await (0, backendClient_1.updateSessionStatus)(sessionId, 'terminated');
116
117
  }
117
118
  }
118
119
  // ── CLI definition ────────────────────────────────────────────────────────────
@@ -141,6 +142,37 @@ runCmd
141
142
  .action(async (options, command) => {
142
143
  await runAgent(new codexAdapter_1.CodexAdapter(), options, command.args);
143
144
  });
145
+ // ── resume ────────────────────────────────────────────────────────────────────
146
+ program
147
+ .command('resume')
148
+ .description('Resume a previous agent session by its Ashral session ID')
149
+ .argument('<sessionId>', 'Ashral session ID to resume')
150
+ .option('--name <name>', 'human-readable name for the new monitoring session')
151
+ .action(async (input, options) => {
152
+ const ashralSessionId = await (0, backendClient_1.resolveSessionId)(input);
153
+ if (!ashralSessionId) {
154
+ process.stderr.write(`\n${RED}[ashral] Session "${input}" not found.${RESET}\n\n`);
155
+ process.exit(1);
156
+ }
157
+ const session = await (0, backendClient_1.getSession)(ashralSessionId);
158
+ if (!session) {
159
+ process.stderr.write(`\n${RED}[ashral] Session "${input}" not found.${RESET}\n\n`);
160
+ process.exit(1);
161
+ }
162
+ if (!session.agentSessionId) {
163
+ process.stderr.write(`\n${RED}[ashral] Session "${ashralSessionId}" has no saved agent session ID — it cannot be resumed.${RESET}\n\n`);
164
+ process.exit(1);
165
+ }
166
+ const adapter = session.agent === 'codex' ? new codexAdapter_1.CodexAdapter() : new claudeAdapter_1.ClaudeAdapter();
167
+ try {
168
+ adapter.verify();
169
+ }
170
+ catch (err) {
171
+ process.stderr.write(`\n${RED}[ashral] ${err instanceof Error ? err.message : err}${RESET}\n\n`);
172
+ process.exit(1);
173
+ }
174
+ await runAgent(adapter, { name: options.name ?? session.name }, ['--resume', session.agentSessionId], ashralSessionId);
175
+ });
144
176
  // ── notify:test ───────────────────────────────────────────────────────────────
145
177
  program
146
178
  .command('notify:test')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,oDAAiD;AACjD,4DAAyD;AACzD,0DAAuD;AACvD,qEAAkE;AAClE,8CAA+C;AAC/C,sDAAmD;AACnD,uDAA6K;AAC7K,mCAAoC,CAAC,uCAAuC;AAG5E,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,iFAAiF;AAEjF,SAAS,gBAAgB,CACvB,SAAiB,EACjB,WAA+B;IAE/B,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,iCAAe,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,SAAS,OAAO,CAAC,KAAkB;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAEpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,IAAI,KAAK,CAAC,EAAE,KAAK,mBAAmB,EAAE,CAAC;oBACrC,0EAA0E;oBAC1E,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,+BAA+B;wBACrC,QAAQ,EAAE,MAAM;wBAChB,OAAO,EAAE,KAAK,CAAC,IAAI;qBACpB,CAAC,CAAC;oBACH,sEAAsE;oBACtE,4EAA4E;gBAC9E,CAAC;qBAAM,IAAI,KAAK,CAAC,EAAE,KAAK,mBAAmB,EAAE,CAAC;oBAC5C,0EAA0E;oBAC1E,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,kCAAkC;wBACxC,QAAQ,EAAE,QAAQ;wBAClB,OAAO,EAAE,KAAK,CAAC,IAAI;qBACpB,CAAC,CAAC;oBACH,wDAAwD;gBAC1D,CAAC;qBAAM,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;oBAClC,KAAK,IAAA,mCAAmB,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACjD,CAAC;qBAAM,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,0BAA0B;wBAChC,QAAQ,EAAE,MAAM;wBAChB,OAAO,EAAE,KAAK,CAAC,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,WAAW;gBACd,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,oBAAoB;oBAC1B,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;gBACH,MAAM;QACV,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,QAAQ,CACrB,OAA+E,EAC/E,OAA0B,EAC1B,eAAyB,EACzB,iBAA0B;IAE1B,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,GAAW,iBAAiB,IAAI,IAAA,mBAAU,GAAE,CAAC;IAE1D,IAAI,iBAAiB,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAA,iCAAiB,EAAC,iBAAiB,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,GAAG,IAAI,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACzG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,mCAAmB,EAAE,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,CAAC,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,GAAG,IAAI,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,IAAA,6BAAa,EAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,IAAA,uBAAU,EAAC;YACf,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;YACT,eAAe;YACf,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,OAAO,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,IAAA,mCAAmB,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,IAAA,qBAAW,GAAE,CAAC;AAEd,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,qCAAqC,CAAC;KAClD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAE5E,MAAM;KACH,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;KACtD,kBAAkB,EAAE;KACpB,oBAAoB,EAAE;KACtB,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,OAAgB,EAAE,EAAE;IAC7D,MAAM,QAAQ,CAAC,IAAI,6BAAa,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,MAAM;KACH,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;KACtD,kBAAkB,EAAE;KACpB,oBAAoB,EAAE;KACtB,MAAM,CAAC,KAAK,EAAE,OAA0B,EAAE,OAAgB,EAAE,EAAE;IAC7D,MAAM,QAAQ,CAAC,IAAI,2BAAY,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0DAA0D,CAAC;KACvE,QAAQ,CAAC,aAAa,EAAE,6BAA6B,CAAC;KACtD,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA0B,EAAE,EAAE;IAC1D,MAAM,eAAe,GAAG,MAAM,IAAA,gCAAgB,EAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,KAAK,eAAe,KAAK,MAAM,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAU,EAAC,eAAe,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,KAAK,eAAe,KAAK,MAAM,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,eAAe,0DAA0D,KAAK,MAAM,CAAC,CAAC;QACxI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,2BAAY,EAAE,CAAC,CAAC,CAAC,IAAI,6BAAa,EAAE,CAAC;IACrF,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,eAAe,CAAC,CAAC;AACzH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;IAClC,MAAM,IAAA,6BAAa,EAAC,SAAS,EAAE,aAAa,EAAE,6CAA6C,EAAE,MAAM,CAAC,CAAC;IACrG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface ProxyHandle {
2
+ port: number;
3
+ stop: () => Promise<void>;
4
+ }
5
+ export declare function startAnthropicProxy(sessionId: string): Promise<ProxyHandle>;
6
+ //# sourceMappingURL=anthropicProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropicProxy.d.ts","sourceRoot":"","sources":["../../src/proxy/anthropicProxy.ts"],"names":[],"mappings":"AA0MA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoG3E"}