@sovara/runner 0.1.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.
Files changed (122) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +331 -0
  3. package/dist/apiTypes.d.ts +4 -0
  4. package/dist/apiTypes.d.ts.map +1 -0
  5. package/dist/apiTypes.js +4 -0
  6. package/dist/apiTypes.js.map +1 -0
  7. package/dist/capture/requestEnvelope.d.ts +10 -0
  8. package/dist/capture/requestEnvelope.d.ts.map +1 -0
  9. package/dist/capture/requestEnvelope.js +79 -0
  10. package/dist/capture/requestEnvelope.js.map +1 -0
  11. package/dist/capture/responseEnvelope.d.ts +14 -0
  12. package/dist/capture/responseEnvelope.d.ts.map +1 -0
  13. package/dist/capture/responseEnvelope.js +43 -0
  14. package/dist/capture/responseEnvelope.js.map +1 -0
  15. package/dist/capture/sseUtils.d.ts +3 -0
  16. package/dist/capture/sseUtils.d.ts.map +1 -0
  17. package/dist/capture/sseUtils.js +69 -0
  18. package/dist/capture/sseUtils.js.map +1 -0
  19. package/dist/capture/streamCapture.d.ts +5 -0
  20. package/dist/capture/streamCapture.d.ts.map +1 -0
  21. package/dist/capture/streamCapture.js +19 -0
  22. package/dist/capture/streamCapture.js.map +1 -0
  23. package/dist/claudeAgentSdk/parseHook.d.ts +20 -0
  24. package/dist/claudeAgentSdk/parseHook.d.ts.map +1 -0
  25. package/dist/claudeAgentSdk/parseHook.js +160 -0
  26. package/dist/claudeAgentSdk/parseHook.js.map +1 -0
  27. package/dist/claudeAgentSdk/wrapper.d.ts +17 -0
  28. package/dist/claudeAgentSdk/wrapper.d.ts.map +1 -0
  29. package/dist/claudeAgentSdk/wrapper.js +219 -0
  30. package/dist/claudeAgentSdk/wrapper.js.map +1 -0
  31. package/dist/constants.d.ts +6 -0
  32. package/dist/constants.d.ts.map +1 -0
  33. package/dist/constants.js +7 -0
  34. package/dist/constants.js.map +1 -0
  35. package/dist/context.d.ts +34 -0
  36. package/dist/context.d.ts.map +1 -0
  37. package/dist/context.js +106 -0
  38. package/dist/context.js.map +1 -0
  39. package/dist/endpointPatterns.json +82 -0
  40. package/dist/endpointWhitelist.d.ts +2 -0
  41. package/dist/endpointWhitelist.d.ts.map +1 -0
  42. package/dist/endpointWhitelist.js +11 -0
  43. package/dist/endpointWhitelist.js.map +1 -0
  44. package/dist/env.d.ts +7 -0
  45. package/dist/env.d.ts.map +1 -0
  46. package/dist/env.js +10 -0
  47. package/dist/env.js.map +1 -0
  48. package/dist/index.d.ts +5 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +9 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/mcpPatch.d.ts +2 -0
  53. package/dist/mcpPatch.d.ts.map +1 -0
  54. package/dist/mcpPatch.js +195 -0
  55. package/dist/mcpPatch.js.map +1 -0
  56. package/dist/payload/editIoExcludePatterns.json +292 -0
  57. package/dist/payload/filterDict.d.ts +3 -0
  58. package/dist/payload/filterDict.d.ts.map +1 -0
  59. package/dist/payload/filterDict.js +26 -0
  60. package/dist/payload/filterDict.js.map +1 -0
  61. package/dist/payload/flatten.d.ts +6 -0
  62. package/dist/payload/flatten.d.ts.map +1 -0
  63. package/dist/payload/flatten.js +79 -0
  64. package/dist/payload/flatten.js.map +1 -0
  65. package/dist/payload/wrap.d.ts +6 -0
  66. package/dist/payload/wrap.d.ts.map +1 -0
  67. package/dist/payload/wrap.js +8 -0
  68. package/dist/payload/wrap.js.map +1 -0
  69. package/dist/priors.d.ts +7 -0
  70. package/dist/priors.d.ts.map +1 -0
  71. package/dist/priors.js +87 -0
  72. package/dist/priors.js.map +1 -0
  73. package/dist/priorsBlockGuidance.json +3 -0
  74. package/dist/projectContext.d.ts +12 -0
  75. package/dist/projectContext.d.ts.map +1 -0
  76. package/dist/projectContext.js +26 -0
  77. package/dist/projectContext.js.map +1 -0
  78. package/dist/runLogCapture.d.ts +10 -0
  79. package/dist/runLogCapture.d.ts.map +1 -0
  80. package/dist/runLogCapture.js +117 -0
  81. package/dist/runLogCapture.js.map +1 -0
  82. package/dist/runtimeClient.d.ts +103 -0
  83. package/dist/runtimeClient.d.ts.map +1 -0
  84. package/dist/runtimeClient.js +202 -0
  85. package/dist/runtimeClient.js.map +1 -0
  86. package/dist/serverLifecycle.d.ts +2 -0
  87. package/dist/serverLifecycle.d.ts.map +1 -0
  88. package/dist/serverLifecycle.js +59 -0
  89. package/dist/serverLifecycle.js.map +1 -0
  90. package/dist/sseListener.d.ts +9 -0
  91. package/dist/sseListener.d.ts.map +1 -0
  92. package/dist/sseListener.js +56 -0
  93. package/dist/sseListener.js.map +1 -0
  94. package/dist/transport/awsSdkHttp2Patch.d.ts +2 -0
  95. package/dist/transport/awsSdkHttp2Patch.d.ts.map +1 -0
  96. package/dist/transport/awsSdkHttp2Patch.js +428 -0
  97. package/dist/transport/awsSdkHttp2Patch.js.map +1 -0
  98. package/dist/transport/fetchPatch.d.ts +3 -0
  99. package/dist/transport/fetchPatch.d.ts.map +1 -0
  100. package/dist/transport/fetchPatch.js +237 -0
  101. package/dist/transport/fetchPatch.js.map +1 -0
  102. package/dist/transport/nodeHttpPatch.d.ts +3 -0
  103. package/dist/transport/nodeHttpPatch.d.ts.map +1 -0
  104. package/dist/transport/nodeHttpPatch.js +522 -0
  105. package/dist/transport/nodeHttpPatch.js.map +1 -0
  106. package/dist/user.d.ts +11 -0
  107. package/dist/user.d.ts.map +1 -0
  108. package/dist/user.js +31 -0
  109. package/dist/user.js.map +1 -0
  110. package/dist/util/logger.d.ts +2 -0
  111. package/dist/util/logger.d.ts.map +1 -0
  112. package/dist/util/logger.js +9 -0
  113. package/dist/util/logger.js.map +1 -0
  114. package/dist/util/stableJson.d.ts +2 -0
  115. package/dist/util/stableJson.d.ts.map +1 -0
  116. package/dist/util/stableJson.js +22 -0
  117. package/dist/util/stableJson.js.map +1 -0
  118. package/dist/util/stackTrace.d.ts +2 -0
  119. package/dist/util/stackTrace.d.ts.map +1 -0
  120. package/dist/util/stackTrace.js +11 -0
  121. package/dist/util/stackTrace.js.map +1 -0
  122. package/package.json +74 -0
