@relayflows/sdk 2.0.28 → 2.0.30

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 (120) hide show
  1. package/dist/authored-flow-executor.d.ts.map +1 -1
  2. package/dist/authored-flow-executor.js +10 -1
  3. package/dist/authored-flow-executor.js.map +1 -1
  4. package/dist/authored-step-index.d.ts +6 -0
  5. package/dist/authored-step-index.d.ts.map +1 -1
  6. package/dist/authored-step-index.js +42 -14
  7. package/dist/authored-step-index.js.map +1 -1
  8. package/dist/bundle-extensions.d.ts.map +1 -1
  9. package/dist/bundle-extensions.js +4 -7
  10. package/dist/bundle-extensions.js.map +1 -1
  11. package/dist/bundle.d.ts.map +1 -1
  12. package/dist/bundle.js +41 -7
  13. package/dist/bundle.js.map +1 -1
  14. package/dist/canonical.d.ts.map +1 -1
  15. package/dist/canonical.js +18 -6
  16. package/dist/canonical.js.map +1 -1
  17. package/dist/cli/status.d.ts +12 -0
  18. package/dist/cli/status.d.ts.map +1 -1
  19. package/dist/cli/status.js +39 -1
  20. package/dist/cli/status.js.map +1 -1
  21. package/dist/flow-extension-compat.d.ts.map +1 -1
  22. package/dist/flow-extension-compat.js +26 -8
  23. package/dist/flow-extension-compat.js.map +1 -1
  24. package/dist/flow-extension-loader.d.ts +7 -0
  25. package/dist/flow-extension-loader.d.ts.map +1 -1
  26. package/dist/flow-extension-loader.js +48 -22
  27. package/dist/flow-extension-loader.js.map +1 -1
  28. package/dist/fs-descriptor.d.ts +17 -0
  29. package/dist/fs-descriptor.d.ts.map +1 -0
  30. package/dist/fs-descriptor.js +96 -0
  31. package/dist/fs-descriptor.js.map +1 -0
  32. package/dist/hosted-base-snapshot.d.ts +25 -0
  33. package/dist/hosted-base-snapshot.d.ts.map +1 -0
  34. package/dist/hosted-base-snapshot.js +278 -0
  35. package/dist/hosted-base-snapshot.js.map +1 -0
  36. package/dist/hosted-extension-declarations.d.ts +10 -0
  37. package/dist/hosted-extension-declarations.d.ts.map +1 -0
  38. package/dist/hosted-extension-declarations.js +272 -0
  39. package/dist/hosted-extension-declarations.js.map +1 -0
  40. package/dist/hosted-extension-isolation.d.ts +82 -0
  41. package/dist/hosted-extension-isolation.d.ts.map +1 -0
  42. package/dist/hosted-extension-isolation.js +322 -0
  43. package/dist/hosted-extension-isolation.js.map +1 -0
  44. package/dist/hosted-extension-manifest.d.ts +9 -0
  45. package/dist/hosted-extension-manifest.d.ts.map +1 -0
  46. package/dist/hosted-extension-manifest.js +235 -0
  47. package/dist/hosted-extension-manifest.js.map +1 -0
  48. package/dist/hosted-extension-protocol.d.ts +16 -0
  49. package/dist/hosted-extension-protocol.d.ts.map +1 -0
  50. package/dist/hosted-extension-protocol.js +224 -0
  51. package/dist/hosted-extension-protocol.js.map +1 -0
  52. package/dist/hosted-extension-runtime.d.ts +30 -0
  53. package/dist/hosted-extension-runtime.d.ts.map +1 -0
  54. package/dist/hosted-extension-runtime.js +167 -0
  55. package/dist/hosted-extension-runtime.js.map +1 -0
  56. package/dist/hosted-extension-sandbox-source.d.ts +9 -0
  57. package/dist/hosted-extension-sandbox-source.d.ts.map +1 -0
  58. package/dist/hosted-extension-sandbox-source.js +95 -0
  59. package/dist/hosted-extension-sandbox-source.js.map +1 -0
  60. package/dist/hosted-extension-sandbox.d.ts +39 -0
  61. package/dist/hosted-extension-sandbox.d.ts.map +1 -0
  62. package/dist/hosted-extension-sandbox.js +418 -0
  63. package/dist/hosted-extension-sandbox.js.map +1 -0
  64. package/dist/hosted-project.d.ts +3 -0
  65. package/dist/hosted-project.d.ts.map +1 -0
  66. package/dist/hosted-project.js +19 -0
  67. package/dist/hosted-project.js.map +1 -0
  68. package/dist/hosted-promise-safety.d.ts +12 -0
  69. package/dist/hosted-promise-safety.d.ts.map +1 -0
  70. package/dist/hosted-promise-safety.js +63 -0
  71. package/dist/hosted-promise-safety.js.map +1 -0
  72. package/dist/index.d.ts +2 -0
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +2 -0
  75. package/dist/index.js.map +1 -1
  76. package/dist/intrinsic-array.d.ts +3 -0
  77. package/dist/intrinsic-array.d.ts.map +1 -0
  78. package/dist/intrinsic-array.js +14 -0
  79. package/dist/intrinsic-array.js.map +1 -0
  80. package/dist/json-value.d.ts +6 -1
  81. package/dist/json-value.d.ts.map +1 -1
  82. package/dist/json-value.js +155 -36
  83. package/dist/json-value.js.map +1 -1
  84. package/dist/llm-worker.d.ts +9 -0
  85. package/dist/llm-worker.d.ts.map +1 -1
  86. package/dist/llm-worker.js +15 -1
  87. package/dist/llm-worker.js.map +1 -1
  88. package/dist/plugin-store.d.ts +8 -2
  89. package/dist/plugin-store.d.ts.map +1 -1
  90. package/dist/plugin-store.js +233 -56
  91. package/dist/plugin-store.js.map +1 -1
  92. package/dist/semver-range.d.ts.map +1 -1
  93. package/dist/semver-range.js +27 -15
  94. package/dist/semver-range.js.map +1 -1
  95. package/package.json +2 -2
  96. package/src/authored-flow-executor.ts +10 -1
  97. package/src/authored-step-index.ts +46 -12
  98. package/src/bundle-extensions.ts +6 -5
  99. package/src/bundle.ts +52 -7
  100. package/src/canonical.ts +20 -6
  101. package/src/cli/status.ts +50 -1
  102. package/src/flow-extension-compat.ts +32 -7
  103. package/src/flow-extension-loader.ts +56 -21
  104. package/src/fs-descriptor.ts +127 -0
  105. package/src/hosted-base-snapshot.ts +351 -0
  106. package/src/hosted-extension-declarations.ts +387 -0
  107. package/src/hosted-extension-isolation.ts +457 -0
  108. package/src/hosted-extension-manifest.ts +249 -0
  109. package/src/hosted-extension-protocol.ts +262 -0
  110. package/src/hosted-extension-runtime.ts +266 -0
  111. package/src/hosted-extension-sandbox-source.ts +94 -0
  112. package/src/hosted-extension-sandbox.ts +489 -0
  113. package/src/hosted-project.ts +18 -0
  114. package/src/hosted-promise-safety.ts +68 -0
  115. package/src/index.ts +18 -0
  116. package/src/intrinsic-array.ts +14 -0
  117. package/src/json-value.ts +184 -32
  118. package/src/llm-worker.ts +15 -1
  119. package/src/plugin-store.ts +323 -56
  120. package/src/semver-range.ts +39 -14
