@coalex-ai/sdk 2.6.1 → 2.7.0-beta.699
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.
- package/README.md +12 -11
- package/dist/auto-instrument.d.ts.map +1 -1
- package/dist/auto-instrument.js +131 -11
- package/dist/auto-instrument.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/prompt-refs.d.ts +62 -0
- package/dist/prompt-refs.d.ts.map +1 -0
- package/dist/prompt-refs.js +167 -0
- package/dist/prompt-refs.js.map +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +3 -0
- package/dist/prompts.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -116,22 +116,23 @@ instrumentOpenAI(); // returns boolean
|
|
|
116
116
|
|
|
117
117
|
### LangChain.js
|
|
118
118
|
|
|
119
|
-
With `@arizeai/openinference-instrumentation-langchain` 4.x installed, `autoInstrument()
|
|
120
|
-
LangChain.js 0.3 and 1.x
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
the
|
|
124
|
-
|
|
125
|
-
In an ESM app neither `autoInstrument()` nor `autoInstrumentAsync()` captures LangChain yet. Hand
|
|
126
|
-
the instrumentor LangChain's callback manager instead, before your LangChain code runs:
|
|
119
|
+
With `@arizeai/openinference-instrumentation-langchain` 4.x installed, `autoInstrument()`,
|
|
120
|
+
`autoInstrumentAsync()` and `instrumentLangChain()` capture LangChain.js 0.3 and 1.x
|
|
121
|
+
(`@langchain/core`) in a CommonJS app and in an ESM app (`"type": "module"`): `LLM`, `CHAIN`,
|
|
122
|
+
`PROMPT` and `TOOL` spans. Call `register()`, or pass a `tracerProvider`, and instrument before
|
|
123
|
+
the app first loads LangChain:
|
|
127
124
|
|
|
128
125
|
```typescript
|
|
129
|
-
import { LangChainInstrumentation } from "@arizeai/openinference-instrumentation-langchain";
|
|
130
|
-
|
|
131
126
|
register({ apiKey: process.env.COALEX_API_KEY, serviceName: "my-agent" });
|
|
132
|
-
|
|
127
|
+
autoInstrument(); // { langchain: "success", ... }
|
|
128
|
+
|
|
129
|
+
// Import and run your LangChain code after this point.
|
|
133
130
|
```
|
|
134
131
|
|
|
132
|
+
The instrumentor hooks `require()` of LangChain's CommonJS build only, so the SDK also loads its
|
|
133
|
+
ES module build and hands it to the instrumentor. `autoInstrument()` loads it with `require()`,
|
|
134
|
+
which needs Node 20.19 or 22.12; on an older Node an ESM app calls `autoInstrumentAsync()`.
|
|
135
|
+
|
|
135
136
|
Which lines are proven, and on which versions:
|
|
136
137
|
[Supported Frameworks](https://docs.coalex.ai/reference/supported-frameworks/).
|
|
137
138
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-instrument.d.ts","sourceRoot":"","sources":["../src/auto-instrument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-instrument.d.ts","sourceRoot":"","sources":["../src/auto-instrument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOzD,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,eAAe,GACf,sBAAsB,GACtB,OAAO,GACP,UAAU,CAAC;AAEf,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAqRD,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CA+BvC;AAED,wBAAsB,mBAAmB,CACvC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CA+BhD;AAED,wBAAgB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAMzE;AAED,wBAAgB,mBAAmB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAM5E;AAED,wBAAgB,mBAAmB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAM5E"}
|
package/dist/auto-instrument.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
1
2
|
import { createRequire } from "node:module";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
3
4
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
4
5
|
import { log } from "./logger.js";
|
|
5
6
|
const INSTRUMENTORS = [
|
|
@@ -100,25 +101,140 @@ async function loadAsync(pkg, resolveFrom) {
|
|
|
100
101
|
return { kind: "failed", error };
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* The instrumentor classes this SDK has enabled in this process. A second call finds its class here
|
|
106
|
+
* and reports `already_instrumented`. The instrumentor's own `isEnabled()` cannot tell: an
|
|
107
|
+
* `InstrumentationBase` enables itself in its constructor unless its config says otherwise.
|
|
108
|
+
*/
|
|
109
|
+
const enabledBySdk = new WeakSet();
|
|
110
|
+
/** Enable one loaded instrumentor with the given provider. Throws whatever the instrumentor throws. */
|
|
104
111
|
function enableInstrumentor(mod, config, tracerProvider) {
|
|
105
112
|
// An ESM namespace wraps a CommonJS package's exports in `default`; a CommonJS require does not.
|
|
106
113
|
const candidates = [mod, mod["default"]];
|
|
107
114
|
const InstrumentorClass = candidates.find((c) => c && c[config.class])?.[config.class];
|
|
108
115
|
if (!InstrumentorClass) {
|
|
109
116
|
log.warn(`Found ${config.package} but it has no ${config.class} export`);
|
|
110
|
-
return "error";
|
|
111
|
-
}
|
|
112
|
-
const instrumentor = new InstrumentorClass();
|
|
113
|
-
if (instrumentor["_isInstrumentedByOpenTelemetry"] || instrumentor["isEnabled"]?.()) {
|
|
114
|
-
return "already_instrumented";
|
|
117
|
+
return { status: "error" };
|
|
115
118
|
}
|
|
119
|
+
if (enabledBySdk.has(InstrumentorClass))
|
|
120
|
+
return { status: "already_instrumented" };
|
|
121
|
+
// The OpenInference instrumentors take `{ instrumentationConfig }`. `enabled: false` keeps the
|
|
122
|
+
// constructor from enabling the instrumentor before the given provider is set. One that enables
|
|
123
|
+
// itself anyway still gets the provider, and is not enabled a second time.
|
|
124
|
+
const instrumentor = new InstrumentorClass({ instrumentationConfig: { enabled: false } });
|
|
116
125
|
if (tracerProvider) {
|
|
117
126
|
instrumentor["setTracerProvider"].call(instrumentor, tracerProvider);
|
|
118
127
|
}
|
|
119
|
-
instrumentor["
|
|
128
|
+
if (!instrumentor["isEnabled"]?.call(instrumentor)) {
|
|
129
|
+
instrumentor["enable"].call(instrumentor);
|
|
130
|
+
}
|
|
131
|
+
enabledBySdk.add(InstrumentorClass);
|
|
120
132
|
log.debug(`Instrumented ${config.description} (${config.name})`);
|
|
121
|
-
return "success";
|
|
133
|
+
return { status: "success", instrumentor };
|
|
134
|
+
}
|
|
135
|
+
/*
|
|
136
|
+
* LangChain's ES module build.
|
|
137
|
+
*
|
|
138
|
+
* The LangChain instrumentor hooks `require()` of `@langchain/core`'s CommonJS build only. An app
|
|
139
|
+
* that imports LangChain as an ES module loads the ESM build (`callbacks/manager.js`), which no hook
|
|
140
|
+
* matches, so the SDK loads that build itself, resolved from where the app resolves it, and hands it
|
|
141
|
+
* to the instrumentor's `manuallyInstrument()`. Node keeps one instance of an ES module, so the
|
|
142
|
+
* app's own import later gets the patched one. No span is doubled: each build has its own
|
|
143
|
+
* `CallbackManager`, a LangChain call goes through one of them, and the instrumentor unwraps a
|
|
144
|
+
* module before it wraps it again.
|
|
145
|
+
*/
|
|
146
|
+
const LANGCHAIN_CORE = "@langchain/core";
|
|
147
|
+
const CALLBACK_MANAGER = "./callbacks/manager";
|
|
148
|
+
// The conditions Node's ESM resolver matches; the package's own key order decides between them.
|
|
149
|
+
const IMPORT_CONDITIONS = ["node", "import", "default"];
|
|
150
|
+
/** The file an `exports` entry names under the import conditions, or null. */
|
|
151
|
+
function exportTarget(entry) {
|
|
152
|
+
if (typeof entry === "string")
|
|
153
|
+
return entry;
|
|
154
|
+
if (Array.isArray(entry)) {
|
|
155
|
+
for (const item of entry) {
|
|
156
|
+
const target = exportTarget(item);
|
|
157
|
+
if (target)
|
|
158
|
+
return target;
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
if (entry && typeof entry === "object") {
|
|
163
|
+
for (const [condition, value] of Object.entries(entry)) {
|
|
164
|
+
if (!IMPORT_CONDITIONS.includes(condition))
|
|
165
|
+
continue;
|
|
166
|
+
const target = exportTarget(value);
|
|
167
|
+
if (target)
|
|
168
|
+
return target;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The ESM build of `@langchain/core/callbacks/manager` the app imports, or null when
|
|
175
|
+
* `@langchain/core` is not installed or has no ESM build apart from the CommonJS one the
|
|
176
|
+
* instrumentor hooks.
|
|
177
|
+
*/
|
|
178
|
+
function resolveLangChainEsm(resolveFrom) {
|
|
179
|
+
const pkgJson = resolvePackage(`${LANGCHAIN_CORE}/package.json`, resolveFrom);
|
|
180
|
+
if (!pkgJson)
|
|
181
|
+
return null;
|
|
182
|
+
const pkg = JSON.parse(readFileSync(pkgJson, "utf8"));
|
|
183
|
+
const target = exportTarget(pkg.exports?.[CALLBACK_MANAGER]);
|
|
184
|
+
if (!target)
|
|
185
|
+
return null;
|
|
186
|
+
const esm = join(dirname(pkgJson), target);
|
|
187
|
+
return esm === resolvePackage(`${LANGCHAIN_CORE}/callbacks/manager`, resolveFrom) ? null : esm;
|
|
188
|
+
}
|
|
189
|
+
function canPatchLangChainEsm(enabled, config) {
|
|
190
|
+
return (config.name === "langchain" &&
|
|
191
|
+
enabled.status === "success" &&
|
|
192
|
+
typeof enabled.instrumentor?.["manuallyInstrument"] === "function");
|
|
193
|
+
}
|
|
194
|
+
function manuallyInstrument(instrumentor, mod) {
|
|
195
|
+
instrumentor["manuallyInstrument"].call(instrumentor, mod);
|
|
196
|
+
log.debug(`Instrumented the ES module build of ${LANGCHAIN_CORE}`);
|
|
197
|
+
}
|
|
198
|
+
/** The CommonJS build stays instrumented and the result stays `success`; the failure is logged. */
|
|
199
|
+
function warnEsmFailure(error) {
|
|
200
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
201
|
+
log.warn(`Failed to instrument the ES module build of ${LANGCHAIN_CORE}: ${msg}`);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* `autoInstrument()` loads the ESM build with `require()`, which Node runs on an ES module from
|
|
205
|
+
* 20.19 and 22.12. An app on an older Node that imports LangChain as an ES module calls
|
|
206
|
+
* `autoInstrumentAsync()`, which loads it with `import()`.
|
|
207
|
+
*/
|
|
208
|
+
function patchLangChainEsmSync(enabled, config, resolveFrom) {
|
|
209
|
+
if (!canPatchLangChainEsm(enabled, config))
|
|
210
|
+
return;
|
|
211
|
+
try {
|
|
212
|
+
const esm = resolveLangChainEsm(resolveFrom);
|
|
213
|
+
if (!esm)
|
|
214
|
+
return;
|
|
215
|
+
if (!process.features.require_module) {
|
|
216
|
+
log.warn(`This Node cannot require() an ES module, so autoInstrument() instruments the CommonJS build of ` +
|
|
217
|
+
`${LANGCHAIN_CORE} only. An app that imports LangChain as an ES module calls autoInstrumentAsync().`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
manuallyInstrument(enabled.instrumentor, createRequire(esm)(esm));
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
warnEsmFailure(error);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async function patchLangChainEsmAsync(enabled, config, resolveFrom) {
|
|
227
|
+
if (!canPatchLangChainEsm(enabled, config))
|
|
228
|
+
return;
|
|
229
|
+
try {
|
|
230
|
+
const esm = resolveLangChainEsm(resolveFrom);
|
|
231
|
+
if (!esm)
|
|
232
|
+
return;
|
|
233
|
+
manuallyInstrument(enabled.instrumentor, await import(pathToFileURL(esm).href));
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
warnEsmFailure(error);
|
|
237
|
+
}
|
|
122
238
|
}
|
|
123
239
|
/** What a failure that is not a missing module becomes: logged, and `error` — never `not_installed`. */
|
|
124
240
|
function reportFailure(config, error, suppressErrors) {
|
|
@@ -156,7 +272,9 @@ export function autoInstrument(options) {
|
|
|
156
272
|
continue;
|
|
157
273
|
}
|
|
158
274
|
try {
|
|
159
|
-
|
|
275
|
+
const enabled = enableInstrumentor(loaded.mod, config, options?.tracerProvider);
|
|
276
|
+
results[config.name] = enabled.status;
|
|
277
|
+
patchLangChainEsmSync(enabled, config, options?.resolveFrom);
|
|
160
278
|
}
|
|
161
279
|
catch (error) {
|
|
162
280
|
results[config.name] = reportFailure(config, error, suppressErrors);
|
|
@@ -185,7 +303,9 @@ export async function autoInstrumentAsync(options) {
|
|
|
185
303
|
continue;
|
|
186
304
|
}
|
|
187
305
|
try {
|
|
188
|
-
|
|
306
|
+
const enabled = enableInstrumentor(loaded.mod, config, options?.tracerProvider);
|
|
307
|
+
results[config.name] = enabled.status;
|
|
308
|
+
await patchLangChainEsmAsync(enabled, config, options?.resolveFrom);
|
|
189
309
|
}
|
|
190
310
|
catch (error) {
|
|
191
311
|
results[config.name] = reportFailure(config, error, suppressErrors);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-instrument.js","sourceRoot":"","sources":["../src/auto-instrument.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-instrument.js","sourceRoot":"","sources":["../src/auto-instrument.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -51,6 +51,14 @@ export interface RegisterOptions {
|
|
|
51
51
|
* own, so one refusal does not stop the others. `declare()` does the same after `register()`.
|
|
52
52
|
*/
|
|
53
53
|
declare?: AgentInventory | AgentInventory[];
|
|
54
|
+
/**
|
|
55
|
+
* Export the text of a prompt fetched with `getPrompt()` as a reference to its Prompt Vault
|
|
56
|
+
* version (`coalex.prompt.ref`) instead of in full; the platform restores it from the vault when
|
|
57
|
+
* it stores the span. It needs a platform that restores references; one that does not keeps the
|
|
58
|
+
* marker in place of the text. Defaults to the `COALEX_PROMPT_REFS` env var
|
|
59
|
+
* (`1`/`true`/`yes`/`on`), or false when unset.
|
|
60
|
+
*/
|
|
61
|
+
promptRefs?: boolean;
|
|
54
62
|
}
|
|
55
63
|
export declare function register(options?: RegisterOptions): void;
|
|
56
64
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
|
6
6
|
import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
|
|
7
7
|
import { SafeOTLPSpanExporter } from "./safe-exporter.js";
|
|
8
8
|
import { FilteringSpanExporter } from "./filtering-exporter.js";
|
|
9
|
+
import { PromptReferenceExporter } from "./prompt-refs.js";
|
|
9
10
|
import { CoalexAttributePropagator } from "./span-processor.js";
|
|
10
11
|
import { declareMany } from "./inventory.js";
|
|
11
12
|
import { setLogger } from "./logger.js";
|
|
@@ -59,7 +60,10 @@ export function register(options) {
|
|
|
59
60
|
url: `${endpoint}/v1/traces`,
|
|
60
61
|
headers: sdkHeaders(apiKey),
|
|
61
62
|
});
|
|
62
|
-
const
|
|
63
|
+
const promptRefs = options?.promptRefs ??
|
|
64
|
+
["1", "true", "yes", "on"].includes((process.env.COALEX_PROMPT_REFS ?? "").trim().toLowerCase());
|
|
65
|
+
const wireExporter = promptRefs ? new PromptReferenceExporter(baseExporter) : baseExporter;
|
|
66
|
+
const safeExporter = new SafeOTLPSpanExporter(wireExporter, suppressExportErrors);
|
|
63
67
|
const finalExporter = filterNonAiSpans
|
|
64
68
|
? new FilteringSpanExporter(safeExporter)
|
|
65
69
|
: safeExporter;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAG3D,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxD,iGAAiG;AACjG,iGAAiG;AACjG,2FAA2F;AAC3F,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,gBAAgB;AAChB,+FAA+F;AAC/F,iFAAiF;AACjF,mBAAmB,EACnB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAc/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGhF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIvI,IAAI,OAAO,GAAwB,IAAI,CAAC;AACxC,IAAI,OAAO,GAAkB,IAAI,CAAC;AAClC;;;GAGG;AACH,IAAI,oBAAwC,CAAC;AAE7C,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Attributes } from "@opentelemetry/api";
|
|
2
|
+
import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
|
|
3
|
+
/**
|
|
4
|
+
* Export a vault prompt as a reference instead of its text: `register({ promptRefs: true })`.
|
|
5
|
+
*
|
|
6
|
+
* The TypeScript twin of the Python SDK's `coalex/prompt_refs.py`, with the same wire format, which
|
|
7
|
+
* the transformer reads (`silver/prompt_refs.py`) to put the text back from the Prompt Vault when it
|
|
8
|
+
* stores the span:
|
|
9
|
+
*
|
|
10
|
+
* - The marker is `{{coalex.prompt.ref:<sha256>}}`, the SHA-256 of the prompt's UTF-8 text in hex.
|
|
11
|
+
* - `coalex.prompt.ref` is a JSON array, one entry per vault prompt the span references:
|
|
12
|
+
* `{"id", "version", "sha256", "attributes": {<attribute key>: <encoding>}}`. The encoding says how
|
|
13
|
+
* the text appeared in that attribute: `text` verbatim, `json` as a JSON string body (what
|
|
14
|
+
* `JSON.stringify` writes), `json_ascii` as one with every non-ASCII character escaped.
|
|
15
|
+
*
|
|
16
|
+
* A prompt is replaced only where its whole text appears and putting it back reproduces the
|
|
17
|
+
* attribute exactly; anything else (a prompt formatted with variables, edited at runtime, not from
|
|
18
|
+
* the vault, shorter than `MIN_PROMPT_CHARS`, or not well-formed UTF-16) is exported as it was.
|
|
19
|
+
*/
|
|
20
|
+
export declare const REF_ATTRIBUTE = "coalex.prompt.ref";
|
|
21
|
+
export declare const MARKER_PREFIX = "{{coalex.prompt.ref:";
|
|
22
|
+
export declare const MARKER_SUFFIX = "}}";
|
|
23
|
+
export declare const ENCODINGS: readonly ["text", "json", "json_ascii"];
|
|
24
|
+
export type PromptRefEncoding = (typeof ENCODINGS)[number];
|
|
25
|
+
/** Below this a reference saves little, and a short prompt is likelier to occur inside other text. */
|
|
26
|
+
export declare const MIN_PROMPT_CHARS = 256;
|
|
27
|
+
export declare const MAX_REMEMBERED_PROMPTS = 64;
|
|
28
|
+
export interface VaultPrompt {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly version: number;
|
|
31
|
+
readonly content: string;
|
|
32
|
+
readonly sha256: string;
|
|
33
|
+
}
|
|
34
|
+
/** Whether a vault prompt's text is looked for under `key`. */
|
|
35
|
+
export declare function isPromptBearing(key: string): boolean;
|
|
36
|
+
export declare function contentSha256(content: string): string;
|
|
37
|
+
export declare function marker(sha256: string): string;
|
|
38
|
+
/** How `content` appears in an attribute under `encoding`. */
|
|
39
|
+
export declare function encode(content: string, encoding: PromptRefEncoding): string;
|
|
40
|
+
/** Make a prompt fetched from the vault replaceable on the spans that follow. */
|
|
41
|
+
export declare function rememberPrompt(id: string, version: number, content: string): void;
|
|
42
|
+
/** Forget every remembered prompt (tests). */
|
|
43
|
+
export declare function forgetAllPrompts(): void;
|
|
44
|
+
type Use = [VaultPrompt, PromptRefEncoding];
|
|
45
|
+
/** `value` with each marker put back as its prompt, as the transformer does. */
|
|
46
|
+
export declare function restore(value: string, uses: readonly Use[]): string;
|
|
47
|
+
/** The attributes with each remembered prompt replaced by a reference, or undefined when none occurs. */
|
|
48
|
+
export declare function referencePrompts(attributes: Attributes, prompts?: readonly VaultPrompt[]): Attributes | undefined;
|
|
49
|
+
interface ExportResult {
|
|
50
|
+
code: number;
|
|
51
|
+
error?: Error;
|
|
52
|
+
}
|
|
53
|
+
/** Replaces the text of every remembered vault prompt with a reference, then delegates. */
|
|
54
|
+
export declare class PromptReferenceExporter implements SpanExporter {
|
|
55
|
+
private readonly wrappedExporter;
|
|
56
|
+
constructor(wrappedExporter: SpanExporter);
|
|
57
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
58
|
+
shutdown(): Promise<void>;
|
|
59
|
+
forceFlush(): Promise<void>;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=prompt-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-refs.d.ts","sourceRoot":"","sources":["../src/prompt-refs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEhF;;;;;;;;;;;;;;;;GAgBG;AAEH,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,aAAa,yBAAyB,CAAC;AACpD,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,SAAS,yCAA0C,CAAC;AACjE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,sGAAsG;AACtG,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAMzC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,8DAA8D;AAC9D,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAK3E;AASD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CASjF;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAOD,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAE5C,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,GAAG,MAAM,CAKnE;AAmBD,yGAAyG;AACzG,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,SAAS,WAAW,EAAe,GAC3C,UAAU,GAAG,SAAS,CA0BxB;AAYD,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,2FAA2F;AAC3F,qBAAa,uBAAwB,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,YAAY;IAE1D,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAkBnF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Export a vault prompt as a reference instead of its text: `register({ promptRefs: true })`.
|
|
4
|
+
*
|
|
5
|
+
* The TypeScript twin of the Python SDK's `coalex/prompt_refs.py`, with the same wire format, which
|
|
6
|
+
* the transformer reads (`silver/prompt_refs.py`) to put the text back from the Prompt Vault when it
|
|
7
|
+
* stores the span:
|
|
8
|
+
*
|
|
9
|
+
* - The marker is `{{coalex.prompt.ref:<sha256>}}`, the SHA-256 of the prompt's UTF-8 text in hex.
|
|
10
|
+
* - `coalex.prompt.ref` is a JSON array, one entry per vault prompt the span references:
|
|
11
|
+
* `{"id", "version", "sha256", "attributes": {<attribute key>: <encoding>}}`. The encoding says how
|
|
12
|
+
* the text appeared in that attribute: `text` verbatim, `json` as a JSON string body (what
|
|
13
|
+
* `JSON.stringify` writes), `json_ascii` as one with every non-ASCII character escaped.
|
|
14
|
+
*
|
|
15
|
+
* A prompt is replaced only where its whole text appears and putting it back reproduces the
|
|
16
|
+
* attribute exactly; anything else (a prompt formatted with variables, edited at runtime, not from
|
|
17
|
+
* the vault, shorter than `MIN_PROMPT_CHARS`, or not well-formed UTF-16) is exported as it was.
|
|
18
|
+
*/
|
|
19
|
+
export const REF_ATTRIBUTE = "coalex.prompt.ref";
|
|
20
|
+
export const MARKER_PREFIX = "{{coalex.prompt.ref:";
|
|
21
|
+
export const MARKER_SUFFIX = "}}";
|
|
22
|
+
export const ENCODINGS = ["text", "json", "json_ascii"];
|
|
23
|
+
/** Below this a reference saves little, and a short prompt is likelier to occur inside other text. */
|
|
24
|
+
export const MIN_PROMPT_CHARS = 256;
|
|
25
|
+
export const MAX_REMEMBERED_PROMPTS = 64;
|
|
26
|
+
const EXACT_KEYS = ["input.value", "gen_ai.input.messages", "gen_ai.system_instructions"];
|
|
27
|
+
const MESSAGE_PREFIX = "llm.input_messages.";
|
|
28
|
+
const MESSAGE_TEXT_SUFFIXES = [".message.content", ".message_content.text"];
|
|
29
|
+
/** Whether a vault prompt's text is looked for under `key`. */
|
|
30
|
+
export function isPromptBearing(key) {
|
|
31
|
+
return (EXACT_KEYS.includes(key) || (key.startsWith(MESSAGE_PREFIX) && MESSAGE_TEXT_SUFFIXES.some((s) => key.endsWith(s))));
|
|
32
|
+
}
|
|
33
|
+
export function contentSha256(content) {
|
|
34
|
+
return createHash("sha256").update(content, "utf8").digest("hex");
|
|
35
|
+
}
|
|
36
|
+
export function marker(sha256) {
|
|
37
|
+
return `${MARKER_PREFIX}${sha256}${MARKER_SUFFIX}`;
|
|
38
|
+
}
|
|
39
|
+
/** How `content` appears in an attribute under `encoding`. */
|
|
40
|
+
export function encode(content, encoding) {
|
|
41
|
+
if (encoding === "text")
|
|
42
|
+
return content;
|
|
43
|
+
const body = JSON.stringify(content).slice(1, -1);
|
|
44
|
+
if (encoding === "json")
|
|
45
|
+
return body;
|
|
46
|
+
return body.replace(/[\u0080-]/g, (c) => `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`);
|
|
47
|
+
}
|
|
48
|
+
/** Lone surrogates encode differently in each language, so a prompt holding one is never referenced. */
|
|
49
|
+
function isWellFormed(content) {
|
|
50
|
+
return !/[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/.test(content);
|
|
51
|
+
}
|
|
52
|
+
const remembered = new Map();
|
|
53
|
+
/** Make a prompt fetched from the vault replaceable on the spans that follow. */
|
|
54
|
+
export function rememberPrompt(id, version, content) {
|
|
55
|
+
if (content.length < MIN_PROMPT_CHARS || !isWellFormed(content))
|
|
56
|
+
return;
|
|
57
|
+
const sha256 = contentSha256(content);
|
|
58
|
+
remembered.delete(sha256);
|
|
59
|
+
remembered.set(sha256, { id: String(id), version, content, sha256 });
|
|
60
|
+
while (remembered.size > MAX_REMEMBERED_PROMPTS) {
|
|
61
|
+
const oldest = remembered.keys().next().value;
|
|
62
|
+
remembered.delete(oldest);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Forget every remembered prompt (tests). */
|
|
66
|
+
export function forgetAllPrompts() {
|
|
67
|
+
remembered.clear();
|
|
68
|
+
}
|
|
69
|
+
function snapshot() {
|
|
70
|
+
// Longest first, so a prompt that contains another is replaced whole.
|
|
71
|
+
return [...remembered.values()].sort((a, b) => b.content.length - a.content.length);
|
|
72
|
+
}
|
|
73
|
+
/** `value` with each marker put back as its prompt, as the transformer does. */
|
|
74
|
+
export function restore(value, uses) {
|
|
75
|
+
for (const [prompt, encoding] of uses) {
|
|
76
|
+
value = value.split(marker(prompt.sha256)).join(encode(prompt.content, encoding));
|
|
77
|
+
}
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
function referenceValue(value, prompts) {
|
|
81
|
+
const original = value;
|
|
82
|
+
const uses = [];
|
|
83
|
+
for (const prompt of prompts) {
|
|
84
|
+
for (const encoding of ENCODINGS) {
|
|
85
|
+
const encoded = encode(prompt.content, encoding);
|
|
86
|
+
if (value.includes(encoded)) {
|
|
87
|
+
value = value.split(encoded).join(marker(prompt.sha256));
|
|
88
|
+
uses.push([prompt, encoding]);
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (uses.length === 0 || restore(value, uses) !== original)
|
|
94
|
+
return [original, []];
|
|
95
|
+
return [value, uses];
|
|
96
|
+
}
|
|
97
|
+
/** The attributes with each remembered prompt replaced by a reference, or undefined when none occurs. */
|
|
98
|
+
export function referencePrompts(attributes, prompts = snapshot()) {
|
|
99
|
+
if (prompts.length === 0 || REF_ATTRIBUTE in attributes)
|
|
100
|
+
return undefined;
|
|
101
|
+
const out = { ...attributes };
|
|
102
|
+
const used = new Map();
|
|
103
|
+
const bySha = new Map(prompts.map((p) => [p.sha256, p]));
|
|
104
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
105
|
+
if (typeof value !== "string" || !isPromptBearing(key))
|
|
106
|
+
continue;
|
|
107
|
+
const [replaced, uses] = referenceValue(value, prompts);
|
|
108
|
+
if (uses.length === 0)
|
|
109
|
+
continue;
|
|
110
|
+
out[key] = replaced;
|
|
111
|
+
for (const [prompt, encoding] of uses) {
|
|
112
|
+
const keys = used.get(prompt.sha256) ?? {};
|
|
113
|
+
keys[key] = encoding;
|
|
114
|
+
used.set(prompt.sha256, keys);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (used.size === 0)
|
|
118
|
+
return undefined;
|
|
119
|
+
out[REF_ATTRIBUTE] = JSON.stringify([...used.keys()].sort().map((sha) => {
|
|
120
|
+
const prompt = bySha.get(sha);
|
|
121
|
+
const keys = used.get(sha);
|
|
122
|
+
const attributesSorted = Object.fromEntries(Object.keys(keys).sort().map((k) => [k, keys[k]]));
|
|
123
|
+
return { attributes: attributesSorted, id: prompt.id, sha256: sha, version: prompt.version };
|
|
124
|
+
}));
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* A view of `span` carrying `attributes`. The span itself is left as instrumented, so another
|
|
129
|
+
* exporter in the same process still receives the prompt text.
|
|
130
|
+
*/
|
|
131
|
+
function withAttributes(span, attributes) {
|
|
132
|
+
const view = Object.create(span);
|
|
133
|
+
Object.defineProperty(view, "attributes", { value: attributes, enumerable: true });
|
|
134
|
+
return view;
|
|
135
|
+
}
|
|
136
|
+
/** Replaces the text of every remembered vault prompt with a reference, then delegates. */
|
|
137
|
+
export class PromptReferenceExporter {
|
|
138
|
+
wrappedExporter;
|
|
139
|
+
constructor(wrappedExporter) {
|
|
140
|
+
this.wrappedExporter = wrappedExporter;
|
|
141
|
+
}
|
|
142
|
+
export(spans, resultCallback) {
|
|
143
|
+
const prompts = snapshot();
|
|
144
|
+
if (prompts.length === 0) {
|
|
145
|
+
this.wrappedExporter.export(spans, resultCallback);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const out = spans.map((span) => {
|
|
149
|
+
try {
|
|
150
|
+
const attrs = referencePrompts(span.attributes ?? {}, prompts);
|
|
151
|
+
return attrs ? withAttributes(span, attrs) : span;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// A span that cannot be referenced is sent as it was.
|
|
155
|
+
return span;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
this.wrappedExporter.export(out, resultCallback);
|
|
159
|
+
}
|
|
160
|
+
shutdown() {
|
|
161
|
+
return this.wrappedExporter.shutdown();
|
|
162
|
+
}
|
|
163
|
+
forceFlush() {
|
|
164
|
+
return this.wrappedExporter.forceFlush?.() ?? Promise.resolve();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=prompt-refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-refs.js","sourceRoot":"","sources":["../src/prompt-refs.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAMA,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,4CAA6C,CAAC;AAE3E,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AAcD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkDjF"}
|
package/dist/prompts.js
CHANGED
|
@@ -2,6 +2,7 @@ import { trace } from "@opentelemetry/api";
|
|
|
2
2
|
import { getConfig, getApiKey } from "./index.js";
|
|
3
3
|
import { setLastPrompt } from "./context.js";
|
|
4
4
|
import { coalexFetch, httpError, sdkHeaders } from "./http.js";
|
|
5
|
+
import { rememberPrompt } from "./prompt-refs.js";
|
|
5
6
|
/**
|
|
6
7
|
* The version keywords the Prompt Vault actually implements, and nothing else (COA-2363).
|
|
7
8
|
*
|
|
@@ -47,7 +48,9 @@ export async function getPrompt(options) {
|
|
|
47
48
|
const data = await resp.json();
|
|
48
49
|
// Attribute subsequent spans to this prompt version (COA-368): store it as a fallback for
|
|
49
50
|
// spans that start outside any invocation, and stamp the current span if one is recording.
|
|
51
|
+
// Remember the text too, so `register({ promptRefs: true })` can export it as a reference.
|
|
50
52
|
setLastPrompt(data.version, data.prompt_type);
|
|
53
|
+
rememberPrompt(data.id, data.version, data.content);
|
|
51
54
|
const active = trace.getActiveSpan();
|
|
52
55
|
if (active?.isRecording()) {
|
|
53
56
|
active.setAttribute("coalex.prompt_version", data.version);
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "2.
|
|
1
|
+
export declare const VERSION = "2.7.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SDK version, sent in the X-SDK-Version header so the platform can see which
|
|
2
2
|
// SDK releases customers run before removing a deprecated field (COA-261).
|
|
3
3
|
// Keep in sync with package.json "version".
|
|
4
|
-
export const VERSION = "2.
|
|
4
|
+
export const VERSION = "2.7.0";
|
|
5
5
|
//# sourceMappingURL=version.js.map
|