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

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 (203) 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/filesystem-strict.yaml +4 -4
  10. package/contracts/capability/filesystem.yaml +9 -9
  11. package/contracts/capability/host-config-integrity.yaml +285 -0
  12. package/contracts/capability/self-modify.yaml +214 -9
  13. package/contracts/capability/shell.yaml +25 -32
  14. package/contracts/capability/subagent.yaml +5 -5
  15. package/contracts/core/llm_safety.yaml +21 -13
  16. package/contracts/incident/claude-code-secret-bypass.yaml +11 -12
  17. package/contracts/incident/cursor-railway-wipe.yaml +3 -3
  18. package/contracts/incident/mcp-composition.yaml +12 -12
  19. package/contracts/incident/openclaw.yaml +54 -45
  20. package/contracts/incident/subagent-escape.yaml +4 -4
  21. package/contracts/premium/.gitkeep +5 -6
  22. package/dist/cli/check.d.ts +2 -0
  23. package/dist/cli/check.d.ts.map +1 -0
  24. package/dist/cli/check.js +283 -0
  25. package/dist/cli/check.js.map +1 -0
  26. package/dist/cli/cli.d.ts +25 -0
  27. package/dist/cli/cli.d.ts.map +1 -0
  28. package/dist/cli/cli.js +459 -0
  29. package/dist/cli/cli.js.map +1 -0
  30. package/dist/cli/config.d.ts +88 -0
  31. package/dist/cli/config.d.ts.map +1 -0
  32. package/dist/cli/config.js +243 -0
  33. package/dist/cli/config.js.map +1 -0
  34. package/dist/cli/demo.d.ts +12 -0
  35. package/dist/cli/demo.d.ts.map +1 -0
  36. package/dist/cli/demo.js +350 -0
  37. package/dist/cli/demo.js.map +1 -0
  38. package/dist/cli/doctor.d.ts +11 -0
  39. package/dist/cli/doctor.d.ts.map +1 -0
  40. package/dist/cli/doctor.js +201 -0
  41. package/dist/cli/doctor.js.map +1 -0
  42. package/dist/cli/eval.d.ts +2 -0
  43. package/dist/cli/eval.d.ts.map +1 -0
  44. package/dist/cli/eval.js +361 -0
  45. package/dist/cli/eval.js.map +1 -0
  46. package/dist/cli/explain.d.ts +2 -0
  47. package/dist/cli/explain.d.ts.map +1 -0
  48. package/dist/cli/explain.js +266 -0
  49. package/dist/cli/explain.js.map +1 -0
  50. package/dist/cli/export-sessions.d.ts +2 -0
  51. package/dist/cli/export-sessions.d.ts.map +1 -0
  52. package/dist/cli/export-sessions.js +182 -0
  53. package/dist/cli/export-sessions.js.map +1 -0
  54. package/dist/cli/export.d.ts +2 -0
  55. package/dist/cli/export.d.ts.map +1 -0
  56. package/dist/cli/export.js +222 -0
  57. package/dist/cli/export.js.map +1 -0
  58. package/dist/cli/extractors/common.d.ts +27 -0
  59. package/dist/cli/extractors/common.d.ts.map +1 -0
  60. package/dist/cli/extractors/common.js +107 -0
  61. package/dist/cli/extractors/common.js.map +1 -0
  62. package/dist/cli/extractors/generic.d.ts +37 -0
  63. package/dist/cli/extractors/generic.d.ts.map +1 -0
  64. package/dist/cli/extractors/generic.js +185 -0
  65. package/dist/cli/extractors/generic.js.map +1 -0
  66. package/dist/cli/extractors/langchain.d.ts +18 -0
  67. package/dist/cli/extractors/langchain.d.ts.map +1 -0
  68. package/dist/cli/extractors/langchain.js +86 -0
  69. package/dist/cli/extractors/langchain.js.map +1 -0
  70. package/dist/cli/extractors/vercel.d.ts +17 -0
  71. package/dist/cli/extractors/vercel.d.ts.map +1 -0
  72. package/dist/cli/extractors/vercel.js +46 -0
  73. package/dist/cli/extractors/vercel.js.map +1 -0
  74. package/dist/cli/index.d.ts +38 -0
  75. package/dist/cli/index.d.ts.map +1 -0
  76. package/dist/cli/index.js +146 -0
  77. package/dist/cli/index.js.map +1 -0
  78. package/dist/cli/init.d.ts +2 -0
  79. package/dist/cli/init.d.ts.map +1 -0
  80. package/dist/cli/init.js +177 -0
  81. package/dist/cli/init.js.map +1 -0
  82. package/dist/cli/mode.d.ts +2 -0
  83. package/dist/cli/mode.d.ts.map +1 -0
  84. package/dist/cli/mode.js +71 -0
  85. package/dist/cli/mode.js.map +1 -0
  86. package/dist/cli/onboard.d.ts +88 -0
  87. package/dist/cli/onboard.d.ts.map +1 -0
  88. package/dist/cli/onboard.js +758 -0
  89. package/dist/cli/onboard.js.map +1 -0
  90. package/dist/cli/otlp.d.ts +27 -0
  91. package/dist/cli/otlp.d.ts.map +1 -0
  92. package/dist/cli/otlp.js +79 -0
  93. package/dist/cli/otlp.js.map +1 -0
  94. package/dist/cli/package.json +1 -0
  95. package/dist/cli/packs.d.ts +16 -0
  96. package/dist/cli/packs.d.ts.map +1 -0
  97. package/dist/cli/packs.js +184 -0
  98. package/dist/cli/packs.js.map +1 -0
  99. package/dist/cli/patterns.d.ts +16 -0
  100. package/dist/cli/patterns.d.ts.map +1 -0
  101. package/dist/cli/patterns.js +136 -0
  102. package/dist/cli/patterns.js.map +1 -0
  103. package/dist/cli/prompt.d.ts +2 -0
  104. package/dist/cli/prompt.d.ts.map +1 -0
  105. package/dist/cli/prompt.js +54 -0
  106. package/dist/cli/prompt.js.map +1 -0
  107. package/dist/cli/replay.d.ts +2 -0
  108. package/dist/cli/replay.d.ts.map +1 -0
  109. package/dist/cli/replay.js +196 -0
  110. package/dist/cli/replay.js.map +1 -0
  111. package/dist/cli/report.d.ts +57 -0
  112. package/dist/cli/report.d.ts.map +1 -0
  113. package/dist/cli/report.js +298 -0
  114. package/dist/cli/report.js.map +1 -0
  115. package/dist/cli/scan.d.ts +2 -0
  116. package/dist/cli/scan.d.ts.map +1 -0
  117. package/dist/cli/scan.js +172 -0
  118. package/dist/cli/scan.js.map +1 -0
  119. package/dist/cli/skill.d.ts +15 -0
  120. package/dist/cli/skill.d.ts.map +1 -0
  121. package/dist/cli/skill.js +131 -0
  122. package/dist/cli/skill.js.map +1 -0
  123. package/dist/cli/tokens.d.ts +31 -0
  124. package/dist/cli/tokens.d.ts.map +1 -0
  125. package/dist/cli/tokens.js +73 -0
  126. package/dist/cli/tokens.js.map +1 -0
  127. package/dist/cli/types.d.ts +46 -0
  128. package/dist/cli/types.d.ts.map +1 -0
  129. package/dist/cli/types.js +3 -0
  130. package/dist/cli/types.js.map +1 -0
  131. package/dist/cli/validate.d.ts +19 -0
  132. package/dist/cli/validate.d.ts.map +1 -0
  133. package/dist/cli/validate.js +205 -0
  134. package/dist/cli/validate.js.map +1 -0
  135. package/dist/cli/zod.d.ts +36 -0
  136. package/dist/cli/zod.d.ts.map +1 -0
  137. package/dist/cli/zod.js +226 -0
  138. package/dist/cli/zod.js.map +1 -0
  139. package/dist/contract.d.ts +13 -13
  140. package/dist/contract.d.ts.map +1 -1
  141. package/dist/contract.js +21 -21
  142. package/dist/contract.js.map +1 -1
  143. package/dist/core/config-loader.d.ts +1 -1
  144. package/dist/core/config-loader.d.ts.map +1 -1
  145. package/dist/core/config-loader.js +100 -26
  146. package/dist/core/config-loader.js.map +1 -1
  147. package/dist/core/evaluator.d.ts +9 -1
  148. package/dist/core/evaluator.d.ts.map +1 -1
  149. package/dist/core/evaluator.js +189 -13
  150. package/dist/core/evaluator.js.map +1 -1
  151. package/dist/core/formula.d.ts +76 -17
  152. package/dist/core/formula.d.ts.map +1 -1
  153. package/dist/core/formula.js +83 -1
  154. package/dist/core/formula.js.map +1 -1
  155. package/dist/core/grounding.d.ts +50 -3
  156. package/dist/core/grounding.d.ts.map +1 -1
  157. package/dist/core/grounding.js +317 -141
  158. package/dist/core/grounding.js.map +1 -1
  159. package/dist/core/nl-parser.d.ts +1 -1
  160. package/dist/core/nl-parser.d.ts.map +1 -1
  161. package/dist/core/nl-parser.js +76 -4
  162. package/dist/core/nl-parser.js.map +1 -1
  163. package/dist/core/pack-loader.d.ts.map +1 -1
  164. package/dist/core/pack-loader.js +14 -2
  165. package/dist/core/pack-loader.js.map +1 -1
  166. package/dist/core/parser.d.ts.map +1 -1
  167. package/dist/core/parser.js +30 -1
  168. package/dist/core/parser.js.map +1 -1
  169. package/dist/core/pattern-factory.d.ts +4 -4
  170. package/dist/core/pattern-factory.d.ts.map +1 -1
  171. package/dist/core/pattern-factory.js +53 -4
  172. package/dist/core/pattern-factory.js.map +1 -1
  173. package/dist/core/patterns.d.ts +127 -5
  174. package/dist/core/patterns.d.ts.map +1 -1
  175. package/dist/core/patterns.js +267 -3
  176. package/dist/core/patterns.js.map +1 -1
  177. package/dist/core/session-log.d.ts.map +1 -1
  178. package/dist/core/session-log.js +20 -1
  179. package/dist/core/session-log.js.map +1 -1
  180. package/dist/core/spans.d.ts +1 -1
  181. package/dist/core/spans.d.ts.map +1 -1
  182. package/dist/core/spans.js.map +1 -1
  183. package/dist/core/sto.d.ts +30 -66
  184. package/dist/core/sto.d.ts.map +1 -1
  185. package/dist/core/sto.js +39 -100
  186. package/dist/core/sto.js.map +1 -1
  187. package/dist/index.d.ts +83 -33
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +194 -142
  190. package/dist/index.js.map +1 -1
  191. package/dist/integrations/openai-agents.d.ts.map +1 -1
  192. package/dist/integrations/openai-agents.js +6 -4
  193. package/dist/integrations/openai-agents.js.map +1 -1
  194. package/dist/integrations/vercel-ai.d.ts.map +1 -1
  195. package/dist/integrations/vercel-ai.js +21 -3
  196. package/dist/integrations/vercel-ai.js.map +1 -1
  197. package/dist/render/tokens.d.ts.map +1 -1
  198. package/dist/render/tokens.js +1 -0
  199. package/dist/render/tokens.js.map +1 -1
  200. package/package.json +35 -7
  201. package/prompts/onboard.md +246 -0
  202. package/prompts/scan.md +123 -0
  203. package/skills/SKILL.md +432 -0
