@rasputin-ai/core 0.5.0-alpha.7 → 0.5.0-alpha.9

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.
@@ -93,11 +93,19 @@ export type RuntimeExecutionRecorderMetrics = {
93
93
  inlineWallTimeMs: number;
94
94
  derivation?: RuntimeDerivationMetrics;
95
95
  };
96
- export type RuntimeCaptureMode = 'derivation' | 'automatic-full' | 'manual' | 'scope-only';
96
+ export type RuntimeCaptureCoverage = 'full' | 'partial' | 'none';
97
+ /** How this execution was recorded. Completeness of an individual value is separate. */
98
+ export type RuntimeCaptureProfile = {
99
+ source: 'automatic' | 'manual' | 'scope-only';
100
+ functionBoundaries: RuntimeCaptureCoverage;
101
+ functionValues: 'full' | 'selective' | 'none';
102
+ timings: RuntimeCaptureCoverage;
103
+ derivation: 'available' | 'none';
104
+ };
97
105
  /** Bounded, redacted execution state captured at the moment an error is reported. */
98
106
  export type RuntimeExecutionState = {
99
- version: 3;
100
- captureMode: RuntimeCaptureMode;
107
+ version: 4;
108
+ captureProfile: RuntimeCaptureProfile;
101
109
  executionId: string;
102
110
  startedAt: string;
103
111
  durationMs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-execution-state-types.d.ts","sourceRoot":"","sources":["../../src/create-ingest-event/runtime-execution-state-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-execution-state-types.d.ts","sourceRoot":"","sources":["../../src/create-ingest-event/runtime-execution-state-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"captured-value-markers.d.ts","sourceRoot":"","sources":["../../src/derivation/captured-value-markers.ts"],"names":[],"mappings":"AAWA,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,OAAO,GAAG,SA2BpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,OAKxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,OAInD,CAAC"}
1
+ {"version":3,"file":"captured-value-markers.d.ts","sourceRoot":"","sources":["../../src/derivation/captured-value-markers.ts"],"names":[],"mappings":"AAWA,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,OAAO,GAAG,SA6BpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,OAKxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,OAInD,CAAC"}
@@ -4,15 +4,23 @@
4
4
  */
5
5
  import type { RuntimeExecutionState } from '../create-ingest-event/runtime-execution-state-types';
6
6
  import type { InstrumentationManifestContent } from '../instrumentation-manifest/instrumentation-manifest-types';
