@sema-agent/core 7.41.0 → 7.42.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 (79) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/agents/subagent.js +2 -0
  3. package/dist/core/agent-definition.d.ts +1 -1
  4. package/dist/core/allow-entry.d.ts +241 -0
  5. package/dist/core/allow-entry.js +340 -0
  6. package/dist/core/allow-rule-shadow.d.ts +18 -0
  7. package/dist/core/allow-rule-shadow.js +1 -0
  8. package/dist/core/ask-origin.d.ts +5 -5
  9. package/dist/core/ask-origin.js +1 -1
  10. package/dist/core/auto-mode.d.ts +3 -2
  11. package/dist/core/checkpoint-store.d.ts +11 -19
  12. package/dist/core/checkpoint-store.js +1 -1
  13. package/dist/core/decision-receipt.d.ts +4 -2
  14. package/dist/core/decision-receipt.js +1 -1
  15. package/dist/core/engine-notice.d.ts +8 -5
  16. package/dist/core/gate-fold.js +1 -1
  17. package/dist/core/gate-lanes.d.ts +1 -49
  18. package/dist/core/gate-lanes.js +85 -223
  19. package/dist/core/governance-codes.d.ts +3 -3
  20. package/dist/core/governance-codes.js +3 -3
  21. package/dist/core/hooks.d.ts +13 -10
  22. package/dist/core/hooks.js +5 -3
  23. package/dist/core/mode-policy.d.ts +3 -3
  24. package/dist/core/mode-policy.js +2 -2
  25. package/dist/core/permission-rules.d.ts +24 -23
  26. package/dist/core/permission-rules.js +37 -33
  27. package/dist/core/reminder-disclosure.d.ts +53 -2
  28. package/dist/core/reminder-disclosure.js +49 -36
  29. package/dist/core/rule-lane-reads.d.ts +84 -0
  30. package/dist/core/rule-lane-reads.js +164 -0
  31. package/dist/core/runner/contracts.d.ts +4 -2
  32. package/dist/core/runner/gate-exit.d.ts +3 -3
  33. package/dist/core/runner/image.js +4 -3
  34. package/dist/core/runner/inline-image.d.ts +14 -0
  35. package/dist/core/runner/inline-image.js +26 -0
  36. package/dist/core/runner/permission-rule-lanes.d.ts +3 -1
  37. package/dist/core/runner/permission-rule-lanes.js +1 -1
  38. package/dist/core/runner/prepare-ask-lane.d.ts +0 -19
  39. package/dist/core/runner/prepare-ask-lane.js +2 -2
  40. package/dist/core/runner/prepare-inherited-gate.d.ts +2 -0
  41. package/dist/core/runner/prepare-inherited-gate.js +1 -0
  42. package/dist/core/runner/prepare-park-ask.js +3 -3
  43. package/dist/core/runner/prepare-policy-chain.d.ts +12 -0
  44. package/dist/core/runner/prepare-policy-chain.js +10 -9
  45. package/dist/core/runner/prepare-project-context.d.ts +13 -3
  46. package/dist/core/runner/prepare-project-context.js +5 -4
  47. package/dist/core/runner/prepare-task.js +8 -5
  48. package/dist/core/runner/prepare-turn-wiring.d.ts +16 -3
  49. package/dist/core/runner/prepare-turn-wiring.js +19 -18
  50. package/dist/core/runner/run-leg.js +1 -1
  51. package/dist/core/runner/runtask.js +2 -1
  52. package/dist/core/runner-deps.d.ts +11 -0
  53. package/dist/core/skill-grant.d.ts +8 -47
  54. package/dist/core/skill-grant.js +15 -136
  55. package/dist/core/synthetic-read-verdict.d.ts +108 -0
  56. package/dist/core/synthetic-read-verdict.js +111 -0
  57. package/dist/core/task-spec.d.ts +18 -0
  58. package/dist/core/tool-name-readings.d.ts +1 -1
  59. package/dist/core/tool-name-readings.js +1 -1
  60. package/dist/core/tool-policy.d.ts +25 -24
  61. package/dist/core/tool-policy.js +26 -17
  62. package/dist/core/tool-spec.d.ts +7 -0
  63. package/dist/core/trace.d.ts +16 -0
  64. package/dist/index.d.ts +5 -1
  65. package/dist/index.js +4 -0
  66. package/dist/internal/harness-types.d.ts +1 -1
  67. package/dist/tools/fs/dir-entries.d.ts +69 -0
  68. package/dist/tools/fs/dir-entries.js +60 -0
  69. package/dist/tools/fs/fs-pdf.d.ts +7 -11
  70. package/dist/tools/fs/fs-pdf.js +5 -14
  71. package/dist/tools/fs/fs-read.d.ts +173 -2
  72. package/dist/tools/fs/fs-read.js +399 -286
  73. package/dist/tools/fs/image-admission.d.ts +51 -0
  74. package/dist/tools/fs/image-admission.js +36 -0
  75. package/dist/tools/fs/search.js +3 -7
  76. package/package.json +1 -1
  77. package/test/export-surface.snapshot.json +29 -1
  78. package/wire-changes/core@7.41.1.json +159 -0
  79. package/wire-changes/core@7.42.0.json +1107 -0
