@sponsio/sdk 0.1.0 → 0.2.0-alpha.8

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 (123) hide show
  1. package/contracts/benchmark/agentdojo.yaml +551 -0
  2. package/contracts/benchmark/odcv_bench.yaml +393 -0
  3. package/contracts/benchmark/redcode_exec.yaml +488 -0
  4. package/contracts/benchmark/swebench.yaml +176 -0
  5. package/contracts/benchmark/tau2_bench.yaml +984 -0
  6. package/contracts/capability/destructive.yaml +213 -0
  7. package/contracts/capability/factual-claims.yaml +79 -0
  8. package/contracts/capability/host-config-integrity.yaml +42 -9
  9. package/contracts/capability/self-modify.yaml +32 -1
  10. package/contracts/capability/shell.yaml +19 -10
  11. package/contracts/incident/claude-code-secret-bypass.yaml +48 -16
  12. package/contracts/incident/cursor-railway-wipe.yaml +60 -4
  13. package/contracts/incident/openclaw.yaml +9 -62
  14. package/contracts/premium/.gitkeep +5 -6
  15. package/dist/cli/cli.js +32 -0
  16. package/dist/cli/cli.js.map +1 -1
  17. package/dist/cli/packs.d.ts.map +1 -1
  18. package/dist/cli/packs.js +14 -8
  19. package/dist/cli/packs.js.map +1 -1
  20. package/dist/cli/patterns.d.ts +5 -4
  21. package/dist/cli/patterns.d.ts.map +1 -1
  22. package/dist/cli/patterns.js +11 -10
  23. package/dist/cli/patterns.js.map +1 -1
  24. package/dist/cli/prompt.js +5 -5
  25. package/dist/cli/prompt.js.map +1 -1
  26. package/dist/cli/scan.js +2 -2
  27. package/dist/cli/skill.d.ts +1 -1
  28. package/dist/cli/skill.js +1 -1
  29. package/dist/cli/validate.js +5 -5
  30. package/dist/cli/validate.js.map +1 -1
  31. package/dist/cloud/client.d.ts +76 -0
  32. package/dist/cloud/client.d.ts.map +1 -0
  33. package/dist/cloud/client.js +198 -0
  34. package/dist/cloud/client.js.map +1 -0
  35. package/dist/cloud/evidence.d.ts +108 -0
  36. package/dist/cloud/evidence.d.ts.map +1 -0
  37. package/dist/cloud/evidence.js +184 -0
  38. package/dist/cloud/evidence.js.map +1 -0
  39. package/dist/cloud/privacy.d.ts +67 -0
  40. package/dist/cloud/privacy.d.ts.map +1 -0
  41. package/dist/cloud/privacy.js +170 -0
  42. package/dist/cloud/privacy.js.map +1 -0
  43. package/dist/cloud/view-model.d.ts +49 -0
  44. package/dist/cloud/view-model.d.ts.map +1 -0
  45. package/dist/cloud/view-model.js +172 -0
  46. package/dist/cloud/view-model.js.map +1 -0
  47. package/dist/core/config-loader.d.ts.map +1 -1
  48. package/dist/core/config-loader.js +81 -9
  49. package/dist/core/config-loader.js.map +1 -1
  50. package/dist/core/evaluator.d.ts +11 -1
  51. package/dist/core/evaluator.d.ts.map +1 -1
  52. package/dist/core/evaluator.js +275 -13
  53. package/dist/core/evaluator.js.map +1 -1
  54. package/dist/core/formula.d.ts +76 -17
  55. package/dist/core/formula.d.ts.map +1 -1
  56. package/dist/core/formula.js +83 -1
  57. package/dist/core/formula.js.map +1 -1
  58. package/dist/core/grounding.d.ts +44 -8
  59. package/dist/core/grounding.d.ts.map +1 -1
  60. package/dist/core/grounding.js +197 -26
  61. package/dist/core/grounding.js.map +1 -1
  62. package/dist/core/nl-parser.d.ts +2 -2
  63. package/dist/core/nl-parser.d.ts.map +1 -1
  64. package/dist/core/nl-parser.js +617 -41
  65. package/dist/core/nl-parser.js.map +1 -1
  66. package/dist/core/pack-loader.d.ts.map +1 -1
  67. package/dist/core/pack-loader.js +14 -2
  68. package/dist/core/pack-loader.js.map +1 -1
  69. package/dist/core/parser.d.ts.map +1 -1
  70. package/dist/core/parser.js +30 -1
  71. package/dist/core/parser.js.map +1 -1
  72. package/dist/core/pattern-factory.d.ts.map +1 -1
  73. package/dist/core/pattern-factory.js +14 -1
  74. package/dist/core/pattern-factory.js.map +1 -1
  75. package/dist/core/patterns.d.ts +118 -1
  76. package/dist/core/patterns.d.ts.map +1 -1
  77. package/dist/core/patterns.js +189 -10
  78. package/dist/core/patterns.js.map +1 -1
  79. package/dist/core/session-log.d.ts.map +1 -1
  80. package/dist/core/session-log.js +20 -1
  81. package/dist/core/session-log.js.map +1 -1
  82. package/dist/core/sto.d.ts +21 -27
  83. package/dist/core/sto.d.ts.map +1 -1
  84. package/dist/core/sto.js +30 -33
  85. package/dist/core/sto.js.map +1 -1
  86. package/dist/core/tool-names.d.ts +59 -0
  87. package/dist/core/tool-names.d.ts.map +1 -0
  88. package/dist/core/tool-names.js +128 -0
  89. package/dist/core/tool-names.js.map +1 -0
  90. package/dist/index.d.ts +181 -32
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +415 -67
  93. package/dist/index.js.map +1 -1
  94. package/dist/integrations/claude-agent.d.ts +5 -0
  95. package/dist/integrations/claude-agent.d.ts.map +1 -1
  96. package/dist/integrations/claude-agent.js +42 -13
  97. package/dist/integrations/claude-agent.js.map +1 -1
  98. package/dist/integrations/google-adk.d.ts +5 -3
  99. package/dist/integrations/google-adk.d.ts.map +1 -1
  100. package/dist/integrations/google-adk.js +9 -5
  101. package/dist/integrations/google-adk.js.map +1 -1
  102. package/dist/integrations/langchain.d.ts +7 -0
  103. package/dist/integrations/langchain.d.ts.map +1 -1
  104. package/dist/integrations/langchain.js +21 -3
  105. package/dist/integrations/langchain.js.map +1 -1
  106. package/dist/integrations/openai-agents.d.ts +22 -10
  107. package/dist/integrations/openai-agents.d.ts.map +1 -1
  108. package/dist/integrations/openai-agents.js +55 -15
  109. package/dist/integrations/openai-agents.js.map +1 -1
  110. package/dist/integrations/openai.d.ts +11 -0
  111. package/dist/integrations/openai.d.ts.map +1 -1
  112. package/dist/integrations/openai.js +130 -48
  113. package/dist/integrations/openai.js.map +1 -1
  114. package/dist/integrations/vercel-ai.d.ts +20 -9
  115. package/dist/integrations/vercel-ai.d.ts.map +1 -1
  116. package/dist/integrations/vercel-ai.js +131 -32
  117. package/dist/integrations/vercel-ai.js.map +1 -1
  118. package/package.json +17 -9
  119. package/prompts/onboard.md +26 -17
  120. package/prompts/scan.md +3 -5
  121. package/skills/SKILL.md +13 -83
  122. package/contracts/core/llm_safety.yaml +0 -140
  123. package/prompts/refresh.md +0 -118
