@sovara/sdk 0.0.0-stage → 0.9.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 (133) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +36 -2
  3. package/dist/apiTypes.d.ts +5 -0
  4. package/dist/apiTypes.d.ts.map +1 -0
  5. package/dist/apiTypes.js +5 -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 +17 -0
  12. package/dist/capture/responseEnvelope.d.ts.map +1 -0
  13. package/dist/capture/responseEnvelope.js +72 -0
  14. package/dist/capture/responseEnvelope.js.map +1 -0
  15. package/dist/capture/sensitiveHeaders.d.ts +7 -0
  16. package/dist/capture/sensitiveHeaders.d.ts.map +1 -0
  17. package/dist/capture/sensitiveHeaders.js +41 -0
  18. package/dist/capture/sensitiveHeaders.js.map +1 -0
  19. package/dist/capture/sseUtils.d.ts +3 -0
  20. package/dist/capture/sseUtils.d.ts.map +1 -0
  21. package/dist/capture/sseUtils.js +69 -0
  22. package/dist/capture/sseUtils.js.map +1 -0
  23. package/dist/capture/streamCapture.d.ts +5 -0
  24. package/dist/capture/streamCapture.d.ts.map +1 -0
  25. package/dist/capture/streamCapture.js +19 -0
  26. package/dist/capture/streamCapture.js.map +1 -0
  27. package/dist/client.d.ts +52 -0
  28. package/dist/client.d.ts.map +1 -0
  29. package/dist/client.js +66 -0
  30. package/dist/client.js.map +1 -0
  31. package/dist/codeVersion.d.ts +17 -0
  32. package/dist/codeVersion.d.ts.map +1 -0
  33. package/dist/codeVersion.js +107 -0
  34. package/dist/codeVersion.js.map +1 -0
  35. package/dist/compatibility.d.ts +24 -0
  36. package/dist/compatibility.d.ts.map +1 -0
  37. package/dist/compatibility.js +122 -0
  38. package/dist/compatibility.js.map +1 -0
  39. package/dist/constants.d.ts +9 -0
  40. package/dist/constants.d.ts.map +1 -0
  41. package/dist/constants.js +37 -0
  42. package/dist/constants.js.map +1 -0
  43. package/dist/context.d.ts +55 -0
  44. package/dist/context.d.ts.map +1 -0
  45. package/dist/context.js +380 -0
  46. package/dist/context.js.map +1 -0
  47. package/dist/endpointPatterns.json +90 -0
  48. package/dist/endpointWhitelist.d.ts +2 -0
  49. package/dist/endpointWhitelist.d.ts.map +1 -0
  50. package/dist/endpointWhitelist.js +11 -0
  51. package/dist/endpointWhitelist.js.map +1 -0
  52. package/dist/env.d.ts +7 -0
  53. package/dist/env.d.ts.map +1 -0
  54. package/dist/env.js +11 -0
  55. package/dist/env.js.map +1 -0
  56. package/dist/failsafe.d.ts +5 -0
  57. package/dist/failsafe.d.ts.map +1 -0
  58. package/dist/failsafe.js +25 -0
  59. package/dist/failsafe.js.map +1 -0
  60. package/dist/index.d.ts +6 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +16 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/mcpPatch.d.ts +2 -0
  65. package/dist/mcpPatch.d.ts.map +1 -0
  66. package/dist/mcpPatch.js +202 -0
  67. package/dist/mcpPatch.js.map +1 -0
  68. package/dist/openaiAgentsPatch.d.ts +2 -0
  69. package/dist/openaiAgentsPatch.d.ts.map +1 -0
  70. package/dist/openaiAgentsPatch.js +112 -0
  71. package/dist/openaiAgentsPatch.js.map +1 -0
  72. package/dist/payload/editIoExcludePatterns.json +322 -0
  73. package/dist/payload/filterDict.d.ts +3 -0
  74. package/dist/payload/filterDict.d.ts.map +1 -0
  75. package/dist/payload/filterDict.js +26 -0
  76. package/dist/payload/filterDict.js.map +1 -0
  77. package/dist/payload/flatten.d.ts +6 -0
  78. package/dist/payload/flatten.d.ts.map +1 -0
  79. package/dist/payload/flatten.js +79 -0
  80. package/dist/payload/flatten.js.map +1 -0
  81. package/dist/payload/wrap.d.ts +10 -0
  82. package/dist/payload/wrap.d.ts.map +1 -0
  83. package/dist/payload/wrap.js +82 -0
  84. package/dist/payload/wrap.js.map +1 -0
  85. package/dist/platformSession.d.ts +3 -0
  86. package/dist/platformSession.d.ts.map +1 -0
  87. package/dist/platformSession.js +21 -0
  88. package/dist/platformSession.js.map +1 -0
  89. package/dist/runtimeClient.d.ts +112 -0
  90. package/dist/runtimeClient.d.ts.map +1 -0
  91. package/dist/runtimeClient.js +219 -0
  92. package/dist/runtimeClient.js.map +1 -0
  93. package/dist/serverLifecycle.d.ts +12 -0
  94. package/dist/serverLifecycle.d.ts.map +1 -0
  95. package/dist/serverLifecycle.js +77 -0
  96. package/dist/serverLifecycle.js.map +1 -0
  97. package/dist/toolTraceUtils.d.ts +38 -0
  98. package/dist/toolTraceUtils.d.ts.map +1 -0
  99. package/dist/toolTraceUtils.js +189 -0
  100. package/dist/toolTraceUtils.js.map +1 -0
  101. package/dist/trace.d.ts +13 -0
  102. package/dist/trace.d.ts.map +1 -0
  103. package/dist/trace.js +133 -0
  104. package/dist/trace.js.map +1 -0
  105. package/dist/traceLogCapture.d.ts +18 -0
  106. package/dist/traceLogCapture.d.ts.map +1 -0
  107. package/dist/traceLogCapture.js +125 -0
  108. package/dist/traceLogCapture.js.map +1 -0
  109. package/dist/transport/awsSdkHttp2Patch.d.ts +2 -0
  110. package/dist/transport/awsSdkHttp2Patch.d.ts.map +1 -0
  111. package/dist/transport/awsSdkHttp2Patch.js +442 -0
  112. package/dist/transport/awsSdkHttp2Patch.js.map +1 -0
  113. package/dist/transport/fetchPatch.d.ts +3 -0
  114. package/dist/transport/fetchPatch.d.ts.map +1 -0
  115. package/dist/transport/fetchPatch.js +257 -0
  116. package/dist/transport/fetchPatch.js.map +1 -0
  117. package/dist/transport/nodeHttpPatch.d.ts +3 -0
  118. package/dist/transport/nodeHttpPatch.d.ts.map +1 -0
  119. package/dist/transport/nodeHttpPatch.js +532 -0
  120. package/dist/transport/nodeHttpPatch.js.map +1 -0
  121. package/dist/util/logger.d.ts +2 -0
  122. package/dist/util/logger.d.ts.map +1 -0
  123. package/dist/util/logger.js +9 -0
  124. package/dist/util/logger.js.map +1 -0
  125. package/dist/util/stableJson.d.ts +2 -0
  126. package/dist/util/stableJson.d.ts.map +1 -0
  127. package/dist/util/stableJson.js +22 -0
  128. package/dist/util/stableJson.js.map +1 -0
  129. package/dist/util/stackTrace.d.ts +2 -0
  130. package/dist/util/stackTrace.d.ts.map +1 -0
  131. package/dist/util/stackTrace.js +11 -0
  132. package/dist/util/stackTrace.js.map +1 -0
  133. package/package.json +70 -4