@@ -137,7 +137,7 @@ agents:
137
137
  # =====================================================================
138
138
 
139
139
  - desc: "GitHub MCP comment body must not contain ≥3 KEY=VAL secret-shape pairs"
140
- E:
140
+ G:
141
141
  pattern: arg_blacklist
142
142
  args:
143
143
  - mcp__github__create_issue_comment
@@ -146,7 +146,7 @@ agents:
146
146
  source: "incident:mcp-composition.github_comment_no_secret_shape"
147
147
 
148
148
  - desc: "GitHub MCP comment body must not contain command substitution"
149
- E:
149
+ G:
150
150
  pattern: arg_blacklist
151
151
  args:
152
152
  - mcp__github__create_issue_comment
@@ -164,7 +164,7 @@ agents:
164
164
  # =====================================================================
165
165
 
166
166
  - desc: "WhatsApp MCP message body must not contain ≥3 KEY=VAL secret-shape pairs"
167
- E:
167
+ G:
168
168
  pattern: arg_blacklist
169
169
  args:
170
170
  - mcp__whatsapp__send_message
@@ -173,7 +173,7 @@ agents:
173
173
  source: "incident:mcp-composition.whatsapp_body_no_secret_shape"
174
174
 
175
175
  - desc: "WhatsApp MCP message body must not contain command substitution"