@@ -10,6 +10,16 @@
10
10
  * X(φ) → true (weak next)
11
11
  */
12
12
  import { Formula } from "./formula.js";
13
- export type Valuation = Record<string, boolean | number>;
13
+ /**
14
+ * State valuation at a single timestep.
15
+ *
16
+ * Atoms emit boolean values. Counter-style Vars emit numbers.
17
+ * arg_value / ctx_value (used by ArgValue / CtxValue Terms) emit any
18
+ * raw value pushed by grounding; can be string, number, object, etc.
19
+ * Missing keys evaluate to ``undefined``.
20
+ */
21
+ export type Valuation = Record<string, boolean | number | string | unknown>;
22
+ /** Numeric value of a numeric-looking string, else null. */
23
+ export declare function numericString(v: unknown): number | null;
14
24
  export declare function evaluate(formula: Formula, trace: Valuation[], pos?: number): boolean;
15
25
  //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/core/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,OAAO,EAIR,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AAUzD,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAAE,EAClB,GAAG,GAAE,MAAU,GACd,OAAO,CA6ET"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/core/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,OAAO,EAIR,MAAM,cAAc,CAAC;AAGtB;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AA0J5E,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAYvD;AA8FD,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAAE,EAClB,GAAG,GAAE,MAAU,GACd,OAAO,CAqFT"}
