ashral 0.2.2 → 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 +61 -11
  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
@@ -22,20 +22,28 @@ function makeEventHandler(sessionId, sessionName) {
22
22
  switch (event.type) {
23
23
  case 'status_changed': {
24
24
  if (event.to === 'waiting_for_input') {
25
+ // updateSessionStatus (with debounced options) is called by runSession.ts
25
26
  notifier.send({
26
27
  title: label,
27
28
  body: 'AI is waiting for your input.',
28
29
  priority: 'high',
29
30
  rawText: event.text,
30
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.
31
34
  }
32
35
  else if (event.to === 'approval_required') {
36
+ // updateSessionStatus (with debounced options) is called by runSession.ts
33
37
  notifier.send({
34
38
  title: label,
35
39
  body: 'AI is waiting for your approval.',
36
40
  priority: 'urgent',
37
41
  rawText: event.text,
38
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');
39
47
  }
40
48
  else if (event.to === 'error') {
41
49
  notifier.send({
@@ -58,7 +66,7 @@ function makeEventHandler(sessionId, sessionName) {
58
66
  };
59
67
  }
60
68
  // ── Shared run logic ──────────────────────────────────────────────────────────
61
- async function runAgent(adapter, options, passthroughArgs) {
69
+ async function runAgent(adapter, options, passthroughArgs, existingSessionId) {
62
70
  try {
63
71
  adapter.verify();
64
72
  }
@@ -66,17 +74,28 @@ async function runAgent(adapter, options, passthroughArgs) {
66
74
  process.stderr.write(`\n${RED}[ashral] ${err instanceof Error ? err.message : err}${RESET}\n\n`);
67
75
  process.exit(1);
68
76
  }
69
- let sessionId = (0, crypto_1.randomUUID)(); // fallback if backend is unreachable
70
- try {
71
- 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
+ }
72
86
  }
73
- catch (err) {
74
- if (err instanceof backendClient_1.OutdatedClientError) {
75
- process.stderr.write(`\n${RED}[ashral] ${err.message}${RESET}\n\n`);
76
- 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`);
77
98
  }
78
- const msg = err instanceof Error ? err.message : String(err);
79
- process.stderr.write(`[ashral] Warning: could not register session with backend: ${msg}\n`);
80
99
  }
81
100
  (0, showSessionQr_1.showSessionQr)(sessionId, options.name);
82
101
  try {
@@ -94,7 +113,7 @@ async function runAgent(adapter, options, passthroughArgs) {
94
113
  process.exit(1);
95
114
  }
96
115
  finally {
97
- await (0, backendClient_1.deleteSession)(sessionId);
116
+ await (0, backendClient_1.updateSessionStatus)(sessionId, 'terminated');
98
117
  }
99
118
  }
100
119
  // ── CLI definition ────────────────────────────────────────────────────────────
@@ -123,6 +142,37 @@ runCmd
123
142
  .action(async (options, command) => {
124
143
  await runAgent(new codexAdapter_1.CodexAdapter(), options, command.args);
125
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
+ });
126
176
  // ── notify:test ───────────────────────────────────────────────────────────────
127
177
  program
128
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":"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"}
@@ -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"}