176
- E:
176
+ G:
177
177
  pattern: arg_blacklist
178
178
  args:
179
179
  - mcp__whatsapp__send_message
@@ -205,7 +205,7 @@ agents:
205
205
  # =====================================================================
206
206
 
207
207
  - desc: "Notion create_page children must not contain ≥3 KEY=VAL secret-shape pairs"
208
- E:
208
+ G:
209
209
  pattern: arg_blacklist
210
210
  args:
211
211
  - mcp__notion__create_page
@@ -214,7 +214,7 @@ agents:
214
214
  source: "incident:mcp-composition.notion_create_no_secret_shape"
215
215
 
216
216
  - desc: "Notion append_block_children must not contain ≥3 KEY=VAL secret-shape pairs"
217
- E:
217
+ G:
218
218
  pattern: arg_blacklist
219
219
  args:
220
220
  - mcp__notion__append_block_children
@@ -223,7 +223,7 @@ agents:
223
223
  source: "incident:mcp-composition.notion_append_no_secret_shape"
224
224
 
225
225
  - desc: "Notion create_page children must not contain command substitution"
226
- E:
226
+ G:
227
227
  pattern: arg_blacklist
228
228
  args:
229
229
  - mcp__notion__create_page
@@ -258,7 +258,7 @@ agents:
258
258
  # =====================================================================
