@rasputin-ai/node 0.3.0 → 0.4.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 (26) hide show
  1. package/README.md +18 -4
  2. package/dist/auto-instrumentation/collect-instrumentation-delta.d.ts +6 -0
  3. package/dist/auto-instrumentation/collect-instrumentation-delta.d.ts.map +1 -1
  4. package/dist/auto-instrumentation/format-configuration-report.d.ts +14 -0
  5. package/dist/auto-instrumentation/format-configuration-report.d.ts.map +1 -0
  6. package/dist/auto-instrumentation/instrumentation-manifest-registry.d.ts +9 -3
  7. package/dist/auto-instrumentation/instrumentation-manifest-registry.d.ts.map +1 -1
  8. package/dist/auto-instrumentation/schedule-instrumentation-manifest-upload.d.ts +11 -1
  9. package/dist/auto-instrumentation/schedule-instrumentation-manifest-upload.d.ts.map +1 -1
  10. package/dist/execution-recorder/automatic-runtime.d.ts +11 -8
  11. package/dist/execution-recorder/automatic-runtime.d.ts.map +1 -1
  12. package/dist/execution-recorder/execution-recorder-types.d.ts +10 -3
  13. package/dist/execution-recorder/execution-recorder-types.d.ts.map +1 -1
  14. package/dist/execution-recorder/execution-recorder.d.ts.map +1 -1
  15. package/dist/execution-recorder/index.d.ts +1 -1
  16. package/dist/execution-recorder/index.d.ts.map +1 -1
  17. package/dist/execution-recorder/source-exclusions.d.ts +2 -1
  18. package/dist/execution-recorder/source-exclusions.d.ts.map +1 -1
  19. package/dist/index.js +322 -113
  20. package/dist/instrument/bun.js +33 -21
  21. package/dist/instrument/node.js +32 -20
  22. package/dist/rasputin-init.d.ts +3 -2
  23. package/dist/rasputin-init.d.ts.map +1 -1
  24. package/dist/sdk-meta.d.ts +2 -2
  25. package/dist/sdk-meta.d.ts.map +1 -1
  26. package/package.json +2 -2
@@ -3,22 +3,34 @@ import { plugin } from "bun";
3
3
 
4
4
  // src/auto-instrumentation/bun-plugin.ts
5
5
  import { readFile } from "node:fs/promises";
6
- import { resolve as resolve5 } from "node:path";
6
+ import { resolve as resolve4 } from "node:path";
7
7
 
8
8
  // src/auto-instrumentation/instrumentation-manifest-registry.ts
9
- import { isAbsolute as isAbsolute2, relative as relative2, resolve as resolve2, sep as sep2 } from "node:path";
9
+ import { resolve } from "node:path";
10
+ import {
11
+ INSTRUMENTATION_MANIFEST_SCHEMA_VERSION,
12
+ sourceLocatorFromFile as sourceLocatorFromFile2
13
+ } from "@rasputin-ai/core";
10
14
 
11
15
  // src/execution-recorder/automatic-runtime.ts
12
- import { isAbsolute, relative, resolve, sep } from "node:path";
13
- var AUTOMATIC_RUNTIME_SYMBOL = "rasputin.execution.runtime.v1";
14
- var AUTOMATIC_SOURCE_SEPARATOR = "\0";
16
+ import {
17
+ runtimeFunctionId,
18
+ sourceLocatorFromFile
19
+ } from "@rasputin-ai/core";
20
+ var AUTOMATIC_RUNTIME_SYMBOL = "rasputin.execution.runtime.v2";
21
+ var AUTOMATIC_SOURCE_PREFIX = "rasputin-source-v2:";
15
22
  var runtimeSymbol = Symbol.for(AUTOMATIC_RUNTIME_SYMBOL);
