@sponsio/sdk 0.1.0-alpha.3

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 (113) hide show
  1. package/contracts/capability/credentials.yaml +188 -0
  2. package/contracts/capability/database.yaml +141 -0
  3. package/contracts/capability/filesystem-strict.yaml +101 -0
  4. package/contracts/capability/filesystem.yaml +239 -0
  5. package/contracts/capability/self-modify.yaml +152 -0
  6. package/contracts/capability/shell.yaml +246 -0
  7. package/contracts/capability/subagent.yaml +184 -0
  8. package/contracts/core/llm_safety.yaml +130 -0
  9. package/contracts/core/runaway.yaml +43 -0
  10. package/contracts/core/universal.yaml +34 -0
  11. package/contracts/incident/claude-code-secret-bypass.yaml +197 -0
  12. package/contracts/incident/cursor-railway-wipe.yaml +164 -0
  13. package/contracts/incident/mcp-composition.yaml +418 -0
  14. package/contracts/incident/openclaw.yaml +500 -0
  15. package/contracts/incident/subagent-escape.yaml +177 -0
  16. package/contracts/premium/.gitkeep +7 -0
  17. package/dist/contract.d.ts +59 -0
  18. package/dist/contract.d.ts.map +1 -0
  19. package/dist/contract.js +97 -0
  20. package/dist/contract.js.map +1 -0
  21. package/dist/core/config-loader.d.ts +90 -0
  22. package/dist/core/config-loader.d.ts.map +1 -0
  23. package/dist/core/config-loader.js +530 -0
  24. package/dist/core/config-loader.js.map +1 -0
  25. package/dist/core/evaluator.d.ts +15 -0
  26. package/dist/core/evaluator.d.ts.map +1 -0
  27. package/dist/core/evaluator.js +87 -0
  28. package/dist/core/evaluator.js.map +1 -0
  29. package/dist/core/formula.d.ts +103 -0
  30. package/dist/core/formula.d.ts.map +1 -0
  31. package/dist/core/formula.js +167 -0
  32. package/dist/core/formula.js.map +1 -0
  33. package/dist/core/grounding.d.ts +43 -0
  34. package/dist/core/grounding.d.ts.map +1 -0
  35. package/dist/core/grounding.js +269 -0
  36. package/dist/core/grounding.js.map +1 -0
  37. package/dist/core/nl-parser.d.ts +12 -0
  38. package/dist/core/nl-parser.d.ts.map +1 -0
  39. package/dist/core/nl-parser.js +152 -0
  40. package/dist/core/nl-parser.js.map +1 -0
  41. package/dist/core/pack-loader.d.ts +15 -0
  42. package/dist/core/pack-loader.d.ts.map +1 -0
  43. package/dist/core/pack-loader.js +220 -0
  44. package/dist/core/pack-loader.js.map +1 -0
  45. package/dist/core/parser.d.ts +19 -0
  46. package/dist/core/parser.d.ts.map +1 -0
  47. package/dist/core/parser.js +235 -0
  48. package/dist/core/parser.js.map +1 -0
  49. package/dist/core/pattern-factory.d.ts +38 -0
  50. package/dist/core/pattern-factory.d.ts.map +1 -0
  51. package/dist/core/pattern-factory.js +222 -0
  52. package/dist/core/pattern-factory.js.map +1 -0
  53. package/dist/core/patterns.d.ts +67 -0
  54. package/dist/core/patterns.d.ts.map +1 -0
  55. package/dist/core/patterns.js +585 -0
  56. package/dist/core/patterns.js.map +1 -0
  57. package/dist/core/session-log.d.ts +91 -0
  58. package/dist/core/session-log.d.ts.map +1 -0
  59. package/dist/core/session-log.js +196 -0
  60. package/dist/core/session-log.js.map +1 -0
  61. package/dist/core/spans.d.ts +92 -0
  62. package/dist/core/spans.d.ts.map +1 -0
  63. package/dist/core/spans.js +148 -0
  64. package/dist/core/spans.js.map +1 -0
  65. package/dist/core/sto.d.ts +120 -0
  66. package/dist/core/sto.d.ts.map +1 -0
  67. package/dist/core/sto.js +147 -0
  68. package/dist/core/sto.js.map +1 -0
  69. package/dist/index.d.ts +267 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +540 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/integrations/claude-agent.d.ts +29 -0
  74. package/dist/integrations/claude-agent.d.ts.map +1 -0
  75. package/dist/integrations/claude-agent.js +40 -0
  76. package/dist/integrations/claude-agent.js.map +1 -0
  77. package/dist/integrations/google-adk.d.ts +27 -0
  78. package/dist/integrations/google-adk.d.ts.map +1 -0
  79. package/dist/integrations/google-adk.js +81 -0
  80. package/dist/integrations/google-adk.js.map +1 -0
  81. package/dist/integrations/langchain.d.ts +26 -0
  82. package/dist/integrations/langchain.d.ts.map +1 -0
  83. package/dist/integrations/langchain.js +74 -0
  84. package/dist/integrations/langchain.js.map +1 -0
  85. package/dist/integrations/openai-agents.d.ts +45 -0
  86. package/dist/integrations/openai-agents.d.ts.map +1 -0
  87. package/dist/integrations/openai-agents.js +81 -0
  88. package/dist/integrations/openai-agents.js.map +1 -0
  89. package/dist/integrations/openai.d.ts +24 -0
  90. package/dist/integrations/openai.d.ts.map +1 -0
  91. package/dist/integrations/openai.js +77 -0
  92. package/dist/integrations/openai.js.map +1 -0
  93. package/dist/integrations/vercel-ai.d.ts +38 -0
  94. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  95. package/dist/integrations/vercel-ai.js +107 -0
  96. package/dist/integrations/vercel-ai.js.map +1 -0
  97. package/dist/render/components.d.ts +23 -0
  98. package/dist/render/components.d.ts.map +1 -0
  99. package/dist/render/components.js +133 -0
  100. package/dist/render/components.js.map +1 -0
  101. package/dist/render/derive.d.ts +23 -0
  102. package/dist/render/derive.d.ts.map +1 -0
  103. package/dist/render/derive.js +92 -0
  104. package/dist/render/derive.js.map +1 -0
  105. package/dist/render/session-view.d.ts +19 -0
  106. package/dist/render/session-view.d.ts.map +1 -0
  107. package/dist/render/session-view.js +236 -0
  108. package/dist/render/session-view.js.map +1 -0
  109. package/dist/render/tokens.d.ts +44 -0
  110. package/dist/render/tokens.d.ts.map +1 -0
  111. package/dist/render/tokens.js +72 -0
  112. package/dist/render/tokens.js.map +1 -0
  113. package/package.json +83 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Immutable AST nodes for the Sponsio formula language.