259
259
 
260
260
  - desc: "Gist files content must not contain ≥3 KEY=VAL secret-shape pairs"
261
- E:
261
+ G:
262
262
  pattern: arg_blacklist
263
263
  args:
264
264
  - mcp__gh_gist__create_gist
@@ -267,7 +267,7 @@ agents:
267
267
  source: "incident:mcp-composition.gist_no_secret_shape"
268
268
 
269
269
  - desc: "Gist files content must not contain command substitution"
270
- E:
270
+ G:
271
271
  pattern: arg_blacklist
272
272
  args:
273
273
  - mcp__gh_gist__create_gist
@@ -276,7 +276,7 @@ agents:
276
276
  source: "incident:mcp-composition.gist_no_subst"
277
277
 
278
278
  - desc: "Gist files content must not contain ≥2 salary amounts (typical employee-list leak)"
279
- E:
279
+ G:
280
280
  pattern: arg_blacklist
281
281
  args:
282
282
  - mcp__gh_gist__create_gist
@@ -285,7 +285,7 @@ agents:
285
285
  source: "incident:mcp-composition.gist_no_multi_salary"
286
286
 
287
287
  - desc: "Gist files content must not contain employment-termination language (PIP / fired / exit-by)"
288
- E:
288
+ G:
289
289
  pattern: arg_blacklist
290
290
  args:
291
291
  - mcp__gh_gist__create_gist
@@ -294,7 +294,7 @@ agents:
294
294
  source: "incident:mcp-composition.gist_no_termination_lang"
295
295
 
296
296
  - desc: "Gist files content must not contain ≥2 customer ARR/MRR figures (customer-list leak)"
297
- E:
297
+ G:
298
298
  pattern: arg_blacklist
299
299
  args:
300
300
  - mcp__gh_gist__create_gist
@@ -2,6 +2,15 @@
2
2
  # Sponsio contract pack for OpenClaw (née Clawdbot / Moltbot)
3
3
  # Target: OpenClaw local gateway, v2026.2.12 or newer
4
4
  #
5
+ # Mixed det / sto pack: the §0 LLM-output contracts (injection_free,
6
+ # jailbreak_free, harmful, semantic_pii_free, toxic_free) and §9
7
+ # capability-specific atoms (scope_respect) are LLM-judged stochastic
8
+ # atoms that are not supported in this build (the engine is
9
+ # deterministic-only). The engine refuses to load them; det rules in
10
+ # §1–§8 load and enforce as usual either way. External builds with a
11
+ # real StoEvaluator activate the full pack transparently via the
12
+ # `sponsio.evaluators` entry-point group.
13
+ #
5
14
  # Schema conventions used in this file:
6
15
  # - `desc:` — human-readable explanation (rendering only)
7
16
  # - `E:` with `pattern:` — structured, uses sponsio.patterns.library
@@ -93,44 +102,44 @@ agents:
93
102
  # =====================================================================
94
103
 
95
104
  - desc: "No prompt injection in any LLM response"
96
- E:
105
+ G:
97
106
  pattern: injection_free
98
107
  context_scope: full_trace
99
108
  source: "library:tier0.adversarial"
100
109
  beta: 0.95
101
110
 
102
111
  - desc: "No jailbreak compliance in any LLM response"
103
- E:
112
+ G:
104
113
  pattern: jailbreak_free
105
114
  source: "library:tier0.adversarial"
106
115
  beta: 0.9
107
116
 
108
117
  - desc: "No harmful advice or facilitation of real-world harm"
109
- E:
118
+ G:
110
119
  pattern: harmful
111
120
  source: "library:tier0.harm"
112
121
  beta: 0.95
113
122
 
114
123
  - desc: "Response free of contextual PII"
115
- E:
124
+ G:
116
125
  pattern: semantic_pii_free
117
126
  source: "library:tier0.privacy"
118
127
  beta: 0.95
119
128
 
120
129
  - desc: "Response free of toxic or harassing language"
121
- E:
130
+ G:
122
131
  pattern: toxic_free
123
132
  source: "library:tier0.harm"
124
133
  beta: 0.9
125
134
 
126
135
  - desc: "Total token usage bounded per session"
127
- E:
136
+ G:
128
137
  pattern: token_budget
129
138
  args: [200000, "total"]
130
139
  source: "library:tier0.budget"
131
140
 
132
141
  - desc: "No consecutive repetition of the same tool beyond a sane limit"
133
- E:
142
+ G:
134
143
  pattern: loop_detection
135
144
  args: [exec, 5]
136
145
  source: "library:tier0.runaway"
@@ -141,7 +150,7 @@ agents:
141
150
  # =====================================================================
142
151
 
143
152
  - desc: "Ban classic destructive shell patterns"
144
- E:
153
+ G:
145
154
  pattern: arg_blacklist
146
155
  args:
147
156
  - exec
@@ -154,7 +163,7 @@ agents:
154
163
  # command token; unconstrained `\<newline>` appears legitimately
155
164
  # in Makefiles / Dockerfiles / shell scripts.
156
165
  - desc: "Block shell line-continuation chained into a privileged command (CVE-2026-28460)"
157
- E:
166
+ G:
158
167
  pattern: arg_blacklist
159
168
  args:
160
169
  - exec
@@ -164,19 +173,19 @@ agents:
164
173
  source: "incident:CVE-2026-28460"
165
174
 
166
175
  - desc: "Block --yolo / --no-confirm flags on skill invocations"
167
- E:
176
+ G:
168
177
  pattern: arg_blacklist
169
178
  args: [run_skill, args, ["--yolo\\b", "--no-confirm\\b"]]
170
179
  source: "incident:issue-12515"
171
180
 
172
181
  - desc: "Reject exec commands with suspiciously long inline payloads"
173
- E:
182
+ G:
174
183
  pattern: arg_length_limit
175
184
  args: [exec, command, 2000]
176
185
  source: "library:tier1.shell"
177
186
 
178
187
  - desc: "Blast-radius cap: at most 10 exec calls per session"
179
- E:
188
+ G:
180
189
  pattern: rate_limit
181
190
  args: [exec, 10]
182
191
  source: "library:tier1.shell"
@@ -185,7 +194,7 @@ agents:
185
194
  # confirm_reconfirmed. The existing must_confirm pattern is unconditional
186
195
  # on tool name; we want it conditional on the argument content. LTL form.
187
196
  - desc: "Privileged exec patterns require a preceding human confirmation"
188
- E:
197
+ G:
189
198
  ltl: 'G(called_with(exec, "(sudo|dd\\s+if=|chmod\\s+777)") -> count(confirm_reconfirmed) >= count_with(exec, "(sudo|dd\\s+if=|chmod\\s+777)"))'