@@ -0,0 +1,3 @@
1
+ /** Append without consulting an inherited numeric setter on Array.prototype. */
2
+ export declare function appendIntrinsicArray<T>(array: T[], ...values: T[]): number;
3
+ //# sourceMappingURL=intrinsic-array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsic-array.d.ts","sourceRoot":"","sources":["../src/intrinsic-array.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAU1E"}
@@ -0,0 +1,14 @@
1
+ const OBJECT_DEFINE_PROPERTY = Object.defineProperty;
2
+ /** Append without consulting an inherited numeric setter on Array.prototype. */
3
+ export function appendIntrinsicArray(array, ...values) {
4
+ for (let index = 0; index < values.length; index += 1) {
5
+ OBJECT_DEFINE_PROPERTY(array, array.length, {
6
+ configurable: true,
7
+ enumerable: true,
8
+ value: values[index],
9
+ writable: true,
10
+ });
11
+ }
12
+ return array.length;
13
+ }
14
+ //# sourceMappingURL=intrinsic-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsic-array.js","sourceRoot":"","sources":["../src/intrinsic-array.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;AAErD,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAI,KAAU,EAAE,GAAG,MAAW;IAChE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;YAC1C,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAE;YACrB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC"}
@@ -1,6 +1,11 @@
1
1
  export type JsonValue = null | boolean | number | string | JsonValue[] | {
2
2
  [key: string]: JsonValue;
3
3
  };