@@ -0,0 +1,77 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { warnOnce } from "./util/logger.js";
3
+ import { checkCompatibility, CompatibilityError, raiseForCompatibilityResponse, } from "./compatibility.js";
4
+ const CLI_UNREACHABLE_WARNING = "Sovara exec server is unreachable and could not be started. Install the " +
5
+ "Sovara CLI (https://docs.sovara-labs.com) so it can manage the local exec " +
6
+ "server, or set SOVARA_EXEC_SERVER_URL to a reachable server. Continuing " +
7
+ "without Sovara recording.";
8
+ function defaultFetch() {
9
+ const maybeOriginal = globalThis[Symbol.for("sovara.originalFetch")];
10
+ return typeof maybeOriginal === "function"
11
+ ? maybeOriginal
12
+ : fetch;
13
+ }
14
+ function defaultWhich(name) {
15
+ const res = spawnSync(process.platform === "win32" ? "where" : "which", [name], {
16
+ encoding: "utf8",
17
+ });
18
+ if (res.status !== 0)
19
+ return null;
20
+ return res.stdout.split(/\r?\n/)[0]?.trim() || null;
21
+ }
22
+ async function isHealthy(url, fetchFn) {
23
+ try {
24
+ let response = await fetchFn(`${url}/runner/health`);
25
+ if (response.status === 404)
26
+ response = await fetchFn(`${url}/health`);
27
+ if (!response.ok) {
28
+ if (response.status === 400 || response.status === 409) {
29
+ raiseForCompatibilityResponse(response.status, await response.json());
30
+ }
31
+ return false;
32
+ }
33
+ const payload = (await response.json());
34
+ if (payload.status !== "ok" || payload.service !== "sovara-exec-server")
35
+ return false;
36
+ checkCompatibility(url, payload);
37
+ return true;
38
+ }
39
+ catch (error) {
40
+ if (error instanceof CompatibilityError)
41
+ throw error;
42
+ return false;
43
+ }
44
+ }
45
+ async function restartViaCli(url, deps) {
46
+ const bin = deps.which("sovara");
47
+ if (!bin)
48
+ return false;
49
+ try {
50
+ deps.spawn(bin, ["exec-server", "start"], {
51
+ env: { ...process.env, SOVARA_EXEC_SERVER_URL: url },
52
+ });
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ const deadline = Date.now() + 10_000;
58
+ while (Date.now() < deadline) {
59
+ if (await isHealthy(url, deps.fetchFn))
60
+ return true;
61
+ await new Promise((r) => setTimeout(r, 250));
62
+ }
63
+ return isHealthy(url, deps.fetchFn);
64
+ }
65
+ export async function ensureServerRunning(url, deps = {}) {
66
+ const fetchFn = deps.fetchFn ?? defaultFetch();
67
+ const which = deps.which ?? defaultWhich;
68
+ const spawn = deps.spawn ??
69
+ ((bin, args, options) => spawnSync(bin, args, { timeout: 25_000, env: options?.env }));
70
+ if (await isHealthy(url, fetchFn))
71
+ return true;
72
+ if (await restartViaCli(url, { fetchFn, which, spawn }))
73
+ return true;
74
+ warnOnce("exec-server-unreachable", CLI_UNREACHABLE_WARNING);
75
+ return false;
76
+ }
77
+ //# sourceMappingURL=serverLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverLifecycle.js","sourceRoot":"","sources":["../src/serverLifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type TraceScopeClient } from "./context.js";
2
+ import type { PrepareCallResponse, TraceWriteCredentials } from "./runtimeClient.js";
3
+ export type PreparedToolTrace = {
4
+ preparedCall: PrepareCallResponse;
5
+ credentials: TraceWriteCredentials;
6
+ turnId: string | null;
7
+ inputJson: string;
8
+ startedAt: number;
9
+ client: TraceScopeClient;
10
+ };
11
+ export declare function normalizeJsonable(value: unknown): unknown;
12
+ export declare function buildToolInputDict(args: {
13
+ toolName: string;
14
+ toolInput: unknown;
15
+ toolCallId: string;
16
+ meta?: Record<string, unknown>;
17
+ }): Record<string, unknown>;
18
+ export declare function buildToolSuccessOutput(args: {
19
+ toolName: string;
20
+ toolCallId: string;
21
+ result: unknown;
22
+ meta?: Record<string, unknown>;
23
+ }): Record<string, unknown>;
24
+ export declare function buildToolErrorOutput(args: {
25
+ toolName: string;
26
+ toolCallId: string;
27
+ error: unknown;
28
+ }): Record<string, unknown>;
29
+ export declare function shouldTraceTool(toolCallId: string | undefined): boolean;
30
+ export declare function prepareToolTrace(args: {
31
+ toolName: string;
32
+ toolInput: unknown;
33
+ toolCallId: string;
34
+ apiType: string;
35
+ meta?: Record<string, unknown>;
36
+ }): Promise<PreparedToolTrace>;
37
+ export declare function recordPreparedToolOutput(trace: PreparedToolTrace, output: Record<string, unknown>, apiType: string): Promise<void>;
38
+ //# sourceMappingURL=toolTraceUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolTraceUtils.d.ts","sourceRoot":"","sources":["../src/toolTraceUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAIrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,EAAE,qBAAqB,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAuEF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEzD;AA4BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB1B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmB1B;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY1B;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmC7B;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,189 @@
1
+ import { performance } from "node:perf_hooks";
2
+ import { serialize } from "superjson";
3
+ import { getCurrentTraceScope } from "./context.js";
4
+ import { wrapForStorage } from "./payload/wrap.js";
5
+ import { stableJsonStringify } from "./util/stableJson.js";
6
+ import { sanitizeStackTrace } from "./util/stackTrace.js";
7
+ function isPlainRecord(value) {
8
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
9
+ }
10
+ function fallbackString(value) {
11
+ try {
12
+ return String(value);
13
+ }
14
+ catch {
15
+ return "[Unserializable]";
16
+ }
17
+ }
18
+ function unserializableMarker(error) {
19
+ const errorType = error instanceof Error ? error.name : "Error";
20
+ return { _sovara_unserializable: errorType };
21
+ }
22
+ function sanitizeJsonValue(value, seen = new WeakSet()) {
23
+ if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
24
+ if (typeof value === "number" && !Number.isFinite(value)) {
25
+ return String(value);
26
+ }
27
+ return value;
28
+ }
29
+ if (value === undefined) {
30
+ return null;
31
+ }
32
+ if (typeof value === "bigint" || typeof value === "symbol" || typeof value === "function") {
33
+ return fallbackString(value);
34
+ }
35
+ if (Array.isArray(value)) {
36
+ return value.map((item) => sanitizeJsonValue(item, seen));
37
+ }
38
+ const objectValue = value;
39
+ if (seen.has(objectValue)) {
40
+ return "[Circular]";
41
+ }
42
+ seen.add(objectValue);
43
+ try {
44
+ return Object.fromEntries(Object.entries(objectValue).map(([key, item]) => [key, sanitizeJsonValue(item, seen)]));
45
+ }
46
+ catch (error) {
47
+ return unserializableMarker(error);
48
+ }
49
+ }
50
+ function normalizeTraceValue(value) {
51
+ try {
52
+ const serialized = serialize(value);
53
+ const normalized = {
54
+ json: sanitizeJsonValue(serialized.json),
55
+ };
56
+ if (serialized.meta !== undefined) {
57
+ normalized.superjsonMeta = sanitizeJsonValue(serialized.meta);
58
+ }
59
+ return normalized;
60
+ }
61
+ catch (error) {
62
+ return { json: unserializableMarker(error) };
63
+ }
64
+ }
65
+ export function normalizeJsonable(value) {
66
+ return normalizeTraceValue(value).json;
67
+ }
68
+ function normalizedMetaRecord(meta) {
69
+ const normalized = normalizeTraceValue(meta ?? {});
70
+ return {
71
+ meta: isPlainRecord(normalized.json) ? normalized.json : {},
72
+ superjsonMeta: normalized.superjsonMeta,
73
+ };
74
+ }
75
+ function valueTypeName(value) {
76
+ if (value === null) {
77
+ return "null";
78
+ }
79
+ if (value === undefined) {
80
+ return "undefined";
81
+ }
82
+ if (typeof value !== "object" && typeof value !== "function") {
83
+ return typeof value;
84
+ }
85
+ const constructorName = value.constructor?.name;
86
+ return typeof constructorName === "string" && constructorName ? constructorName : typeof value;
87
+ }
88
+ export function buildToolInputDict(args) {
89
+ const normalizedInput = normalizeTraceValue(args.toolInput);
90
+ const payload = {
91
+ tool_name: args.toolName,
92
+ tool_call_id: args.toolCallId,
93
+ tool_input: normalizedInput.json,
94
+ };
95
+ const { meta, superjsonMeta } = normalizedMetaRecord(args.meta);
96
+ if (normalizedInput.superjsonMeta !== undefined) {
97
+ meta.tool_input_superjson_meta = normalizedInput.superjsonMeta;
98
+ }
99
+ if (superjsonMeta !== undefined) {
100
+ meta.meta_superjson_meta = superjsonMeta;
101
+ }
102
+ if (Object.keys(meta).length > 0) {
103
+ payload._meta = meta;
104
+ }
105
+ if (Array.isArray(normalizedInput.json) || isPlainRecord(normalizedInput.json)) {
106
+ payload.tool_input_json = stableJsonStringify(normalizedInput.json);
107
+ }
108
+ return payload;
109
+ }
110
+ export function buildToolSuccessOutput(args) {
111
+ const normalizedOutput = normalizeTraceValue(args.result);
112
+ const { meta, superjsonMeta } = normalizedMetaRecord(args.meta);
113
+ if (superjsonMeta !== undefined) {
114
+ meta.meta_superjson_meta = superjsonMeta;
115
+ }
116
+ if (normalizedOutput.superjsonMeta !== undefined) {
117
+ meta.tool_output_superjson_meta = normalizedOutput.superjsonMeta;
118
+ }
119
+ if (!("output_type" in meta)) {
120
+ meta.output_type = valueTypeName(args.result);
121
+ }
122
+ return {
123
+ tool_name: args.toolName,
124
+ tool_call_id: args.toolCallId,
125
+ status: "success",
126
+ tool_output: normalizedOutput.json,
127
+ _meta: meta,
128
+ };
129
+ }
130
+ export function buildToolErrorOutput(args) {
131
+ const error = args.error;
132
+ const errorType = error instanceof Error ? error.name : "Error";
133
+ const errorMessage = error instanceof Error ? error.message || error.name : fallbackString(error) || errorType;
134
+ return {
135
+ tool_name: args.toolName,
136
+ tool_call_id: args.toolCallId,
137
+ status: "error",
138
+ error_type: errorType,
139
+ error_message: errorMessage,
140
+ };
141
+ }
142
+ export function shouldTraceTool(toolCallId) {
143
+ return Boolean(toolCallId) && getCurrentTraceScope() !== undefined;
144
+ }
145
+ export async function prepareToolTrace(args) {
146
+ const scope = getCurrentTraceScope();
147
+ if (!scope) {
148
+ throw new Error("No active Sovara trace");
149
+ }
150
+ const inputJson = stableJsonStringify(wrapForStorage(buildToolInputDict({
151
+ toolName: args.toolName,
152
+ toolInput: args.toolInput,
153
+ toolCallId: args.toolCallId,
154
+ meta: args.meta,
155
+ }), { apiType: args.apiType, direction: "input" }));
156
+ const preparedCall = await scope.client.prepareCall({
157
+ credentials: scope.credentials,
158
+ turnId: scope.turnId,
159
+ inputJson,
160
+ apiType: args.apiType,
161
+ stackTrace: sanitizeStackTrace(new Error().stack),
162
+ promptBearingSuffixJson: "[]",
163
+ lessonScopePaths: scope.lessonScopePaths,
164
+ });
165
+ return {
166
+ preparedCall,
167
+ credentials: scope.credentials,
168
+ turnId: scope.turnId,
169
+ inputJson: preparedCall.preparedInputJson ?? inputJson,
170
+ startedAt: performance.now(),
171
+ client: scope.client,
172
+ };
173
+ }
174
+ export async function recordPreparedToolOutput(trace, output, apiType) {
175
+ await trace.client.recordOutput({
176
+ credentials: trace.credentials,
177
+ turnId: trace.turnId,
178
+ stepUuid: trace.preparedCall.stepUuid,
179
+ apiType,
180
+ inputJson: trace.inputJson,
181
+ outputJson: stableJsonStringify(wrapForStorage(output, { apiType, direction: "output" })),
182
+ latencySeconds: Math.max(0, (performance.now() - trace.startedAt) / 1000),
183
+ stackTrace: null,
184
+ stepKind: trace.preparedCall.stepKind,
185
+ suffixKeysJson: trace.preparedCall.suffixKeysJson ?? "[]",
186
+ promptBearingSuffixJson: trace.preparedCall.promptBearingSuffixJson ?? "[]",
187
+ });
188
+ }
189
+ //# sourceMappingURL=toolTraceUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolTraceUtils.js","sourceRoot":"","sources":["../src/toolTraceUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type TraceOptions = {
2
+ name?: string;
3
+ meta?: Record<string, unknown>;
4
+ };
5
+ type Method<This, Args extends any[], Return> = (this: This, ...args: Args) => Return;
6
+ export declare function trace<F extends (...args: any[]) => any>(fn: F, options?: TraceOptions): F;
7
+ export declare function trace(options: TraceOptions): {
8
+ <F extends (...args: any[]) => any>(fn: F): F;
9
+ <This, Args extends any[], Return>(value: Method<This, Args, Return>, ctx: ClassMethodDecoratorContext<This, Method<This, Args, Return>>): Method<This, Args, Return>;
10
+ };
11
+ export declare function trace<This, Args extends any[], Return>(value: Method<This, Args, Return>, ctx: ClassMethodDecoratorContext<This, Method<This, Args, Return>>): Method<This, Args, Return>;
12
+ export {};
13
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAGF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,EAAE,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;AAQtF,wBAAgB,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC;AAC3F,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG;IAC5C,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,EAAE,EAAE,MAAM,EAC/B,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EACjC,GAAG,EAAE,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,GACjE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;CAC/B,CAAC;AACF,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,EAAE,EAAE,MAAM,EACpD,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EACjC,GAAG,EAAE,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,GACjE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC"}
package/dist/trace.js ADDED
@@ -0,0 +1,133 @@
1
+ import { buildToolErrorOutput, buildToolSuccessOutput, prepareToolTrace, recordPreparedToolOutput, shouldTraceTool, } from "./toolTraceUtils.js";
2
+ const API_TYPE = "sovara.trace";
3
+ export function trace(first, second) {
4
+ if (typeof first === "function" && isClassMethodContext(second)) {
5
+ return makeWrapped(first, undefined, String(second.name));
6
+ }
7
+ if (typeof first === "function") {
8
+ return makeWrapped(first, isTraceOptions(second) ? second : undefined);
9
+ }
10
+ if (isTraceOptions(first)) {
11
+ return (value, ctx) => {
12
+ if (!isClassMethodContext(ctx)) {
13
+ return makeWrapped(value, first);
14
+ }
15
+ return makeWrapped(value, first, String(ctx.name));
16
+ };
17
+ }
18
+ throw new TypeError("trace expects a function, decorator context, or options object");
19
+ }
20
+ function isTraceOptions(value) {
21
+ return Boolean(value) && typeof value === "object" && !isClassMethodContext(value);
22
+ }
23
+ function isClassMethodContext(value) {
24
+ return Boolean(value) && typeof value === "object" && value.kind === "method";
25
+ }
26
+ function isPromiseLike(value) {
27
+ return (Boolean(value) &&
28
+ (typeof value === "object" || typeof value === "function") &&
29
+ typeof value.then === "function");
30
+ }
31
+ function warnTraceFailure() {
32
+ console.warn("[sovara] Failed to trace decorated function.");
33
+ }
34
+ function resolveToolName(fn, options, contextName) {
35
+ if (options?.name) {
36
+ return options.name;
37
+ }
38
+ if (fn.name) {
39
+ return fn.name;
40
+ }
41
+ if (contextName) {
42
+ return contextName;
43
+ }
44
+ const constructorName = fn.constructor?.name;
45
+ return typeof constructorName === "string" && constructorName ? constructorName : "Function";
46
+ }
47
+ function prepareInvocation(args) {
48
+ const toolCallId = crypto.randomUUID();
49
+ if (!shouldTraceTool(toolCallId)) {
50
+ return null;
51
+ }
52
+ const toolName = resolveToolName(args.fn, args.options, args.contextName);
53
+ const toolInput = { args: args.callArgs };
54
+ const prepared = prepareToolTrace({
55
+ toolName,
56
+ toolInput,
57
+ toolCallId,
58
+ apiType: API_TYPE,
59
+ meta: args.options?.meta,
60
+ }).catch(() => {
61
+ warnTraceFailure();
62
+ return null;
63
+ });
64
+ return {
65
+ toolName,
66
+ toolCallId,
67
+ meta: args.options?.meta,
68
+ prepared,
69
+ };
70
+ }
71
+ async function recordSuccess(invocation, output) {
72
+ if (!invocation) {
73
+ return;
74
+ }
75
+ const prepared = await invocation.prepared;
76
+ if (!prepared) {
77
+ return;
78
+ }
79
+ await recordPreparedToolOutput(prepared, buildToolSuccessOutput({
80
+ toolName: invocation.toolName,
81
+ toolCallId: invocation.toolCallId,
82
+ result: output,
83
+ meta: invocation.meta,
84
+ }), API_TYPE);
85
+ }
86
+ async function recordError(invocation, error) {
87
+ if (!invocation) {
88
+ return;
89
+ }
90
+ const prepared = await invocation.prepared;
91
+ if (!prepared) {
92
+ return;
93
+ }
94
+ await recordPreparedToolOutput(prepared, buildToolErrorOutput({
95
+ toolName: invocation.toolName,
96
+ toolCallId: invocation.toolCallId,
97
+ error,
98
+ }), API_TYPE);
99
+ }
100
+ function makeWrapped(fn, options, contextName) {
101
+ const wrapped = function traced(...args) {
102
+ const invocation = prepareInvocation({ fn, callArgs: args, options, contextName });
103
+ let result;
104
+ try {
105
+ result = fn.apply(this, args);
106
+ }
107
+ catch (error) {
108
+ void recordError(invocation, error).catch(warnTraceFailure);
109
+ throw error;
110
+ }
111
+ if (isPromiseLike(result)) {
112
+ return (async () => {
113
+ try {
114
+ const value = await result;
115
+ await recordSuccess(invocation, value).catch(warnTraceFailure);
116
+ return value;
117
+ }
118
+ catch (error) {
119
+ await recordError(invocation, error).catch(warnTraceFailure);
120
+ throw error;
121
+ }
122
+ })();
123
+ }
124
+ void recordSuccess(invocation, result).catch(warnTraceFailure);
125
+ return result;
126
+ };
127
+ Object.defineProperty(wrapped, "name", {
128
+ configurable: true,
129
+ value: fn.name,
130
+ });
131
+ return wrapped;
132
+ }
133
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type LogRecordingContext = {
2
+ readonly logCaptureId?: symbol;
3
+ readonly credentials: object;
4
+ };
5
+ type AppendCallback<TContext extends LogRecordingContext> = (context: TContext, chunk: string) => Promise<void> | void;
6
+ type InstallOptions<TContext extends LogRecordingContext> = {
7
+ captureId: symbol;
8
+ onAppend: AppendCallback<TContext>;
9
+ resolveContext: () => TContext | undefined;
10
+ flushIntervalMs?: number;
11
+ };
12
+ export type TraceLogCaptureHandle<TContext extends LogRecordingContext> = {
13
+ flush(context?: TContext): Promise<void>;
14
+ stop(): Promise<void>;
15
+ };
16
+ export declare function installTraceLogCapture<TContext extends LogRecordingContext>(options: InstallOptions<TContext>): TraceLogCaptureHandle<TContext>;
17
+ export {};
18
+ //# sourceMappingURL=traceLogCapture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceLogCapture.d.ts","sourceRoot":"","sources":["../src/traceLogCapture.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,cAAc,CAAC,QAAQ,SAAS,mBAAmB,IAAI,CAC1D,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,KAAK,cAAc,CAAC,QAAQ,SAAS,mBAAmB,IAAI;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAgBF,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,mBAAmB,IAAI;IACxE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAqGF,wBAAgB,sBAAsB,CAAC,QAAQ,SAAS,mBAAmB,EACzE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,GAChC,qBAAqB,CAAC,QAAQ,CAAC,CA6BjC"}
@@ -0,0 +1,125 @@
1
+ let patchInstalled = false;
2
+ let flushInterval = null;
3
+ let originalStdoutWrite = null;
4
+ let originalStderrWrite = null;
5
+ const captures = new Set();
6
+ function decodeChunk(chunk, encoding) {
7
+ if (typeof chunk === "string")
8
+ return chunk;
9
+ if (chunk instanceof Uint8Array)
10
+ return Buffer.from(chunk).toString(encoding ?? "utf8");
11
+ return String(chunk ?? "");
12
+ }
13
+ function track(state, context, result) {
14
+ const pending = Promise.resolve(result).catch(() => undefined);
15
+ const operations = state.inFlight.get(context.credentials) ?? new Set();
16
+ operations.add(pending);
17
+ state.inFlight.set(context.credentials, operations);
18
+ void pending.finally(() => {
19
+ operations.delete(pending);
20
+ if (operations.size === 0)
21
+ state.inFlight.delete(context.credentials);
22
+ });
23
+ }
24
+ function flushState(state, onlyContext) {
25
+ for (const [key, buffer] of state.buffered) {
26
+ if (onlyContext && buffer.context.credentials !== onlyContext.credentials)
27
+ continue;
28
+ state.buffered.delete(key);
29
+ const chunk = buffer.chunks.join("");
30
+ if (chunk)
31
+ track(state, buffer.context, state.onAppend(buffer.context, chunk));
32
+ }
33
+ }
34
+ async function waitForWrites(state, onlyContext) {
35
+ const pending = onlyContext
36
+ ? [...(state.inFlight.get(onlyContext.credentials) ?? [])]
37
+ : [...state.inFlight.values()].flatMap((operations) => [...operations]);
38
+ await Promise.allSettled(pending);
39
+ }
40
+ function flushAll() {
41
+ for (const state of captures)
42
+ flushState(state);
43
+ }
44
+ function capture(text) {
45
+ if (!text)
46
+ return;
47
+ for (const state of captures) {
48
+ const context = state.resolveContext();
49
+ if (!context || context.logCaptureId !== state.captureId)
50
+ continue;
51
+ const buffer = state.buffered.get(context) ?? { context, chunks: [] };
52
+ buffer.chunks.push(text);
53
+ state.buffered.set(context, buffer);
54
+ }
55
+ }
56
+ function patchWrite(original) {
57
+ return function patchedWrite(chunk, encoding, callback) {
58
+ capture(decodeChunk(chunk, typeof encoding === "string" ? encoding : undefined));
59
+ if (typeof encoding === "function")
60
+ return original.call(this, chunk, encoding);
61
+ return original.call(this, chunk, encoding, callback);
62
+ };
63
+ }
64
+ function installGlobalPatch() {
65
+ if (patchInstalled)
66
+ return;
67
+ originalStdoutWrite = process.stdout.write;
68
+ originalStderrWrite = process.stderr.write;
69
+ process.stdout.write = patchWrite(process.stdout.write.bind(process.stdout));
70
+ process.stderr.write = patchWrite(process.stderr.write.bind(process.stderr));
71
+ patchInstalled = true;
72
+ }
73
+ function uninstallGlobalPatch() {
74
+ if (!patchInstalled)
75
+ return;
76
+ if (originalStdoutWrite)
77
+ process.stdout.write = originalStdoutWrite;
78
+ if (originalStderrWrite)
79
+ process.stderr.write = originalStderrWrite;
80
+ patchInstalled = false;
81
+ originalStdoutWrite = null;
82
+ originalStderrWrite = null;
83
+ }
84
+ function restartFlushTimer() {
85
+ if (flushInterval)
86
+ clearInterval(flushInterval);
87
+ flushInterval = null;
88
+ if (captures.size === 0)
89
+ return;
90
+ const interval = Math.min(...[...captures].map((state) => state.flushIntervalMs));
91
+ flushInterval = setInterval(flushAll, interval);
92
+ flushInterval.unref();
93
+ }
94
+ export function installTraceLogCapture(options) {
95
+ const state = {
96
+ captureId: options.captureId,
97
+ onAppend: (context, chunk) => options.onAppend(context, chunk),
98
+ resolveContext: options.resolveContext,
99
+ buffered: new Map(),
100
+ inFlight: new Map(),
101
+ flushIntervalMs: Math.max(1, options.flushIntervalMs ?? 250),
102
+ };
103
+ installGlobalPatch();
104
+ captures.add(state);
105
+ restartFlushTimer();
106
+ let stopped = false;
107
+ return {
108
+ async flush(context) {
109
+ flushState(state, context);
110
+ await waitForWrites(state, context);
111
+ },
112
+ async stop() {
113
+ if (stopped)
114
+ return;
115
+ stopped = true;
116
+ captures.delete(state);
117
+ restartFlushTimer();
118
+ if (captures.size === 0)
119
+ uninstallGlobalPatch();
120
+ flushState(state);
121
+ await waitForWrites(state);
122
+ },
123
+ };
124
+ }
125
+ //# sourceMappingURL=traceLogCapture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traceLogCapture.js","sourceRoot":"","sources":["../src/traceLogCapture.ts"],"names":[],"mappings":"AAsCA,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,IAAI,aAAa,GAA0B,IAAI,CAAC;AAChD,IAAI,mBAAmB,GAAuB,IAAI,CAAC;AACnD,IAAI,mBAAmB,GAAuB,IAAI,CAAC;AACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEzC,SAAS,WAAW,CAAC,KAAc,EAAE,QAAyB;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,KAAK,CACZ,KAAmB,EACnB,OAA4B,EAC5B,MAA4B;IAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,GAAG,EAAiB,CAAC;IACvF,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACpD,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QACxB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;YAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CACjB,KAAmB,EACnB,WAAiC;IAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,WAAW;YAAE,SAAS;QACpF,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,KAAmB,EACnB,WAAiC;IAEjC,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ;IACf,KAAK,MAAM,KAAK,IAAI,QAAQ;QAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,SAAS;YAAE,SAAS;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,QAAqB;IACvC,OAAO,SAAS,YAAY,CAAgB,KAAK,EAAE,QAAQ,EAAE,QAAQ;QACnE,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjF,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAsC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAgC,CAAC;AACnC,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,cAAc;QAAE,OAAO;IAC3B,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3C,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAgB,CAAC,CAAC;IAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAgB,CAAC,CAAC;IAC5F,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,CAAC,cAAc;QAAE,OAAO;IAC5B,IAAI,mBAAmB;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;IACpE,IAAI,mBAAmB;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;IACpE,cAAc,GAAG,KAAK,CAAC;IACvB,mBAAmB,GAAG,IAAI,CAAC;IAC3B,mBAAmB,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,aAAa;QAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAChD,aAAa,GAAG,IAAI,CAAC;IACrB,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAClF,aAAa,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAiC;IAEjC,MAAM,KAAK,GAAiB;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAmB,EAAE,KAAK,CAAC;QAC1E,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,QAAQ,EAAE,IAAI,GAAG,EAAE;QACnB,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,IAAI,GAAG,CAAC;KAC7D,CAAC;IACF,kBAAkB,EAAE,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,iBAAiB,EAAE,CAAC;IAEpB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,OAAkB;YAC5B,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC3B,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,IAAI;YACR,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,iBAAiB,EAAE,CAAC;YACpB,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;gBAAE,oBAAoB,EAAE,CAAC;YAChD,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function installAwsSdkHttp2Patch(): void;
2
+ //# sourceMappingURL=awsSdkHttp2Patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awsSdkHttp2Patch.d.ts","sourceRoot":"","sources":["../../src/transport/awsSdkHttp2Patch.ts"],"names":[],"mappings":"AAwPA,wBAAgB,uBAAuB,IAAI,IAAI,CA2R9C"}