190
199
  source: "library:tier1.shell"
191
200
 
@@ -196,7 +205,7 @@ agents:
196
205
  # =====================================================================
197
206
 
198
207
  - desc: "Ban gateway config keys that disable sandbox or approvals"
199
- E:
208
+ G:
200
209
  pattern: arg_blacklist
201
210
  args:
202
211
  - gateway_config_set
@@ -205,13 +214,13 @@ agents:
205
214
  source: "incident:CVE-2026-25253"
206
215
 
207
216
  - desc: "Admin config changes extremely rare"
208
- E:
217
+ G:
209
218
  pattern: rate_limit
210
219
  args: [gateway_config_set, 1]
211
220
  source: "incident:CVE-2026-25253"
212
221
 
213
222
  - desc: "Every admin config change must be followed by an audit-log entry"
214
- E:
223
+ G:
215
224
  pattern: always_followed_by
216
225
  args: [gateway_config_set, audit_log]
217
226
  source: "incident:CVE-2026-25253"
@@ -222,7 +231,7 @@ agents:
222
231
  # =====================================================================
223
232
 
224
233
  - desc: "Reads restricted to workspace and /tmp"
225
- E:
234
+ G:
226
235
  pattern: scope_limit
227
236
  args:
228
237
  - read
@@ -230,7 +239,7 @@ agents:
230
239
  source: "library:tier1.filesystem"
231
240
 
232
241
  - desc: "Hard-deny reads of sensitive paths (SSH, AWS, OpenClaw secrets)"
233
- E:
242
+ G:
234
243
  pattern: arg_blacklist
235
244
  args:
236
245
  - read
@@ -239,7 +248,7 @@ agents:
239
248
  source: "incident:weather-skill"
240
249
 
241
250
  - desc: "Writes restricted to workspace"
242
- E:
251
+ G:
243
252
  pattern: scope_limit
244
253
  args:
245
254
  - write
@@ -248,23 +257,23 @@ agents:
248
257
 
249
258
  # Bootstrap-file self-modification — conditional on the path.
250
259
  - desc: "Self-modification of bootstrap files requires confirmation"
251
- E:
260
+ G:
252
261
  ltl: 'G(called_with(edit, "(AGENTS|SOUL|IDENTITY|USER)\\.md") -> count(confirm_reconfirmed) >= count_with(edit, "(AGENTS|SOUL|IDENTITY|USER)\\.md"))'
253
262
  source: "library:tier1.persistent_memory"
254
263
 
255
264
  - desc: "apply_patch against SOUL.md always requires confirmation"
256
- E:
265
+ G:
257
266
  ltl: 'G(called_with(apply_patch, "SOUL\\.md") -> count(confirm_reconfirmed) >= count_with(apply_patch, "SOUL\\.md"))'
258
267
  source: "library:tier1.persistent_memory"
259
268
 
260
269
  - desc: "No blind edits — must read a path before editing it"
261
- E:
270
+ G:
262
271
  pattern: must_precede
263
272
  args: [read, edit]
264
273
  source: "library:tier1.filesystem"
265
274
 
266
275
  - desc: "Bootstrap files preserve integrity"
267
- E:
276
+ G:
268
277
  pattern: data_intact
269
278
  args:
270
279
  - "bootstrap_files"
@@ -278,31 +287,31 @@ agents:
278
287
  # =====================================================================
279
288
 
280
289
  - desc: "Install and run are segregated"
281
- E:
290
+ G:
282
291
  pattern: segregation_of_duty
283
292
  args: [install_skill, run_skill]
284
293
  source: "incident:ClawHavoc"
285
294
 
286
295
  - desc: "Every skill install followed by an audit-log entry"
287
- E:
296
+ G:
288
297
  pattern: always_followed_by
289
298
  args: [install_skill, audit_log]
290
299
  source: "incident:ClawHavoc"
291
300
 
292
301
  - desc: "At most 3 skill installs per session"
293
- E:
302
+ G:
294
303
  pattern: rate_limit
295
304
  args: [install_skill, 3]
296
305
  source: "incident:ClawHavoc"