3
+ *
4
+ * Direct port of sponsio/formulas/formula.py.
5
+ * Three families: Propositional, Temporal (LTL), Arithmetic.
6
+ */
7
+ export type Formula = Atom | Not | And | Or | Implies | G | F | X | U | Le | Lt | Ge | Gt | Eq | Var | Const;
8
+ export declare class Atom {
9
+ readonly predicate: string;
10
+ readonly args: readonly string[];
11
+ readonly kind: "Atom";
12
+ constructor(predicate: string, args?: readonly string[]);
13
+ key(): string;
14
+ }
15
+ export declare class Not {
16
+ readonly child: Formula;
17
+ readonly kind: "Not";
18
+ constructor(child: Formula);
19
+ }
20
+ export declare class And {
21
+ readonly left: Formula;
22
+ readonly right: Formula;
23
+ readonly kind: "And";
24
+ constructor(left: Formula, right: Formula);
25
+ }
26
+ export declare class Or {
27
+ readonly left: Formula;
28
+ readonly right: Formula;
29
+ readonly kind: "Or";
30
+ constructor(left: Formula, right: Formula);
31
+ }
32
+ export declare class Implies {
33
+ readonly left: Formula;
34
+ readonly right: Formula;
35
+ readonly kind: "Implies";
36
+ constructor(left: Formula, right: Formula);
37
+ }
38
+ export declare class G {
39
+ readonly child: Formula;
40
+ readonly kind: "G";
41
+ constructor(child: Formula);
42
+ }
43
+ export declare class F {
44
+ readonly child: Formula;
45
+ readonly kind: "F";
46
+ constructor(child: Formula);
47
+ }
48
+ export declare class X {
49
+ readonly child: Formula;
50
+ readonly kind: "X";
51
+ constructor(child: Formula);
52
+ }
53
+ export declare class U {
54
+ readonly left: Formula;
55
+ readonly right: Formula;
56
+ readonly kind: "U";
57
+ constructor(left: Formula, right: Formula);
58
+ }
59
+ export declare class Var {
60
+ readonly name: string;
61
+ readonly kind: "Var";
62
+ readonly args: readonly string[];
63
+ constructor(name: string, ...args: string[]);
64
+ key(): string;
65
+ }
66
+ export declare class Const {
67
+ readonly value: number;
68
+ readonly kind: "Const";
69
+ constructor(value: number);
70
+ }
71
+ export type ArithExpr = Var | Const;
72
+ export declare class Le {
73
+ readonly left: ArithExpr;
74
+ readonly right: ArithExpr;
75
+ readonly kind: "Le";
76
+ constructor(left: ArithExpr, right: ArithExpr);
77
+ }
78
+ export declare class Lt {
79
+ readonly left: ArithExpr;
80
+ readonly right: ArithExpr;
81
+ readonly kind: "Lt";
82
+ constructor(left: ArithExpr, right: ArithExpr);
83
+ }
84
+ export declare class Ge {
85
+ readonly left: ArithExpr;
86
+ readonly right: ArithExpr;
87
+ readonly kind: "Ge";
88
+ constructor(left: ArithExpr, right: ArithExpr);
89
+ }
90
+ export declare class Gt {
91
+ readonly left: ArithExpr;
92
+ readonly right: ArithExpr;
93
+ readonly kind: "Gt";
94
+ constructor(left: ArithExpr, right: ArithExpr);
95
+ }
96
+ export declare class Eq {
97
+ readonly left: ArithExpr;
98
+ readonly right: ArithExpr;
99
+ readonly kind: "Eq";
100
+ constructor(left: ArithExpr, right: ArithExpr);
101
+ }
102
+ export declare function predKey(predicate: string, ...args: string[]): string;
103
+ //# sourceMappingURL=formula.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula.d.ts","sourceRoot":"","sources":["../../src/core/formula.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,MAAM,MAAM,OAAO,GACf,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,GAC/B,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACb,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GACtB,GAAG,GAAG,KAAK,CAAC;AAIhB,qBAAa,IAAI;IAGb,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE;IAHlC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;gBAErB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,SAAS,MAAM,EAAO;IAGvC,GAAG,IAAI,MAAM;CAGd;AAED,qBAAa,GAAG;IAEF,QAAQ,CAAC,KAAK,EAAE,OAAO;IADnC,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;gBACV,KAAK,EAAE,OAAO;CACpC;AAED,qBAAa,GAAG;IAEF,QAAQ,CAAC,IAAI,EAAE,OAAO;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO;IAD3D,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;gBACV,IAAI,EAAE,OAAO,EAAW,KAAK,EAAE,OAAO;CAC5D;AAED,qBAAa,EAAE;IAED,QAAQ,CAAC,IAAI,EAAE,OAAO;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO;IAD3D,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;gBACT,IAAI,EAAE,OAAO,EAAW,KAAK,EAAE,OAAO;CAC5D;AAED,qBAAa,OAAO;IAEN,QAAQ,CAAC,IAAI,EAAE,OAAO;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO;IAD3D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;gBACd,IAAI,EAAE,OAAO,EAAW,KAAK,EAAE,OAAO;CAC5D;AAID,qBAAa,CAAC;IAEA,QAAQ,CAAC,KAAK,EAAE,OAAO;IADnC,QAAQ,CAAC,IAAI,EAAG,GAAG,CAAU;gBACR,KAAK,EAAE,OAAO;CACpC;AAED,qBAAa,CAAC;IAEA,QAAQ,CAAC,KAAK,EAAE,OAAO;IADnC,QAAQ,CAAC,IAAI,EAAG,GAAG,CAAU;gBACR,KAAK,EAAE,OAAO;CACpC;AAED,qBAAa,CAAC;IAEA,QAAQ,CAAC,KAAK,EAAE,OAAO;IADnC,QAAQ,CAAC,IAAI,EAAG,GAAG,CAAU;gBACR,KAAK,EAAE,OAAO;CACpC;AAED,qBAAa,CAAC;IAEA,QAAQ,CAAC,IAAI,EAAE,OAAO;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO;IAD3D,QAAQ,CAAC,IAAI,EAAG,GAAG,CAAU;gBACR,IAAI,EAAE,OAAO,EAAW,KAAK,EAAE,OAAO;CAC5D;AAID,qBAAa,GAAG;IAGF,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;gBACZ,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE;IAGpD,GAAG,IAAI,MAAM;CAMd;AAED,qBAAa,KAAK;IAEJ,QAAQ,CAAC,KAAK,EAAE,MAAM;IADlC,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;gBACZ,KAAK,EAAE,MAAM;CACnC;AAED,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;AAEpC,qBAAa,EAAE;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS;IAD/D,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;gBACT,IAAI,EAAE,SAAS,EAAW,KAAK,EAAE,SAAS;CAChE;AAED,qBAAa,EAAE;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS;IAD/D,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;gBACT,IAAI,EAAE,SAAS,EAAW,KAAK,EAAE,SAAS;CAChE;AAED,qBAAa,EAAE;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS;IAD/D,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;gBACT,IAAI,EAAE,SAAS,EAAW,KAAK,EAAE,SAAS;CAChE;AAED,qBAAa,EAAE;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS;IAD/D,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;gBACT,IAAI,EAAE,SAAS,EAAW,KAAK,EAAE,SAAS;CAChE;AAED,qBAAa,EAAE;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS;IAD/D,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;gBACT,IAAI,EAAE,SAAS,EAAW,KAAK,EAAE,SAAS;CAChE;AAaD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAGpE"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Immutable AST nodes for the Sponsio formula language.
3
+ *
4
+ * Direct port of sponsio/formulas/formula.py.
5
+ * Three families: Propositional, Temporal (LTL), Arithmetic.
6
+ */
7
+ // --- Propositional ---
8
+ export class Atom {
9
+ predicate;
10
+ args;
11
+ kind = "Atom";
12
+ constructor(predicate, args = []) {
13
+ this.predicate = predicate;
14
+ this.args = args;
15
+ }
16
+ key() {
17
+ return predKey(this.predicate, ...this.args);
18
+ }
19
+ }
20
+ export class Not {
21
+ child;
22
+ kind = "Not";
23
+ constructor(child) {
24
+ this.child = child;
25
+ }
26
+ }
27
+ export class And {
28
+ left;
29
+ right;
30
+ kind = "And";
31
+ constructor(left, right) {
32
+ this.left = left;
33
+ this.right = right;
34
+ }
35
+ }
36
+ export class Or {
37
+ left;
38
+ right;
39
+ kind = "Or";
40
+ constructor(left, right) {
41
+ this.left = left;
42
+ this.right = right;
43
+ }
44
+ }
45
+ export class Implies {
46
+ left;
47
+ right;
48
+ kind = "Implies";
49
+ constructor(left, right) {
50
+ this.left = left;
51
+ this.right = right;
52
+ }
53
+ }
54
+ // --- Temporal (LTL) ---
55
+ export class G {
56
+ child;
57
+ kind = "G";
58
+ constructor(child) {
59
+ this.child = child;
60
+ }
61
+ }
62
+ export class F {
63
+ child;
64
+ kind = "F";
65
+ constructor(child) {
66
+ this.child = child;
67
+ }
68
+ }
69
+ export class X {
70
+ child;
71
+ kind = "X";
72
+ constructor(child) {
73
+ this.child = child;
74
+ }
75
+ }
76
+ export class U {
77
+ left;
78
+ right;
79
+ kind = "U";
80
+ constructor(left, right) {
81
+ this.left = left;
82
+ this.right = right;
83
+ }
84
+ }
85
+ // --- Arithmetic ---
86
+ export class Var {
87
+ name;
88
+ kind = "Var";
89
+ args;
90
+ constructor(name, ...args) {
91
+ this.name = name;
92
+ this.args = args;
93
+ }
94
+ key() {
95
+ if (this.args.length > 0) {
96
+ return predKey(this.name, ...this.args);
97
+ }
98
+ return this.name;
99
+ }
100
+ }
101
+ export class Const {
102
+ value;
103
+ kind = "Const";
104
+ constructor(value) {
105
+ this.value = value;
106
+ }
107
+ }
108
+ export class Le {
109
+ left;
110
+ right;
111
+ kind = "Le";
112
+ constructor(left, right) {
113
+ this.left = left;
114
+ this.right = right;
115
+ }
116
+ }
117
+ export class Lt {
118
+ left;
119
+ right;
120
+ kind = "Lt";
121
+ constructor(left, right) {
122
+ this.left = left;
123
+ this.right = right;
124
+ }
125
+ }
126
+ export class Ge {
127
+ left;
128
+ right;
129
+ kind = "Ge";
130
+ constructor(left, right) {
131
+ this.left = left;
132
+ this.right = right;
133
+ }
134
+ }
135
+ export class Gt {
136
+ left;
137
+ right;
138
+ kind = "Gt";
139
+ constructor(left, right) {
140
+ this.left = left;
141
+ this.right = right;
142
+ }
143
+ }
144
+ export class Eq {
145
+ left;
146
+ right;
147
+ kind = "Eq";
148
+ constructor(left, right) {
149
+ this.left = left;
150
+ this.right = right;
151
+ }
152
+ }
153
+ // --- Predicate key ---
154
+ function escape(s) {
155
+ return s
156
+ .replace(/\\/g, "\\\\")
157
+ .replace(/\(/g, "\\(")
158
+ .replace(/\)/g, "\\)")
159
+ .replace(/,/g, "\\,")
160
+ .replace(/ /g, "\\ ");
161
+ }
162
+ export function predKey(predicate, ...args) {
163
+ if (args.length === 0)
164
+ return `${predicate}()`;
165
+ return `${predicate}(${args.map(escape).join(", ")})`;
166
+ }
167
+ //# sourceMappingURL=formula.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula.js","sourceRoot":"","sources":["../../src/core/formula.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Grounding: convert tool-call events into per-timestep predicate valuations.
3
+ *
4
+ * Port of sponsio/tracer/grounding.py (Det-relevant atoms).
5
+ *
6
+ * Supported atoms:
7
+ * called(tool) — tool was called at this timestep
8
+ * count(tool) — cumulative invocation count
9
+ * called_with(tool, pattern) — tool args match regex pattern
10
+ * count_with(tool, pattern) — cumulative count of pattern matches
11
+ * consecutive_count(tool) — how many times same tool called in a row
12
+ * arg_has(tool, pattern) — tool args (serialized) match regex
13
+ * arg_field_has(tool, field, p) — specific arg field matches regex
14
+ * arg_length_exceeds(tool, field, N) — field length > N chars
15
+ * arg_numeric(tool, field) — numeric value extracted from args (int)
16
+ * arg_paths_within(tool, *prefixes) — all paths in args within prefix set
17
+ * token_count(type) — cumulative tokens (from event.args.tokens)
18
+ * delegation_depth — depth of agent-to-agent delegation
19
+ */
20
+ import type { Formula } from "./formula.js";
21
+ export interface ToolEvent {
22
+ tool: string;
23
+ args?: Record<string, unknown>;
24
+ }
25
+ export interface GroundingState {
26
+ callCounts: Record<string, number>;
27
+ callWithCounts: Record<string, number>;
28
+ lastTool: string | null;
29
+ consecutiveCounts: Record<string, number>;
30
+ tokenCounts: Record<string, number>;
31
+ delegationDepth: number;
32
+ }
33
+ export declare function newGroundingState(): GroundingState;
34
+ /**
35
+ * Collect content atoms from a formula tree.
36
+ * These are atoms whose grounding depends on event content (arg patterns).
37
+ */
38
+ export declare function collectContentAtoms(formulas: Formula[]): Record<string, Set<string>>;
39
+ /**
40
+ * Ground a single tool-call event into a predicate valuation dict.
41
+ */
42
+ export declare function groundEvent(event: ToolEvent, state: GroundingState, contentAtoms?: Record<string, Set<string>>): Record<string, boolean | number>;
43
+ //# sourceMappingURL=grounding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grounding.d.ts","sourceRoot":"","sources":["../../src/core/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAoC,MAAM,cAAc,CAAC;AAE9E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CASlD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAgC7B;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,cAAc,EACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CA6MlC"}
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Grounding: convert tool-call events into per-timestep predicate valuations.
3
+ *
4
+ * Port of sponsio/tracer/grounding.py (Det-relevant atoms).
5
+ *
6
+ * Supported atoms:
7
+ * called(tool) — tool was called at this timestep
8
+ * count(tool) — cumulative invocation count
9
+ * called_with(tool, pattern) — tool args match regex pattern
10
+ * count_with(tool, pattern) — cumulative count of pattern matches
11
+ * consecutive_count(tool) — how many times same tool called in a row
12
+ * arg_has(tool, pattern) — tool args (serialized) match regex
13
+ * arg_field_has(tool, field, p) — specific arg field matches regex
14
+ * arg_length_exceeds(tool, field, N) — field length > N chars
15
+ * arg_numeric(tool, field) — numeric value extracted from args (int)
16
+ * arg_paths_within(tool, *prefixes) — all paths in args within prefix set
17
+ * token_count(type) — cumulative tokens (from event.args.tokens)
18
+ * delegation_depth — depth of agent-to-agent delegation
19
+ */
20
+ import { predKey } from "./formula.js";
21
+ export function newGroundingState() {
22
+ return {
23
+ callCounts: {},
24
+ callWithCounts: {},
25
+ lastTool: null,
26
+ consecutiveCounts: {},
27
+ tokenCounts: {},
28
+ delegationDepth: 0,
29
+ };
30
+ }
31
+ /**
32
+ * Collect content atoms from a formula tree.
33
+ * These are atoms whose grounding depends on event content (arg patterns).
34
+ */
35
+ export function collectContentAtoms(formulas) {
36
+ const atoms = {};
37
+ function walk(node) {
38
+ if (node.kind === "Atom") {
39
+ const pred = node.predicate;
40
+ if ([
41
+ "called_with", "count_with",
42
+ "arg_has", "arg_field_has", "arg_length_exceeds", "arg_paths_within",
43
+ ].includes(pred)) {
44
+ if (!atoms[pred])
45
+ atoms[pred] = new Set();
46
+ atoms[pred].add(node.args.join("|"));
47
+ }
48
+ }
49
+ else if (node.kind === "Var") {
50
+ if ([
51
+ "count_with", "count", "consecutive_count",
52
+ "arg_numeric", "token_count", "delegation_depth",
53
+ ].includes(node.name)) {
54
+ const pred = node.name;
55
+ if (!atoms[pred])
56
+ atoms[pred] = new Set();
57
+ atoms[pred].add(node.args.join("|"));
58
+ }
59
+ }
60
+ // Recurse into children
61
+ if ("child" in node && node.child)
62
+ walk(node.child);
63
+ if ("left" in node && node.left)
64
+ walk(node.left);
65
+ if ("right" in node && node.right)
66
+ walk(node.right);
67
+ }
68
+ for (const f of formulas)
69
+ walk(f);
70
+ return atoms;
71
+ }
72
+ /**
73
+ * Ground a single tool-call event into a predicate valuation dict.
74
+ */
75
+ export function groundEvent(event, state, contentAtoms) {
76
+ const v = {};
77
+ const tool = event.tool;
78
+ const argsStr = event.args ? JSON.stringify(event.args) : "";
79
+ // called(tool)
80
+ v[predKey("called", tool)] = true;
81
+ // called_any — fires whenever any tool is invoked. Used by
82
+ // ``tool_allowlist`` to encode "whenever any tool runs, it must
83
+ // be one of the allowed ones".
84
+ v[predKey("called_any")] = true;
85
+ // count(tool)
86
+ state.callCounts[tool] = (state.callCounts[tool] || 0) + 1;
87
+ v[predKey("count", tool)] = state.callCounts[tool];
88
+ // consecutive_count(tool)
89
+ if (tool === state.lastTool) {
90
+ state.consecutiveCounts[tool] = (state.consecutiveCounts[tool] || 1) + 1;
91
+ }
92
+ else {
93
+ if (state.lastTool)
94
+ state.consecutiveCounts[state.lastTool] = 0;
95
+ state.consecutiveCounts[tool] = 1;
96
+ }
97
+ state.lastTool = tool;
98
+ v[predKey("consecutive_count", tool)] = state.consecutiveCounts[tool];
99
+ // called_with / count_with — regex on serialized args
100
+ if (contentAtoms) {
101
+ const cwPatterns = new Set();
102
+ for (const key of ["called_with", "count_with"]) {
103
+ const s = contentAtoms[key];
104
+ if (s)
105
+ for (const p of s)
106
+ cwPatterns.add(p);
107
+ }
108
+ for (const raw of cwPatterns) {
109
+ const parts = raw.split("|");
110
+ if (parts.length >= 2) {
111
+ const targetTool = parts[0];
112
+ const pattern = parts.slice(1).join("|");
113
+ if (targetTool === tool) {
114
+ const matched = new RegExp(pattern).test(argsStr);
115
+ v[predKey("called_with", targetTool, pattern)] = matched;
116
+ if (matched) {
117
+ const cwKey = `${targetTool}|${pattern}`;
118
+ state.callWithCounts[cwKey] = (state.callWithCounts[cwKey] || 0) + 1;
119
+ }
120
+ v[predKey("count_with", targetTool, pattern)] =
121
+ state.callWithCounts[`${targetTool}|${pattern}`] || 0;
122
+ }
123
+ }
124
+ }
125
+ // arg_has(tool, pattern)
126
+ const argHasPatterns = contentAtoms["arg_has"];
127
+ if (argHasPatterns && argsStr) {
128
+ for (const raw of argHasPatterns) {
129
+ const parts = raw.split("|");
130
+ if (parts.length >= 2) {
131
+ const targetTool = parts[0];
132
+ const pattern = parts.slice(1).join("|");
133
+ if (targetTool === tool) {
134
+ v[predKey("arg_has", targetTool, pattern)] = new RegExp(pattern).test(argsStr);
135
+ }
136
+ }
137
+ }
138
+ }
139
+ // arg_field_has(tool, field, pattern)
140
+ const afhPatterns = contentAtoms["arg_field_has"];
141
+ if (afhPatterns && event.args) {
142
+ for (const raw of afhPatterns) {
143
+ const parts = raw.split("|");
144
+ if (parts.length >= 3) {
145
+ const targetTool = parts[0];
146
+ const field = parts[1];
147
+ const pattern = parts.slice(2).join("|");
148
+ if (targetTool === tool) {
149
+ const fieldVal = event.args[field];
150
+ const matched = fieldVal != null && new RegExp(pattern).test(String(fieldVal));
151
+ v[predKey("arg_field_has", targetTool, field, pattern)] = matched;
152
+ }
153
+ }
154
+ }
155
+ }
156
+ // arg_length_exceeds(tool, field, max_chars)
157
+ const ale = contentAtoms["arg_length_exceeds"];
158
+ if (ale && event.args) {
159
+ for (const raw of ale) {
160
+ const parts = raw.split("|");
161
+ if (parts.length >= 3) {
162
+ const targetTool = parts[0];
163
+ const field = parts[1];
164
+ const maxChars = parseInt(parts[2], 10) || 500;
165
+ if (targetTool === tool) {
166
+ const fieldVal = event.args[field] ?? "";
167
+ v[predKey("arg_length_exceeds", targetTool, field, String(maxChars))] =
168
+ String(fieldVal).length > maxChars;
169
+ }
170
+ }
171
+ }
172
+ }
173
+ // arg_numeric(tool, field) — extract numeric value via 3 strategies:
174
+ // 1. Direct dict key
175
+ // 2. CLI flag "--field VALUE"
176
+ // 3. Positional token in command string
177
+ const anPatterns = contentAtoms["arg_numeric"];
178
+ if (anPatterns) {
179
+ for (const raw of anPatterns) {
180
+ const parts = raw.split("|");
181
+ if (parts.length >= 2) {
182
+ const targetTool = parts[0];
183
+ const field = parts[1];
184
+ if (targetTool === tool) {
185
+ let numericVal = null;
186
+ // Strategy 1: direct dict key
187
+ if (event.args && field in event.args) {
188
+ const val = event.args[field];
189
+ const n = typeof val === "number" ? val : parseFloat(String(val));
190
+ if (!isNaN(n))
191
+ numericVal = n;
192
+ }
193
+ // Strategy 2: CLI --field VALUE
194
+ if (numericVal == null && argsStr) {
195
+ const flagRe = new RegExp(`--${field.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s+([+-]?\\d+(?:\\.\\d+)?)`);
196
+ const m = argsStr.match(flagRe);
197
+ if (m)
198
+ numericVal = parseFloat(m[1]);
199
+ }
200
+ // Strategy 3: positional index
201
+ if (numericVal == null && event.args && /^\d+$/.test(field)) {
202
+ const cmdStr = String(event.args.command ?? "");
203
+ const tokens = cmdStr.split(/\s+/);
204
+ const pos = parseInt(field, 10);
205
+ if (pos < tokens.length) {
206
+ const n = parseFloat(tokens[pos]);
207
+ if (!isNaN(n))
208
+ numericVal = n;
209
+ }
210
+ }
211
+ if (numericVal != null) {
212
+ v[predKey("arg_numeric", targetTool, field)] = numericVal;
213
+ }
214
+ }
215
+ }
216
+ }
217
+ }
218
+ // arg_paths_within(tool, *prefixes) — all /-paths in args within prefix set
219
+ const apw = contentAtoms["arg_paths_within"];
220
+ if (apw && argsStr) {
221
+ for (const raw of apw) {
222
+ const parts = raw.split("|");
223
+ if (parts.length >= 2) {
224
+ const targetTool = parts[0];
225
+ const prefixes = parts.slice(1);
226
+ if (targetTool === tool) {
227
+ const paths = argsStr.match(/(\/[^\s;|&>"']+)/g) ?? [];
228
+ const allWithin = paths.length === 0 ||
229
+ paths.every((p) => prefixes.some((pre) => p.startsWith(pre)));
230
+ v[predKey("arg_paths_within", targetTool, ...prefixes)] = allWithin;
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ // token_count(type) — cumulative token count
237
+ // Extract from event.args.tokens if present (gen_ai.usage.* convention)
238
+ if (event.args) {
239
+ const tokens = event.args.tokens;
240
+ if (tokens) {
241
+ if (typeof tokens.input === "number") {
242
+ state.tokenCounts["input_tokens"] = (state.tokenCounts["input_tokens"] || 0) + tokens.input;
243
+ }
244
+ if (typeof tokens.output === "number") {
245
+ state.tokenCounts["output_tokens"] = (state.tokenCounts["output_tokens"] || 0) + tokens.output;
246
+ }
247
+ const total = (tokens.input || 0) + (tokens.output || 0);
248
+ state.tokenCounts["total"] = (state.tokenCounts["total"] || 0) + total;
249
+ }
250
+ }
251
+ for (const [scope, cnt] of Object.entries(state.tokenCounts)) {
252
+ v[predKey("token_count", scope)] = cnt;
253
+ }
254
+ // delegation_depth — incremented by event.event_type === "delegation"
255
+ if (event.event_type === "delegation") {
256
+ state.delegationDepth += 1;
257
+ }
258
+ v[predKey("delegation_depth")] = state.delegationDepth;
259
+ // Emit count/count_with for all tracked vars
260
+ for (const [t, cnt] of Object.entries(state.callCounts)) {
261
+ v[predKey("count", t)] = cnt;
262
+ }
263
+ for (const [key, cnt] of Object.entries(state.callWithCounts)) {
264
+ const [t, p] = [key.split("|")[0], key.split("|").slice(1).join("|")];
265
+ v[predKey("count_with", t, p)] = cnt;
266
+ }
267
+ return v;
268
+ }
269
+ //# sourceMappingURL=grounding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grounding.js","sourceRoot":"","sources":["../../src/core/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAiBvC,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,EAAE;QAClB,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,EAAE;QACrB,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,CAAC;KACnB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAmB;IAEnB,MAAM,KAAK,GAAgC,EAAE,CAAC;IAE9C,SAAS,IAAI,CAAC,IAAa;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,IAAI;gBACF,aAAa,EAAE,YAAY;gBAC3B,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB;aACrE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/B,IAAI;gBACF,YAAY,EAAE,OAAO,EAAE,mBAAmB;gBAC1C,aAAa,EAAE,aAAa,EAAE,kBAAkB;aACjD,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,KAAgB,CAAC,CAAC;QAC/D,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAe,CAAC,CAAC;QAC5D,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,KAAgB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,KAAgB,EAChB,KAAqB,EACrB,YAA0C;IAE1C,MAAM,CAAC,GAAqC,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7D,eAAe;IACf,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAElC,2DAA2D;IAC3D,gEAAgE;IAChE,+BAA+B;IAC/B,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC;IAEhC,cAAc;IACd,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEnD,0BAA0B;IAC1B,IAAI,IAAI,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,CAAC,QAAQ;YAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChE,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEtE,sDAAsD;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC;gBAAE,KAAK,MAAM,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAClD,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;oBACzD,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,KAAK,GAAG,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC;wBACzC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACvE,CAAC;oBACD,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC3C,KAAK,CAAC,cAAc,CAAC,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnC,MAAM,OAAO,GAAG,QAAQ,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC/E,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;oBAC/C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACzC,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,uBAAuB;QACvB,gCAAgC;QAChC,0CAA0C;QAC1C,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,IAAI,UAAU,GAAkB,IAAI,CAAC;wBAErC,8BAA8B;wBAC9B,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;4BACtC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC9B,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;4BAClE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gCAAE,UAAU,GAAG,CAAC,CAAC;wBAChC,CAAC;wBAED,gCAAgC;wBAChC,IAAI,UAAU,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;4BAClC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;4BAC1G,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BAChC,IAAI,CAAC;gCAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvC,CAAC;wBAED,+BAA+B;wBAC/B,IAAI,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;4BAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;4BACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4BAChC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gCACxB,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gCAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oCAAE,UAAU,GAAG,CAAC,CAAC;4BAChC,CAAC;wBACH,CAAC;wBAED,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;4BACvB,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;wBAC5D,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,4EAA4E;QAC5E,MAAM,GAAG,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;YACnB,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;wBACvD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC;4BAClC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAChE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,wEAAwE;IACxE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAA4C,CAAC;QACvE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YAC9F,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtC,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YACjG,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YACzD,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QACzE,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;IAED,sEAAsE;IACtE,IAAK,KAA4C,CAAC,UAAU,KAAK,YAAY,EAAE,CAAC;QAC9E,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;IAEvD,6CAA6C;IAC7C,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACxD,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/B,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * NL → Formula parser (rule-based keyword matching).
3
+ *
4
+ * Simplified port of sponsio/generation/nl_to_contract.py.
5
+ * Handles common NL patterns like:
6
+ * "tool `A` must precede `B`"
7
+ * "tool `X` at most 3 times"
8
+ * "tools `A` and `B` are mutually exclusive"
9
+ */
10
+ import type { DetFormula } from "./patterns.js";
11
+ export declare function parseNl(text: string): DetFormula | null;
12
+ //# sourceMappingURL=nl-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nl-parser.d.ts","sourceRoot":"","sources":["../../src/core/nl-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmHhD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA8CvD"}