7
+ export type DerivationValidation = {
8
+ status: 'verified' | 'mismatch';
9
+ derivedValue?: unknown;
10
+ expressionId?: number;
11
+ dependencies?: number[];
12
+ };
7
13
  export type EvaluatedRuntimeValue = {
8
14
  origin: 'captured';
9
15
  completeness: 'exact' | 'partial';
10
16
  value: unknown;
17
+ derivationValidation?: DerivationValidation;
11
18
  } | {
12
19
  origin: 'derived';
13
20
  completeness: 'exact' | 'partial';
14
21
  value: unknown;
15
22
  dependencies: number[];
23
+ derivationValidation?: DerivationValidation;
16
24
  } | {
17
25
  origin: 'unavailable';
18
26
  reason: string;
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate-derivation-plan.d.ts","sourceRoot":"","sources":["../../src/derivation/evaluate-derivation-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAGX,qBAAqB,EACrB,MAAM,sDAAsD,CAAC;AAM9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAWjH,MAAM,MAAM,qBAAqB,GAC9B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACzE;IACA,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;CACtB,GACD;IACA,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CACd,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,qBAAqB,CAAC;KAC9B,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAivBF,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAChD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAAC;CAChD,KAAG,wBAkDH,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,WAAW,sBAAsB,GAAG,SAAS,EAC7C,MAAM,MAAM,GAAG,IAAI,KACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAKvD,CAAC"}
1
+ {"version":3,"file":"evaluate-derivation-plan.d.ts","sourceRoot":"","sources":["../../src/derivation/evaluate-derivation-plan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAGX,qBAAqB,EACrB,MAAM,sDAAsD,CAAC;AAM9D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAYjH,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC9B;IACA,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC3C,GACD;IACA,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC3C,GACD;IACA,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CACd,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC9C,SAAS,EAAE,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,qBAAqB,CAAC;KAC9B,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AA01BF,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAChD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAAC;CAChD,KAAG,wBAuEH,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,WAAW,sBAAsB,GAAG,SAAS,EAC7C,MAAM,MAAM,GAAG,IAAI,KACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAKvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Compare already-serialized snapshots. Never invokes getters or application code. */
2
+ export declare const wireValuesEqual: (left: unknown, right: unknown) => boolean;
3
+ //# sourceMappingURL=wire-values-equal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-values-equal.d.ts","sourceRoot":"","sources":["../../src/derivation/wire-values-equal.ts"],"names":[],"mappings":"AAkBA,uFAAuF;AACvF,eAAO,MAAM,eAAe,GAAI,MAAM,OAAO,EAAE,OAAO,OAAO,KAAG,OAoB/D,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,9 +5,9 @@ export { isClientEnabled } from './create-client/is-client-enabled';
5
5
  export { resolveEndpointUrls } from './create-client/resolve-endpoint-urls';
6
6
  export { createIngestEvent } from './create-ingest-event/create-ingest-event';
7
7
  export type { RequestContext } from './create-ingest-event/create-ingest-event-types';
8
- export type { RuntimeCapturedControlFact, RuntimeCapturedRoot, RuntimeCaptureMode, RuntimeDerivationCapture, RuntimeDerivationMetrics, RuntimeExecutionEvent, RuntimeExecutionKind, RuntimeExecutionMetadata, RuntimeExecutionRecorderMetrics, RuntimeExecutionRequest, RuntimeExecutionState, RuntimeFunctionCallsSuppressedEvent, RuntimeFunctionEnterEvent, RuntimeFunctionExitEvent, RuntimeFunctionThrowEvent, RuntimeThrowLocation, } from './create-ingest-event/runtime-execution-state-types';
8
+ export type { RuntimeCaptureCoverage, RuntimeCapturedControlFact, RuntimeCapturedRoot, RuntimeCaptureProfile, RuntimeDerivationCapture, RuntimeDerivationMetrics, RuntimeExecutionEvent, RuntimeExecutionKind, RuntimeExecutionMetadata, RuntimeExecutionRecorderMetrics, RuntimeExecutionRequest, RuntimeExecutionState, RuntimeFunctionCallsSuppressedEvent, RuntimeFunctionEnterEvent, RuntimeFunctionExitEvent, RuntimeFunctionThrowEvent, RuntimeThrowLocation, } from './create-ingest-event/runtime-execution-state-types';
9
9
  export { capturedValueCompleteness, isRedactedCapturedValue, isSerializerMarker, } from './derivation/captured-value-markers';
10
- export { type EvaluateDerivationResult, type EvaluatedFunctionState, type EvaluatedRuntimeValue, evaluatedValueAtLine, evaluateRuntimeDerivation, } from './derivation/evaluate-derivation-plan';
10
+ export { type DerivationValidation, type EvaluateDerivationResult, type EvaluatedFunctionState, type EvaluatedRuntimeValue, evaluatedValueAtLine, evaluateRuntimeDerivation, } from './derivation/evaluate-derivation-plan';
11
11
  export { hashInstrumentationManifest } from './derivation/hash-instrumentation-manifest';
12
12
  export { isRasputinTaggedValue, RASPUTIN_WIRE_TAG, type RasputinTaggedValue, rasputinOmitted, rasputinRedacted, rasputinTagKind, rasputinTruncated, rasputinUnavailable, rasputinUnknown, } from './derivation/rasputin-wire-tag';
13
13
  export { detectRelease } from './detect-release/detect-release';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -659,7 +659,7 @@ var resolveSourceMaps = async (frames) => {
659
659
 
660
660
  // src/sdk-meta.ts
661
661
  var SDK_NAME = "@rasputin-ai/core";
662
- var SDK_VERSION = "0.5.0-alpha.7";
662
+ var SDK_VERSION = "0.5.0-alpha.9";
663
663
 
664
664
  // src/suppression/identity-needs-message-template.ts
665
665
  var identityNeedsMessageTemplate = (type, code) => {
@@ -1573,8 +1573,10 @@ var capturedValueCompleteness = (value) => {
1573
1573
  if (value.__rasputin_truncated === true) return "partial";
1574
1574
  if (value.__rasputin_type === "omitted" || value.__rasputin_type === "accessor") return "partial";
1575
1575
  if (value.__rasputin_type === "unserializable") return "partial";
1576
- for (const nested of Object.values(value)) {
1577
- if (capturedValueCompleteness(nested) === "partial") return "partial";
1576
+ for (const key of Object.keys(value)) {
1577
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
1578
+ if (!descriptor || descriptor.get || descriptor.set) return "partial";
1579
+ if (capturedValueCompleteness(descriptor.value) === "partial") return "partial";
1578
1580
  }
1579
1581
  return "exact";
1580
1582
  };
@@ -1766,12 +1768,44 @@ var hashInstrumentationManifest = (manifest) => {
1766
1768
  );
1767
1769
  };
1768
1770
 
1771
+ // src/derivation/wire-values-equal.ts
1772
+ var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
1773
+ var arraysEqual = (left, right) => {
1774
+ if (left.length !== right.length) return false;
1775
+ for (let index = 0; index < left.length; index++) {
1776
+ if (Object.hasOwn(left, index) !== Object.hasOwn(right, index)) return false;
1777
+ if (!wireValuesEqual(left[index], right[index])) return false;
1778
+ }
1779
+ return true;
1780
+ };
1781
+ var wireValuesEqual = (left, right) => {
1782
+ if (Object.is(left, right)) return true;
1783
+ if (typeof left === "bigint" && typeof right === "bigint") return left === right;
1784
+ if (isRasputinTaggedValue(left) || isRasputinTaggedValue(right)) {
1785
+ if (!Array.isArray(left) || !Array.isArray(right)) return false;
1786
+ return arraysEqual(left, right);
1787
+ }
1788
+ if (Array.isArray(left) && Array.isArray(right)) return arraysEqual(left, right);
1789
+ if (!isRecord2(left) || !isRecord2(right)) return false;
1790
+ const leftKeys = Object.keys(left).sort();
1791
+ const rightKeys = Object.keys(right).sort();
1792
+ if (leftKeys.length !== rightKeys.length) return false;
1793
+ return leftKeys.every((key, index) => {
1794
+ if (key !== rightKeys[index]) return false;
1795
+ const leftDesc = Object.getOwnPropertyDescriptor(left, key);
1796
+ const rightDesc = Object.getOwnPropertyDescriptor(right, key);
1797
+ if (!leftDesc || !rightDesc) return false;
1798
+ if (leftDesc.get || leftDesc.set || rightDesc.get || rightDesc.set) return false;
1799
+ return wireValuesEqual(leftDesc.value, rightDesc.value);
1800
+ });
1801
+ };
1802
+
1769
1803
  // src/derivation/evaluate-derivation-plan.ts
1770
1804
  var MAX_INSTRUCTIONS = 1e4;
1771
1805
  var MAX_DEPTH = 64;
1772
1806
  var MAX_OUTPUT_BYTES = 256 * 1024;
1773
1807
  var MAX_WALL_MS = 50;
1774
- var isRecord2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
1808
+ var isRecord3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
1775
1809
  var primitiveFromConst = (value) => {
1776
1810
  switch (value.type) {
1777
1811
  case "null":
@@ -1811,8 +1845,13 @@ var estimateBytes = (value, depth = 0) => {
1811
1845
  return total2;
1812
1846
  }
1813
1847
  let total = 2;
1814
- for (const [key, nested] of Object.entries(value)) {
1815
- total += key.length + estimateBytes(nested, depth + 1);
1848
+ for (const key of Object.keys(value)) {
1849
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
1850
+ if (!descriptor || descriptor.get || descriptor.set) {
1851
+ total += key.length + 8;
1852
+ continue;
1853
+ }
1854
+ total += key.length + estimateBytes(descriptor.value, depth + 1);
1816
1855
  }
1817
1856
  return total;
1818
1857
  }
@@ -1820,6 +1859,58 @@ var estimateBytes = (value, depth = 0) => {
1820
1859
  return 8;
1821
1860
  }
1822
1861
  };
1862
+ var capturedFromWire = (value) => {
1863
+ if (rasputinTagKind(value) === "omitted") {
1864
+ return { origin: "unavailable", reason: "omitted_value" };
1865
+ }
1866
+ if (isRedactedCapturedValue(value)) {
1867
+ return { origin: "captured", completeness: "partial", value: rasputinRedacted() };
1868
+ }
1869
+ return { origin: "captured", completeness: capturedValueCompleteness(value), value };
1870
+ };
1871
+ var checkpointRank = (value) => {
1872
+ if (!value || value.origin === "unavailable") return 5;
1873
+ if (value.origin === "captured" && value.completeness === "exact") return 1;
1874
+ if (value.origin === "derived" && value.completeness === "exact") return 2;
1875
+ if (value.origin === "captured") return 3;
1876
+ return 4;
1877
+ };
1878
+ var resolveCheckpoint = (captured, derived, expressionId) => {
1879
+ const capturedRank = checkpointRank(captured);
1880
+ const derivedRank = checkpointRank(derived);
1881
+ if (capturedRank === 1 && derivedRank === 2 && captured?.origin === "captured" && derived?.origin === "derived") {
1882
+ if (!wireValuesEqual(captured.value, derived.value)) {
1883
+ return {
1884
+ origin: "captured",
1885
+ completeness: "exact",
1886
+ value: captured.value,
1887
+ derivationValidation: {
1888
+ status: "mismatch",
1889
+ derivedValue: derived.value,
1890
+ expressionId,
1891
+ dependencies: derived.dependencies
1892
+ }
1893
+ };
1894
+ }
1895
+ return {
1896
+ origin: "captured",
1897
+ completeness: "exact",
1898
+ value: captured.value,
1899
+ derivationValidation: { status: "verified" }
1900
+ };
1901
+ }
1902
+ if (capturedRank <= derivedRank) {
1903
+ return captured ?? derived ?? { origin: "unavailable", reason: "no_checkpoint" };
1904
+ }
1905
+ return derived ?? { origin: "unavailable", reason: "no_checkpoint" };
1906
+ };
1907
+ var exactOperandsOrUnavailable = (parts) => {
1908
+ const completeness = mergeCompleteness(parts);
1909
+ if (completeness === "unavailable")
1910
+ return { origin: "unavailable", reason: "partial_dependency" };
1911
+ if (completeness === "partial") return { origin: "unavailable", reason: "partial_operand" };
1912
+ return void 0;
1913
+ };
1823
1914
  var capturedResult = (root) => {
1824
1915
  if (isRedactedCapturedValue(root.value)) {
1825
1916
  return { origin: "captured", completeness: "partial", value: rasputinRedacted() };
@@ -1862,6 +1953,27 @@ var resolveEnterArgs = (enter, queue) => {
1862
1953
  if (!argsIncludeOmitted(enter.args)) return enter.args;
1863
1954
  return takeReconstructedCallArgs(queue, enter.parentCallId, enter.functionId) ?? enter.args;
1864
1955
  };
1956
+ var takeChildCapturedReturn = (state, calleeFunctionId) => {
1957
+ if (state.recordingCallId == null) return void 0;
1958
+ const children = (state.childrenByParent.get(state.recordingCallId) ?? []).filter(
1959
+ (child2) => child2.functionId === calleeFunctionId
1960
+ );
1961
+ const key = omittedCallKey(state.recordingCallId, calleeFunctionId);
1962
+ const index = state.childCursor.get(key) ?? 0;
1963
+ state.childCursor.set(key, index + 1);
1964
+ const child = children[index];
1965
+ if (!child) return void 0;
1966
+ if (state.throwCallIds.has(child.callId)) return { threw: true };
1967
+ return state.exitByCallId.get(child.callId);
1968
+ };
1969
+ var readOwnDataProperty = (object, key) => {
1970
+ const descriptor = Object.getOwnPropertyDescriptor(object, key);
1971
+ if (!descriptor) return { ok: false, reason: "missing_property" };
1972
+ if (descriptor.get !== void 0 || descriptor.set !== void 0) {
1973
+ return { ok: false, reason: "accessor_property" };
1974
+ }
1975
+ return { ok: true, value: descriptor.value };
1976
+ };
1865
1977
  var budgetExceeded = (state) => {
1866
1978
  if (state.instructions > MAX_INSTRUCTIONS) return "instruction_budget";
1867
1979
  if (state.depth > MAX_DEPTH) return "depth_budget";
@@ -1912,8 +2024,7 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
1912
2024
  result = { origin: "unavailable", reason: "omitted_argument" };
1913
2025
  break;
1914
2026
  }
1915
- const completeness = capturedValueCompleteness(value);
1916
- result = { origin: "captured", completeness, value };
2027
+ result = capturedFromWire(value);
1917
2028
  break;
1918
2029
  }
1919
2030
  case "root": {
@@ -1931,9 +2042,9 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
1931
2042
  case "binary": {
1932
2043
  const left = evalChild(expression.left);
1933
2044
  const right = evalChild(expression.right);
1934
- const completeness = mergeCompleteness([left, right]);
1935
- if (completeness === "unavailable") {
1936
- result = { origin: "unavailable", reason: "partial_dependency" };
2045
+ const blocked = exactOperandsOrUnavailable([left, right]);
2046
+ if (blocked) {
2047
+ result = blocked;
1937
2048
  break;
1938
2049
  }
1939
2050
  const leftValue = unwrapExactPrimitive(left);
@@ -1964,7 +2075,7 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
1964
2075
  }
1965
2076
  result = {
1966
2077
  origin: "derived",
1967
- completeness,
2078
+ completeness: "exact",
1968
2079
  value,
1969
2080
  dependencies: [expression.left, expression.right]
1970
2081
  };
@@ -1972,8 +2083,9 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
1972
2083
  }
1973
2084
  case "unary": {
1974
2085
  const operand = evalChild(expression.operand);
1975
- if (operand.origin === "unavailable") {
1976
- result = operand;
2086
+ const blocked = exactOperandsOrUnavailable([operand]);
2087
+ if (blocked || operand.origin === "unavailable") {
2088
+ result = blocked ?? operand;
1977
2089
  break;
1978
2090
  }
1979
2091
  const raw = operand.value;
@@ -1984,7 +2096,7 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
1984
2096
  if (expression.op === "typeof") {
1985
2097
  result = {
1986
2098
  origin: "derived",
1987
- completeness: operand.completeness,
2099
+ completeness: "exact",
1988
2100
  value: typeof raw,
1989
2101
  dependencies: [expression.operand]
1990
2102
  };
@@ -1993,7 +2105,7 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
1993
2105
  if (expression.op === "not") {
1994
2106
  result = {
1995
2107
  origin: "derived",
1996
- completeness: operand.completeness,
2108
+ completeness: "exact",
1997
2109
  value: !raw,
1998
2110
  dependencies: [expression.operand]
1999
2111
  };
@@ -2005,7 +2117,7 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2005
2117
  }
2006
2118
  result = {
2007
2119
  origin: "derived",
2008
- completeness: operand.completeness,
2120
+ completeness: "exact",
2009
2121
  value: expression.op === "minus" ? -raw : +raw,
2010
2122
  dependencies: [expression.operand]
2011
2123
  };
@@ -2013,29 +2125,30 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2013
2125
  }
2014
2126
  case "logical": {
2015
2127
  const left = evalChild(expression.left);
2016
- if (left.origin === "unavailable") {
2017
- result = left;
2128
+ const leftBlocked = exactOperandsOrUnavailable([left]);
2129
+ if (leftBlocked || left.origin === "unavailable") {
2130
+ result = leftBlocked ?? left;
2018
2131
  break;
2019
2132
  }
2020
2133
  const takeRight = expression.op === "and" ? Boolean(left.value) : expression.op === "or" ? !left.value : left.value == null;
2021
2134
  if (!takeRight) {
2022
2135
  result = left.origin === "derived" ? left : {
2023
2136
  origin: "derived",
2024
- completeness: left.completeness,
2137
+ completeness: "exact",
2025
2138
  value: left.value,
2026
2139
  dependencies: [expression.left]
2027
2140
  };
2028
2141
  break;
2029
2142
  }
2030
2143
  const right = evalChild(expression.right);
2031
- const completeness = mergeCompleteness([left, right]);
2032
- if (completeness === "unavailable" || right.origin === "unavailable") {
2033
- result = { origin: "unavailable", reason: "partial_dependency" };
2144
+ const blocked = exactOperandsOrUnavailable([left, right]);
2145
+ if (blocked || right.origin === "unavailable") {
2146
+ result = blocked ?? right;
2034
2147
  break;
2035
2148
  }
2036
2149
  result = {
2037
2150
  origin: "derived",
2038
- completeness,
2151
+ completeness: "exact",
2039
2152
  value: right.value,
2040
2153
  dependencies: [expression.left, expression.right]
2041
2154
  };
@@ -2043,8 +2156,9 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2043
2156
  }
2044
2157
  case "cond": {
2045
2158
  const test = evalChild(expression.test);
2046
- if (test.origin === "unavailable") {
2047
- result = test;
2159
+ const testBlocked = exactOperandsOrUnavailable([test]);
2160
+ if (testBlocked || test.origin === "unavailable") {
2161
+ result = testBlocked ?? test;
2048
2162
  break;
2049
2163
  }
2050
2164
  const fact = [...factsById.values()].find(
@@ -2052,14 +2166,14 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2052
2166
  );
2053
2167
  const takeConsequent = fact ? fact.value : Boolean(test.value);
2054
2168
  const branch = evalChild(takeConsequent ? expression.consequent : expression.alternate);
2055
- const completeness = mergeCompleteness([test, branch]);
2056
- if (completeness === "unavailable" || branch.origin === "unavailable") {
2057
- result = { origin: "unavailable", reason: "partial_dependency" };
2169
+ const blocked = exactOperandsOrUnavailable([test, branch]);
2170
+ if (blocked || branch.origin === "unavailable") {
2171
+ result = blocked ?? branch;
2058
2172
  break;
2059
2173
  }
2060
2174
  result = {
2061
2175
  origin: "derived",
2062
- completeness,
2176
+ completeness: "exact",
2063
2177
  value: branch.value,
2064
2178
  dependencies: [
2065
2179
  expression.test,
@@ -2186,20 +2300,20 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2186
2300
  result = { origin: "unavailable", reason: "redacted_operand" };
2187
2301
  break;
2188
2302
  }
2189
- if (!isRecord2(object.value) || rasputinTagKind(object.value)) {
2303
+ if (!isRecord3(object.value) || rasputinTagKind(object.value)) {
2190
2304
  result = { origin: "unavailable", reason: "prop_on_non_object" };
2191
2305
  break;
2192
2306
  }
2193
- if (!(expression.key in object.value)) {
2194
- result = { origin: "unavailable", reason: "missing_property" };
2307
+ const owned = readOwnDataProperty(object.value, expression.key);
2308
+ if (!owned.ok) {
2309
+ result = { origin: "unavailable", reason: owned.reason };
2195
2310
  break;
2196
2311
  }
2197
- const value = object.value[expression.key];
2198
- const completeness = object.completeness === "partial" || capturedValueCompleteness(value) === "partial" ? "partial" : "exact";
2312
+ const completeness = object.completeness === "partial" || capturedValueCompleteness(owned.value) === "partial" ? "partial" : "exact";
2199
2313
  result = {
2200
2314
  origin: "derived",
2201
2315
  completeness,
2202
- value,
2316
+ value: owned.value,
2203
2317
  dependencies: [expression.object]
2204
2318
  };
2205
2319
  break;
@@ -2233,33 +2347,24 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2233
2347
  break;
2234
2348
  }
2235
2349
  case "pure_call": {
2236
- const callee = calleeReturns.get(expression.calleeFunctionId);
2237
- if (!callee || callee.fallbackReason || callee.returnExpressionId == null) {
2238
- result = { origin: "unavailable", reason: "unproven_callee" };
2350
+ const childReturn = takeChildCapturedReturn(state, expression.calleeFunctionId);
2351
+ if (childReturn && "threw" in childReturn) {
2352
+ result = { origin: "unavailable", reason: "callee_threw" };
2239
2353
  break;
2240
2354
  }
2355
+ const capturedReturn = childReturn && "present" in childReturn ? capturedFromWire(childReturn.value) : void 0;
2356
+ const callee = calleeReturns.get(expression.calleeFunctionId);
2241
2357
  const callArgs = [];
2242
- const parts = [];
2243
- let failed;
2358
+ let argsExact = true;
2244
2359
  for (const argId of expression.args) {
2245
2360
  const nested = evalChild(argId);
2246
- parts.push(nested);
2247
- if (nested.origin === "unavailable") {
2248
- failed = nested;
2249
- break;
2361
+ if (nested.origin === "unavailable" || nested.completeness === "partial") {
2362
+ argsExact = false;
2363
+ continue;
2250
2364
  }
2251
2365
  callArgs.push(nested.value);
2252
2366
  }
2253
- if (failed) {
2254
- result = failed;
2255
- break;
2256
- }
2257
- const completeness = mergeCompleteness(parts);
2258
- if (completeness === "unavailable") {
2259
- result = { origin: "unavailable", reason: "partial_dependency" };
2260
- break;
2261
- }
2262
- if (state.recordingCallId != null) {
2367
+ if (argsExact && state.recordingCallId != null) {
2263
2368
  recordReconstructedCallArgs(
2264
2369
  state.omittedCallArgs,
2265
2370
  state.recordingCallId,
@@ -2267,17 +2372,11 @@ var evaluateExpression = (expressionId, plan, byId, cells, args, rootsById, fact
2267
2372
  callArgs
2268
2373
  );
2269
2374
  }
2270
- const returned = evaluateCallee(callee, callArgs);
2271
- if (returned.origin === "unavailable") {
2272
- result = returned;
2273
- break;
2274
- }
2275
- result = {
2276
- origin: "derived",
2277
- completeness: completeness === "partial" || returned.completeness === "partial" ? "partial" : "exact",
2278
- value: returned.value,
2279
- dependencies: expression.args
2280
- };
2375
+ const canDeriveCallee = Boolean(
2376
+ argsExact && callee && !callee.fallbackReason && callee.returnExpressionId != null
2377
+ );
2378
+ const derivedReturn = canDeriveCallee && callee ? evaluateCallee(callee, callArgs) : void 0;
2379
+ result = resolveCheckpoint(capturedReturn, derivedReturn, expression.id);
2281
2380
  break;
2282
2381
  }
2283
2382
  }
@@ -2353,7 +2452,7 @@ var applyBinary = (op, left, right) => {
2353
2452
  return left >= right;
2354
2453
  }
2355
2454
  };
2356
- var evaluatePlan = (plan, args, roots, facts, plansByFunctionId, state, recordingCallId) => {
2455
+ var evaluatePlan = (plan, args, roots, facts, plansByFunctionId, state, recordingCallId, capturedExit, threw = false) => {
2357
2456
  const previousRecordingCallId = state.recordingCallId;
2358
2457
  state.recordingCallId = recordingCallId;
2359
2458
  try {
@@ -2393,15 +2492,20 @@ var evaluatePlan = (plan, args, roots, facts, plansByFunctionId, state, recordin
2393
2492
  reason: "missing_expression"
2394
2493
  }
2395
2494
  }));
2495
+ const derivedReturn = plan.returnExpressionId == null ? void 0 : values[plan.returnExpressionId] ?? {
2496
+ origin: "unavailable",
2497
+ reason: "missing_return"
2498
+ };
2396
2499
  return {
2397
2500
  functionId: plan.functionId,
2398
2501
  callId: roots[0]?.callId ?? facts[0]?.callId ?? 0,
2399
2502
  values,
2400
2503
  variables,
2401
- returnValue: plan.returnExpressionId == null ? void 0 : values[plan.returnExpressionId] ?? {
2402
- origin: "unavailable",
2403
- reason: "missing_return"
2404
- }
2504
+ returnValue: threw ? void 0 : resolveCheckpoint(
2505
+ capturedExit ? capturedFromWire(capturedExit.value) : void 0,
2506
+ derivedReturn,
2507
+ plan.returnExpressionId
2508
+ )
2405
2509
  };
2406
2510
  } finally {
2407
2511
  state.recordingCallId = previousRecordingCallId;
@@ -2422,23 +2526,42 @@ var evaluateRuntimeDerivation = (input) => {
2422
2526
  return { unavailableReason: "manifest_hash_mismatch", functions: [] };
2423
2527
  }
2424
2528
  const plansByFunctionId = new Map(
2425
- input.manifest.derivationPlans.map((plan) => [plan.functionId, plan])
2529
+ (input.manifest.derivationPlans ?? []).map((plan) => [plan.functionId, plan])
2426
2530
  );
2427
2531
  const roots = input.state.derivation?.roots ?? [];
2428
2532
  const facts = input.state.derivation?.controlFacts ?? [];
2533
+ const exitByCallId = /* @__PURE__ */ new Map();
2534
+ const throwCallIds = /* @__PURE__ */ new Set();
2535
+ const childrenByParent = /* @__PURE__ */ new Map();
2536
+ for (const event of input.state.events) {
2537
+ if (event.type === "function_enter" && event.parentCallId != null) {
2538
+ const child = { callId: event.callId, functionId: event.functionId };
2539
+ const siblings = childrenByParent.get(event.parentCallId);
2540
+ if (siblings) siblings.push(child);
2541
+ else childrenByParent.set(event.parentCallId, [child]);
2542
+ }
2543
+ if (event.type === "function_exit") {
2544
+ exitByCallId.set(event.callId, { present: true, value: event.returnValue });
2545
+ }
2546
+ if (event.type === "function_throw") throwCallIds.add(event.callId);
2547
+ }
2429
2548
  const state = {
2430
2549
  instructions: 0,
2431
2550
  depth: 0,
2432
2551
  outputBytes: 0,
2433
2552
  startedAt: Date.now(),
2434
2553
  recordingCallId: null,
2435
- omittedCallArgs: /* @__PURE__ */ new Map()
2554
+ omittedCallArgs: /* @__PURE__ */ new Map(),
2555
+ exitByCallId,
2556
+ throwCallIds,
2557
+ childrenByParent,
2558
+ childCursor: /* @__PURE__ */ new Map()
2436
2559
  };
2437
2560
  const enterEvents = input.state.events.filter((event) => event.type === "function_enter");
2438
2561
  const functions = [];
2439
2562
  for (const enter of enterEvents) {
2440
2563
  const plan = plansByFunctionId.get(enter.functionId);
2441
- if (!plan || plan.fallbackReason) continue;
2564
+ if (!plan) continue;
2442
2565
  const callRoots = roots.filter((root) => root.callId === enter.callId);
2443
2566
  const callFacts = facts.filter((fact) => fact.callId === enter.callId);
2444
2567
  const evaluated = evaluatePlan(
@@ -2448,7 +2571,9 @@ var evaluateRuntimeDerivation = (input) => {
2448
2571
  callFacts,
2449
2572
  plansByFunctionId,
2450
2573
  state,
2451
- enter.callId
2574
+ enter.callId,
2575
+ exitByCallId.get(enter.callId),
2576
+ throwCallIds.has(enter.callId)
2452
2577
  );
2453
2578
  evaluated.callId = enter.callId;
2454
2579
  functions.push(evaluated);
@@ -1,4 +1,4 @@
1
1
  /** Generated by scripts/generate-sdk-meta.ts — do not edit. */
2
2
  export declare const SDK_NAME = "@rasputin-ai/core";
3
- export declare const SDK_VERSION = "0.5.0-alpha.7";
3
+ export declare const SDK_VERSION = "0.5.0-alpha.9";
4
4
  //# sourceMappingURL=sdk-meta.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasputin-ai/core",
3
- "version": "0.5.0-alpha.7",
3
+ "version": "0.5.0-alpha.9",
4
4
  "description": "Core error capture, stack parsing, and ingest transport for Rasputin AI.",
5
5
  "type": "module",
6
6
  "exports": {