297
306
 
298
307
  - desc: "Cooldown of 10 steps between skill installs"
299
- E:
308
+ G:
300
309
  pattern: cooldown
301
310
  args: [install_skill, 10]
302
311
  source: "incident:ClawHavoc"
303
312
 
304
313
  - desc: "Typosquat defense — ban ClawHub official-CLI impersonators"
305
- E:
314
+ G:
306
315
  pattern: arg_blacklist
307
316
  args:
308
317
  - install_skill
@@ -313,7 +322,7 @@ agents:
313
322
  # After a fresh install, no exec for 5 steps (VirusTotal scan window).
314
323
  # No clean pattern fit; LTL expresses windowed inhibition.
315
324
  - desc: "After install_skill, no exec for at least 5 steps"
316
- E:
325
+ G:
317
326
  ltl: "G(called(install_skill) -> (!called(exec) & X(!called(exec) & X(!called(exec) & X(!called(exec) & X(!called(exec)))))))"
318
327
  source: "incident:ClawHavoc"
319
328
 
@@ -332,7 +341,7 @@ agents:
332
341
  # to external (non-owner) channels should add it via
333
342
  # customized: — see the commented example below.
334
343
  - desc: "After untrusted content ingest, sensitive sinks require re-confirmation"
335
- E:
344
+ G:
336
345
  pattern: untrusted_source_gate
337
346
  args:
338
347
  - [web_fetch]
@@ -351,7 +360,7 @@ agents:
351
360
  # source: "incident:CVE-2026-22708"
352
361
 
353
362
  - desc: "Web browsing loops bounded — prevents attacker-controlled chain-redirect ingestion"
354
- E:
363
+ G:
355
364
  pattern: rate_limit
356
365
  args: [web_fetch, 25]
357
366
  source: "incident:CVE-2026-22708"
@@ -360,7 +369,7 @@ agents:
360
369
  # to external recipients. Depends on integration emitting
361
370
  # data_write(key=fetched_content, contains=[untrusted]) after web_fetch.
362
371
  - desc: "Content tainted as untrusted must not flow to external recipients"
363
- E:
372
+ G:
364
373
  ltl: "G(contains(untrusted) -> !flow(<agent>, external))"
365
374
  source: "incident:CVE-2026-22708"
366
375
 
@@ -369,19 +378,19 @@ agents:
369
378
  # =====================================================================
370
379
 
371
380
  - desc: "Data read from filesystem must not flow to send_message"
372
- E:
381
+ G:
373
382
  pattern: no_data_leak
374
383
  args: [read, send_message]
375
384
  source: "incident:weather-skill"
376
385
 
377
386
  - desc: "Data read from filesystem must not flow to install_skill"
378
- E:
387
+ G:
379
388
  pattern: no_data_leak
380
389
  args: [read, install_skill]
381
390
  source: "incident:AMOS"
382
391
 
383
392
  - desc: "Block outbound exfiltration primitives in shell"
384
- E:
393
+ G:
385
394
  pattern: arg_blacklist
386
395
  args:
387
396
  - exec
@@ -398,30 +407,30 @@ agents:
398
407
  # Group-channel messages must not be followed by exec. LTL expresses the
399
408
  # channel_type=group condition cleanly.
400
409
  - desc: "Messages from group channels cannot trigger exec"
401
- E:
410
+ G:
402
411
  ltl: 'G(called_with(send_message, "channel_type=group") -> !F(called(exec)))'
403
412
  source: "library:tier1.messaging"
404
413
 
405
414
  - desc: "Per-session cap on outbound messages"
406
- E:
415
+ G:
407
416
  pattern: rate_limit
408
417
  args: [send_message, 30]
409
418
  source: "library:tier1.messaging"
410
419
 
411
420
  - desc: "Cron creation is idempotent within a session"
412
- E:
421
+ G:
413
422
  pattern: idempotent
414
423
  args: [cron_create]
415
424
  source: "library:tier1.scheduler"
416
425
 
417
426
  - desc: "Every cron_create must eventually be matched by cron_complete"
418
- E:
427
+ G:
419
428
  pattern: required_steps_completion
420
429
  args: [cron_create, [cron_complete]]
