@sponsio/sdk 0.1.0-alpha.3 → 0.2.0-alpha.10

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 (243) hide show
  1. package/bin/sponsio.cjs +11 -0
  2. package/contracts/benchmark/agentdojo.yaml +551 -0
  3. package/contracts/benchmark/odcv_bench.yaml +393 -0
  4. package/contracts/benchmark/redcode_exec.yaml +488 -0
  5. package/contracts/benchmark/swebench.yaml +176 -0
  6. package/contracts/benchmark/tau2_bench.yaml +984 -0
  7. package/contracts/capability/credentials.yaml +8 -8
  8. package/contracts/capability/database.yaml +6 -6
  9. package/contracts/capability/destructive.yaml +213 -0
  10. package/contracts/capability/factual-claims.yaml +79 -0
  11. package/contracts/capability/filesystem-strict.yaml +4 -4
  12. package/contracts/capability/filesystem.yaml +9 -9
  13. package/contracts/capability/host-config-integrity.yaml +318 -0
  14. package/contracts/capability/self-modify.yaml +260 -9
  15. package/contracts/capability/shell.yaml +43 -41
  16. package/contracts/capability/subagent.yaml +5 -5
  17. package/contracts/incident/claude-code-secret-bypass.yaml +57 -26
  18. package/contracts/incident/cursor-railway-wipe.yaml +63 -7
  19. package/contracts/incident/mcp-composition.yaml +12 -12
  20. package/contracts/incident/openclaw.yaml +47 -92
  21. package/contracts/incident/subagent-escape.yaml +4 -4
  22. package/contracts/premium/.gitkeep +5 -6
  23. package/dist/cli/check.d.ts +2 -0
  24. package/dist/cli/check.d.ts.map +1 -0
  25. package/dist/cli/check.js +283 -0
  26. package/dist/cli/check.js.map +1 -0
  27. package/dist/cli/cli.d.ts +25 -0
  28. package/dist/cli/cli.d.ts.map +1 -0
  29. package/dist/cli/cli.js +491 -0
  30. package/dist/cli/cli.js.map +1 -0
  31. package/dist/cli/config.d.ts +88 -0
  32. package/dist/cli/config.d.ts.map +1 -0
  33. package/dist/cli/config.js +243 -0
  34. package/dist/cli/config.js.map +1 -0
  35. package/dist/cli/demo.d.ts +12 -0
  36. package/dist/cli/demo.d.ts.map +1 -0
  37. package/dist/cli/demo.js +350 -0
  38. package/dist/cli/demo.js.map +1 -0
  39. package/dist/cli/doctor.d.ts +11 -0
  40. package/dist/cli/doctor.d.ts.map +1 -0
  41. package/dist/cli/doctor.js +201 -0
  42. package/dist/cli/doctor.js.map +1 -0
  43. package/dist/cli/eval.d.ts +2 -0
  44. package/dist/cli/eval.d.ts.map +1 -0
  45. package/dist/cli/eval.js +361 -0
  46. package/dist/cli/eval.js.map +1 -0
  47. package/dist/cli/explain.d.ts +2 -0
  48. package/dist/cli/explain.d.ts.map +1 -0
  49. package/dist/cli/explain.js +266 -0
  50. package/dist/cli/explain.js.map +1 -0
  51. package/dist/cli/export-sessions.d.ts +2 -0
  52. package/dist/cli/export-sessions.d.ts.map +1 -0
  53. package/dist/cli/export-sessions.js +182 -0
  54. package/dist/cli/export-sessions.js.map +1 -0
  55. package/dist/cli/export.d.ts +2 -0
  56. package/dist/cli/export.d.ts.map +1 -0
  57. package/dist/cli/export.js +222 -0
  58. package/dist/cli/export.js.map +1 -0
  59. package/dist/cli/extractors/common.d.ts +27 -0
  60. package/dist/cli/extractors/common.d.ts.map +1 -0
  61. package/dist/cli/extractors/common.js +107 -0
  62. package/dist/cli/extractors/common.js.map +1 -0
  63. package/dist/cli/extractors/generic.d.ts +37 -0
  64. package/dist/cli/extractors/generic.d.ts.map +1 -0
  65. package/dist/cli/extractors/generic.js +185 -0
  66. package/dist/cli/extractors/generic.js.map +1 -0
  67. package/dist/cli/extractors/langchain.d.ts +18 -0
  68. package/dist/cli/extractors/langchain.d.ts.map +1 -0
  69. package/dist/cli/extractors/langchain.js +86 -0
  70. package/dist/cli/extractors/langchain.js.map +1 -0
  71. package/dist/cli/extractors/vercel.d.ts +17 -0
  72. package/dist/cli/extractors/vercel.d.ts.map +1 -0
  73. package/dist/cli/extractors/vercel.js +46 -0
  74. package/dist/cli/extractors/vercel.js.map +1 -0
  75. package/dist/cli/index.d.ts +38 -0
  76. package/dist/cli/index.d.ts.map +1 -0
  77. package/dist/cli/index.js +146 -0
  78. package/dist/cli/index.js.map +1 -0
  79. package/dist/cli/init.d.ts +2 -0
  80. package/dist/cli/init.d.ts.map +1 -0
  81. package/dist/cli/init.js +177 -0
  82. package/dist/cli/init.js.map +1 -0
  83. package/dist/cli/mode.d.ts +2 -0
  84. package/dist/cli/mode.d.ts.map +1 -0
  85. package/dist/cli/mode.js +71 -0
  86. package/dist/cli/mode.js.map +1 -0
  87. package/dist/cli/onboard.d.ts +88 -0
  88. package/dist/cli/onboard.d.ts.map +1 -0
  89. package/dist/cli/onboard.js +758 -0
  90. package/dist/cli/onboard.js.map +1 -0
  91. package/dist/cli/otlp.d.ts +27 -0
  92. package/dist/cli/otlp.d.ts.map +1 -0
  93. package/dist/cli/otlp.js +79 -0
  94. package/dist/cli/otlp.js.map +1 -0
  95. package/dist/cli/package.json +1 -0
  96. package/dist/cli/packs.d.ts +16 -0
  97. package/dist/cli/packs.d.ts.map +1 -0
  98. package/dist/cli/packs.js +190 -0
  99. package/dist/cli/packs.js.map +1 -0
  100. package/dist/cli/patterns.d.ts +16 -0
  101. package/dist/cli/patterns.d.ts.map +1 -0
  102. package/dist/cli/patterns.js +136 -0
  103. package/dist/cli/patterns.js.map +1 -0
  104. package/dist/cli/prompt.d.ts +2 -0
  105. package/dist/cli/prompt.d.ts.map +1 -0
  106. package/dist/cli/prompt.js +54 -0
  107. package/dist/cli/prompt.js.map +1 -0
  108. package/dist/cli/replay.d.ts +2 -0
  109. package/dist/cli/replay.d.ts.map +1 -0
  110. package/dist/cli/replay.js +196 -0
  111. package/dist/cli/replay.js.map +1 -0
  112. package/dist/cli/report.d.ts +57 -0
  113. package/dist/cli/report.d.ts.map +1 -0
  114. package/dist/cli/report.js +298 -0
  115. package/dist/cli/report.js.map +1 -0
  116. package/dist/cli/scan.d.ts +2 -0
  117. package/dist/cli/scan.d.ts.map +1 -0
  118. package/dist/cli/scan.js +172 -0
  119. package/dist/cli/scan.js.map +1 -0
  120. package/dist/cli/skill.d.ts +15 -0
  121. package/dist/cli/skill.d.ts.map +1 -0
  122. package/dist/cli/skill.js +131 -0
  123. package/dist/cli/skill.js.map +1 -0
  124. package/dist/cli/tokens.d.ts +31 -0
  125. package/dist/cli/tokens.d.ts.map +1 -0
  126. package/dist/cli/tokens.js +73 -0
  127. package/dist/cli/tokens.js.map +1 -0
  128. package/dist/cli/types.d.ts +46 -0
  129. package/dist/cli/types.d.ts.map +1 -0
  130. package/dist/cli/types.js +3 -0
  131. package/dist/cli/types.js.map +1 -0
  132. package/dist/cli/validate.d.ts +19 -0
  133. package/dist/cli/validate.d.ts.map +1 -0
  134. package/dist/cli/validate.js +205 -0
  135. package/dist/cli/validate.js.map +1 -0
  136. package/dist/cli/zod.d.ts +36 -0
  137. package/dist/cli/zod.d.ts.map +1 -0
  138. package/dist/cli/zod.js +226 -0
  139. package/dist/cli/zod.js.map +1 -0
  140. package/dist/cloud/client.d.ts +76 -0
  141. package/dist/cloud/client.d.ts.map +1 -0
  142. package/dist/cloud/client.js +204 -0
  143. package/dist/cloud/client.js.map +1 -0
  144. package/dist/cloud/evidence.d.ts +108 -0
  145. package/dist/cloud/evidence.d.ts.map +1 -0
  146. package/dist/cloud/evidence.js +184 -0
  147. package/dist/cloud/evidence.js.map +1 -0
  148. package/dist/cloud/privacy.d.ts +67 -0
  149. package/dist/cloud/privacy.d.ts.map +1 -0
  150. package/dist/cloud/privacy.js +170 -0
  151. package/dist/cloud/privacy.js.map +1 -0
  152. package/dist/cloud/view-model.d.ts +49 -0
  153. package/dist/cloud/view-model.d.ts.map +1 -0
  154. package/dist/cloud/view-model.js +172 -0
  155. package/dist/cloud/view-model.js.map +1 -0
  156. package/dist/contract.d.ts +13 -13
  157. package/dist/contract.d.ts.map +1 -1
  158. package/dist/contract.js +21 -21
  159. package/dist/contract.js.map +1 -1
  160. package/dist/core/config-loader.d.ts +1 -1
  161. package/dist/core/config-loader.d.ts.map +1 -1
  162. package/dist/core/config-loader.js +116 -26
  163. package/dist/core/config-loader.js.map +1 -1
  164. package/dist/core/evaluator.d.ts +11 -1
  165. package/dist/core/evaluator.d.ts.map +1 -1
  166. package/dist/core/evaluator.js +275 -13
  167. package/dist/core/evaluator.js.map +1 -1
  168. package/dist/core/formula.d.ts +76 -17
  169. package/dist/core/formula.d.ts.map +1 -1
  170. package/dist/core/formula.js +95 -1
  171. package/dist/core/formula.js.map +1 -1
  172. package/dist/core/grounding.d.ts +86 -3
  173. package/dist/core/grounding.d.ts.map +1 -1
  174. package/dist/core/grounding.js +485 -143
  175. package/dist/core/grounding.js.map +1 -1
  176. package/dist/core/nl-parser.d.ts +2 -2
  177. package/dist/core/nl-parser.d.ts.map +1 -1
  178. package/dist/core/nl-parser.js +690 -42
  179. package/dist/core/nl-parser.js.map +1 -1
  180. package/dist/core/pack-loader.d.ts.map +1 -1
  181. package/dist/core/pack-loader.js +14 -2
  182. package/dist/core/pack-loader.js.map +1 -1
  183. package/dist/core/parser.d.ts.map +1 -1
  184. package/dist/core/parser.js +30 -1
  185. package/dist/core/parser.js.map +1 -1
  186. package/dist/core/pattern-factory.d.ts +4 -4
  187. package/dist/core/pattern-factory.d.ts.map +1 -1
  188. package/dist/core/pattern-factory.js +59 -4
  189. package/dist/core/pattern-factory.js.map +1 -1
  190. package/dist/core/patterns.d.ts +196 -5
  191. package/dist/core/patterns.d.ts.map +1 -1
  192. package/dist/core/patterns.js +400 -13
  193. package/dist/core/patterns.js.map +1 -1
  194. package/dist/core/session-log.d.ts.map +1 -1
  195. package/dist/core/session-log.js +20 -1
  196. package/dist/core/session-log.js.map +1 -1
  197. package/dist/core/spans.d.ts +1 -1
  198. package/dist/core/spans.d.ts.map +1 -1
  199. package/dist/core/spans.js.map +1 -1
  200. package/dist/core/sto.d.ts +30 -66
  201. package/dist/core/sto.d.ts.map +1 -1
  202. package/dist/core/sto.js +39 -100
  203. package/dist/core/sto.js.map +1 -1
  204. package/dist/core/tool-names.d.ts +59 -0
  205. package/dist/core/tool-names.d.ts.map +1 -0
  206. package/dist/core/tool-names.js +128 -0
  207. package/dist/core/tool-names.js.map +1 -0
  208. package/dist/index.d.ts +227 -33
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +539 -152
  211. package/dist/index.js.map +1 -1
  212. package/dist/integrations/claude-agent.d.ts +5 -0
  213. package/dist/integrations/claude-agent.d.ts.map +1 -1
  214. package/dist/integrations/claude-agent.js +42 -13
  215. package/dist/integrations/claude-agent.js.map +1 -1
  216. package/dist/integrations/google-adk.d.ts +5 -3
  217. package/dist/integrations/google-adk.d.ts.map +1 -1
  218. package/dist/integrations/google-adk.js +9 -5
  219. package/dist/integrations/google-adk.js.map +1 -1
  220. package/dist/integrations/langchain.d.ts +7 -0
  221. package/dist/integrations/langchain.d.ts.map +1 -1
  222. package/dist/integrations/langchain.js +21 -3
  223. package/dist/integrations/langchain.js.map +1 -1
  224. package/dist/integrations/openai-agents.d.ts +22 -10
  225. package/dist/integrations/openai-agents.d.ts.map +1 -1
  226. package/dist/integrations/openai-agents.js +57 -16
  227. package/dist/integrations/openai-agents.js.map +1 -1
  228. package/dist/integrations/openai.d.ts +11 -0
  229. package/dist/integrations/openai.d.ts.map +1 -1
  230. package/dist/integrations/openai.js +130 -48
  231. package/dist/integrations/openai.js.map +1 -1
  232. package/dist/integrations/vercel-ai.d.ts +20 -9
  233. package/dist/integrations/vercel-ai.d.ts.map +1 -1
  234. package/dist/integrations/vercel-ai.js +131 -32
  235. package/dist/integrations/vercel-ai.js.map +1 -1
  236. package/dist/render/tokens.d.ts.map +1 -1
  237. package/dist/render/tokens.js +1 -0
  238. package/dist/render/tokens.js.map +1 -1
  239. package/package.json +41 -9
  240. package/prompts/onboard.md +259 -0
  241. package/prompts/scan.md +123 -0
  242. package/skills/SKILL.md +432 -0
  243. package/contracts/core/llm_safety.yaml +0 -130