@@ -0,0 +1,1107 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.42.0",
4
+ "from": "b8c8666207a044498ac37fb36d14304a66ea5a92",
5
+ "to": "bb9acc0d77da51b9c1430a05e630c0265da9a513",
6
+ "added": [
7
+ {
8
+ "name": "ALLOW_ENTRY_INERT_REASONS",
9
+ "kind": "variable",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/allow-entry.ts:36",
13
+ "src/index.ts:1471"
14
+ ],
15
+ "criteriaCovered": false,
16
+ "breaking": false
17
+ },
18
+ {
19
+ "name": "ALLOW_RULE_MEMBERS",
20
+ "kind": "variable",
21
+ "tier": "advanced",
22
+ "at": [
23
+ "src/core/allow-rule-shadow.ts:9",
24
+ "src/index.ts:1472"
25
+ ],
26
+ "criteriaCovered": false,
27
+ "breaking": false
28
+ },
29
+ {
30
+ "name": "AllowEntryGateSeats",
31
+ "kind": "interface",
32
+ "tier": "advanced",
33
+ "at": [
34
+ "src/core/allow-entry.ts:280",
35
+ "src/index.ts:1471"
36
+ ],
37
+ "criteriaCovered": false,
38
+ "breaking": false
39
+ },
40
+ {
41
+ "name": "AllowEntryHit",
42
+ "kind": "interface",
43
+ "tier": "advanced",
44
+ "at": [
45
+ "src/core/allow-entry.ts:266",
46
+ "src/index.ts:1471"
47
+ ],
48
+ "criteriaCovered": false,
49
+ "breaking": false
50
+ },
51
+ {
52
+ "name": "AllowEntryInertReason",
53
+ "kind": "type",
54
+ "tier": "advanced",
55
+ "at": [
56
+ "src/core/allow-entry.ts:37",
57
+ "src/index.ts:1471"
58
+ ],
59
+ "criteriaCovered": false,
60
+ "breaking": false
61
+ },
62
+ {
63
+ "name": "AllowEntryLane",
64
+ "kind": "interface",
65
+ "tier": "advanced",
66
+ "at": [
67
+ "src/core/allow-entry.ts:271",
68
+ "src/index.ts:1471"
69
+ ],
70
+ "criteriaCovered": false,
71
+ "breaking": false
72
+ },
73
+ {
74
+ "name": "AllowRuleMember",
75
+ "kind": "type",
76
+ "tier": "advanced",
77
+ "at": [
78
+ "src/core/allow-rule-shadow.ts:10",
79
+ "src/index.ts:1472"
80
+ ],
81
+ "criteriaCovered": false,
82
+ "breaking": false
83
+ },
84
+ {
85
+ "name": "AllowRuleShadow",
86
+ "kind": "interface",
87
+ "tier": "advanced",
88
+ "at": [
89
+ "src/core/allow-rule-shadow.ts:14",
90
+ "src/index.ts:1472"
91
+ ],
92
+ "criteriaCovered": true,
93
+ "breaking": false
94
+ },
95
+ {
96
+ "name": "CompiledAllowEntry",
97
+ "kind": "type",
98
+ "tier": "advanced",
99
+ "at": [
100
+ "src/core/allow-entry.ts:41",
101
+ "src/index.ts:1471"
102
+ ],
103
+ "criteriaCovered": false,
104
+ "breaking": false
105
+ },
106
+ {
107
+ "name": "compileAllowEntry",
108
+ "kind": "function",
109
+ "tier": "advanced",
110
+ "at": [
111
+ "src/core/allow-entry.ts:61",
112
+ "src/index.ts:1471"
113
+ ],
114
+ "criteriaCovered": false,
115
+ "breaking": false
116
+ },
117
+ {
118
+ "name": "compileAllowList",
119
+ "kind": "function",
120
+ "tier": "advanced",
121
+ "at": [
122
+ "src/core/allow-entry.ts:107",
123
+ "src/index.ts:1471"
124
+ ],
125
+ "criteriaCovered": false,
126
+ "breaking": false
127
+ }
128
+ ],
129
+ "removed": [
130
+ {
131
+ "name": "SKILL_ENTRY_INERT_REASONS",
132
+ "kind": "variable",
133
+ "tier": "advanced",
134
+ "at": [
135
+ "src/core/skill-grant.ts:65",
136
+ "src/index.ts:1470"
137
+ ],
138
+ "breaking": true
139
+ },
140
+ {
141
+ "name": "SkillEntryInertReason",
142
+ "kind": "type",
143
+ "tier": "advanced",
144
+ "at": [
145
+ "src/core/skill-grant.ts:66",
146
+ "src/index.ts:1469"
147
+ ],
148
+ "breaking": true
149
+ }
150
+ ],
151
+ "changed": [],
152
+ "narrowed": [],
153
+ "closedSetMembers": [
154
+ {
155
+ "set": "ADMITTED_IMAGE_MIME_TYPES",
156
+ "at": [
157
+ "src/tools/fs/image-admission.ts:25"
158
+ ],
159
+ "newSet": true,
160
+ "added": [
161
+ "image/gif",
162
+ "image/jpeg",
163
+ "image/png",
164
+ "image/webp"
165
+ ],
166
+ "removed": [],
167
+ "breaking": false,
168
+ "criteriaCovered": false
169
+ },
170
+ {
171
+ "set": "ALLOW_ENTRY_INERT_REASONS",
172
+ "at": [
173
+ "src/core/allow-entry.ts:36"
174
+ ],
175
+ "newSet": true,
176
+ "added": [
177
+ "content_unsupported",
178
+ "domain",
179
+ "grammar",
180
+ "namespace_wildcard",
181
+ "path_pattern",
182
+ "wildcard_all"
183
+ ],
184
+ "removed": [],
185
+ "breaking": false,
186
+ "criteriaCovered": false
187
+ },
188
+ {
189
+ "set": "ALLOW_RULE_MEMBERS",
190
+ "at": [
191
+ "src/core/allow-rule-shadow.ts:9"
192
+ ],
193
+ "newSet": true,
194
+ "added": [
195
+ "deployment",
196
+ "hook",
197
+ "persisted",
198
+ "request",
199
+ "skill"
200
+ ],
201
+ "removed": [],
202
+ "breaking": false,
203
+ "criteriaCovered": false
204
+ },
205
+ {
206
+ "set": "AUTO_STRIPPED_PROGRAMS",
207
+ "at": [
208
+ "src/core/allow-entry.ts:126"
209
+ ],
210
+ "newSet": true,
211
+ "added": [
212
+ "bash",
213
+ "bun run",
214
+ "bunx",
215
+ "deno",
216
+ "env",
217
+ "eval",
218
+ "exec",
219
+ "fish",
220
+ "lua",
221
+ "node",
222
+ "npm run",
223
+ "npx",
224
+ "perl",
225
+ "php",
226
+ "pnpm run",
227
+ "python",
228
+ "python2",
229
+ "python3",
230
+ "ruby",
231
+ "sh",
232
+ "ssh",
233
+ "sudo",
234
+ "tsx",
235
+ "xargs",
236
+ "yarn run",
237
+ "zsh"
238
+ ],
239
+ "removed": [],
240
+ "breaking": false,
241
+ "criteriaCovered": false
242
+ },
243
+ {
244
+ "set": "AllowEntryInertReason",
245
+ "at": [
246
+ "src/core/allow-entry.ts:37",
247
+ "src/index.ts:1471"
248
+ ],
249
+ "newSet": true,
250
+ "added": [
251
+ "content_unsupported",
252
+ "domain",
253
+ "grammar",
254
+ "namespace_wildcard",
255
+ "path_pattern",
256
+ "wildcard_all"
257
+ ],
258
+ "removed": [],
259
+ "breaking": false,
260
+ "criteriaCovered": false
261
+ },
262
+ {
263
+ "set": "AllowEntrySource",
264
+ "at": [
265
+ "src/core/allow-entry.ts:263"
266
+ ],
267
+ "newSet": true,
268
+ "added": [
269
+ "deployment",
270
+ "request"
271
+ ],
272
+ "removed": [],
273
+ "breaking": false,
274
+ "criteriaCovered": false
275
+ },
276
+ {
277
+ "set": "AllowRuleMember",
278
+ "at": [
279
+ "src/core/allow-rule-shadow.ts:10",
280
+ "src/index.ts:1472"
281
+ ],
282
+ "newSet": true,
283
+ "added": [
284
+ "deployment",
285
+ "hook",
286
+ "persisted",
287
+ "request",
288
+ "skill"
289
+ ],
290
+ "removed": [],
291
+ "breaking": false,
292
+ "criteriaCovered": false
293
+ },
294
+ {
295
+ "set": "DecisionReason",
296
+ "at": [
297
+ "src/core/decision-receipt.ts:29",
298
+ "src/core/tool-policy.ts:189",
299
+ "src/index.ts:1429"
300
+ ],
301
+ "newSet": false,
302
+ "added": [
303
+ "deployment_rule",
304
+ "request_rule"
305
+ ],
306
+ "removed": [],
307
+ "breaking": false,
308
+ "criteriaCovered": false
309
+ },
310
+ {
311
+ "set": "ENGINE_NOTICE_CODES",
312
+ "at": [
313
+ "src/core/governance-codes.ts:348"
314
+ ],
315
+ "newSet": false,
316
+ "added": [
317
+ "permission.allowed_tool_not_granted"
318
+ ],
319
+ "removed": [
320
+ "skills.allowed_tool_not_granted"
321
+ ],
322
+ "persistedBy": "none",
323
+ "breaking": true,
324
+ "criteriaCovered": true
325
+ },
326
+ {
327
+ "set": "PermissionRule.behavior",
328
+ "at": [
329
+ "src/core/permission-rules.ts:79"
330
+ ],
331
+ "newSet": false,
332
+ "added": [],
333
+ "removed": [
334
+ "allow"
335
+ ],
336
+ "persistedBy": "none",
337
+ "breaking": true,
338
+ "criteriaCovered": false
339
+ },
340
+ {
341
+ "set": "PermissionRuleIssue.code",
342
+ "at": [
343
+ "src/core/permission-rules.ts:103"
344
+ ],
345
+ "newSet": false,
346
+ "added": [
347
+ "invalid.behavior",
348
+ "invalid.entry_type",
349
+ "unsupported.allow"
350
+ ],
351
+ "removed": [
352
+ "invalid.allow_param_rule",
353
+ "unsupported.bash_prefix",
354
+ "unsupported.file_glob"
355
+ ],
356
+ "breaking": true,
357
+ "criteriaCovered": false
358
+ },
359
+ {
360
+ "set": "READ_OUTCOMES",
361
+ "at": [
362
+ "src/tools/fs/fs-read.ts:83"
363
+ ],
364
+ "newSet": true,
365
+ "added": [
366
+ "attached",
367
+ "not_attached",
368
+ "partial",
369
+ "unchanged"
370
+ ],
371
+ "removed": [],
372
+ "breaking": false,
373
+ "criteriaCovered": false
374
+ },
375
+ {
376
+ "set": "ReadKind",
377
+ "at": [
378
+ "src/tools/fs/fs-read.ts:88"
379
+ ],
380
+ "newSet": true,
381
+ "added": [
382
+ "image",
383
+ "notebook",
384
+ "pdf",
385
+ "text"
386
+ ],
387
+ "removed": [],
388
+ "breaking": false,
389
+ "criteriaCovered": false
390
+ },
391
+ {
392
+ "set": "ReadOutcome",
393
+ "at": [
394
+ "src/tools/fs/fs-read.ts:84"
395
+ ],
396
+ "newSet": true,
397
+ "added": [
398
+ "attached",
399
+ "not_attached",
400
+ "partial",
401
+ "unchanged"
402
+ ],
403
+ "removed": [],
404
+ "breaking": false,
405
+ "criteriaCovered": false
406
+ },
407
+ {
408
+ "set": "SYNTHETIC_READ_LAYERS",
409
+ "at": [
410
+ "src/core/synthetic-read-verdict.ts:61"
411
+ ],
412
+ "newSet": true,
413
+ "added": [
414
+ "caller_policy",
415
+ "inherited_constraint",
416
+ "narrowing",
417
+ "org_rules",
418
+ "persisted_rules",
419
+ "skill_rows"
420
+ ],
421
+ "removed": [],
422
+ "breaking": false,
423
+ "criteriaCovered": false
424
+ },
425
+ {
426
+ "set": "SYNTHETIC_READ_UNANSWERABLE_CAUSES",
427
+ "at": [
428
+ "src/core/synthetic-read-verdict.ts:65"
429
+ ],
430
+ "newSet": true,
431
+ "added": [
432
+ "approval_seat",
433
+ "call_unreadable",
434
+ "org_unavailable",
435
+ "threw",
436
+ "timed_out"
437
+ ],
438
+ "removed": [],
439
+ "breaking": false,
440
+ "criteriaCovered": false
441
+ },
442
+ {
443
+ "set": "SyntheticReadLayer",
444
+ "at": [
445
+ "src/core/synthetic-read-verdict.ts:62"
446
+ ],
447
+ "newSet": true,
448
+ "added": [
449
+ "caller_policy",
450
+ "inherited_constraint",
451
+ "narrowing",
452
+ "org_rules",
453
+ "persisted_rules",
454
+ "skill_rows"
455
+ ],
456
+ "removed": [],
457
+ "breaking": false,
458
+ "criteriaCovered": false
459
+ },
460
+ {
461
+ "set": "SyntheticReadUnanswerableCause",
462
+ "at": [
463
+ "src/core/synthetic-read-verdict.ts:66"
464
+ ],
465
+ "newSet": true,
466
+ "added": [
467
+ "approval_seat",
468
+ "call_unreadable",
469
+ "org_unavailable",
470
+ "threw",
471
+ "timed_out"
472
+ ],
473
+ "removed": [],
474
+ "breaking": false,
475
+ "criteriaCovered": false
476
+ },
477
+ {
478
+ "set": "TraceEvent.kind",
479
+ "at": [
480
+ "src/core/trace.ts:62",
481
+ "src/core/trace.ts:96",
482
+ "src/core/trace.ts:137",
483
+ "src/core/trace.ts:167",
484
+ "src/core/trace.ts:208",
485
+ "src/core/trace.ts:226",
486
+ "src/core/trace.ts:241",
487
+ "src/core/trace.ts:276",
488
+ "src/core/trace.ts:278",
489
+ "src/core/trace.ts:321",
490
+ "src/core/trace.ts:350",
491
+ "src/core/trace.ts:368",
492
+ "src/core/trace.ts:382",
493
+ "src/core/trace.ts:399",
494
+ "src/core/trace.ts:415",
495
+ "src/core/trace.ts:430",
496
+ "src/core/trace.ts:447",
497
+ "src/core/trace.ts:462",
498
+ "src/core/trace.ts:476",
499
+ "src/core/trace.ts:494",
500
+ "src/core/trace.ts:513",
501
+ "src/core/trace.ts:531",
502
+ "src/core/trace.ts:556",
503
+ "src/core/trace.ts:584",
504
+ "src/core/trace.ts:598",
505
+ "src/core/trace.ts:612",
506
+ "src/core/trace.ts:633",
507
+ "src/core/trace.ts:644",
508
+ "src/core/trace.ts:659",
509
+ "src/core/trace.ts:671",
510
+ "src/core/trace.ts:685",
511
+ "src/core/trace.ts:704",
512
+ "src/core/trace.ts:714",
513
+ "src/core/trace.ts:722",
514
+ "src/core/trace.ts:732",
515
+ "src/core/trace.ts:748",
516
+ "src/core/trace.ts:765",
517
+ "src/core/trace.ts:777",
518
+ "src/core/trace.ts:787",
519
+ "src/core/trace.ts:809",
520
+ "src/core/trace.ts:831",
521
+ "src/core/trace.ts:839",
522
+ "src/core/trace.ts:859",
523
+ "src/core/trace.ts:875",
524
+ "src/core/trace.ts:885",
525
+ "src/core/trace.ts:898",
526
+ "src/core/trace.ts:912",
527
+ "src/core/trace.ts:921",
528
+ "src/core/trace.ts:932",
529
+ "src/core/trace.ts:942"
530
+ ],
531
+ "newSet": false,
532
+ "added": [
533
+ "permission.allowed_tools_allowed"
534
+ ],
535
+ "removed": [],
536
+ "breaking": false,
537
+ "criteriaCovered": false
538
+ },
539
+ {
540
+ "set": "TraceEvent.source",
541
+ "at": [
542
+ "src/core/trace.ts:452"
543
+ ],
544
+ "newSet": true,
545
+ "added": [
546
+ "deployment",
547
+ "request"
548
+ ],
549
+ "removed": [],
550
+ "breaking": false,
551
+ "criteriaCovered": false
552
+ }
553
+ ],
554
+ "closedSetsUnreadable": [],
555
+ "typeKeys": [
556
+ {
557
+ "type": "AskRequest",
558
+ "at": [
559
+ "src/core/tool-policy.ts:2820"
560
+ ],
561
+ "added": [
562
+ "allowRuleShadowed"
563
+ ],
564
+ "addedDetail": [
565
+ {
566
+ "key": "allowRuleShadowed",
567
+ "optional": true
568
+ }
569
+ ],
570
+ "addedRequired": [],
571
+ "removed": [
572
+ "persistedRuleShadowed"
573
+ ],
574
+ "breaking": true,
575
+ "criteriaCovered": true
576
+ },
577
+ {
578
+ "type": "PermissionResult",
579
+ "at": [
580
+ "src/core/tool-policy.ts:474"
581
+ ],
582
+ "added": [
583
+ "ask.allowRuleShadowed"
584
+ ],
585
+ "addedDetail": [
586
+ {
587
+ "key": "ask.allowRuleShadowed",
588
+ "optional": true
589
+ }
590
+ ],
591
+ "addedRequired": [],
592
+ "removed": [
593
+ "ask.persistedRuleShadowed"
594
+ ],
595
+ "breaking": true,
596
+ "criteriaCovered": false
597
+ },
598
+ {
599
+ "type": "PreToolUseResult",
600
+ "at": [
601
+ "src/core/hooks.ts:1180"
602
+ ],
603
+ "added": [
604
+ "ask.allowRuleShadowed"
605
+ ],
606
+ "addedDetail": [
607
+ {
608
+ "key": "ask.allowRuleShadowed",
609
+ "optional": true
610
+ }
611
+ ],
612
+ "addedRequired": [],
613
+ "removed": [
614
+ "ask.persistedRuleShadowed"
615
+ ],
616
+ "breaking": true,
617
+ "criteriaCovered": false
618
+ },
619
+ {
620
+ "type": "RiskDescriptor",
621
+ "at": [
622
+ "src/core/checkpoint-store.ts:146"
623
+ ],
624
+ "added": [
625
+ "allowRuleShadowed"
626
+ ],
627
+ "addedDetail": [
628
+ {
629
+ "key": "allowRuleShadowed",
630
+ "optional": true
631
+ }
632
+ ],
633
+ "addedRequired": [],
634
+ "removed": [
635
+ "shadowedRule"
636
+ ],
637
+ "breaking": true,
638
+ "criteriaCovered": false
639
+ },
640
+ {
641
+ "type": "RunInternals",
642
+ "at": [
643
+ "src/core/runner/contracts.ts:1415"
644
+ ],
645
+ "added": [
646
+ "inheritedAllowedTools"
647
+ ],
648
+ "addedDetail": [
649
+ {
650
+ "key": "inheritedAllowedTools",
651
+ "optional": true
652
+ }
653
+ ],
654
+ "addedRequired": [],
655
+ "removed": [],
656
+ "breaking": false,
657
+ "criteriaCovered": false
658
+ },
659
+ {
660
+ "type": "RunnerDeps",
661
+ "at": [
662
+ "src/core/runner-deps.ts:105"
663
+ ],
664
+ "added": [
665
+ "allowedTools"
666
+ ],
667
+ "addedDetail": [
668
+ {
669
+ "key": "allowedTools",
670
+ "optional": true
671
+ }
672
+ ],
673
+ "addedRequired": [],
674
+ "removed": [],
675
+ "breaking": false,
676
+ "criteriaCovered": true
677
+ },
678
+ {
679
+ "type": "TaskSpec",
680
+ "at": [
681
+ "src/core/task-spec.ts:52"
682
+ ],
683
+ "added": [
684
+ "allowedTools"
685
+ ],
686
+ "addedDetail": [
687
+ {
688
+ "key": "allowedTools",
689
+ "optional": true
690
+ }
691
+ ],
692
+ "addedRequired": [],
693
+ "removed": [],
694
+ "breaking": false,
695
+ "criteriaCovered": true
696
+ },
697
+ {
698
+ "type": "ToolExecuteContext",
699
+ "at": [
700
+ "src/core/tool-spec.ts:613"
701
+ ],
702
+ "added": [
703
+ "activeRequestAllowedTools"
704
+ ],
705
+ "addedDetail": [
706
+ {
707
+ "key": "activeRequestAllowedTools",
708
+ "optional": true
709
+ }
710
+ ],
711
+ "addedRequired": [],
712
+ "removed": [],
713
+ "breaking": false,
714
+ "criteriaCovered": false
715
+ },
716
+ {
717
+ "type": "ToolGateInput",
718
+ "at": [
719
+ "src/core/hooks.ts:1470"
720
+ ],
721
+ "via": "runToolGate.ToolGateInput",
722
+ "added": [
723
+ "deploymentAllows",
724
+ "deploymentAllows.onAllowed",
725
+ "requestAllows",
726
+ "requestAllows.onAllowed"
727
+ ],
728
+ "addedDetail": [
729
+ {
730
+ "key": "deploymentAllows",
731
+ "optional": true
732
+ },
733
+ {
734
+ "key": "deploymentAllows.onAllowed",
735
+ "optional": true
736
+ },
737
+ {
738
+ "key": "requestAllows",
739
+ "optional": true
740
+ },
741
+ {
742
+ "key": "requestAllows.onAllowed",
743
+ "optional": true
744
+ }
745
+ ],
746
+ "addedRequired": [],
747
+ "removed": [],
748
+ "breaking": false,
749
+ "criteriaCovered": false
750
+ },
751
+ {
752
+ "type": "TraceEvent",
753
+ "at": [
754
+ "src/core/trace.ts:60"
755
+ ],
756
+ "added": [
757
+ "permission.allowed_tools_allowed.entries",
758
+ "permission.allowed_tools_allowed.kind",
759
+ "permission.allowed_tools_allowed.source",
760
+ "permission.allowed_tools_allowed.taskId",
761
+ "permission.allowed_tools_allowed.toolCallId",
762
+ "permission.allowed_tools_allowed.toolName",
763
+ "permission.allowed_tools_allowed.ts",
764
+ "permission.allowed_tools_allowed.version"
765
+ ],
766
+ "addedDetail": [
767
+ {
768
+ "key": "permission.allowed_tools_allowed.entries",
769
+ "optional": false
770
+ },
771
+ {
772
+ "key": "permission.allowed_tools_allowed.kind",
773
+ "optional": false
774
+ },
775
+ {
776
+ "key": "permission.allowed_tools_allowed.source",
777
+ "optional": false
778
+ },
779
+ {
780
+ "key": "permission.allowed_tools_allowed.taskId",
781
+ "optional": false
782
+ },
783
+ {
784
+ "key": "permission.allowed_tools_allowed.toolCallId",
785
+ "optional": false
786
+ },
787
+ {
788
+ "key": "permission.allowed_tools_allowed.toolName",
789
+ "optional": false
790
+ },
791
+ {
792
+ "key": "permission.allowed_tools_allowed.ts",
793
+ "optional": false
794
+ },
795
+ {
796
+ "key": "permission.allowed_tools_allowed.version",
797
+ "optional": false
798
+ }
799
+ ],
800
+ "addedRequired": [],
801
+ "removed": [],
802
+ "breaking": false,
803
+ "criteriaCovered": false
804
+ }
805
+ ],
806
+ "typeKeysUnreadableArms": [],
807
+ "typeKeysFlattenedCount": 225,
808
+ "signatures": [
809
+ {
810
+ "name": "ToolGateInput.suspendAsk",
811
+ "at": [
812
+ "src/core/hooks.ts:1564"
813
+ ],
814
+ "from": [
815
+ "(req: ToolCallRequest, postHookArgs: unknown, safety?: import(\"./checkpoint-store.js\").SafetyAxis, liveFaceUnavailable?: boolean, realApproval?: import(\"./checkpoint-store.js\").RealApprovalGateBit, shadowedRule?: string, askDecisionReason?: DecisionReason, probeReason?: string, probeCause?: import(\"./checkpoint-store.js\").ProbeCause, segmentCoverage?: readonly import(\"./permission-rule-model.js\").SegmentCoverage[], matchedAskRule?: string, probeMandated?: boolean, carry?: AskCarry): Promise<ToolGateResult[\"suspend\"] | ParkAttemptFailed | undefined>"
816
+ ],
817
+ "to": [
818
+ "(req: ToolCallRequest, postHookArgs: unknown, safety?: import(\"./checkpoint-store.js\").SafetyAxis, liveFaceUnavailable?: boolean, realApproval?: import(\"./checkpoint-store.js\").RealApprovalGateBit, allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[], askDecisionReason?: DecisionReason, probeReason?: string, probeCause?: import(\"./checkpoint-store.js\").ProbeCause, segmentCoverage?: readonly import(\"./permission-rule-model.js\").SegmentCoverage[], matchedAskRule?: string, probeMandated?: boolean, carry?: AskCarry): Promise<ToolGateResult[\"suspend\"] | ParkAttemptFailed | undefined>"
819
+ ],
820
+ "changes": [
821
+ {
822
+ "aspect": "param",
823
+ "detail": "param 6 `allowRuleShadowed` type changed, direction not read: [string -> readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]]",
824
+ "breaking": true,
825
+ "uncertain": true
826
+ }
827
+ ],
828
+ "uncertain": "param 6 `allowRuleShadowed` type changed, direction not read: [string -> readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]] — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
829
+ "breaking": true,
830
+ "criteriaCovered": false
831
+ },
832
+ {
833
+ "name": "buildRiskDescriptor",
834
+ "at": [
835
+ "src/core/checkpoint-store.ts:554"
836
+ ],
837
+ "from": [
838
+ "(input: { toolName: string; args: unknown; safety?: SafetyAxis; shellGated?: boolean; shellGateDoctrine?: ShellGateDoctrine; shadowedRule?: string; probeReason?: string; probeCause?: unknown; }): RiskDescriptor"
839
+ ],
840
+ "to": [
841
+ "(input: { toolName: string; args: unknown; safety?: SafetyAxis; shellGated?: boolean; shellGateDoctrine?: ShellGateDoctrine; allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]; probeReason?: string; probeCause?: unknown; }): RiskDescriptor"
842
+ ],
843
+ "changes": [
844
+ {
845
+ "aspect": "param",
846
+ "detail": "param 1 `input` type changed, direction not read: …ne?: ShellGateDoctrine; [shadowedRule?: string -> allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRu…]; probeReason?: string; …",
847
+ "breaking": true,
848
+ "uncertain": true
849
+ }
850
+ ],
851
+ "uncertain": "param 1 `input` type changed, direction not read: …ne?: ShellGateDoctrine; [shadowedRule?: string -> allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRu…]; probeReason?: string; … — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
852
+ "breaking": true,
853
+ "criteriaCovered": false
854
+ }
855
+ ],
856
+ "declarationMoves": [
857
+ {
858
+ "name": "FileKind",
859
+ "kind": null,
860
+ "onSurface": false,
861
+ "from": [
862
+ "src/engine/harness/types.ts"
863
+ ],
864
+ "to": [
865
+ "src/engine/harness/types.ts",
866
+ "src/internal/harness-types.ts"
867
+ ]
868
+ },
869
+ {
870
+ "name": "normalizeOrgGateVerdict",
871
+ "kind": null,
872
+ "onSurface": false,
873
+ "from": [
874
+ "src/core/gate-lanes.ts",
875
+ "src/core/hooks.ts"
876
+ ],
877
+ "to": [
878
+ "src/core/hooks.ts",
879
+ "src/core/rule-lane-reads.ts"
880
+ ]
881
+ },
882
+ {
883
+ "name": "normalizePersistedRuleHit",
884
+ "kind": "function",
885
+ "onSurface": true,
886
+ "from": [
887
+ "src/core/gate-lanes.ts",
888
+ "src/core/hooks.ts",
889
+ "src/index.ts"
890
+ ],
891
+ "to": [
892
+ "src/core/hooks.ts",
893
+ "src/core/rule-lane-reads.ts",
894
+ "src/index.ts"
895
+ ]
896
+ }
897
+ ],
898
+ "mintMoves": [],
899
+ "criteriaObserves": [
900
+ {
901
+ "kind": "engineNoticeCode",
902
+ "name": "permission.allowed_tool_not_granted",
903
+ "assertions": [
904
+ "G11.a",
905
+ "G14.a"
906
+ ]
907
+ },
908
+ {
909
+ "kind": "taskEventField",
910
+ "name": "steering_injected.source",
911
+ "assertions": [
912
+ "G2.a",
913
+ "G2.b"
914
+ ]
915
+ },
916
+ {
917
+ "kind": "taskEventField",
918
+ "name": "tool_end.gate",
919
+ "assertions": [
920
+ "G5.a",
921
+ "G5.b",
922
+ "G7.a",
923
+ "G13.a",
924
+ "G15.c"
925
+ ]
926
+ },
927
+ {
928
+ "kind": "taskEventField",
929
+ "name": "tool_end.structured",
930
+ "assertions": [
931
+ "G4.a"
932
+ ]
933
+ },
934
+ {
935
+ "kind": "typeMember",
936
+ "name": "AllowRuleShadow.entries",
937
+ "assertions": [
938
+ "G9.a"
939
+ ]
940
+ },
941
+ {
942
+ "kind": "typeMember",
943
+ "name": "AllowRuleShadow.member",
944
+ "assertions": [
945
+ "G9.a"
946
+ ]
947
+ },
948
+ {
949
+ "kind": "typeMember",
950
+ "name": "AskRequest.allowRuleShadowed",
951
+ "assertions": [
952
+ "G7.b",
953
+ "G9.a"
954
+ ]
955
+ },
956
+ {
957
+ "kind": "typeMember",
958
+ "name": "AskRequest.askClass",
959
+ "assertions": [
960
+ "G7.b",
961
+ "G15.c"
962
+ ]
963
+ },
964
+ {
965
+ "kind": "typeMember",
966
+ "name": "AskRequest.denialLimitFallback",
967
+ "assertions": [
968
+ "G10.a"
969
+ ]
970
+ },
971
+ {
972
+ "kind": "typeMember",
973
+ "name": "AskRequest.message",
974
+ "assertions": [
975
+ "G9.b"
976
+ ]
977
+ },
978
+ {
979
+ "kind": "typeMember",
980
+ "name": "PermissionRule.behavior",
981
+ "assertions": [
982
+ "G15.b",
983
+ "G16.b"
984
+ ]
985
+ },
986
+ {
987
+ "kind": "typeMember",
988
+ "name": "PermissionRuleIssue.code",
989
+ "assertions": [
990
+ "G15.a",
991
+ "G15.b",
992
+ "G16.a"
993
+ ]
994
+ },
995
+ {
996
+ "kind": "typeMember",
997
+ "name": "RunnerDeps.allowedTools",
998
+ "assertions": [
999
+ "G6.a",
1000
+ "G12.a"
1001
+ ]
1002
+ },
1003
+ {
1004
+ "kind": "typeMember",
1005
+ "name": "TaskResult.terminal",
1006
+ "assertions": [
1007
+ "G1.a",
1008
+ "G1.b",
1009
+ "G1.c"
1010
+ ]
1011
+ },
1012
+ {
1013
+ "kind": "typeMember",
1014
+ "name": "TaskSpec.allowedTools",
1015
+ "assertions": [
1016
+ "G6.a",
1017
+ "G6.b",
1018
+ "G8.a"
1019
+ ]
1020
+ },
1021
+ {
1022
+ "kind": "typeMember",
1023
+ "name": "TaskSpec.images",
1024
+ "assertions": [
1025
+ "G1.a",
1026
+ "G1.c"
1027
+ ]
1028
+ },
1029
+ {
1030
+ "kind": "typeMember",
1031
+ "name": "TaskSpec.toolPolicy",
1032
+ "assertions": [
1033
+ "G2.a",
1034
+ "G2.c"
1035
+ ]
1036
+ },
1037
+ {
1038
+ "kind": "typeMember",
1039
+ "name": "ToolPolicy.check",
1040
+ "assertions": [
1041
+ "G3.a",
1042
+ "G3.b"
1043
+ ]
1044
+ }
1045
+ ],
1046
+ "consumersHint": {
1047
+ "cli": [
1048
+ "AskRequest",
1049
+ "DecisionReason",
1050
+ "ENGINE_NOTICE_CODES",
1051
+ "PermissionResult",
1052
+ "PermissionRule",
1053
+ "PermissionRuleIssue",
1054
+ "PreToolUseResult",
1055
+ "RiskDescriptor",
1056
+ "RunInternals",
1057
+ "RunnerDeps",
1058
+ "TaskSpec",
1059
+ "ToolExecuteContext",
1060
+ "ToolGateInput",
1061
+ "TraceEvent"
1062
+ ],
1063
+ "server": [
1064
+ "AskRequest",
1065
+ "DecisionReason",
1066
+ "ENGINE_NOTICE_CODES",
1067
+ "PermissionResult",
1068
+ "PermissionRuleIssue",
1069
+ "PreToolUseResult",
1070
+ "RiskDescriptor",
1071
+ "RunInternals",
1072
+ "RunnerDeps",
1073
+ "TaskSpec",
1074
+ "ToolExecuteContext",
1075
+ "ToolGateInput",
1076
+ "TraceEvent",
1077
+ "buildRiskDescriptor"
1078
+ ],
1079
+ "sdk": [
1080
+ "AskRequest",
1081
+ "DecisionReason",
1082
+ "ENGINE_NOTICE_CODES",
1083
+ "PermissionResult",
1084
+ "PermissionRuleIssue",
1085
+ "PreToolUseResult",
1086
+ "RiskDescriptor",
1087
+ "RunnerDeps",
1088
+ "TaskSpec",
1089
+ "TraceEvent"
1090
+ ],
1091
+ "note": "scanned cli@e790a1ca server@4160110a sdk@bc45b50 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it. Ledger files (**/docs/core-consumption/**, **/docs/wire-consumption/**, **/*LEDGER*.json) are not evidence of use — server: 1 name(s) matched ONLY in bookkeeping files and were set aside (PermissionRule)"
1092
+ },
1093
+ "breakingCount": 11,
1094
+ "breakingItems": [
1095
+ "closed set lost members: ENGINE_NOTICE_CODES -skills.allowed_tool_not_granted",
1096
+ "closed set lost members: PermissionRule.behavior -allow",
1097
+ "closed set lost members: PermissionRuleIssue.code -invalid.allow_param_rule,unsupported.bash_prefix,unsupported.file_glob",
1098
+ "export removed: SKILL_ENTRY_INERT_REASONS (variable)",
1099
+ "export removed: SkillEntryInertReason (type)",
1100
+ "signature changed: ToolGateInput.suspendAsk — param 6 `allowRuleShadowed` type changed, direction not read: [string -> readonly import(\"./allow-rule-shadow.js\").AllowRuleShadow[]]",
1101
+ "signature changed: buildRiskDescriptor — param 1 `input` type changed, direction not read: …ne?: ShellGateDoctrine; [shadowedRule?: string -> allowRuleShadowed?: readonly import(\"./allow-rule-shadow.js\").AllowRu…]; probeReason?: string; …",
1102
+ "type lost keys: AskRequest -persistedRuleShadowed",
1103
+ "type lost keys: PermissionResult -ask.persistedRuleShadowed",
1104
+ "type lost keys: PreToolUseResult -ask.persistedRuleShadowed",
1105
+ "type lost keys: RiskDescriptor -shadowedRule"
1106
+ ]
1107
+ }