@sema-agent/core 7.17.4 → 7.17.5

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 (35) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/core/runner/prepare-hands-readface.js +10 -8
  3. package/dist/core/tool-catalog-entries.js +1 -1
  4. package/dist/tools/fs/bash-readonly-classifier.d.ts +18 -5
  5. package/dist/tools/fs/bash-readonly-classifier.js +180 -61
  6. package/dist/tools/fs/fs-bash.d.ts +28 -0
  7. package/dist/tools/fs/fs-bash.js +52 -10
  8. package/dist/tools/fs/index.d.ts +13 -0
  9. package/dist/tools/fs/index.js +1 -0
  10. package/package.json +3 -2
  11. package/wire-changes/core@7.10.0.json +739 -0
  12. package/wire-changes/core@7.11.0.json +685 -0
  13. package/wire-changes/core@7.11.1.json +112 -0
  14. package/wire-changes/core@7.11.2.json +73 -0
  15. package/wire-changes/core@7.12.0.json +356 -0
  16. package/wire-changes/core@7.13.0.json +199 -0
  17. package/wire-changes/core@7.14.0.json +578 -0
  18. package/wire-changes/core@7.15.0.json +174 -0
  19. package/wire-changes/core@7.16.0.json +132 -0
  20. package/wire-changes/core@7.17.0.json +1621 -0
  21. package/wire-changes/core@7.17.1.json +139 -0
  22. package/wire-changes/core@7.17.2.json +65 -0
  23. package/wire-changes/core@7.17.3.json +44 -0
  24. package/wire-changes/core@7.17.4.json +52 -0
  25. package/wire-changes/core@7.17.5.json +67 -0
  26. package/wire-changes/core@7.5.0.json +1063 -0
  27. package/wire-changes/core@7.5.1.json +252 -0
  28. package/wire-changes/core@7.5.2.json +418 -0
  29. package/wire-changes/core@7.6.0.json +1243 -0
  30. package/wire-changes/core@7.6.1.json +1130 -0
  31. package/wire-changes/core@7.7.0.json +509 -0
  32. package/wire-changes/core@7.8.0.json +1293 -0
  33. package/wire-changes/core@7.9.0.json +691 -0
  34. package/wire-changes/core@7.9.1.json +518 -0
  35. package/wire-changes/core@7.9.2.json +46 -0