@@ -17,19 +17,79 @@
17
17
  * Workflow hygiene (6): dryRunBeforeCommit, backupBeforeDestructive,
18
18
  * auditAfter, approvalFreshness, sanitizedBeforeSink, duplicateCallLimit
19
19
  */
20
- import { Formula } from "./formula.js";
20
+ import { Formula, Atom } from "./formula.js";
21
21
  export interface DetFormula {
22
22
  formula: Formula;
23
23
  desc: string;
24
24
  patternName: string;
25
+ /**
26
+ * What this rule was built from, mirroring Python's ``DetFormula.args``.
27
+ *
28
+ * The name alone does not identify a rule: two customers can both hold
29
+ * `rate_limit` and mean different limits on different tools. The cloud
30
+ * groups findings by (pattern, args) and derives a stable finding id
31
+ * from them, so a violation uploaded without these carries only its
32
+ * English sentence — and a rule reworded loses its own history.
33
+ * Undefined only on formulas built by hand rather than by a factory.
34
+ *
35
+ * ``Atom`` is in the union because ``workflowStep`` takes two of them,
36
+ * as it does in Python. That one is not reachable from the DSL and its
37
+ * args do not serialise to anything a reader wants; every other factory
38
+ * stores the strings and numbers it was called with.
39
+ */
40
+ args?: (string | number | string[] | Atom | undefined)[];
25
41
  liveness: boolean;
42
+ /**
43
+ * Per-contract enforcement mode: `enforce` | `observe`.
44
+ *
45
+ * Overrides the engine's global mode for this contract alone —
46
+ * mirrors Python's `ContractEntry.mode`. `undefined` means "no
47
+ * opinion" and the global mode applies; that distinction matters,
48
+ * since defaulting to `observe` here would silently downgrade every
49
+ * contract that simply did not mention a mode.
50
+ */
51
+ mode?: "enforce" | "observe";
52
+ /**
53
+ * What the runtime does when this formula is violated, mirroring the
54
+ * strategy Python bundles onto its own `DetFormula`.
55
+ *
56
+ * `undefined` means `block`, which is what every pattern but one
57
+ * wants. `redirect` names a substitute in `safeName`: the original
58
+ * call must not run, and an adapter that can dispatch the substitute
59
+ * should. `escalate` hands the decision to a human.
60
+ *
61
+ * The formula alone cannot carry this. `redirect_to_safe` compiles to
62
+ * `G(!called(unsafe))`, which is indistinguishable from a plain ban,
63
+ * so a runtime reading only the formula turns every redirect into a
64
+ * block and loses the substitute.
65
+ */
66
+ strategy?: "block" | "redirect" | "escalate";
67
+ /** The tool to call instead, when `strategy` is `redirect`. */
68
+ safeName?: string;
26
69
  }