@@ -9,14 +9,269 @@
9
9
  * U → false (ψ never discharged)
10
10
  * X(φ) → true (weak next)
11
11
  */
12
+ import { predKey } from "./formula.js";
13
+ /**
14
+ * Resolve a Term to its underlying value at the current state.
15
+ *
16
+ * Var / Const: counter-style semantics (numeric value; 0 for missing).
17
+ * ArgValue / CtxValue: raw value from grounding (may be any type, or
18
+ * undefined when missing).
19
+ * UnaryFn / ArgLength: derived value (undefined when inner is missing
20
+ * or when the callable throws / .length is unsupported).
21
+ */
12
22
  function resolveArith(expr, state) {
13
- if (expr.kind === "Const")
14
- return expr.value;
15
- const key = expr.key();
16
- const val = state[key];
17
- if (typeof val === "number")
18
- return val;
19
- return 0; // default for missing variables
23
+ switch (expr.kind) {
24
+ case "Const":
25
+ return expr.value;
26
+ case "Var": {
27
+ const key = expr.key();
28
+ const val = state[key];
29
+ if (typeof val === "number")
30
+ return val;
31
+ return 0; // counter-style default for missing
32
+ }
33
+ case "ArgValue":
34
+ return state[predKey("arg_value", expr.tool, expr.field)];
35
+ case "CtxValue":
36
+ return state[predKey("ctx_value", expr.key)];
37
+ case "ArgLength": {
38
+ const v = state[predKey("arg_value", expr.tool, expr.field)];
39
+ if (v == null)
40
+ return undefined;
41
+ try {
42
+ if (typeof v.length === "number") {
43
+ return v.length;
44
+ }
45
+ if (typeof v === "string")
46
+ return v.length;
47
+ return undefined;
48
+ }
49
+ catch {
50
+ return undefined;
51
+ }
52
+ }
53
+ case "UnaryFn": {
54
+ const inner = resolveArith(expr.arg, state);
55
+ if (inner === undefined || inner === null)
56
+ return undefined;
57
+ try {
58
+ return expr.fn(inner);
59
+ }
60
+ catch {
61
+ return undefined;
62
+ }
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Structural value-equality, matching Python's `==` for the value
68
+ * shapes that flow through grounding (numbers, strings, booleans,
69
+ * arrays, plain objects).
70
+ *
71
+ * The naive `l === r` diverged from the Python evaluator (`left ==
72
+ * right`) for composite values: an `Eq(ArgValue(...), CtxValue(...))`
73
+ * over list- or object-valued args compares by *value* in Python
74
+ * (`[1] == [1]` is True) but `===` compares arrays/objects by
75
+ * *reference* in JS (`[1] === [1]` is False). With the v0.2 Term
76
+ * abstraction making value-equality reachable, that gap could pass a
77
+ * contract in Python and fail it in TS on the same trace. `valuesEqual`
78
+ * closes it with element-/key-wise deep comparison.
79
+ */
80
+ function valuesEqual(a, b) {
81
+ if (a === b)
82
+ return true;
83
+ if (a === null || b === null || a === undefined || b === undefined) {
84
+ return false;
85
+ }
86
+ if (Array.isArray(a) || Array.isArray(b)) {
87
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {
88
+ return false;
89
+ }
90
+ return a.every((x, i) => valuesEqual(x, b[i]));
91
+ }
92
+ if (typeof a === "object" && typeof b === "object") {
93
+ const ka = Object.keys(a);
94
+ const kb = Object.keys(b);
95
+ if (ka.length !== kb.length)
96
+ return false;
97
+ return ka.every((k) => Object.prototype.hasOwnProperty.call(b, k) &&
98
+ valuesEqual(a[k], b[k]));
99
+ }
100
+ return false;
101
+ }
102
+ // Plain decimal / float / scientific literal, byte-identical to the Python
103
+ // side (sponsio/formulas/_compare.py). Excludes inf/nan/hex/empty so
104
+ // Number() and Python float() agree exactly on every accepted string.
105
+ const ORDERED_NUMERIC_RE = /^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;
106
+ // Unambiguous thousands grouping: 5,000 / 1,234,567 / 1,234,567.89.
107
+ const GROUPED_RE = /^[+-]?\d{1,3}(,\d{3})+(\.\d+)?$/;
108
+ // Unambiguous European grouping: a decimal comma after dot groups
109
+ // (5.000,00 / 1.234.567,89) or two or more dot groups (1.000.000). One dot
110
+ // group alone (5.000) is a plain float on its own.
111
+ const EU_GROUPED_RE = /^[+-]?\d{1,3}(\.\d{3})+,\d+$|^[+-]?\d{1,3}(\.\d{3}){2,}$/;
112
+ // One dot group behind a currency symbol or unit (€5.000 / 5.000 EUR): five
113
+ // thousand in Berlin, five with three decimals in Boston. Guessing either way
114
+ // changes the magnitude a thousandfold, so it is left unparsed and the
115
+ // numeric guard refuses it. Leading digit non-zero: nobody writes 0.500 for
116
+ // five hundred.
117
+ const EU_AMBIGUOUS_RE = /^[+-]?[1-9]\d{0,2}\.\d{3}$/;
118
+ // A leading currency symbol, optionally after the sign.
119
+ const CURRENCY_PREFIX_RE = /^([+-]?)\s*[$€£¥₹]\s*/;
120
+ // A trailing currency code or unit: "5000 USD", "5000USD", "12 %".
121
+ // No `\s*` adjacent to the anchor: `/\s*X\s*$/` is the polynomial-ReDoS
122
+ // shape CodeQL flags (a long run of spaces retries at every position).
123
+ // Whitespace is trimmed separately, and the lookbehind keeps the unit from
124
+ // eating the tail of a longer word.
125
+ const UNIT_SUFFIX_RE = /(?<![A-Za-z])(?:[A-Za-z]{2,4}|%)$/;
126
+ /**
127
+ * Strip the formatting a model wraps around a number. Mirrors
128
+ * ``_normalise`` in sponsio/formulas/_compare.py: a model writing a
129
+ * currency amount emits "$5,000" or "5000 USD" as readily as "5000", and
130
+ * treating those as "not a number" let them pass a cap that stopped the
131
+ * plain form. Commas are removed only in unambiguous thousands grouping,
132
+ * never from "5,50", where the comma may be a decimal separator. European
133
+ * grouping is read when unambiguous ("5.000,00", "1.000.000"); "€5.000" is
134
+ * returned unparsed so the guard refuses it, and a bare "5.000" stays 5.
135
+ */
136
+ function normaliseNumeric(v) {
137
+ const original = v.trim();
138
+ let s = original.replace(CURRENCY_PREFIX_RE, "$1");
139
+ const currency = s !== original;
140
+ const strippedUnit = s.replace(UNIT_SUFFIX_RE, "").trimEnd();
141
+ // Only drop the suffix if a number is left; "USD" alone must stay
142
+ // unparsed, and the exponent in "1e5" must not be read as a unit.
143
+ let unit = false;
144
+ if (strippedUnit && strippedUnit !== s) {
145
+ const bare = strippedUnit.replace(/ /g, "");
146
+ if (GROUPED_RE.test(bare) ||
147
+ ORDERED_NUMERIC_RE.test(strippedUnit) ||
148
+ EU_GROUPED_RE.test(bare) ||
149
+ EU_AMBIGUOUS_RE.test(bare)) {
150
+ s = strippedUnit;
151
+ unit = true;
152
+ }
153
+ }
154
+ s = s.trim();
155
+ if (EU_GROUPED_RE.test(s))
156
+ return s.replace(/\./g, "").replace(",", ".");
157
+ if ((currency || unit) && EU_AMBIGUOUS_RE.test(s))
158
+ return original;
159
+ if (GROUPED_RE.test(s))
160
+ s = s.replace(/,/g, "");
161
+ return s;
162
+ }
163
+ /** Numeric value of a numeric-looking string, else null. */
164
+ export function numericString(v) {
165
+ if (typeof v === "string") {
166
+ const s = normaliseNumeric(v);
167
+ if (ORDERED_NUMERIC_RE.test(s)) {
168
+ const n = Number(s);
169
+ // Overflow to Infinity is kept, matching Python's float(): the value
170
+ // really is larger than the runtime can hold, so a cap should fire
171
+ // rather than be skipped on one runtime and not the other.
172
+ if (!Number.isNaN(n))
173
+ return n;
174
+ }
175
+ }
176
+ return null;
177
+ }
178
+ // Values already reported, so a loop over the same bad argument warns once.
179
+ const WARNED_INCOMPARABLE = new Set();
180
+ /**
181
+ * Say so when a numeric guard meets a value it cannot read as a number.
182
+ *
183
+ * The comparison still falls through to False (the Hoare-vacuity
184
+ * convention), which for a ``G(!(amount > cap))`` guard means the call is
185
+ * NOT constrained. That is a contract not protecting what its author
186
+ * believes it protects, so it is reported once per value. Mirrors
187
+ * ``_warn_incomparable`` in sponsio/formulas/_compare.py.
188
+ */
189
+ function warnIncomparable(value) {
190
+ const key = value.slice(0, 120);
191
+ if (WARNED_INCOMPARABLE.has(key))
192
+ return;
193
+ WARNED_INCOMPARABLE.add(key);
194
+ console.warn(`[sponsio] numeric guard received a non-numeric value ` +
195
+ `${JSON.stringify(value.slice(0, 60))}; the comparison cannot be ` +
196
+ `evaluated and the guard does NOT constrain this call. Normalise the ` +
197
+ `argument, or express the rule with \`arg_blacklist\` / ` +
198
+ `\`arg_field_has\` so it matches on text.`);
199
+ }
200
+ /**
201
+ * Whether two operands are order-comparable the way Python is: two numbers,
202
+ * two strings, or bool/number mixes (Python treats bool as int). Anything
203
+ * else raises TypeError in Python, so we must return False rather than let
204
+ * JavaScript silently coerce.
205
+ */
206
+ function orderComparable(l, r) {
207
+ const tl = typeof l;
208
+ const tr = typeof r;
209
+ if (tl === "number" && tr === "number")
210
+ return true;
211
+ if (tl === "string" && tr === "string")
212
+ return true;
213
+ if ((tl === "boolean" || tl === "number") && (tr === "boolean" || tr === "number")) {
214
+ return true;
215
+ }
216
+ return false;
217
+ }
218
+ /**
219
+ * Compare two resolved values with the canonical "missing" semantics.
220
+ *
221
+ * If either operand is undefined / null, the comparison is False (the
222
+ * comparison cannot decide). Same for type errors (mismatched types).
223
+ * This is the Hoare-vacuity convention. `eq` uses `valuesEqual` for
224
+ * Python `==` parity on composite values.
225
+ *
226
+ * Ordered comparisons coerce a plain-numeric string operand (e.g. a raw
227
+ * `"5000"` tool argument) to a number when the other operand is numeric, so
228
+ * a numeric guard compares numerically and fails closed — identically to the
229
+ * Python runtime. Non-coercible mismatched operands return False (mirroring
230
+ * Python's TypeError) instead of using JavaScript's implicit coercion.
231
+ * See issue #108.
232
+ */
233
+ function safeCompare(op, left, right) {
234
+ if (left === undefined || left === null)
235
+ return false;
236
+ if (right === undefined || right === null)
237
+ return false;
238
+ let l = left;
239
+ let r = right;
240
+ if (op !== "eq") {
241
+ if (typeof l === "number" && typeof r === "string") {
242
+ const n = numericString(r);
243
+ if (n !== null)
244
+ r = n;
245
+ else
246
+ warnIncomparable(r);
247
+ }
248
+ else if (typeof r === "number" && typeof l === "string") {
249
+ const n = numericString(l);
250
+ if (n !== null)
251
+ l = n;
252
+ else
253
+ warnIncomparable(l);
254
+ }
255
+ if (!orderComparable(l, r))
256
+ return false;
257
+ }
258
+ try {
259
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
+ const la = l;
261
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
262
+ const ra = r;
263
+ switch (op) {
264
+ case "le": return la <= ra;
265
+ case "lt": return la < ra;
266
+ case "ge": return la >= ra;
267
+ case "gt": return la > ra;
268
+ case "eq": return valuesEqual(la, ra);
269
+ }
270
+ }
271
+ catch {
272
+ return false;
273
+ }
274
+ return false;
20
275
  }
21
276
  export function evaluate(formula, trace, pos = 0) {
22
277
  // Past end of trace — weak semantics
@@ -63,21 +318,28 @@ export function evaluate(formula, trace, pos = 0) {
63
318
  return false;
64
319
  }
65
320
  return false; // ψ never became true
66
- // --- Arithmetic ---
321
+ // --- Arithmetic / Term comparisons ---
67
322
  case "Le":
68
- return resolveArith(formula.left, state) <= resolveArith(formula.right, state);
323
+ return safeCompare("le", resolveArith(formula.left, state), resolveArith(formula.right, state));
69
324
  case "Lt":
70
- return resolveArith(formula.left, state) < resolveArith(formula.right, state);
325
+ return safeCompare("lt", resolveArith(formula.left, state), resolveArith(formula.right, state));
71
326
  case "Ge":
72
- return resolveArith(formula.left, state) >= resolveArith(formula.right, state);
327
+ return safeCompare("ge", resolveArith(formula.left, state), resolveArith(formula.right, state));
73
328
  case "Gt":
74
- return resolveArith(formula.left, state) > resolveArith(formula.right, state);
329
+ return safeCompare("gt", resolveArith(formula.left, state), resolveArith(formula.right, state));
75
330
  case "Eq":
76
- return resolveArith(formula.left, state) === resolveArith(formula.right, state);
331
+ return safeCompare("eq", resolveArith(formula.left, state), resolveArith(formula.right, state));
77
332
  case "Var":
78
333
  return Boolean(state[formula.key()] ?? false);
79
334
  case "Const":
80
335
  return formula.value !== 0;
336
+ // Terms cannot appear at formula-level (only as comparison operands)
337
+ // but the Formula type union includes them. Treat as truthy fallback.
338
+ case "ArgValue":
339
+ case "CtxValue":
340
+ case "ArgLength":
341
+ case "UnaryFn":
342
+ return false;
81
343
  default: {
82
344
  const _exhaustive = formula;
83
345
  throw new Error(`Unknown formula kind: ${_exhaustive.kind}`);
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/core/evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/core/evaluator.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Direct port of sponsio/formulas/formula.py.
5
5
  * Three families: Propositional, Temporal (LTL), Arithmetic.
6
6
  */
7
- export type Formula = Atom | Not | And | Or | Implies | G | F | X | U | Le | Lt | Ge | Gt | Eq | Var | Const;
7
+ export type Formula = Atom | Not | And | Or | Implies | G | F | X | U | Le | Lt | Ge | Gt | Eq | Var | Const | ArgValue | CtxValue | UnaryFn | ArgLength;
8
8
  export declare class Atom {
9
9
  readonly predicate: string;
10
10
  readonly args: readonly string[];
@@ -68,36 +68,95 @@ export declare class Const {
68
68
  readonly kind: "Const";
69
69
  constructor(value: number);
70
70
  }
71
- export type ArithExpr = Var | Const;
71
+ /**
72
+ * Read ``args[field]`` from the current event when it is a call to ``tool``.
73
+ *
74
+ * Returns ``undefined`` ("missing" signal) when the current event is a
75
+ * call to a different tool, or not a tool call, or args[field] absent.
76
+ * Pair with ``Implies(called(tool), ...)`` to scope the rule cleanly.
77
+ */
78
+ export declare class ArgValue {
79
+ readonly tool: string;
80
+ readonly field: string;
81
+ readonly kind: "ArgValue";
82
+ constructor(tool: string, field: string);
83
+ }
84
+ /**
85
+ * Read a fact pushed via ``guard.observeContext({ key: value })``.
86
+ *
87
+ * Returns ``undefined`` when the key has never been pushed for this trace.
88
+ */
89
+ export declare class CtxValue {
90
+ readonly key: string;
91
+ readonly kind: "CtxValue";
92
+ constructor(key: string);
93
+ }
94
+ /**
95
+ * Apply a JavaScript callable to another Term's value.
96
+ *
97
+ * Common cases:
98
+ * new UnaryFn(s => String(s).toLowerCase(),
99
+ * new ArgValue("send_email", "subject"))
100
+ *
101
+ * If the inner Term resolves to undefined, UnaryFn also returns undefined.
102
+ * If the callable throws, UnaryFn returns undefined rather than crashing.
103
+ *
104
+ * The ``name`` field is for debug repr only.
105
+ */
106
+ export declare class UnaryFn {
107
+ readonly fn: (v: unknown) => unknown;
108
+ readonly arg: Term;
109
+ readonly name: string;
110
+ readonly kind: "UnaryFn";
111
+ constructor(fn: (v: unknown) => unknown, arg: Term, name?: string);
112
+ }
113
+ /**
114
+ * Convenience: ``args[field].length`` for the current event.
115
+ *
116
+ * Equivalent to ``new UnaryFn(v => (v as { length: number }).length,
117
+ * new ArgValue(tool, field))`` but exposed as its own class for clean
118
+ * repr and faster eval. Returns ``undefined`` when missing or not a
119
+ * .length-bearing value.
120
+ */
121
+ export declare class ArgLength {
122
+ readonly tool: string;
123
+ readonly field: string;
124
+ readonly kind: "ArgLength";
125
+ constructor(tool: string, field: string);
126
+ }
127
+ /** A Term is anything that resolves to a value at evaluation time. */
128
+ export type Term = Var | Const | ArgValue | CtxValue | UnaryFn | ArgLength;
129
+ /** Backward-compatible alias. */
130
+ export type ArithExpr = Term;
72
131
  export declare class Le {
73
- readonly left: ArithExpr;
74
- readonly right: ArithExpr;
132
+ readonly left: Term;
133
+ readonly right: Term;
75
134
  readonly kind: "Le";
76
- constructor(left: ArithExpr, right: ArithExpr);
135
+ constructor(left: Term, right: Term);
77
136
  }
78
137
  export declare class Lt {
79
- readonly left: ArithExpr;
80
- readonly right: ArithExpr;
138
+ readonly left: Term;
139
+ readonly right: Term;
81
140
  readonly kind: "Lt";
82
- constructor(left: ArithExpr, right: ArithExpr);
141
+ constructor(left: Term, right: Term);
83
142
  }
84
143
  export declare class Ge {
85
- readonly left: ArithExpr;
86
- readonly right: ArithExpr;
144
+ readonly left: Term;
145
+ readonly right: Term;
87
146
  readonly kind: "Ge";
88
- constructor(left: ArithExpr, right: ArithExpr);
147
+ constructor(left: Term, right: Term);
89
148
  }
90
149
  export declare class Gt {
91
- readonly left: ArithExpr;
92
- readonly right: ArithExpr;
150
+ readonly left: Term;
151
+ readonly right: Term;
93
152
  readonly kind: "Gt";
94
- constructor(left: ArithExpr, right: ArithExpr);
153
+ constructor(left: Term, right: Term);
95
154
  }
96
155
  export declare class Eq {
97
- readonly left: ArithExpr;
98
- readonly right: ArithExpr;
156
+ readonly left: Term;
157
+ readonly right: Term;
99
158
  readonly kind: "Eq";
100
- constructor(left: ArithExpr, right: ArithExpr);
159
+ constructor(left: Term, right: Term);
101
160
  }
102
161
  export declare function predKey(predicate: string, ...args: string[]): string;
103
162
  //# sourceMappingURL=formula.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../src/core/formula.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../src/core/formula.ts"],"names":[],"mappings":"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"}
@@ -82,7 +82,21 @@ export class U {
82
82
  this.right = right;
83
83
  }
84
84
  }
85
- // --- Arithmetic ---
85
+ // --- Arithmetic / Term abstraction ---
86
+ //
87
+ // Comparison nodes (Eq, Le, Lt, Ge, Gt) accept any ``Term`` on either
88
+ // side. A Term is anything that knows how to evaluate(state) -> value;
89
+ // the evaluator dispatches on `kind`. This lets contract authors
90
+ // compose runtime-bound values (``new ArgValue("issue_refund",
91
+ // "amount")``) against constants (``new Const(50)``) or against other
92
+ // runtime values (``new CtxValue("approved_amount")``) in the same
93
+ // comparison.
94
+ //
95
+ // Returning ``undefined`` from evaluation is the canonical "missing"
96
+ // signal: comparison evaluation treats either operand being missing as
97
+ // false (the comparison cannot decide). Wrap fragile comparisons in
98
+ // ``Implies(scopePredicate, comparison)`` to suppress them where the
99
+ // relevant arg is not applicable.
86
100
  export class Var {
87
101
  name;
88
102
  kind = "Var";
@@ -105,6 +119,74 @@ export class Const {
105
119
  this.value = value;
106
120
  }
107
121
  }
122
+ /**
123
+ * Read ``args[field]`` from the current event when it is a call to ``tool``.
124
+ *
125
+ * Returns ``undefined`` ("missing" signal) when the current event is a
126
+ * call to a different tool, or not a tool call, or args[field] absent.
127
+ * Pair with ``Implies(called(tool), ...)`` to scope the rule cleanly.
128
+ */
129
+ export class ArgValue {
130
+ tool;
131
+ field;
132
+ kind = "ArgValue";
133
+ constructor(tool, field) {
134
+ this.tool = tool;
135
+ this.field = field;
136
+ }
137
+ }
138
+ /**
139
+ * Read a fact pushed via ``guard.observeContext({ key: value })``.
140
+ *
141
+ * Returns ``undefined`` when the key has never been pushed for this trace.
142
+ */
143
+ export class CtxValue {
144
+ key;
145
+ kind = "CtxValue";
146
+ constructor(key) {
147
+ this.key = key;
148
+ }
149
+ }
150
+ /**
151
+ * Apply a JavaScript callable to another Term's value.
152
+ *
153
+ * Common cases:
154
+ * new UnaryFn(s => String(s).toLowerCase(),
155
+ * new ArgValue("send_email", "subject"))
156
+ *
157
+ * If the inner Term resolves to undefined, UnaryFn also returns undefined.
158
+ * If the callable throws, UnaryFn returns undefined rather than crashing.
159
+ *
160
+ * The ``name`` field is for debug repr only.
161
+ */
162
+ export class UnaryFn {
163
+ fn;
164
+ arg;
165
+ name;
166
+ kind = "UnaryFn";
167
+ constructor(fn, arg, name = "fn") {
168
+ this.fn = fn;
169
+ this.arg = arg;
170
+ this.name = name;
171
+ }
172
+ }
173
+ /**
174
+ * Convenience: ``args[field].length`` for the current event.
175
+ *
176
+ * Equivalent to ``new UnaryFn(v => (v as { length: number }).length,
177
+ * new ArgValue(tool, field))`` but exposed as its own class for clean
178
+ * repr and faster eval. Returns ``undefined`` when missing or not a
179
+ * .length-bearing value.
180
+ */
181
+ export class ArgLength {
182
+ tool;
183
+ field;
184
+ kind = "ArgLength";
185
+ constructor(tool, field) {
186
+ this.tool = tool;
187
+ this.field = field;
188
+ }
189
+ }
108
190
  export class Le {
109
191
  left;
110
192
  right;
@@ -1 +1 @@
1
- {"version":3,"file":"formula.js","sourceRoot":"","sources":["../../src/core/formula.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula.js","sourceRoot":"","sources":["../../src/core/formula.ts"],"names":[],"mappings":"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"}