@sovara/sdk 0.0.0-stage → 0.9.1

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 +26 -0
  36. package/dist/compatibility.d.ts.map +1 -0
  37. package/dist/compatibility.js +130 -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 +117 -0
  90. package/dist/runtimeClient.d.ts.map +1 -0
  91. package/dist/runtimeClient.js +287 -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,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":"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"}
@@ -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"}