27
- export interface AssumptionEnforcementPair {
70
+ export interface AssumeGuaranteePair {
28
71
  assumption: DetFormula;
29
- enforcement: DetFormula;
72
+ guarantee: DetFormula;
30
73
  }
31
74
  export declare function mustPrecede(before: string, after: string): DetFormula;
32
75
  export declare function alwaysFollowedBy(trigger: string, response: string): DetFormula;
76
+ /**
77
+ * Prescriptive next-step obligation: ``G(trigger -> X(next_action))``.
78
+ *
79
+ * When ``trigger`` holds at the current event, the agent must satisfy
80
+ * ``next_action`` at the very next event. Prescriptive counterpart to
81
+ * the block-style patterns (``never_together``, ``arg_blacklist``):
82
+ * instead of "you must not do X", a workflow_step says "you must do X
83
+ * next".
84
+ *
85
+ * Both arguments are arbitrary atoms (called(...), ctx(k, v),
86
+ * arg_field_has(...), etc.), so the same factory covers tool ordering,
87
+ * ctx-driven remediation, and arg-conditional follow-ups.
88
+ *
89
+ * NOT marked liveness: X is one-step bounded and the runtime can decide
90
+ * the obligation after a single event, unlike F.
91
+ */
92
+ export declare function workflowStep(trigger: Atom, nextAction: Atom, desc?: string): DetFormula;
33
93
  export declare function noReversal(commitment: string, contradiction: string): DetFormula;
34
94
  export declare function requiresPermission(tool: string, permission: string): DetFormula;
35
95
  export declare function noDataLeak(source: string, external: string): DetFormula;
@@ -54,14 +114,145 @@ export declare function scopeLimit(tool: string, allowedPaths: string[]): DetFor
54
114
  export declare function argLengthLimit(tool: string, param: string, maxChars: number): DetFormula;
55
115
  export declare function dataIntact(boundTool: string, originalPaths: string[]): DetFormula;
56
116
  export declare function destructiveActionGate(tool: string, approverRole?: string): DetFormula;
57
- export declare function untrustedSourceGate(source: string, sink: string, confirm?: string): AssumptionEnforcementPair;
117
+ export declare function untrustedSourceGate(source: string, sink: string, confirm?: string): AssumeGuaranteePair;
58
118
  export declare function requiredStepsCompletion(trigger: string, steps: string[]): DetFormula;
59
119
  export declare function toolAllowlist(allowedTools: string[]): DetFormula;
120
+ /**
121
+ * Substitute a forbidden tool call with a pre-approved safe one.
122
+ *
123
+ * Parity with Python ``sponsio.patterns.library.redirect_to_safe``:
124
+ * compiles to ``G(Not(called(unsafe)))``, so any call to ``unsafe`` is
125
+ * a violation.
126
+ *
127
+ * **Important runtime caveat.** The TS SDK is currently det-only and
128
+ * has no strategy / dispatch system. The formula side of
129
+ * ``redirectToSafe`` works here (a violation IS surfaced), but the TS
130
+ * SDK does NOT yet do the Python-side trick of bundling a
131
+ * ``RedirectToSafe`` strategy on the formula and having adapter
132
+ * ``wrap()`` paths substitute the call. The runtime outcome on TS is
133
+ * functionally a block: the unsafe tool is rejected, and the user's
134
+ * application loop has to decide whether to dispatch the safe
135
+ * substitute manually. Full strategy / dispatch parity is tracked as
136
+ * a separate work item. Users wiring redirect-style contracts who
137
+ * need transparent substitution should stay on the Python SDK
138
+ * (LangGraph adapter) until the TS strategy port lands.
139
+ */
140
+ /**
141
+ * Every emitted claim of this predicate must verify as PASS.
142
+ *
143
+ * Compiles to `G(claim_emitted(pred) -> evidence_verdict(pred, PASS))`.
144
+ * Both atoms are grounded from the same `evidence` event, so the
145
+ * implication is decided at the timestep the verdict lands: a claim
146
+ * whose verdict is anything but PASS (MISMATCH, UNDERDETERMINED,
147
+ * NO_EVIDENCE, STALE, SOURCE_UNAVAILABLE, EXTRACTION_AMBIGUOUS)
148
+ * violates immediately.
149
+ *
150
+ * Parity with `sponsio.patterns.library.claim_requires_evidence`.
151
+ */
152
+ export declare function claimRequiresEvidence(pred: string, desc?: string): DetFormula;
153
+ /**
154
+ * An UNDERDETERMINED verdict must resolve to a clarify action.
155
+ *
156
+ * Compiles to `G(evidence_verdict(pred, UNDERDETERMINED) ->
157
+ * evidence_action(pred, clarify))`.
158
+ *
159
+ * Guards the policy wiring rather than the claim itself: when the
160
+ * evidence was ambiguous, the recorded action on that same event must be
161
+ * `clarify`. A project override that quietly releases or hard-blocks an
162
+ * ambiguous claim trips this contract.
163
+ *
164
+ * Parity with `sponsio.patterns.library.underdetermined_must_clarify`.
165
+ */
166
+ export declare function underdeterminedMustClarify(pred: string, desc?: string): DetFormula;
167
+ export declare function redirectToSafe(unsafe: string, safe: string): DetFormula;
168
+ /**
169
+ * Recursive ``rm`` in any spelling: ``rm -rf``, ``rm -fr``, ``rm -Rf``,
170
+ * ``rm -r``, ``rm -f -r``, ``rm --recursive --force``, ``rm -v --recursive``.
171
+ * ``count_with`` is a regex over the serialized args, so a literal
172
+ * ``"rm -rf"`` only caught that one spelling. Mirrors
173
+ * ``RM_RECURSIVE_PATTERN`` in ``sponsio/patterns/library.py``; keep the
174
+ * two in sync.
175
+ */
176
+ export declare const RM_RECURSIVE_PATTERN = "\\brm(?:\\s+(?:-[a-zA-Z]+|--[a-z-]+))*\\s+(?:-[a-zA-Z]*[rR][a-zA-Z]*|--recursive)(?=\\s|$)";
60
177
  export declare function dangerousBashCommands(forbidden?: string[]): DetFormula;
61
178
  export declare function dangerousSqlVerbs(tool?: string, forbidden?: string[]): DetFormula;
62
179
  export declare function irreversibleOnce(action: string): DetFormula;
63
- export declare function confirmAfterSource(source: string, action: string): AssumptionEnforcementPair;
180
+ export declare function confirmAfterSource(source: string, action: string): AssumeGuaranteePair;
64
181
  export declare function tokenBudget(maxTokens: number, scope?: string): DetFormula;
65
182
  export declare function argValueRange(tool: string, field: string, minVal?: number, maxVal?: number): DetFormula;
66
183
  export declare function delegationDepthLimit(maxDepth: number): DetFormula;
184
+ /**
185
+ * Response length must stay within the given word / character budget.
186
+ *
187
+ * Grounded against ``response_words`` / ``response_chars`` populated on
188
+ * ``llm_response`` events with content. At non-response events both
189
+ * default to 0, so the constraint is vacuously satisfied.
190
+ */
191
+ export declare function maxLength(opts: {
192
+ maxWords?: number;
193
+ maxChars?: number;
194
+ desc?: string;
195
+ }): DetFormula;
196
+ /**
197
+ * Response must not contain regex-detectable PII (SSN, CC, email, phone).
198
+ *
199
+ * Uses the ``llm_said`` grounding atom — the selected default patterns
200
+ * are joined with ``|`` and matched against each ``llm_response`` event.
201
+ * For semantic PII detection (names, contextual identifiers) use a sto
202
+ * atom; this pattern only covers syntactic PII.
203
+ */
204
+ export declare function noPii(fields?: string[]): DetFormula;
205
+ /**
206
+ * Response must not contain any of the given keywords. Keywords are
207
+ * escaped and joined into a word-boundary-anchored regex checked
208
+ * against each ``llm_response`` event via ``llm_said``.
209
+ *
210
+ * JS regex doesn't support inline ``(?i)`` flags — we lower-case the
211
+ * regex by expanding letters to ``[aA]``-style char classes, matching
212
+ * Python's ``(?i)`` semantics.
213
+ */
214
+ export declare function noKeywords(words: string[]): DetFormula;
215
+ /**
216
+ * When ``tool`` is called, ``ctx[key]`` must be one of ``allowedValues``.
217
+ * Fail-closed: missing context evaluates to violation, so forgetting
218
+ * to wire ``observeContext`` is loud rather than silent.
219
+ */
220
+ export declare function ctxRequired(tool: string, key: string, allowedValues: string[]): DetFormula;
221
+ /**
222
+ * When ``tool`` is called, ``ctx[key]`` must match the regex ``pattern``.
223
+ * Regex variant of :func:`ctxRequired` for cases where the allowed set
224
+ * is better expressed as a pattern than an exhaustive list.
225
+ */
226
+ export declare function ctxMatchesRequired(tool: string, key: string, pattern: string): DetFormula;
227
+ /**
228
+ * Constrain how recently a predicate was last true. The argument is the
229
+ * grounded predicate key string (e.g. ``"called(refund)"`` or
230
+ * ``"ctx(approval.role, alice)"``) — same convention as Python's
231
+ * ``time_since`` factory.
232
+ */
233
+ export declare function timeSince(predicateKey: string, maxSeconds: number): DetFormula;
234
+ /**
235
+ * Gate ``action`` on a recent allow-decision approval from ``role``.
236
+ *
237
+ * Compiles to::
238
+ * G(called(action) → (
239
+ * ctx_matches("approval.role", role)
240
+ * ∧ ctx_matches("approval.decision", "allow")
241
+ * ∧ time_since("ctx(approval.role, role)") ≤ maxSeconds
242
+ * ))
243
+ *
244
+ * Pairs with ``observeApproval({role, decision})`` on the integration
245
+ * side.
246
+ */
247
+ export declare function approvalActive(action: string, role: string, maxSeconds: number): DetFormula;
248
+ /**
249
+ * @deprecated — use :func:`mutualExclusion` instead.
250
+ *
251
+ * In sequential traces, two tool calls are always at different
252
+ * timesteps, so the formula ``G(¬(called(A) ∧ called(B)))`` is
253
+ * trivially satisfied and can never detect violations. Delegates to
254
+ * ``mutualExclusion`` for correct behavior; kept so yaml authored
255
+ * against Python's deprecated entry still loads.
256
+ */
257
+ export declare function neverTogether(a: string, b: string): DetFormula;
67
258
  //# sourceMappingURL=patterns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/core/patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/core/patterns.ts"],"names":[],"mappings":"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"}