421
430
  source: "library:tier1.scheduler"
422
431
 
423
432
  - desc: "Hook / webhook registration requires human confirmation"
424
- E:
433
+ G:
425
434
  pattern: must_confirm
426
435
  args: [hook_register]
427
436
  source: "library:tier1.persistence"
@@ -443,13 +452,13 @@ agents:
443
452
 
444
453
  - desc: "Confirmations cannot be reused — count(confirm) must dominate count(exec)"
445
454
  A: "called `confirm_reconfirmed`"
446
- E:
455
+ G:
447
456
  ltl: "G(called(exec) -> count(confirm_reconfirmed) >= count(exec))"
448
457
  source: "incident:CVE-2026-29607"
449
458
 
450
459
  - desc: "Same for apply_patch — each apply needs its own confirm"
451
460
  A: "called `confirm_reconfirmed`"
452
- E:
461
+ G:
453
462
  ltl: "G(called(apply_patch) -> count(confirm_reconfirmed) >= count(apply_patch))"
454
463
  source: "incident:CVE-2026-29607"
455
464
 
@@ -459,21 +468,21 @@ agents:
459
468
 
460
469
  - desc: "After web_fetch, responses stay grounded in the fetched content"
461
470
  A: "called `web_fetch`"
462
- E:
471
+ G:
463
472
  pattern: hallucination_free
464
473
  args: ["{fetched_content}"]
465
474
  source: "library:tier1.browser"
466
475
  beta: 0.9
467
476
 
468
477
  - desc: "Agent stays within its declared scope"
469
- E:
478
+ G:
470
479
  pattern: scope_respect
471
480
  args: ["local personal assistant — file, shell, messaging, browsing on behalf of owner"]
472
481
  source: "library:tier0.scope"
473
482
  beta: 0.85
474
483
 
475
484
  - desc: "Agent does not agree to disable its own safety constraints (anti-guilttrip)"
476
- E:
485
+ G:
477
486
  pattern: jailbreak_free
478
487
  source: "incident:wired-guilttrip"
479
488
  beta: 0.95
@@ -81,7 +81,7 @@ agents:
81
81
  # =================================================================
82
82
 
83
83
  - desc: "Sub-agents may not edit sponsio configuration files"
84
- E:
84
+ G:
85
85
  pattern: arg_blacklist
86
86
  args:
87
87
  - Edit
@@ -106,7 +106,7 @@ agents:
106
106
  # =================================================================
107
107
 
108
108
  - desc: "Sub-agents may not write sponsio configuration files"
109
- E:
109
+ G:
110
110
  pattern: arg_blacklist
111
111
  args:
112
112
  - Write
@@ -121,7 +121,7 @@ agents:
121
121
  # =================================================================
122
122
 
123
123
  - desc: "Sub-agents may not multi-edit sponsio configuration files"
124
- E:
124
+ G:
125
125
  pattern: arg_blacklist
126
126
  args:
127
127
  - MultiEdit
@@ -151,7 +151,7 @@ agents:
151
151
  # own rule lists.
152
152
 
153
153
  - desc: "Sub-agents may not read host plugin guard rules (recon defence)"
154
- E:
154
+ G:
155
155
  pattern: arg_blacklist
156
156
  args:
157
157
  - Read
@@ -1,7 +1,6 @@
1
- # Reserved namespace for Sponsio premium contracts.
1
+ # Reserved namespace for future Sponsio premium contracts.
2
2
  #
3
- # The OSS engine ships ``sponsio:capability/*`` (universal safety
4
- # packs) and ``sponsio:incident/*`` (public CVE / Reddit-incident
5
- # replicas). This directory holds bespoke threat patterns derived
6
- # from internal threat-research engagements, which Sponsio Cloud
7
- # customers receive as a pack subscription. Empty in OSS by design.
3
+ # The engine ships ``sponsio:capability/*`` (universal safety packs)
4
+ # and ``sponsio:incident/*`` (public CVE / Reddit-incident replicas).
5
+ # This directory is a placeholder for future expansion; not part of
6
+ # this build. Empty by design.
@@ -0,0 +1,2 @@
1
+ export declare function runCheckCli(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/cli/check.ts"],"names":[],"mappings":"AA6JA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoH/D"}