@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,139 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.17.1",
4
+ "from": "e945d463cc3a40f286160ca48789b727f6fa1fee",
5
+ "to": "v7.17.1",
6
+ "added": [
7
+ {
8
+ "name": "physicalPathOf",
9
+ "kind": "function",
10
+ "tier": "advanced",
11
+ "at": [
12
+ "src/core/physical-path.ts:22",
13
+ "src/index.ts:483"
14
+ ],
15
+ "criteriaCovered": false,
16
+ "breaking": false
17
+ },
18
+ {
19
+ "name": "physicalPathOfExisting",
20
+ "kind": "function",
21
+ "tier": "advanced",
22
+ "at": [
23
+ "src/core/physical-path.ts:50",
24
+ "src/index.ts:483"
25
+ ],
26
+ "criteriaCovered": false,
27
+ "breaking": false
28
+ }
29
+ ],
30
+ "removed": [],
31
+ "changed": [],
32
+ "narrowed": [
33
+ {
34
+ "id": "F1",
35
+ "source": "behaviorFlips.summary",
36
+ "text": "Narrowing — The shell read boundary never vouches a read it did not judge (#737; test [7074] G12 / G14): a read the boundary could not JUDGE — a syntax-refused command that may read, an unresolved operand, an unreadable command name, a launcher or path-prefixed reader, a control word or launcher in front of a `cd` inside a loop body — is MANDATED (one ask no rule can silence) on BOTH shell seats; a glob with no deny judge stays a plain ask."
37
+ },
38
+ {
39
+ "id": "F2",
40
+ "source": "behaviorFlips.summary",
41
+ "text": "Narrowing — The write-side sensitive-path guard refuses what it could not canonicalize (server [7083] ②): a target whose canonicalization was REFUSED (a UNC spelling on a POSIX tree, a symlink escaping the root) is DENIED naming the cause, never allowed by fall-through."
42
+ }
43
+ ],
44
+ "closedSetMembers": [],
45
+ "typeKeys": [
46
+ {
47
+ "type": "CompoundReadonlyVerdict",
48
+ "at": [
49
+ "src/tools/fs/bash-readonly-classifier.ts:631"
50
+ ],
51
+ "added": [
52
+ "refusedWhole"
53
+ ],
54
+ "removed": [],
55
+ "breaking": false,
56
+ "criteriaCovered": false
57
+ }
58
+ ],
59
+ "declarationMoves": [],
60
+ "mintMoves": [],
61
+ "criteriaObserves": [
62
+ {
63
+ "kind": "engineNoticeCode",
64
+ "name": "memory.session_polluted",
65
+ "assertions": [
66
+ "G6.a"
67
+ ]
68
+ },
69
+ {
70
+ "kind": "taskEventField",
71
+ "name": "tool_end.errorCode",
72
+ "assertions": [
73
+ "G2.a"
74
+ ]
75
+ },
76
+ {
77
+ "kind": "taskEventField",
78
+ "name": "turn_end.usageMissing",
79
+ "assertions": [
80
+ "G5.b"
81
+ ]
82
+ },
83
+ {
84
+ "kind": "typeMember",
85
+ "name": "AskRequest.ruleOffersAbsence",
86
+ "assertions": [
87
+ "G1.a",
88
+ "G1.b"
89
+ ]
90
+ },
91
+ {
92
+ "kind": "typeMember",
93
+ "name": "ExecutionEnv.canonicalPath",
94
+ "assertions": [
95
+ "G4.a",
96
+ "G4.b"
97
+ ]
98
+ },
99
+ {
100
+ "kind": "typeMember",
101
+ "name": "MemoryEngine.materialize",
102
+ "assertions": [
103
+ "G5.a"
104
+ ]
105
+ },
106
+ {
107
+ "kind": "typeMember",
108
+ "name": "RunInternals.workflowParkedResume",
109
+ "assertions": [
110
+ "G3.a"
111
+ ]
112
+ },
113
+ {
114
+ "kind": "typeMember",
115
+ "name": "RunWorkflowOptions.checkpointStore",
116
+ "assertions": [
117
+ "G5.d"
118
+ ]
119
+ },
120
+ {
121
+ "kind": "typeMember",
122
+ "name": "WorkflowRun.errorCode",
123
+ "assertions": [
124
+ "G5.c"
125
+ ]
126
+ }
127
+ ],
128
+ "consumersHint": {
129
+ "cli": [],
130
+ "server": [
131
+ "CompoundReadonlyVerdict"
132
+ ],
133
+ "sdk": [],
134
+ "note": "scanned cli@66cd44ed server@cfa2405b sdk@557dfdf — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
135
+ },
136
+ "breakingCount": 0,
137
+ "breakingItems": [],
138
+ "toResolvedAt": "1cb20e749ccc4e1e379f991f622424ea20aa4718"
139
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.17.2",
4
+ "from": "1cb20e749ccc4e1e379f991f622424ea20aa4718",
5
+ "to": "v7.17.2",
6
+ "added": [],
7
+ "removed": [],
8
+ "changed": [],
9
+ "narrowed": [
10
+ {
11
+ "id": "F1",
12
+ "source": "behaviorFlips.summary",
13
+ "text": "Narrowing of the write gate's asks — the directories the prompt advertises as writable feed the write gate's exemption through the request (#749; cli B-102; server S-261): a run whose prompt advertises a memory write home (and a scratchpad) stamps those CANONICAL roots on every policy adjudication as `ToolCallRequest.advertisedWritableRoots`, and `createFsWriteGatePolicy` allows a covered write whose canonical target lies inside one of them — no ask, no second exemption list on the deployment."
14
+ },
15
+ {
16
+ "id": "F2",
17
+ "source": "behaviorFlips.summary",
18
+ "text": "Narrowing corrected — a refused shell command is exempt from the read-boundary mandate only when every part of it is a shape the scan fully understands (#751; test [7111] codex track): a here-document or here-string is a reader's stdin, not a file, so `cat <<'EOF' > out.txt` and `wc -l <<< \"x\"` no longer raise a mandated ask under the default doctrine; everything the scan does not understand mandates."
19
+ }
20
+ ],
21
+ "closedSetMembers": [],
22
+ "typeKeys": [
23
+ {
24
+ "type": "ToolCallRequest",
25
+ "at": [
26
+ "src/core/tool-policy.ts:33"
27
+ ],
28
+ "added": [
29
+ "advertisedWritableRoots"
30
+ ],
31
+ "removed": [],
32
+ "breaking": false,
33
+ "criteriaCovered": true
34
+ }
35
+ ],
36
+ "declarationMoves": [],
37
+ "mintMoves": [],
38
+ "criteriaObserves": [
39
+ {
40
+ "kind": "typeMember",
41
+ "name": "AskRequest.ruleOffersAbsence",
42
+ "assertions": [
43
+ "G2.a"
44
+ ]
45
+ },
46
+ {
47
+ "kind": "typeMember",
48
+ "name": "ToolCallRequest.advertisedWritableRoots",
49
+ "assertions": [
50
+ "G1.a"
51
+ ]
52
+ }
53
+ ],
54
+ "consumersHint": {
55
+ "cli": [],
56
+ "server": [
57
+ "ToolCallRequest"
58
+ ],
59
+ "sdk": [],
60
+ "note": "scanned cli@25ce6655 server@b132e73b sdk@f6ae86f — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
61
+ },
62
+ "breakingCount": 0,
63
+ "breakingItems": [],
64
+ "toResolvedAt": "d6ef7ed0985d53ad982b51998a5bd05ae807e719"
65
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.17.3",
4
+ "from": "d6ef7ed0985d53ad982b51998a5bd05ae807e719",
5
+ "to": "a135321a2f648ada1a2bd82f930f924831d5cc4a",
6
+ "added": [],
7
+ "removed": [],
8
+ "changed": [],
9
+ "narrowed": [
10
+ {
11
+ "id": "F1",
12
+ "source": "behaviorFlips.summary",
13
+ "text": "Narrowing — the read boundary judges EVERY shell segment (#758; test [7138]; B-105 P0): a segment whose program is NOT on the read-only allowlist is judged whole and verb-blind at all three sites — the boundary walk, the standalone containment gate and the refused-command whitelist — so an unlisted program's reads are subject to containment and the sensitive-path deny table exactly as a listed reader's are. The launcher special case is folded into this one rule (named special cases −2; name-table branches 6 → 3)."
14
+ }
15
+ ],
16
+ "closedSetMembers": [],
17
+ "typeKeys": [],
18
+ "declarationMoves": [],
19
+ "mintMoves": [],
20
+ "criteriaObserves": [
21
+ {
22
+ "kind": "typeMember",
23
+ "name": "AskRequest.ruleOffersAbsence",
24
+ "assertions": [
25
+ "G1.a",
26
+ "G2.a",
27
+ "G3.a",
28
+ "G4.a",
29
+ "G5.a",
30
+ "G6.a",
31
+ "G7.a",
32
+ "G8.a"
33
+ ]
34
+ }
35
+ ],
36
+ "consumersHint": {
37
+ "cli": [],
38
+ "server": [],
39
+ "sdk": [],
40
+ "note": "scanned cli@e10eef84 server@feed42cd sdk@f6ae86f — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
41
+ },
42
+ "breakingCount": 0,
43
+ "breakingItems": []
44
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.17.4",
4
+ "from": "a135321a2f648ada1a2bd82f930f924831d5cc4a",
5
+ "to": "dd51253ac702ab232224dac50de33eb0dd09e40f",
6
+ "added": [],
7
+ "removed": [],
8
+ "changed": [],
9
+ "narrowed": [
10
+ {
11
+ "id": "F1",
12
+ "source": "behaviorFlips.summary",
13
+ "text": "Narrowing — an option's ATTACHED payload is a word like any other (#763; the residual 7.17.3 disclosed): the boundary walk judges `-fVALUE` / `-xVALUE`-in-a-cluster / `--flag=VALUE` payloads exactly as positional operands (one lane split, shape filter removed, none added); the short-option cluster is read to its END (digits included); the zero-option reading is offered only where the whole word names a location; a pre-existing win32 hole on the bash_readonly face is closed beside it."
14
+ }
15
+ ],
16
+ "closedSetMembers": [],
17
+ "typeKeys": [],
18
+ "declarationMoves": [],
19
+ "mintMoves": [],
20
+ "criteriaObserves": [
21
+ {
22
+ "kind": "typeMember",
23
+ "name": "AskRequest.ruleOffersAbsence",
24
+ "assertions": [
25
+ "G1.a",
26
+ "G2.a"
27
+ ]
28
+ },
29
+ {
30
+ "kind": "typeMember",
31
+ "name": "CompoundReadonlyVerdict.outOfRootRead",
32
+ "assertions": [
33
+ "G4.a"
34
+ ]
35
+ },
36
+ {
37
+ "kind": "typeMember",
38
+ "name": "CompoundReadonlyVerdict.readDenied",
39
+ "assertions": [
40
+ "G3.a"
41
+ ]
42
+ }
43
+ ],
44
+ "consumersHint": {
45
+ "cli": [],
46
+ "server": [],
47
+ "sdk": [],
48
+ "note": "scanned cli@f7b07c33 server@02266e20 sdk@6910789 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
49
+ },
50
+ "breakingCount": 0,
51
+ "breakingItems": []
52
+ }
@@ -0,0 +1,67 @@
1
+ {
2
+ "repo": "core",
3
+ "version": "7.17.5",
4
+ "from": "dd51253ac702ab232224dac50de33eb0dd09e40f",
5
+ "to": "99b9ef8d61e5b2a67d62ec6a6cdf65e831c4752f",
6
+ "added": [],
7
+ "removed": [],
8
+ "changed": [],
9
+ "narrowed": [
10
+ {
11
+ "id": "F1",
12
+ "source": "behaviorFlips.summary",
13
+ "text": "Narrowing — argv re-entry (#766; test [7178] ①; B-107): a program that turns its STDIN into another program's argv (`xargs`, `parallel`) is judged like a shell re-entry — refused whole, so the boundary asks (mandated) instead of vouching; when the wrapped program is a declared no-path verb the pipeline runs unasked."
14
+ },
15
+ {
16
+ "id": "F2",
17
+ "source": "behaviorFlips.summary",
18
+ "text": "Narrowing — a base move the walk cannot verify (#767; test [7178] ②; B-107): after `cd X` the relative operands of a later segment are judged against BOTH bases (moved and unmoved) unless every connector between that `cd` and the segment is `&&` (the shell itself verifies the move); `;`, `||`, `|`, `&` and unknown connectors leave the move unverified (fail-closed)."
19
+ },
20
+ {
21
+ "id": "F3",
22
+ "source": "behaviorFlips.summary",
23
+ "text": "Narrowing + contract (#768 β/γ; clay C-R37; test [7178] ③): the full Bash face runs the canonical recheck the `bash_readonly` face already had — after the gate allowed and before spawn, every path the lexical verdict accepted (`checkedPaths` + glob patterns) is canonicalized against the READ roots; one that escapes is REFUSED (an error result, `details.type: \"readonly_out_of_root\"`, never an ask — the gate has passed and there is no channel to ask on). The seat's contract is stated as `@contract shell.read_boundary.friction_floor`: the shell read boundary judges what a command TEXT may name (a friction floor); the security boundary is the executionEnv sandbox."
24
+ }
25
+ ],
26
+ "closedSetMembers": [
27
+ {
28
+ "set": "ShellSegmentConnector",
29
+ "at": [
30
+ "src/tools/fs/bash-readonly-classifier.ts:344"
31
+ ],
32
+ "newSet": true,
33
+ "added": [
34
+ "&&",
35
+ ";",
36
+ "start",
37
+ "|",
38
+ "||"
39
+ ],
40
+ "removed": [],
41
+ "breaking": false,
42
+ "criteriaCovered": false
43
+ }
44
+ ],
45
+ "typeKeys": [],
46
+ "declarationMoves": [],
47
+ "mintMoves": [],
48
+ "criteriaObserves": [
49
+ {
50
+ "kind": "typeMember",
51
+ "name": "AskRequest.ruleOffersAbsence",
52
+ "assertions": [
53
+ "G1.a",
54
+ "G2.a",
55
+ "G3.a"
56
+ ]
57
+ }
58
+ ],
59
+ "consumersHint": {
60
+ "cli": [],
61
+ "server": [],
62
+ "sdk": [],
63
+ "note": "scanned cli@846136de server@82cf402c sdk@6910789 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
64
+ },
65
+ "breakingCount": 0,
66
+ "breakingItems": []
67
+ }