4
+ export interface JsonSnapshotLimits {
5
+ readonly maxDepth: number;
6
+ readonly maxNodes: number;
7
+ readonly maxBytes: number;
8
+ }
4
9
  /** Copy runtime input into frozen, behavior-free JSON data. */
5
- export declare function snapshotJsonValue(value: unknown, at: string): JsonValue;
10
+ export declare function snapshotJsonValue(value: unknown, at: string, limits?: JsonSnapshotLimits): JsonValue;
6
11
  //# sourceMappingURL=json-value.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-value.d.ts","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAEvE"}
1
+ {"version":3,"file":"json-value.d.ts","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"AAoCA,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEjC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AASD,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAEpG"}
@@ -1,14 +1,46 @@
1
1
  import { isProxy } from 'node:util/types';
2
+ import { appendIntrinsicArray } from './intrinsic-array.js';
3
+ const ARRAY_IS_ARRAY = Array.isArray;
4
+ const ARRAY_PROTOTYPE = Array.prototype;
5
+ const ERROR = Error;
6
+ const IS_PROXY = isProxy;
7
+ const JSON_STRINGIFY = JSON.stringify;
8
+ const NUMBER = Number;
9
+ const NUMBER_IS_FINITE = Number.isFinite;
10
+ const NUMBER_IS_INTEGER = Number.isInteger;
11
+ const OBJECT_CREATE = Object.create;
12
+ const OBJECT_DEFINE_PROPERTY = Object.defineProperty;
13
+ const OBJECT_FREEZE = Object.freeze;
14
+ const OBJECT_GET_OWN_PROPERTY_DESCRIPTOR = Object.getOwnPropertyDescriptor;
15
+ const OBJECT_GET_PROTOTYPE_OF = Object.getPrototypeOf;
16
+ const OBJECT_HAS_OWN = Object.hasOwn;
17
+ const OBJECT_PROTOTYPE = Object.prototype;
18
+ const REGEXP_TEST = Function.prototype.call.bind(RegExp.prototype.test);
19
+ const STRING = String;
20
+ const STRING_CHAR_CODE_AT = Function.prototype.call.bind(String.prototype.charCodeAt);
21
+ const WEAK_SET = WeakSet;
22
+ const WEAK_SET_ADD = Function.prototype.call.bind(WeakSet.prototype.add);
23
+ const WEAK_SET_DELETE = Function.prototype.call.bind(WeakSet.prototype.delete);
24
+ const WEAK_SET_HAS = Function.prototype.call.bind(WeakSet.prototype.has);
2
25
  /** Copy runtime input into frozen, behavior-free JSON data. */
3
- export function snapshotJsonValue(value, at) {
4
- return snapshot(value, at, new WeakSet());
26
+ export function snapshotJsonValue(value, at, limits) {
27
+ return snapshot(value, at, new WEAK_SET(), { limits, nodes: 0, properties: 0, bytes: 0 }, 0);
5
28
  }
6
- function snapshot(value, at, ancestors) {
7
- if (value === null || typeof value === 'string' || typeof value === 'boolean')
29
+ function snapshot(value, at, ancestors, budget, depth) {
30
+ consumeNode(budget, at, depth);
31
+ if (typeof value === 'string') {
32
+ consumeStringBytes(budget, value, at);
8
33
  return value;
34
+ }
35
+ if (value === null || typeof value === 'boolean') {
36
+ consumeBytes(budget, value === null ? 4 : value ? 4 : 5, at);
37
+ return value;
38
+ }
9
39
  if (typeof value === 'number') {
10
- if (Number.isFinite(value))
40
+ if (NUMBER_IS_FINITE(value)) {
41
+ consumeBytes(budget, STRING(value).length, at);
11
42
  return value;
43
+ }
12
44
  throw nonJson(at, 'numbers must be finite');
13
45
  }
14
46
  if (typeof value !== 'object') {
@@ -17,49 +49,75 @@ function snapshot(value, at, ancestors) {
17
49
  // Every ordinary reflective operation on a Proxy can execute author code.
18
50
  // Node and Bun expose this trap-free brand check, so reject before touching
19
51
  // its prototype, keys, descriptors, or identity collection.
20
- if (isProxy(value))
52
+ if (IS_PROXY(value))
21
53
  throw nonJson(at, 'Proxy objects are not allowed');
22
- if (ancestors.has(value))
54
+ if (WEAK_SET_HAS(ancestors, value))
23
55
  throw nonJson(at, 'cycles are not allowed');
24
- ancestors.add(value);
56
+ WEAK_SET_ADD(ancestors, value);
25
57
  try {
26
- return Array.isArray(value)
27
- ? snapshotArray(value, at, ancestors)
28
- : snapshotObject(value, at, ancestors);
58
+ return ARRAY_IS_ARRAY(value)
59
+ ? snapshotArray(value, at, ancestors, budget, depth)
60
+ : snapshotObject(value, at, ancestors, budget, depth);
29
61
  }
30
62
  finally {
31
- ancestors.delete(value);
63
+ WEAK_SET_DELETE(ancestors, value);
32
64
  }
33
65
  }
34
- function snapshotArray(value, at, ancestors) {
35
- const keys = Reflect.ownKeys(value);
36
- for (const key of keys) {
37
- if (key === 'length')
66
+ function snapshotArray(value, at, ancestors, budget, depth) {
67
+ if (OBJECT_GET_PROTOTYPE_OF(value) !== ARRAY_PROTOTYPE
68
+ || OBJECT_GET_PROTOTYPE_OF(ARRAY_PROTOTYPE) !== OBJECT_PROTOTYPE) {
69
+ throw nonJson(at, 'only arrays with the intrinsic prototype are allowed');
70
+ }
71
+ consumeBytes(budget, 2, at);
72
+ if (budget.limits !== undefined && value.length > budget.limits.maxNodes - budget.nodes) {
73
+ throw nonJson(at, 'snapshot depth or node limit exceeded');
74
+ }
75
+ // `Reflect.ownKeys` allocates the complete key list before a caller can
76
+ // enforce cardinality. Enumerate JSON-visible keys one at a time instead.
77
+ // Symbols and non-enumerable properties are deliberately ignored, matching
78
+ // JSON.stringify; the copied value has neither, so they cannot affect later
79
+ // validation or serialization.
80
+ for (const key in value) {
81
+ consumeProperty(budget, at);
82
+ if (!OBJECT_HAS_OWN(value, key))
38
83
  continue;
39
- if (typeof key !== 'string' || !isArrayIndex(key, value.length)) {
84
+ if (!isArrayIndex(key, value.length)) {
40
85
  throw nonJson(at, 'arrays may contain only indexed data');
41
86
  }
42
87
  }
43
88
  const out = [];
44
89
  for (let index = 0; index < value.length; index += 1) {
45
- const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
90
+ if (index > 0)
91
+ consumeBytes(budget, 1, at);
92
+ const descriptor = OBJECT_GET_OWN_PROPERTY_DESCRIPTOR(value, STRING(index));
46
93
  if (descriptor === undefined)
47
94
  throw nonJson(`${at}[${index}]`, 'array holes are not allowed');
48
- out.push(snapshotDescriptor(descriptor, `${at}[${index}]`, ancestors));
95
+ appendIntrinsicArray(out, snapshotDescriptor(descriptor, `${at}[${index}]`, ancestors, budget, depth + 1));
49
96
  }
50
- return Object.freeze(out);
97
+ // JSON.stringify consults `toJSON` before applying array semantics. Shadow
98
+ // any poisoned Array.prototype hook with inert, non-JSON-visible data while
99
+ // retaining the intrinsic prototype expected by downstream array consumers.
100
+ OBJECT_DEFINE_PROPERTY(out, 'toJSON', { value: undefined });
101
+ return OBJECT_FREEZE(out);
51
102
  }
52
- function snapshotObject(value, at, ancestors) {
53
- const prototype = Object.getPrototypeOf(value);
54
- if (prototype !== Object.prototype && prototype !== null) {
103
+ function snapshotObject(value, at, ancestors, budget, depth) {
104
+ const prototype = OBJECT_GET_PROTOTYPE_OF(value);
105
+ if (prototype !== OBJECT_PROTOTYPE && prototype !== null) {
55
106
  throw nonJson(at, 'only plain objects are allowed');
56
107
  }
57
- const out = Object.create(null);
58
- for (const key of Reflect.ownKeys(value)) {
59
- if (typeof key !== 'string')
60
- throw nonJson(at, 'symbol keys are not allowed');
108
+ consumeBytes(budget, 2, at);
109
+ const out = OBJECT_CREATE(null);
110
+ let included = 0;
111
+ // Avoid materializing an attacker-sized key array in the unsandboxed
112
+ // parent. This visits only JSON-visible own string properties; symbols and
113
+ // non-enumerable properties are omitted exactly as JSON.stringify omits
114
+ // them, and cannot influence the null-prototype copy.
115
+ for (const key in value) {
116
+ consumeProperty(budget, at);
117
+ if (!OBJECT_HAS_OWN(value, key))
118
+ continue;
61
119
  const childAt = propertyPath(at, key);
62
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
120
+ const descriptor = OBJECT_GET_OWN_PROPERTY_DESCRIPTOR(value, key);
63
121
  if (descriptor === undefined)
64
122
  throw nonJson(childAt, 'missing property descriptor');
65
123
  const child = descriptorValue(descriptor, childAt);
@@ -67,12 +125,17 @@ function snapshotObject(value, at, ancestors) {
67
125
  // optionals. Arrays remain strict because undefined there becomes null.
68
126
  if (child === undefined)
69
127
  continue;
70
- out[key] = snapshot(child, childAt, ancestors);
128
+ if (included > 0)
129
+ consumeBytes(budget, 1, at);
130
+ consumeStringBytes(budget, key, childAt);
131
+ consumeBytes(budget, 1, childAt);
132
+ out[key] = snapshot(child, childAt, ancestors, budget, depth + 1);
133
+ included += 1;
71
134
  }
72
- return Object.freeze(out);
135
+ return OBJECT_FREEZE(out);
73
136
  }
74
- function snapshotDescriptor(descriptor, at, ancestors) {
75
- return snapshot(descriptorValue(descriptor, at), at, ancestors);
137
+ function snapshotDescriptor(descriptor, at, ancestors, budget, depth) {
138
+ return snapshot(descriptorValue(descriptor, at), at, ancestors, budget, depth);
76
139
  }
77
140
  function descriptorValue(descriptor, at) {
78
141
  if (!descriptor.enumerable)
@@ -82,13 +145,69 @@ function descriptorValue(descriptor, at) {
82
145
  return descriptor.value;
83
146
  }
84
147
  function isArrayIndex(key, length) {
85
- const index = Number(key);
86
- return Number.isInteger(index) && index >= 0 && index < length && String(index) === key;
148
+ const index = NUMBER(key);
149
+ return NUMBER_IS_INTEGER(index) && index >= 0 && index < length && STRING(index) === key;
87
150
  }
88
151
  function propertyPath(at, key) {
89
- return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? `${at}.${key}` : `${at}[${JSON.stringify(key)}]`;
152
+ if (key.length > 100)
153
+ return `${at}[long property]`;
154
+ return REGEXP_TEST(/^[A-Za-z_$][A-Za-z0-9_$]*$/, key)
155
+ ? `${at}.${key}`
156
+ : `${at}[${JSON_STRINGIFY(key)}]`;
157
+ }
158
+ function consumeNode(budget, at, depth) {
159
+ budget.nodes += 1;
160
+ if (budget.limits !== undefined
161
+ && (depth > budget.limits.maxDepth || budget.nodes > budget.limits.maxNodes)) {
162
+ throw nonJson(at, 'snapshot depth or node limit exceeded');
163
+ }
164
+ }
165
+ function consumeProperty(budget, at) {
166
+ if (budget.limits === undefined)
167
+ return;
168
+ budget.properties += 1;
169
+ if (budget.properties > budget.limits.maxNodes) {
170
+ throw nonJson(at, 'snapshot depth or node limit exceeded');
171
+ }
172
+ }
173
+ /** Count JSON's UTF-8 string encoding without allocating the escaped value. */
174
+ function consumeStringBytes(budget, value, at) {
175
+ consumeBytes(budget, 2, at);
176
+ if (budget.limits !== undefined && value.length > budget.limits.maxBytes - budget.bytes) {
177
+ throw nonJson(at, 'snapshot byte limit exceeded');
178
+ }
179
+ for (let index = 0; index < value.length; index += 1) {
180
+ const code = STRING_CHAR_CODE_AT(value, index);
181
+ if (code === 0x22 || code === 0x5c || code === 0x08 || code === 0x09
182
+ || code === 0x0a || code === 0x0c || code === 0x0d) {
183
+ consumeBytes(budget, 2, at);
184
+ }
185
+ else if (code < 0x20 || (code >= 0xd800 && code <= 0xdfff)) {
186
+ if (code >= 0xd800 && code <= 0xdbff && index + 1 < value.length) {
187
+ const low = STRING_CHAR_CODE_AT(value, index + 1);
188
+ if (low >= 0xdc00 && low <= 0xdfff) {
189
+ consumeBytes(budget, 4, at);
190
+ index += 1;
191
+ continue;
192
+ }
193
+ }
194
+ consumeBytes(budget, 6, at);
195
+ }
196
+ else if (code < 0x80)
197
+ consumeBytes(budget, 1, at);
198
+ else if (code < 0x800)
199
+ consumeBytes(budget, 2, at);
200
+ else
201
+ consumeBytes(budget, 3, at);
202
+ }
203
+ }
204
+ function consumeBytes(budget, bytes, at) {
205
+ budget.bytes += bytes;
206
+ if (budget.limits !== undefined && budget.bytes > budget.limits.maxBytes) {
207
+ throw nonJson(at, 'snapshot byte limit exceeded');
208
+ }
90
209
  }
91
210
  function nonJson(at, detail) {
92
- return new Error(`${at}: expected JSON-compatible data; ${detail}`);
211
+ return new ERROR(`${at}: expected JSON-compatible data; ${detail}`);
93
212
  }
94
213
  //# sourceMappingURL=json-value.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-value.js","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-value.js","sourceRoot":"","sources":["../src/json-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;AACrC,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;AACxC,MAAM,KAAK,GAAG,KAAK,CAAC;AACpB,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AACtC,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzC,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;AACrD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,MAAM,kCAAkC,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC3E,MAAM,uBAAuB,GAAG,MAAM,CAAC,cAAc,CAAC;AACtD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;AACrC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAE1D,CAAC;AACb,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,mBAAmB,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAEzE,CAAC;AACZ,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAExD,CAAC;AAChB,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAEjE,CAAC;AACb,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAE3D,CAAC;AAuBb,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,EAAU,EAAE,MAA2B;IACvF,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,QAAQ,CACf,KAAc,EACd,EAAU,EACV,SAA0B,EAC1B,MAAsB,EACtB,KAAa;IAEb,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACjD,YAAY,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,OAAO,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,CAAC,EAAE,EAAE,GAAG,OAAO,KAAK,yBAAyB,CAAC,CAAC;IAC9D,CAAC;IACD,0EAA0E;IAC1E,4EAA4E;IAC5E,4DAA4D;IAC5D,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACxE,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAChF,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,KAAK,CAAC;YAC1B,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;YACpD,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,KAAgB,EAChB,EAAU,EACV,SAA0B,EAC1B,MAAsB,EACtB,KAAa;IAEb,IAAI,uBAAuB,CAAC,KAAK,CAAC,KAAK,eAAe;WACjD,uBAAuB,CAAC,eAAe,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACnE,MAAM,OAAO,CAAC,EAAE,EAAE,sDAAsD,CAAC,CAAC;IAC5E,CAAC;IACD,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACxF,MAAM,OAAO,CAAC,EAAE,EAAE,uCAAuC,CAAC,CAAC;IAC7D,CAAC;IACD,wEAAwE;IACxE,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,+BAA+B;IAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,EAAE,EAAE,sCAAsC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,KAAK,GAAG,CAAC;YAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,kCAAkC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,6BAA6B,CAAC,CAAC;QAC9F,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7G,CAAC;IACD,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5D,OAAO,aAAa,CAAC,GAAG,CAA2B,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CACrB,KAAa,EACb,EAAU,EACV,SAA0B,EAC1B,MAAsB,EACtB,KAAa;IAEb,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,gBAAgB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC;IACtD,CAAC;IACD,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAiC,CAAC;IAChE,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,qEAAqE;IACrE,2EAA2E;IAC3E,wEAAwE;IACxE,sDAAsD;IACtD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,SAAS;QAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,kCAAkC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,OAAO,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,qEAAqE;QACrE,wEAAwE;QACxE,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,QAAQ,GAAG,CAAC;YAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAClE,QAAQ,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CACzB,UAA8B,EAC9B,EAAU,EACV,SAA0B,EAC1B,MAAsB,EACtB,KAAa;IAEb,OAAO,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,eAAe,CAAC,UAA8B,EAAE,EAAU;IACjE,IAAI,CAAC,UAAU,CAAC,UAAU;QAAE,MAAM,OAAO,CAAC,EAAE,EAAE,2CAA2C,CAAC,CAAC;IAC3F,IAAI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC;QAAE,MAAM,OAAO,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAC7E,OAAO,UAAU,CAAC,KAAK,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,MAAc;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;AAC3F,CAAC;AAED,SAAS,YAAY,CAAC,EAAU,EAAE,GAAW;IAC3C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,GAAG,EAAE,iBAAiB,CAAC;IACpD,OAAO,WAAW,CAAC,4BAA4B,EAAE,GAAG,CAAC;QACnD,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE;QAChB,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB,EAAE,EAAU,EAAE,KAAa;IACpE,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAClB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;WAC1B,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,MAAM,OAAO,CAAC,EAAE,EAAE,uCAAuC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAsB,EAAE,EAAU;IACzD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IACxC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;IACvB,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,OAAO,CAAC,EAAE,EAAE,uCAAuC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,kBAAkB,CAAC,MAAsB,EAAE,KAAa,EAAE,EAAU;IAC3E,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACxF,MAAM,OAAO,CAAC,EAAE,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;eAC/D,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACrD,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;YAC7D,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjE,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAClD,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;oBACnC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5B,KAAK,IAAI,CAAC,CAAC;oBACX,SAAS;gBACX,CAAC;YACH,CAAC;YACD,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI;YAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,IAAI,GAAG,KAAK;YAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;;YAC9C,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAsB,EAAE,KAAa,EAAE,EAAU;IACrE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACtB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzE,MAAM,OAAO,CAAC,EAAE,EAAE,8BAA8B,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EAAU,EAAE,MAAc;IACzC,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,oCAAoC,MAAM,EAAE,CAAC,CAAC;AACtE,CAAC"}
@@ -14,4 +14,13 @@ export declare class LlmWorker extends EventEmitter {
14
14
  private readonly onDispatch;
15
15
  private execute;
16
16
  }
17
+ /**
18
+ * A reply that is exactly one markdown code fence around a value, reduced to
19
+ * that value. Models add the fence despite the instruction not to; the schema
20
+ * still judges what is inside it. A fence opens with three or more backticks
21
+ * or tildes and closes with a run of the same character at least as long.
22
+ * Anything else (prose around the JSON, two fences) is returned unchanged and
23
+ * fails the parse as before.
24
+ */
25
+ export declare function unfenced(text: string): string;
17
26
  //# sourceMappingURL=llm-worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-worker.d.ts","sourceRoot":"","sources":["../src/llm-worker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUzD,gFAAgF;AAChF,qBAAa,SAAU,SAAQ,YAAY;IAMvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAGlC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAqC;IAK5D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;YAEY,OAAO;CA8CtB"}
1
+ {"version":3,"file":"llm-worker.d.ts","sourceRoot":"","sources":["../src/llm-worker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUzD,gFAAgF;AAChF,qBAAa,SAAU,SAAQ,YAAY;IAMvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAGlC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAqC;IAK5D,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;YAEY,OAAO;CA8CtB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C"}
@@ -61,7 +61,7 @@ export class LlmWorker extends EventEmitter {
61
61
  let detail = result.stderr_tail;
62
62
  if (reason === 'success' && schema !== undefined) {
63
63
  try {
64
- output = JSON.parse(result.stdout_tail);
64
+ output = JSON.parse(unfenced(result.stdout_tail));
65
65
  const invalid = jsonSchemaOutputError(schema, output);
66
66
  if (invalid !== undefined) {
67
67
  reason = 'verification_failed';
@@ -92,4 +92,18 @@ export class LlmWorker extends EventEmitter {
92
92
  });
93
93
  }
94
94
  }
95
+ /**
96
+ * A reply that is exactly one markdown code fence around a value, reduced to
97
+ * that value. Models add the fence despite the instruction not to; the schema
98
+ * still judges what is inside it. A fence opens with three or more backticks
99
+ * or tildes and closes with a run of the same character at least as long.
100
+ * Anything else (prose around the JSON, two fences) is returned unchanged and
101
+ * fails the parse as before.
102
+ */
103
+ export function unfenced(text) {
104
+ const fence = /^\s*(?:(`{3,})[^`\n]*\n([\s\S]*?)\n?\1`*|(~{3,})[^\n]*\n([\s\S]*?)\n?\3~*)\s*$/.exec(text);
105
+ if (fence === null)
106
+ return text;
107
+ return fence[2] ?? fence[4];
108
+ }
95
109
  //# sourceMappingURL=llm-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-worker.js","sourceRoot":"","sources":["../src/llm-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-worker.js","sourceRoot":"","sources":["../src/llm-worker.ts"],"names":[],"mappings":"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"}
@@ -13,15 +13,21 @@ export interface StoredPluginFile {
13
13
  readonly path: string;
14
14
  readonly data: Uint8Array;
15
15
  }
16
+ /** @internal Deterministic race seams for the bounded store reader. */
17
+ export interface StoredPluginReadTestHooks {
18
+ readonly beforeOpen?: (path: string) => Promise<void>;
19
+ readonly afterStat?: (path: string) => Promise<void>;
20
+ readonly beforeDirectoryStat?: () => Promise<void>;
21
+ }
16
22
  /** Write the files atomically; an existing directory is verified instead of overwritten. */
17
23
  export declare function materializePlugin(root: string, name: string, files: readonly StoredPluginFile[]): Promise<{
18
24
  directory: string;
19
25
  digest: string;
20
26
  }>;
21
27
  /** Re-hash a materialized plugin and compare with the digest the lockfile recorded. */
22
- export declare function verifyStoredPlugin(directory: string, expectedDigest: string): Promise<void>;
28
+ export declare function verifyStoredPlugin(directory: string, expectedDigest: string, hooks?: StoredPluginReadTestHooks): Promise<void>;
23
29
  /** Re-verify, then return every stored file including the payload `manifest.json`. */
24
- export declare function readStoredPluginFiles(directory: string, expectedDigest: string): Promise<readonly {
30
+ export declare function readStoredPluginFiles(directory: string, expectedDigest: string, hooks?: StoredPluginReadTestHooks): Promise<readonly {
25
31
  path: string;
26
32
  data: Buffer;
27
33
  }[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-store.d.ts","sourceRoot":"","sources":["../src/plugin-store.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAE7C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE;AAEtF,4FAA4F;AAC5F,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBtJ;AAWD,uFAAuF;AACvF,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBjG;AAED,sFAAsF;AACtF,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAOzI;AAED,gEAAgE;AAChE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE"}
1
+ {"version":3,"file":"plugin-store.d.ts","sourceRoot":"","sources":["../src/plugin-store.ts"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,mBAAmB,CAAC;AA4C7C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,uEAAuE;AACvE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAMD,4FAA4F;AAC5F,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACjC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA0ChD;AAuFD,uFAAuF;AACvF,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,yBAAqD,GAC3D,OAAO,CAAC,IAAI,CAAC,CAEf;AA+ED,sFAAsF;AACtF,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,KAAK,GAAE,yBAAqD,GAC3D,OAAO,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAEpD;AAYD,gEAAgE;AAChE,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE"}