16
- var encodeAutomaticFunctionSource = (source) => [resolve(source.filePath), source.name, String(source.line), String(source.column)].join(
17
- AUTOMATIC_SOURCE_SEPARATOR
18
- );
23
+ var encodeAutomaticFunctionSource = (source) => {
24
+ const locator = sourceLocatorFromFile(source.filePath);
25
+ const value = {
26
+ name: source.name,
27
+ ...locator ? { source: { ...locator, line: source.line, column: source.column } } : {}
28
+ };
29
+ return `${AUTOMATIC_SOURCE_PREFIX}${JSON.stringify(value)}`;
30
+ };
19
31
 
20
32
  // src/auto-instrumentation/instrumentation-manifest-registry.ts
21
- var INSTRUMENTATION_MANIFEST_SYMBOL = "rasputin.instrumentation.manifest.v1";
33
+ var INSTRUMENTATION_MANIFEST_SYMBOL = "rasputin.instrumentation.manifest.v2";
22
34
  var registrySymbol = Symbol.for(INSTRUMENTATION_MANIFEST_SYMBOL);
23
35
  var getRegistry = () => {
24
36
  const existing = Reflect.get(globalThis, registrySymbol);
@@ -36,13 +48,13 @@ var getRegistry = () => {
36
48
  };
37
49
  var recordInstrumentationManifestDelta = (filePath, delta) => {
38
50
  const registry = getRegistry();
39
- registry.files.set(resolve2(filePath), delta);
51
+ registry.files.set(resolve(filePath), delta);
40
52
  registry.generation += 1;
41
53
  registry.onDirty?.();
42
54
  };
43
55
 
44
56
  // src/auto-instrumentation/source-classification.ts
45
- import { isAbsolute as isAbsolute3, relative as relative3, resolve as resolve3, sep as sep3 } from "node:path";
57
+ import { isAbsolute, relative, resolve as resolve2, sep } from "node:path";
46
58
  var sourceExtension = /\.[cm]?[jt]sx?$/i;
47
59
  var alwaysExcludedDirectory = /(^|[\\/])(node_modules|coverage|generated|\.git|\.next|\.svelte-kit|\.output|\.vercel|\.rasputin|\.turbo|\.yarn|\.pnpm|\.bun)([\\/]|$)/;
48
60
  var buildOutputDirectory = /(^|[\\/])(dist|build|out)([\\/]|$)/;
@@ -53,11 +65,11 @@ var matches = (pattern, value) => {
53
65
  return result;
54
66
  };
55
67
  var isWithinRoot = (filePath, root) => {
56
- const fromRoot = relative3(resolve3(root), filePath);
57
- return fromRoot === "" || !fromRoot.startsWith(`..${sep3}`) && fromRoot !== ".." && !isAbsolute3(fromRoot);
68
+ const fromRoot = relative(resolve2(root), filePath);
69
+ return fromRoot === "" || !fromRoot.startsWith(`..${sep}`) && fromRoot !== ".." && !isAbsolute(fromRoot);
58
70
  };
59
71
  var isApplicationSource = (filePath, options = {}) => {
60
- const absolutePath = resolve3(filePath);
72
+ const absolutePath = resolve2(filePath);
61
73
  if (!sourceExtension.test(absolutePath) || alwaysExcludedDirectory.test(absolutePath))
62
74
  return false;
63
75
  if (options.includeBuildOutput !== true && buildOutputDirectory.test(absolutePath)) return false;
@@ -71,7 +83,7 @@ var isApplicationSource = (filePath, options = {}) => {
71
83
  };
72
84
 
73
85
  // src/auto-instrumentation/transform-source.ts
74
- import { resolve as resolve4 } from "node:path";
86
+ import { resolve as resolve3 } from "node:path";
75
87
  import ts2 from "typescript";
76
88
 
77
89
  // src/auto-instrumentation/collect-instrumentation-delta.ts
@@ -348,7 +360,7 @@ var transformSource = (source, options) => {
348
360
  );
349
361
  let helperName = "__rasputinAutoRun__";
350
362
  while (source.includes(helperName)) helperName += "_";
351
- const absolutePath = resolve4(options.filePath);
363
+ const absolutePath = resolve3(options.filePath);
352
364
  const edits = [];
353
365
  let order = 0;
354
366
  const delta = {
@@ -423,7 +435,7 @@ var loaderFor = (filePath) => {
423
435
  var loadedSourceFilter = /^(?!.*[\\/](?:node_modules|dist|build|out|coverage|generated|\.git|\.next|\.svelte-kit|\.output|\.vercel|\.rasputin|\.turbo|\.yarn|\.pnpm|\.bun)[\\/]).*\.[cm]?[jt]sx?$/i;
424
436
  var isLoadedApplicationSource = (filePath, options = {}) => isApplicationSource(filePath, { ...options, includeBuildOutput: false });
425
437
  var loadSourceForInstrumentation = async (filePath, options = {}) => {
426
- const absolutePath = resolve5(filePath);
438
+ const absolutePath = resolve4(filePath);
427
439
  const source = await readFile(absolutePath, "utf8");
428
440
  if (!isLoadedApplicationSource(absolutePath, options)) {
429
441
  return { contents: source, loader: loaderFor(absolutePath), transformed: false };
@@ -449,11 +461,11 @@ var createRasputinBunPlugin = (options = {}) => {
449
461
  setup(build) {
450
462
  if (debug) {
451
463
  console.info(
452
- options.rootDir ? `[rasputin] automatic instrumentation active (source root: ${resolve5(options.rootDir)})` : "[rasputin] automatic instrumentation active (loaded local source)"
464
+ options.rootDir ? `[rasputin] automatic instrumentation active (source root: ${resolve4(options.rootDir)})` : "[rasputin] automatic instrumentation active (loaded local source)"
453
465
  );
454
466
  }
455
467
  build.onLoad({ filter: loadedSourceFilter }, async ({ path }) => {
456
- const absolutePath = resolve5(path);
468
+ const absolutePath = resolve4(path);
457
469
  const result = await loadSourceForInstrumentation(absolutePath, options);
458
470
  if (debug && result.transformed) {
459
471
  console.info(`[rasputin] instrumented ${absolutePath}`);
@@ -465,9 +477,9 @@ var createRasputinBunPlugin = (options = {}) => {
465
477
  };
466
478
 
467
479
  // src/auto-instrumentation/sdk-source-boundary.ts
468
- import { dirname, resolve as resolve6 } from "node:path";
480
+ import { dirname, resolve as resolve5 } from "node:path";
469
481
  import { fileURLToPath } from "node:url";
470
- var sdkPackageScopeRootFrom = (instrumentEntryUrl) => resolve6(dirname(fileURLToPath(instrumentEntryUrl)), "../../..");
482
+ var sdkPackageScopeRootFrom = (instrumentEntryUrl) => resolve5(dirname(fileURLToPath(instrumentEntryUrl)), "../../..");
471
483
 
472
484
  // src/instrument/bun.ts
473
485
  plugin(
@@ -3,19 +3,31 @@ import * as nodeModule from "node:module";
3
3
  import { fileURLToPath as fileURLToPath2 } from "node:url";
4
4
 
5
5
  // src/auto-instrumentation/instrumentation-manifest-registry.ts
6
- import { isAbsolute as isAbsolute2, relative as relative2, resolve as resolve2, sep as sep2 } from "node:path";
6
+ import { resolve } from "node:path";
7
+ import {
8
+ INSTRUMENTATION_MANIFEST_SCHEMA_VERSION,
9
+ sourceLocatorFromFile as sourceLocatorFromFile2
10
+ } from "@rasputin-ai/core";
7
11
 
8
12
  // src/execution-recorder/automatic-runtime.ts
9
- import { isAbsolute, relative, resolve, sep } from "node:path";
10
- var AUTOMATIC_RUNTIME_SYMBOL = "rasputin.execution.runtime.v1";
11
- var AUTOMATIC_SOURCE_SEPARATOR = "\0";
13
+ import {
14
+ runtimeFunctionId,
15
+ sourceLocatorFromFile
16
+ } from "@rasputin-ai/core";
17
+ var AUTOMATIC_RUNTIME_SYMBOL = "rasputin.execution.runtime.v2";
18
+ var AUTOMATIC_SOURCE_PREFIX = "rasputin-source-v2:";
12
19
  var runtimeSymbol = Symbol.for(AUTOMATIC_RUNTIME_SYMBOL);
13
- var encodeAutomaticFunctionSource = (source) => [resolve(source.filePath), source.name, String(source.line), String(source.column)].join(
14
- AUTOMATIC_SOURCE_SEPARATOR
15
- );
20
+ var encodeAutomaticFunctionSource = (source) => {
21
+ const locator = sourceLocatorFromFile(source.filePath);
22
+ const value = {
23
+ name: source.name,
24
+ ...locator ? { source: { ...locator, line: source.line, column: source.column } } : {}
25
+ };
26
+ return `${AUTOMATIC_SOURCE_PREFIX}${JSON.stringify(value)}`;
27
+ };
16
28
 
17
29
  // src/auto-instrumentation/instrumentation-manifest-registry.ts
18
- var INSTRUMENTATION_MANIFEST_SYMBOL = "rasputin.instrumentation.manifest.v1";
30
+ var INSTRUMENTATION_MANIFEST_SYMBOL = "rasputin.instrumentation.manifest.v2";
19
31
  var registrySymbol = Symbol.for(INSTRUMENTATION_MANIFEST_SYMBOL);
20
32
  var getRegistry = () => {
21
33
  const existing = Reflect.get(globalThis, registrySymbol);
@@ -33,13 +45,13 @@ var getRegistry = () => {
33
45
  };
34
46
  var recordInstrumentationManifestDelta = (filePath, delta) => {
35
47
  const registry = getRegistry();
36
- registry.files.set(resolve2(filePath), delta);
48
+ registry.files.set(resolve(filePath), delta);
37
49
  registry.generation += 1;
38
50
  registry.onDirty?.();
39
51
  };
40
52
 
41
53
  // src/auto-instrumentation/source-classification.ts
42
- import { isAbsolute as isAbsolute3, relative as relative3, resolve as resolve3, sep as sep3 } from "node:path";
54
+ import { isAbsolute, relative, resolve as resolve2, sep } from "node:path";
43
55
  var sourceExtension = /\.[cm]?[jt]sx?$/i;
44
56
  var alwaysExcludedDirectory = /(^|[\\/])(node_modules|coverage|generated|\.git|\.next|\.svelte-kit|\.output|\.vercel|\.rasputin|\.turbo|\.yarn|\.pnpm|\.bun)([\\/]|$)/;
45
57
  var buildOutputDirectory = /(^|[\\/])(dist|build|out)([\\/]|$)/;
@@ -50,11 +62,11 @@ var matches = (pattern, value) => {
50
62
  return result;
51
63
  };
52
64
  var isWithinRoot = (filePath, root) => {
53
- const fromRoot = relative3(resolve3(root), filePath);
54
- return fromRoot === "" || !fromRoot.startsWith(`..${sep3}`) && fromRoot !== ".." && !isAbsolute3(fromRoot);
65
+ const fromRoot = relative(resolve2(root), filePath);
66
+ return fromRoot === "" || !fromRoot.startsWith(`..${sep}`) && fromRoot !== ".." && !isAbsolute(fromRoot);
55
67
  };
56
68
  var isApplicationSource = (filePath, options = {}) => {
57
- const absolutePath = resolve3(filePath);
69
+ const absolutePath = resolve2(filePath);
58
70
  if (!sourceExtension.test(absolutePath) || alwaysExcludedDirectory.test(absolutePath))
59
71
  return false;
60
72
  if (options.includeBuildOutput !== true && buildOutputDirectory.test(absolutePath)) return false;
@@ -69,7 +81,7 @@ var isApplicationSource = (filePath, options = {}) => {
69
81
 
70
82
  // src/auto-instrumentation/source-map-locations.ts
71
83
  import { readFileSync } from "node:fs";
72
- import { dirname, isAbsolute as isAbsolute4, join, resolve as resolve4 } from "node:path";
84
+ import { dirname, isAbsolute as isAbsolute2, join, resolve as resolve3 } from "node:path";
73
85
  import { fileURLToPath, pathToFileURL } from "node:url";
74
86
  import { LEAST_UPPER_BOUND, originalPositionFor, TraceMap } from "@jridgewell/trace-mapping";
75
87
  var sourceMapComment = /(?:\/\/[#@][ \t]*sourceMappingURL=([^\s'"]+)|\/\*[#@][ \t]*sourceMappingURL=([^\s*'"]+)[ \t]*\*\/)\s*$/;
@@ -86,7 +98,7 @@ var sourceMapFor = (generatedPath, source) => {
86
98
  const payload = decodeDataUrl(reference);
87
99
  return payload ? { payload, mapUrl: pathToFileURL(generatedPath).href } : void 0;
88
100
  }
89
- const mapPath = reference ? resolve4(dirname(generatedPath), reference) : `${generatedPath}.map`;
101
+ const mapPath = reference ? resolve3(dirname(generatedPath), reference) : `${generatedPath}.map`;
90
102
  return {
91
103
  payload: readFileSync(mapPath, "utf8"),
92
104
  mapUrl: pathToFileURL(mapPath).href
@@ -94,7 +106,7 @@ var sourceMapFor = (generatedPath, source) => {
94
106
  };
95
107
  var toFilePath = (source, generatedPath) => {
96
108
  if (source.startsWith("file:")) return fileURLToPath(source);
97
- return isAbsolute4(source) ? source : join(dirname(generatedPath), source);
109
+ return isAbsolute2(source) ? source : join(dirname(generatedPath), source);
98
110
  };
99
111
  var createSourceMapLocationMapper = (generatedPath, source) => {
100
112
  try {
@@ -126,7 +138,7 @@ var createSourceMapLocationMapper = (generatedPath, source) => {
126
138
  };
127
139
 
128
140
  // src/auto-instrumentation/transform-source.ts
129
- import { resolve as resolve5 } from "node:path";
141
+ import { resolve as resolve4 } from "node:path";
130
142
  import ts2 from "typescript";
131
143
 
132
144
  // src/auto-instrumentation/collect-instrumentation-delta.ts
@@ -403,7 +415,7 @@ var transformSource = (source, options) => {
403
415
  );
404
416
  let helperName = "__rasputinAutoRun__";
405
417
  while (source.includes(helperName)) helperName += "_";
406
- const absolutePath = resolve5(options.filePath);
418
+ const absolutePath = resolve4(options.filePath);
407
419
  const edits = [];
408
420
  let order = 0;
409
421
  const delta = {
@@ -522,9 +534,9 @@ var registerRasputinNodeHooks = (options = {}) => {
522
534
  };
523
535
 
524
536
  // src/auto-instrumentation/sdk-source-boundary.ts
525
- import { dirname as dirname2, resolve as resolve6 } from "node:path";
537
+ import { dirname as dirname2, resolve as resolve5 } from "node:path";
526
538
  import { fileURLToPath as fileURLToPath3 } from "node:url";
527
- var sdkPackageScopeRootFrom = (instrumentEntryUrl) => resolve6(dirname2(fileURLToPath3(instrumentEntryUrl)), "../../..");
539
+ var sdkPackageScopeRootFrom = (instrumentEntryUrl) => resolve5(dirname2(fileURLToPath3(instrumentEntryUrl)), "../../..");
528
540
 
529
541
  // src/instrument/node.ts
530
542
  registerRasputinNodeHooks({
@@ -3,7 +3,7 @@
3
3
  * recorder. Centralizing this wiring keeps initialization fail-safe and ensures every capture path
4
4
  * attaches runtime state using the same limits and lifecycle rules.
5
5
  */
6
- import { type RasputinClient, type RasputinClientStats, type RasputinOptions } from '@rasputin-ai/core';
6
+ import { type RasputinClient, type RasputinClientStats, type RasputinOptions, type SourceVerification } from '@rasputin-ai/core';
7
7
  import { type ExecutionRecorderOptions, type ExecutionRecorderStats, type RasputinExecution } from './execution-recorder';
8
8
  export type RasputinNodeOptions = RasputinOptions & {
9
9
  /** Bounded runtime-state capture. Enabled by default; successful executions are discarded. */
@@ -16,6 +16,8 @@ export type RasputinNodeClientStats = RasputinClientStats & {
16
16
  export type RasputinNodeClient = Omit<RasputinClient, 'getStats'> & {
17
17
  execution: RasputinExecution;
18
18
  getStats: () => RasputinNodeClientStats;
19
+ /** Verify package source locators against the configured Git repository and exact release. */
20
+ verifyConfiguration: () => Promise<SourceVerification>;
19
21
  };
20
22
  /**
21
23
  * Boot the Node/Bun SDK: client + process global handlers.
@@ -27,7 +29,6 @@ export type RasputinNodeClient = Omit<RasputinClient, 'getStats'> & {
27
29
  * release: process.env.RASPUTIN_RELEASE!,
28
30
  * environment: process.env.NODE_ENV ?? 'development',
29
31
  * enabled: ['staging', 'production'].includes(process.env.NODE_ENV ?? 'development'),
30
- * moduleUrl: import.meta.url,
31
32
  * });
32
33
  */
33
34
  export declare const RasputinInit: (options: RasputinNodeOptions) => RasputinNodeClient;
@@ -1 +1 @@
1
- {"version":3,"file":"rasputin-init.d.ts","sourceRoot":"","sources":["../src/rasputin-init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIN,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEN,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IACnD,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,GAAG;IAC3D,+EAA+E;IAC/E,QAAQ,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IACnE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,MAAM,uBAAuB,CAAC;CACxC,CAAC;AAkDF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,mBAAmB,KAAG,kBA4C3D,CAAC"}
1
+ {"version":3,"file":"rasputin-init.d.ts","sourceRoot":"","sources":["../src/rasputin-init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAIN,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEN,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IACnD,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,mBAAmB,GAAG;IAC3D,+EAA+E;IAC/E,QAAQ,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GAAG;IACnE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,MAAM,uBAAuB,CAAC;IACxC,8FAA8F;IAC9F,mBAAmB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvD,CAAC;AAgDF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,mBAAmB,KAAG,kBA2C3D,CAAC"}
@@ -1,4 +1,4 @@
1
- /** Generated by packages/sdk/scripts/generate-sdk-meta.ts — do not edit. */
1
+ /** Generated by scripts/generate-sdk-meta.ts — do not edit. */
2
2
  export declare const SDK_NAME = "@rasputin-ai/node";
3
- export declare const SDK_VERSION = "0.3.0";
3
+ export declare const SDK_VERSION = "0.4.1";
4
4
  //# sourceMappingURL=sdk-meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-meta.d.ts","sourceRoot":"","sources":["../src/sdk-meta.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,QAAQ,sBAAsB,CAAC;AAC5C,eAAO,MAAM,WAAW,UAAU,CAAC"}
1
+ {"version":3,"file":"sdk-meta.d.ts","sourceRoot":"","sources":["../src/sdk-meta.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,QAAQ,sBAAsB,CAAC;AAC5C,eAAO,MAAM,WAAW,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasputin-ai/node",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Official Rasputin AI SDK for Node and Bun.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@jridgewell/trace-mapping": "0.3.31",
39
- "@rasputin-ai/core": "0.3.0",
39
+ "@rasputin-ai/core": "0.4.1",
40
40
  "typescript": "5"
41
41
  },
42
42
  "devDependencies": {