@sponsio/sdk 0.1.0-alpha.3 → 0.1.0

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