@@ -0,0 +1,174 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.15.0",
4
+ "from": "2835a37e2b956c9f08346117877f68025f68f2a8",
5
+ "to": "v7.15.0",
6
+ "added": [
7
+ {
8
+ "name": "ShellGateDoctrine",
9
+ "kind": "type",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/task-spec.ts:47",
13
+ "src/core/types.ts:22",
14
+ "src/index.ts:3189"
15
+ ],
16
+ "criteriaCovered": false,
17
+ "breaking": false
18
+ },
19
+ {
20
+ "name": "bashReadBoundaryProbe",
21
+ "kind": "function",
22
+ "tier": "advanced",
23
+ "at": [
24
+ "src/index.ts:512",
25
+ "src/tools/fs/fs-bash.ts:376"
26
+ ],
27
+ "criteriaCovered": false,
28
+ "breaking": false
29
+ }
30
+ ],
31
+ "removed": [],
32
+ "changed": [],
33
+ "narrowed": [
34
+ {
35
+ "id": "F1",
36
+ "source": "behaviorFlips.summary",
37
+ "text": "#696 (P1; ruling: follow CC 2.1.250, where the read boundary is a property of the path layer judged on every shell call and the shell doctrine only decides the residual risk) — a behaviour NARROWING on one lane: the read boundary is judged on every Bash/Monitor call under every `shellGate` doctrine: the shell seat installs `bashReadBoundaryProbe` (boundary-only; new export) under absent/\"off\" and `bashReversibilityProbe` (boundary ∘ shape classifier) under \"classify\"; Bash/Monitor carry the \"maybe\" tier and the seat provenance under every doctrine; `RiskDescriptor.shellGateDoctrine` widens to `\"off\" | \"classify\" | \"always\"`. Rules 3 → 2."
38
+ },
39
+ {
40
+ "id": "F2",
41
+ "source": "behaviorFlips.summary",
42
+ "text": "#695 (ruling: match CC 2.1.250 unless a live measurement says otherwise; the measurement showed the engine's unconditional deferral of remote/`defer:true` tools costs +16–20% over inlining) — a NARROWING of a shape consumers could depend on (\"a remote tool is always a placeholder\"): deferred tool disclosure becomes two rules: the caller's literal lists (`deferTools` always deferred, `alwaysLoad` always inline, neither measured) and ONE threshold gate over the engine's own candidates (`ToolSpec.defer:true`, MCP/A2A protocol names, built-in self-declared defer) — open iff their combined inlined size ≥ 10% of the model's context (chars = floor(ctx×0.1)×3), all-or-nothing; `deferMode:\"auto\"` (value domain unchanged) only widens the candidate set to every caller spec under the same gate. MCP resource helpers are never deferred. Rules 8 → 2."
43
+ }
44
+ ],
45
+ "closedSetMembers": [
46
+ {
47
+ "set": "ShellGateDoctrine",
48
+ "at": [
49
+ "src/core/task-spec.ts:47"
50
+ ],
51
+ "newSet": true,
52
+ "added": [
53
+ "always",
54
+ "classify",
55
+ "off"
56
+ ],
57
+ "removed": [],
58
+ "breaking": false,
59
+ "criteriaCovered": false
60
+ }
61
+ ],
62
+ "typeKeys": [],
63
+ "declarationMoves": [
64
+ {
65
+ "name": "classifyDeferred",
66
+ "kind": null,
67
+ "onSurface": false,
68
+ "from": [
69
+ "src/core/runner/tool-disclosure.ts"
70
+ ],
71
+ "to": [
72
+ "src/core/runner/tool-defer-gate.ts"
73
+ ]
74
+ }
75
+ ],
76
+ "mintMoves": [],
77
+ "criteriaObserves": [
78
+ {
79
+ "kind": "taskEventField",
80
+ "name": "tool_end.gate",
81
+ "assertions": [
82
+ "G1.a",
83
+ "G3.a",
84
+ "G6.a",
85
+ "G7.a",
86
+ "G8.a",
87
+ "G12.a"
88
+ ]
89
+ },
90
+ {
91
+ "kind": "taskEventField",
92
+ "name": "tool_end.isError",
93
+ "assertions": [
94
+ "G2.a"
95
+ ]
96
+ },
97
+ {
98
+ "kind": "typeMember",
99
+ "name": "AskRequest.ruleOffersAbsence",
100
+ "assertions": [
101
+ "G1.a",
102
+ "G2.a",
103
+ "G4.a",
104
+ "G5.a",
105
+ "G6.a"
106
+ ]
107
+ },
108
+ {
109
+ "kind": "typeMember",
110
+ "name": "RiskDescriptor.shellGateDoctrine",
111
+ "assertions": [
112
+ "G10.a",
113
+ "G11.a",
114
+ "G21.a"
115
+ ]
116
+ },
117
+ {
118
+ "kind": "typeMember",
119
+ "name": "RunnerDeps.deferMode",
120
+ "assertions": [
121
+ "G17.a",
122
+ "G19.a",
123
+ "G20.a"
124
+ ]
125
+ },
126
+ {
127
+ "kind": "typeMember",
128
+ "name": "RunnerDeps.onError",
129
+ "assertions": [
130
+ "G9.a"
131
+ ]
132
+ },
133
+ {
134
+ "kind": "typeMember",
135
+ "name": "TaskResult.terminal",
136
+ "assertions": [
137
+ "G17.a"
138
+ ]
139
+ },
140
+ {
141
+ "kind": "typeMember",
142
+ "name": "TaskSpec.alwaysLoadTools",
143
+ "assertions": [
144
+ "G15.a"
145
+ ]
146
+ },
147
+ {
148
+ "kind": "typeMember",
149
+ "name": "TaskSpec.deferTools",
150
+ "assertions": [
151
+ "G13.a",
152
+ "G14.a",
153
+ "G16.a",
154
+ "G18.a"
155
+ ]
156
+ },
157
+ {
158
+ "kind": "typeMember",
159
+ "name": "TaskSpec.shellGate",
160
+ "assertions": [
161
+ "G21.a"
162
+ ]
163
+ }
164
+ ],
165
+ "consumersHint": {
166
+ "cli": [],
167
+ "server": [],
168
+ "sdk": [],
169
+ "note": "scanned cli@27ec504d server@b603e2b2 sdk@557dfdf — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
170
+ },
171
+ "breakingCount": 0,
172
+ "breakingItems": [],
173
+ "toResolvedAt": "f470a0190955815e8be90ac7640a5fa3e0a9a027"
174
+ }
@@ -0,0 +1,132 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.16.0",
4
+ "from": "2231946734926d3ab4dcee259d04c0c9fd860887",
5
+ "to": "v7.16.0",
6
+ "added": [
7
+ {
8
+ "name": "isModelPriced",
9
+ "kind": "function",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/pricing.ts:73",
13
+ "src/index.ts:192"
14
+ ],
15
+ "criteriaCovered": false,
16
+ "breaking": false
17
+ },
18
+ {
19
+ "name": "writableRootOf",
20
+ "kind": "function",
21
+ "tier": "advanced",
22
+ "at": [
23
+ "src/core/memory-engine/index.ts:306",
24
+ "src/core/memory-engine/types.ts:391",
25
+ "src/index.ts:1822"
26
+ ],
27
+ "criteriaCovered": false,
28
+ "breaking": false
29
+ }
30
+ ],
31
+ "removed": [],
32
+ "changed": [],
33
+ "narrowed": [
34
+ {
35
+ "id": "F1",
36
+ "source": "behaviorFlips.summary",
37
+ "text": "A behaviour NARROWING on the package surface and on disk: #699 (design/699) — the memory directory layout: every scope's home is `<memoryDir>/<label>` and the memory dir itself is nobody's home. Ten rules become five; a store still in the root-owning layout is moved once, durably, at the first mount (two-phase, marker-resumable). Package surface: `MemorySessionHandle.writableRoot` is `string | null`, `MemoryEngine.readonlyDirNamesUnderRoot` and `scanEntryFiles`'s `exclude` option are removed, `writableRootOf` is added. On disk: `scopes.json` v2 plus four sidecars re-keyed to the ledger form `(scope, rel)`."
38
+ },
39
+ {
40
+ "id": "G9",
41
+ "source": "criteria.title",
42
+ "text": "#699 G9 — a read-only session no longer serves the root owner's model-worded index (declared narrowing)"
43
+ }
44
+ ],
45
+ "closedSetMembers": [
46
+ {
47
+ "set": "SCOPE_REGISTRY_SHAPES",
48
+ "at": [
49
+ "src/core/memory-engine/layout.ts:541"
50
+ ],
51
+ "newSet": true,
52
+ "added": [
53
+ "absent",
54
+ "migrating",
55
+ "v1",
56
+ "v2"
57
+ ],
58
+ "removed": [],
59
+ "breaking": false,
60
+ "criteriaCovered": false
61
+ }
62
+ ],
63
+ "typeKeys": [],
64
+ "declarationMoves": [
65
+ {
66
+ "name": "isModelPriced",
67
+ "kind": "function",
68
+ "onSurface": true,
69
+ "from": [
70
+ "src/core/pricing.ts"
71
+ ],
72
+ "to": [
73
+ "src/core/pricing.ts",
74
+ "src/index.ts"
75
+ ]
76
+ }
77
+ ],
78
+ "mintMoves": [],
79
+ "criteriaObserves": [
80
+ {
81
+ "kind": "taskEventField",
82
+ "name": "tool_end.isError",
83
+ "assertions": [
84
+ "G1.a",
85
+ "G2.a",
86
+ "G5.a",
87
+ "G6.a"
88
+ ]
89
+ },
90
+ {
91
+ "kind": "typeMember",
92
+ "name": "MemorySessionHandle.writableRoot",
93
+ "assertions": [
94
+ "G2.a",
95
+ "G8.a",
96
+ "G9.a"
97
+ ]
98
+ },
99
+ {
100
+ "kind": "typeMember",
101
+ "name": "Model.cost",
102
+ "assertions": [
103
+ "G13.a"
104
+ ]
105
+ },
106
+ {
107
+ "kind": "typeMember",
108
+ "name": "RunnerDeps.onError",
109
+ "assertions": [
110
+ "G1.a",
111
+ "G3.a",
112
+ "G4.a",
113
+ "G5.a",
114
+ "G6.a",
115
+ "G7.a",
116
+ "G8.a",
117
+ "G10.a",
118
+ "G11.a",
119
+ "G12.a"
120
+ ]
121
+ }
122
+ ],
123
+ "consumersHint": {
124
+ "cli": [],
125
+ "server": [],
126
+ "sdk": [],
127
+ "note": "scanned cli@d25a9381 server@a24ff851 sdk@557dfdf — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
128
+ },
129
+ "breakingCount": 0,
130
+ "breakingItems": [],
131
+ "toResolvedAt": "a4bf5545e28f5b64eb8597d48244e6ef4b6c4670"
132
+ }