@@ -0,0 +1,43 @@
1
+ import { extractSseDisplayContent, parseSseEvents } from "./sseUtils.js";
2
+ function headersToObject(headers) {
3
+ const out = {};
4
+ for (const [key, value] of headers.entries()) {
5
+ out[key.toLowerCase()] = value;
6
+ }
7
+ return out;
8
+ }
9
+ function inferEncoding(contentType) {
10
+ if (!contentType) {
11
+ return "utf-8";
12
+ }
13
+ const match = /charset=([^;]+)/i.exec(contentType);
14
+ return match ? match[1].trim() : "utf-8";
15
+ }
16
+ export async function buildResponseEnvelope(response) {
17
+ const headers = headersToObject(response.headers);
18
+ const contentType = response.headers.get("content-type");
19
+ const text = await response.text();
20
+ const envelope = {
21
+ status_code: response.status,
22
+ reason_phrase: response.statusText,
23
+ request_url: response.url || null,
24
+ headers,
25
+ content: "",
26
+ _encoding: inferEncoding(contentType),
27
+ };
28
+ const parsedSse = parseSseEvents(text);
29
+ if (parsedSse !== null) {
30
+ envelope._response_format = "sse";
31
+ envelope.content = extractSseDisplayContent(parsedSse);
32
+ envelope.sse = { events: parsedSse };
33
+ return envelope;
34
+ }
35
+ try {
36
+ envelope.content = JSON.parse(text);
37
+ }
38
+ catch {
39
+ envelope.content = text;
40
+ }
41
+ return envelope;
42
+ }
43
+ //# sourceMappingURL=responseEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseEnvelope.js","sourceRoot":"","sources":["../../src/capture/responseEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAazE,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,WAA0B;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAkB;IAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAqB;QACjC,WAAW,EAAE,QAAQ,CAAC,MAAM;QAC5B,aAAa,EAAE,QAAQ,CAAC,UAAU;QAClC,WAAW,EAAE,QAAQ,CAAC,GAAG,IAAI,IAAI;QACjC,OAAO;QACP,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC;KACtC,CAAC;IAEF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClC,QAAQ,CAAC,OAAO,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACvD,QAAQ,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function parseSseEvents(decodedContent: string): Array<Record<string, unknown>> | null;
2
+ export declare function extractSseDisplayContent(events: Array<Record<string, unknown>>): unknown;
3
+ //# sourceMappingURL=sseUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseUtils.d.ts","sourceRoot":"","sources":["../../src/capture/sseUtils.ts"],"names":[],"mappings":"AAYA,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CA2D5F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAMxF"}
@@ -0,0 +1,69 @@
1
+ function stripOptionalSpace(payload) {
2
+ return payload.startsWith(" ") ? payload.slice(1) : payload;
3
+ }
4
+ function parseSseDataValue(payload) {
5
+ try {
6
+ return JSON.parse(payload);
7
+ }
8
+ catch {
9
+ return payload;
10
+ }
11
+ }
12
+ export function parseSseEvents(decodedContent) {
13
+ if (!decodedContent.trim()) {
14
+ return null;
15
+ }
16
+ const events = [];
17
+ let dataLines = [];
18
+ let currentEvent = {};
19
+ let sawSseLine = false;
20
+ const flushEvent = () => {
21
+ if (dataLines.length > 0) {
22
+ currentEvent.data = parseSseDataValue(dataLines.join("\n"));
23
+ dataLines = [];
24
+ }
25
+ if (Object.keys(currentEvent).length === 0) {
26
+ return;
27
+ }
28
+ events.push(currentEvent);
29
+ currentEvent = {};
30
+ };
31
+ for (const line of decodedContent.split(/\r?\n/)) {
32
+ if (line.length === 0) {
33
+ flushEvent();
34
+ continue;
35
+ }
36
+ if (line.startsWith(":")) {
37
+ sawSseLine = true;
38
+ continue;
39
+ }
40
+ sawSseLine = true;
41
+ const separatorIndex = line.indexOf(":");
42
+ const field = separatorIndex >= 0 ? line.slice(0, separatorIndex) : line;
43
+ const rawValue = separatorIndex >= 0 ? line.slice(separatorIndex + 1) : "";
44
+ const value = stripOptionalSpace(rawValue);
45
+ if (field === "data") {
46
+ dataLines.push(value);
47
+ continue;
48
+ }
49
+ if (field === "event" || field === "id") {
50
+ currentEvent[field] = value;
51
+ continue;
52
+ }
53
+ if (field === "retry") {
54
+ currentEvent.retry = /^\d+$/.test(value) ? Number(value) : value;
55
+ continue;
56
+ }
57
+ return null;
58
+ }
59
+ flushEvent();
60
+ return sawSseLine && events.length > 0 ? events : null;
61
+ }
62
+ export function extractSseDisplayContent(events) {
63
+ const values = events.filter((event) => "data" in event).map((event) => event.data);
64
+ if (values.length === 0) {
65
+ return "";
66
+ }
67
+ return values.length === 1 ? values[0] : values;
68
+ }
69
+ //# sourceMappingURL=sseUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseUtils.js","sourceRoot":"","sources":["../../src/capture/sseUtils.ts"],"names":[],"mappings":"AAAA,SAAS,kBAAkB,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,cAAsB;IACnD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAmC,EAAE,CAAC;IAClD,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,IAAI,YAAY,GAA4B,EAAE,CAAC;IAC/C,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,UAAU,GAAG,GAAS,EAAE;QAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,YAAY,GAAG,EAAE,CAAC;IACpB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,UAAU,EAAE,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QAED,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,QAAQ,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACjE,SAAS;QACX,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,EAAE,CAAC;IACb,OAAO,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAsC;IAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function teeReadableStream(stream: ReadableStream<Uint8Array>): {
2
+ userStream: ReadableStream<Uint8Array>;
3
+ capturedText: Promise<string>;
4
+ };
5
+ //# sourceMappingURL=streamCapture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamCapture.d.ts","sourceRoot":"","sources":["../../src/capture/streamCapture.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACjC;IAAE,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAqB3E"}
@@ -0,0 +1,19 @@
1
+ export function teeReadableStream(stream) {
2
+ const [userStream, captureStream] = stream.tee();
3
+ const capturedText = (async () => {
4
+ const reader = captureStream.getReader();
5
+ const decoder = new TextDecoder();
6
+ let text = "";
7
+ while (true) {
8
+ const { done, value } = await reader.read();
9
+ if (done) {
10
+ break;
11
+ }
12
+ text += decoder.decode(value, { stream: true });
13
+ }
14
+ text += decoder.decode();
15
+ return text;
16
+ })();
17
+ return { userStream, capturedText };
18
+ }
19
+ //# sourceMappingURL=streamCapture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamCapture.js","sourceRoot":"","sources":["../../src/capture/streamCapture.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAC/B,MAAkC;IAElC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YACD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type RunScope } from "../context.js";
2
+ type ToolUseBlock = {
3
+ id: string;
4
+ name: string;
5
+ input: unknown;
6
+ };
7
+ type ToolResultBlock = {
8
+ toolUseId: string;
9
+ content: unknown;
10
+ isError: boolean;
11
+ };
12
+ export declare function extractClaudeSdkToolUseBlocks(message: unknown): ToolUseBlock[];
13
+ export declare function extractClaudeSdkToolResultBlocks(message: unknown): ToolResultBlock[];
14
+ export declare function normalizeToolResultContent(content: unknown): unknown;
15
+ export declare function publishClaudeSdkMessage(message: unknown, options?: {
16
+ scope?: RunScope;
17
+ stackTrace?: string | null;
18
+ }): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=parseHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseHook.d.ts","sourceRoot":"","sources":["../../src/claudeAgentSdk/parseHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIlE,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AA0DF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAoB9E;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CAyDpF;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEpE;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
@@ -0,0 +1,160 @@
1
+ import { getCurrentRunScope } from "../context.js";
2
+ import { warnOnce } from "../util/logger.js";
3
+ import { sanitizeStackTrace } from "../util/stackTrace.js";
4
+ function isObject(value) {
5
+ return !!value && typeof value === "object";
6
+ }
7
+ function toContentBlocks(message) {
8
+ if (!isObject(message)) {
9
+ return [];
10
+ }
11
+ const outerContent = message.content;
12
+ if (Array.isArray(outerContent)) {
13
+ return outerContent;
14
+ }
15
+ const wrappedMessage = message.message;
16
+ if (isObject(wrappedMessage) && Array.isArray(wrappedMessage.content)) {
17
+ return wrappedMessage.content;
18
+ }
19
+ return [];
20
+ }
21
+ function extractTopLevelToolUse(message) {
22
+ if (!isObject(message) || message.type !== "tool_use") {
23
+ return [];
24
+ }
25
+ const id = typeof message.id === "string" ? message.id : "";
26
+ const name = typeof message.name === "string" ? message.name : "";
27
+ if (!id || !name) {
28
+ return [];
29
+ }
30
+ return [{ id, name, input: message.input }];
31
+ }
32
+ function extractTopLevelToolResult(message) {
33
+ if (!isObject(message) || message.type !== "tool_result") {
34
+ return [];
35
+ }
36
+ const toolUseId = typeof message.tool_use_id === "string"
37
+ ? message.tool_use_id
38
+ : typeof message.toolUseId === "string"
39
+ ? message.toolUseId
40
+ : "";
41
+ if (!toolUseId) {
42
+ return [];
43
+ }
44
+ return [
45
+ {
46
+ toolUseId,
47
+ content: message.content,
48
+ isError: Boolean(message.is_error ?? message.isError),
49
+ },
50
+ ];
51
+ }
52
+ export function extractClaudeSdkToolUseBlocks(message) {
53
+ const topLevel = extractTopLevelToolUse(message);
54
+ if (topLevel.length > 0) {
55
+ return topLevel;
56
+ }
57
+ const blocks = toContentBlocks(message);
58
+ const toolUses = [];
59
+ for (const block of blocks) {
60
+ if (!isObject(block) || block.type !== "tool_use") {
61
+ continue;
62
+ }
63
+ const id = typeof block.id === "string" ? block.id : "";
64
+ const name = typeof block.name === "string" ? block.name : "";
65
+ if (!id || !name) {
66
+ continue;
67
+ }
68
+ toolUses.push({ id, name, input: block.input });
69
+ }
70
+ return toolUses;
71
+ }
72
+ export function extractClaudeSdkToolResultBlocks(message) {
73
+ const topLevel = extractTopLevelToolResult(message);
74
+ if (topLevel.length > 0) {
75
+ return topLevel;
76
+ }
77
+ const blocks = toContentBlocks(message);
78
+ const toolResults = [];
79
+ for (const block of blocks) {
80
+ if (!isObject(block) || block.type !== "tool_result") {
81
+ continue;
82
+ }
83
+ const toolUseId = typeof block.tool_use_id === "string"
84
+ ? block.tool_use_id
85
+ : typeof block.toolUseId === "string"
86
+ ? block.toolUseId
87
+ : "";
88
+ if (!toolUseId) {
89
+ continue;
90
+ }
91
+ toolResults.push({
92
+ toolUseId,
93
+ content: block.content,
94
+ isError: Boolean(block.is_error ?? block.isError),
95
+ });
96
+ }
97
+ if (toolResults.length > 0) {
98
+ return toolResults;
99
+ }
100
+ if (!isObject(message)) {
101
+ return [];
102
+ }
103
+ const maybeToolUseResult = message.tool_use_result;
104
+ if (!isObject(maybeToolUseResult)) {
105
+ return [];
106
+ }
107
+ const toolUseId = typeof maybeToolUseResult.tool_use_id === "string"
108
+ ? maybeToolUseResult.tool_use_id
109
+ : typeof maybeToolUseResult.toolUseId === "string"
110
+ ? maybeToolUseResult.toolUseId
111
+ : "";
112
+ if (!toolUseId) {
113
+ return [];
114
+ }
115
+ return [
116
+ {
117
+ toolUseId,
118
+ content: maybeToolUseResult.content,
119
+ isError: Boolean(maybeToolUseResult.is_error ?? maybeToolUseResult.isError),
120
+ },
121
+ ];
122
+ }
123
+ export function normalizeToolResultContent(content) {
124
+ return content == null ? "" : content;
125
+ }
126
+ export async function publishClaudeSdkMessage(message, options) {
127
+ const scope = options?.scope ?? getCurrentRunScope();
128
+ if (!scope) {
129
+ return;
130
+ }
131
+ const registerToolUse = scope.client.registerClaudeSdkToolUse;
132
+ const finalizeToolResult = scope.client.finalizeClaudeSdkToolResult;
133
+ if (typeof registerToolUse !== "function" && typeof finalizeToolResult !== "function") {
134
+ return;
135
+ }
136
+ const stackTrace = options?.stackTrace ?? sanitizeStackTrace(new Error().stack);
137
+ if (typeof registerToolUse === "function") {
138
+ const toolUses = extractClaudeSdkToolUseBlocks(message);
139
+ for (const block of toolUses) {
140
+ try {
141
+ await registerToolUse(scope.runId, block.id, block.name, block.input, stackTrace);
142
+ }
143
+ catch {
144
+ warnOnce("claude-sdk-tool-use", "[sovara] Failed to register Claude SDK tool-use event.");
145
+ }
146
+ }
147
+ }
148
+ if (typeof finalizeToolResult === "function") {
149
+ const toolResults = extractClaudeSdkToolResultBlocks(message);
150
+ for (const block of toolResults) {
151
+ try {
152
+ await finalizeToolResult(scope.runId, block.toolUseId, normalizeToolResultContent(block.content), block.isError);
153
+ }
154
+ catch {
155
+ warnOnce("claude-sdk-tool-result", "[sovara] Failed to finalize Claude SDK tool-result event.");
156
+ }
157
+ }
158
+ }
159
+ }
160
+ //# sourceMappingURL=parseHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseHook.js","sourceRoot":"","sources":["../../src/claudeAgentSdk/parseHook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { query as claudeQuery } from "@anthropic-ai/claude-agent-sdk";
2
+ import type { SDKUserMessage } from "@anthropic-ai/claude-agent-sdk";
3
+ type QueryOptions = Record<string, unknown>;
4
+ type QueryArgs = {
5
+ prompt: string | AsyncIterable<SDKUserMessage>;
6
+ options?: QueryOptions;
7
+ };
8
+ type QueryResult = ReturnType<typeof claudeQuery>;
9
+ type StartupArgs = {
10
+ options?: QueryOptions;
11
+ initializeTimeoutMs?: number;
12
+ [key: string]: unknown;
13
+ };
14
+ export declare function query(input: QueryArgs): QueryResult;
15
+ export declare function startup(params?: StartupArgs): Promise<unknown>;
16
+ export {};
17
+ //# sourceMappingURL=wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/claudeAgentSdk/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,WAAW,EAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAa9E,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAC5F,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAElD,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AA2PF,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAMnD;AAED,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBpE"}
@@ -0,0 +1,219 @@
1
+ import { query as claudeQuery, startup as claudeStartup, } from "@anthropic-ai/claude-agent-sdk";
2
+ import { randomUUID } from "node:crypto";
3
+ import { getCurrentRunScope } from "../context.js";
4
+ import { warnOnce } from "../util/logger.js";
5
+ import { sanitizeStackTrace } from "../util/stackTrace.js";
6
+ import { publishClaudeSdkMessage } from "./parseHook.js";
7
+ const DEFAULT_ANTHROPIC_BASE_URL = "https://api.anthropic.com";
8
+ const UNSUPPORTED_CUSTOM_TRANSPORT_MESSAGE = "Custom Claude Agent SDK transports are not supported yet under sovara.";
9
+ const PROXY_LOOP_MESSAGE = "Claude Agent SDK ANTHROPIC_BASE_URL points at the Sovara Claude proxy itself. Nested Claude proxy configuration is not supported.";
10
+ function isObject(value) {
11
+ return !!value && typeof value === "object";
12
+ }
13
+ function isAsyncIterable(value) {
14
+ if (!isObject(value)) {
15
+ return false;
16
+ }
17
+ const candidate = value;
18
+ return typeof candidate[Symbol.asyncIterator] === "function";
19
+ }
20
+ function toStringEnv(env) {
21
+ if (!isObject(env)) {
22
+ return {};
23
+ }
24
+ const output = {};
25
+ for (const [key, value] of Object.entries(env)) {
26
+ if (typeof value === "string") {
27
+ output[key] = value;
28
+ }
29
+ }
30
+ return output;
31
+ }
32
+ function inheritedEnv() {
33
+ const output = {};
34
+ for (const [key, value] of Object.entries(process.env)) {
35
+ if (typeof value === "string") {
36
+ output[key] = value;
37
+ }
38
+ }
39
+ return output;
40
+ }
41
+ function proxyBaseUrl(scope, clientId) {
42
+ return `${scope.url.replace(/\/$/, "")}/claude-proxy/runs/${scope.runId}/clients/${clientId}`;
43
+ }
44
+ function isSovaraProxyBaseUrl(baseUrl, scope) {
45
+ return baseUrl.replace(/\/$/, "").startsWith(`${scope.url.replace(/\/$/, "")}/claude-proxy/`);
46
+ }
47
+ function hasCustomTransport(options) {
48
+ return options.transport != null || options.customTransport != null;
49
+ }
50
+ function isSdkErrorResult(message) {
51
+ return isObject(message) && message.type === "result" && message.is_error === true;
52
+ }
53
+ function isDuplicateSdkTerminalError(error) {
54
+ return (error instanceof Error &&
55
+ error.message.startsWith("Claude Code returned an error result:"));
56
+ }
57
+ function wrapQueryResult(createSource, beforeRead, onMessage) {
58
+ let source;
59
+ async function getSource() {
60
+ await beforeRead;
61
+ if (!source) {
62
+ source = createSource();
63
+ }
64
+ return source;
65
+ }
66
+ const iterator = (async function* () {
67
+ const resolvedSource = await getSource();
68
+ if (!isAsyncIterable(resolvedSource)) {
69
+ warnOnce("claude-sdk-non-iterable-query", "[sovara] Claude SDK query() returned a non-iterable result; skipping message instrumentation.");
70
+ return;
71
+ }
72
+ let yieldedSdkErrorResult = false;
73
+ try {
74
+ for await (const message of resolvedSource) {
75
+ if (isSdkErrorResult(message)) {
76
+ yieldedSdkErrorResult = true;
77
+ }
78
+ await onMessage(message);
79
+ yield message;
80
+ }
81
+ }
82
+ catch (error) {
83
+ if (yieldedSdkErrorResult && isDuplicateSdkTerminalError(error)) {
84
+ return;
85
+ }
86
+ throw error;
87
+ }
88
+ })();
89
+ return new Proxy(iterator, {
90
+ get(target, property, receiver) {
91
+ if (property in target) {
92
+ const value = Reflect.get(target, property, receiver);
93
+ return typeof value === "function" ? value.bind(target) : value;
94
+ }
95
+ if (!source) {
96
+ return undefined;
97
+ }
98
+ const value = source[property];
99
+ return typeof value === "function" ? value.bind(source) : value;
100
+ },
101
+ has(target, property) {
102
+ return property in target || (source ? property in source : false);
103
+ },
104
+ });
105
+ }
106
+ function prepareSdkOptionsForScope(scope, inputOptions) {
107
+ const options = isObject(inputOptions) ? { ...inputOptions } : {};
108
+ if (hasCustomTransport(options)) {
109
+ throw new Error(UNSUPPORTED_CUSTOM_TRANSPORT_MESSAGE);
110
+ }
111
+ const mergedEnv = {
112
+ ...inheritedEnv(),
113
+ CLAUDE_CODE_ENTRYPOINT: "sdk-ts",
114
+ ...toStringEnv(options.env),
115
+ };
116
+ if (mergedEnv.SOVARA_CLAUDE_PROXY_ACTIVE === "1") {
117
+ return {
118
+ nextOptions: { ...options, env: mergedEnv },
119
+ registrationPromise: Promise.resolve(),
120
+ };
121
+ }
122
+ const upstreamBaseUrl = mergedEnv.ANTHROPIC_BASE_URL || DEFAULT_ANTHROPIC_BASE_URL;
123
+ if (isSovaraProxyBaseUrl(upstreamBaseUrl, scope)) {
124
+ throw new Error(PROXY_LOOP_MESSAGE);
125
+ }
126
+ if (typeof scope.client.registerClaudeProxyClient !== "function") {
127
+ warnOnce("claude-sdk-register-client-missing", "[sovara] Claude SDK proxy registration is unavailable in this run scope.");
128
+ return {
129
+ nextOptions: { ...options, env: mergedEnv },
130
+ registrationPromise: Promise.resolve(),
131
+ };
132
+ }
133
+ const clientId = randomUUID().replace(/-/g, "");
134
+ const registrationPromise = scope.client.registerClaudeProxyClient(scope.runId, clientId, upstreamBaseUrl, sanitizeStackTrace(new Error().stack)).catch((error) => {
135
+ warnOnce("claude-sdk-register-client", "[sovara] Failed to register Claude SDK proxy client.");
136
+ throw error;
137
+ });
138
+ return {
139
+ nextOptions: {
140
+ ...options,
141
+ env: {
142
+ ...mergedEnv,
143
+ ANTHROPIC_BASE_URL: proxyBaseUrl(scope, clientId),
144
+ SOVARA_CLAUDE_PROXY_ACTIVE: "1",
145
+ },
146
+ },
147
+ registrationPromise,
148
+ };
149
+ }
150
+ function instrumentQuery(input, scope) {
151
+ const { nextOptions, registrationPromise } = prepareSdkOptionsForScope(scope, input.options);
152
+ return wrapQueryResult(() => claudeQuery({
153
+ ...input,
154
+ options: nextOptions,
155
+ }), registrationPromise, async (message) => {
156
+ await publishClaudeSdkMessage(message, {
157
+ scope,
158
+ stackTrace: sanitizeStackTrace(new Error().stack),
159
+ });
160
+ });
161
+ }
162
+ function wrapWarmQueryResult(source, scope) {
163
+ if (!isAsyncIterable(source)) {
164
+ return source;
165
+ }
166
+ return wrapQueryResult(() => source, Promise.resolve(), async (message) => {
167
+ await publishClaudeSdkMessage(message, {
168
+ scope,
169
+ stackTrace: sanitizeStackTrace(new Error().stack),
170
+ });
171
+ });
172
+ }
173
+ function patchWarmQueryHandle(warmQueryHandle, scope) {
174
+ if (!isObject(warmQueryHandle) || typeof warmQueryHandle.query !== "function") {
175
+ return warmQueryHandle;
176
+ }
177
+ const originalQuery = warmQueryHandle.query.bind(warmQueryHandle);
178
+ const patchedWarmQuery = (prompt) => {
179
+ const rawResult = originalQuery(prompt);
180
+ return wrapWarmQueryResult(rawResult, scope);
181
+ };
182
+ try {
183
+ warmQueryHandle.query = patchedWarmQuery;
184
+ return warmQueryHandle;
185
+ }
186
+ catch {
187
+ return new Proxy(warmQueryHandle, {
188
+ get(target, property, receiver) {
189
+ if (property === "query") {
190
+ return patchedWarmQuery;
191
+ }
192
+ const value = Reflect.get(target, property, receiver);
193
+ return typeof value === "function" ? value.bind(target) : value;
194
+ },
195
+ });
196
+ }
197
+ }
198
+ export function query(input) {
199
+ const scope = getCurrentRunScope();
200
+ if (!scope) {
201
+ return claudeQuery(input);
202
+ }
203
+ return instrumentQuery(input, scope);
204
+ }
205
+ export async function startup(params) {
206
+ const scope = getCurrentRunScope();
207
+ if (!scope) {
208
+ return claudeStartup(params);
209
+ }
210
+ const normalizedParams = isObject(params) ? { ...params } : {};
211
+ const { nextOptions, registrationPromise } = prepareSdkOptionsForScope(scope, normalizedParams.options);
212
+ const warm = await claudeStartup({
213
+ ...normalizedParams,
214
+ options: nextOptions,
215
+ });
216
+ await registrationPromise;
217
+ return patchWarmQueryHandle(warm, scope);
218
+ }
219
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../src/claudeAgentSdk/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,WAAW,EACpB,OAAO,IAAI,aAAa,GACzB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAiB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AAC/D,MAAM,oCAAoC,GACxC,wEAAwE,CAAC;AAC3E,MAAM,kBAAkB,GACtB,mIAAmI,CAAC;AAYtI,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,KAA6C,CAAC;IAChE,OAAO,OAAO,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,UAAU,CAAC;AAC/D,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,QAAgB;IACrD,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,KAAK,CAAC,KAAK,YAAY,QAAQ,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,KAAe;IAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAqB;IAC/C,OAAO,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;AACrF,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,uCAAuC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,YAA+B,EAC/B,UAAyB,EACzB,SAA8C;IAE9C,IAAI,MAA+B,CAAC;IACpC,KAAK,UAAU,SAAS;QACtB,MAAM,UAAU,CAAC;QACjB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,YAAY,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,KAAK,SAAS,CAAC;QAC/B,MAAM,cAAc,GAAG,MAAM,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,QAAQ,CACN,+BAA+B,EAC/B,+FAA+F,CAChG,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;gBAC3C,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9B,qBAAqB,GAAG,IAAI,CAAC;gBAC/B,CAAC;gBACD,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;gBACzB,MAAM,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,qBAAqB,IAAI,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,OAAO;YACT,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,IAAI,KAAK,CAAC,QAAkC,EAAE;QACnD,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC5B,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACtD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,KAAK,GAAI,MAAkD,CAAC,QAAQ,CAAC,CAAC;YAC5E,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC;QACD,GAAG,CAAC,MAAM,EAAE,QAAQ;YAClB,OAAO,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrE,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAe,EACf,YAAqB;IAErB,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,SAAS,GAA2B;QACxC,GAAG,YAAY,EAAE;QACjB,sBAAsB,EAAE,QAAQ;QAChC,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;KAC5B,CAAC;IAEF,IAAI,SAAS,CAAC,0BAA0B,KAAK,GAAG,EAAE,CAAC;QACjD,OAAO;YACL,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;YAC3C,mBAAmB,EAAE,OAAO,CAAC,OAAO,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,SAAS,CAAC,kBAAkB,IAAI,0BAA0B,CAAC;IACnF,IAAI,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,yBAAyB,KAAK,UAAU,EAAE,CAAC;QACjE,QAAQ,CACN,oCAAoC,EACpC,0EAA0E,CAC3E,CAAC;QACF,OAAO;YACL,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;YAC3C,mBAAmB,EAAE,OAAO,CAAC,OAAO,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAChE,KAAK,CAAC,KAAK,EACX,QAAQ,EACR,eAAe,EACf,kBAAkB,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CACtC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzB,QAAQ,CACN,4BAA4B,EAC5B,sDAAsD,CACvD,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE;YACX,GAAG,OAAO;YACV,GAAG,EAAE;gBACH,GAAG,SAAS;gBACZ,kBAAkB,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACjD,0BAA0B,EAAE,GAAG;aAChC;SACF;QACD,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAgB,EAAE,KAAe;IACxD,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7F,OAAO,eAAe,CACpB,GAAG,EAAE,CACH,WAAW,CAAC;QACV,GAAG,KAAK;QACR,OAAO,EAAE,WAAsB;KAChC,CAAC,EACJ,mBAAmB,EACnB,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,uBAAuB,CAAC,OAAO,EAAE;YACrC,KAAK;YACL,UAAU,EAAE,kBAAkB,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;SAClD,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAmB,EACnB,KAAe;IAEf,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,eAAe,CACpB,GAAG,EAAE,CAAC,MAAM,EACZ,OAAO,CAAC,OAAO,EAAE,EACjB,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,uBAAuB,CAAC,OAAO,EAAE;YACrC,KAAK;YACL,UAAU,EAAE,kBAAkB,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;SAClD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB,CAAC,eAAwB,EAAE,KAAe;IACrE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9E,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAEpD,CAAC;IAEb,MAAM,gBAAgB,GAAG,CAAC,MAAe,EAAW,EAAE;QACpD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,mBAAmB,CAAC,SAAwB,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,eAAe,CAAC,KAAK,GAAG,gBAAgB,CAAC;QACzC,OAAO,eAAe,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE;YAChC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;gBAC5B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACzB,OAAO,gBAAgB,CAAC;gBAC1B,CAAC;gBACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACtD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAgB;IACpC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAoB;IAChD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,EAAE,GAAG,MAAM,EAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,yBAAyB,CACpE,KAAK,EACL,gBAAgB,CAAC,OAAO,CACzB,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;QAC/B,GAAG,gBAAgB;QACnB,OAAO,EAAE,WAAsB;KAChC,CAAC,CAAC;IACH,MAAM,mBAAmB,CAAC;IAC1B,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const HOST: string;
2
+ export declare const PORT: number;
3
+ export declare const DEFAULT_SERVER_URL: string;
4
+ export declare const SERVER_BOOT_TIMEOUT_MS = 15000;
5
+ export declare const SERVER_BOOT_POLL_INTERVAL_MS = 500;
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,QAAkC,CAAC;AAGpD,eAAO,MAAM,IAAI,QAAkD,CAAC;AAEpE,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAC3D,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,eAAO,MAAM,4BAA4B,MAAM,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const HOST = process.env.HOST ?? "127.0.0.1";
2
+ const parsedPort = Number(process.env.PYTHON_PORT ?? "5959");
3
+ export const PORT = Number.isFinite(parsedPort) ? parsedPort : 5959;
4
+ export const DEFAULT_SERVER_URL = `http://${HOST}:${PORT}`;
5
+ export const SERVER_BOOT_TIMEOUT_MS = 15_000;
6
+ export const SERVER_BOOT_POLL_INTERVAL_MS = 500;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC;AAEpD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAEpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC"}