@sema-agent/core 7.45.0 → 7.47.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.
- package/CHANGELOG.md +298 -1
- package/dist/agents/extra-tool-names.d.ts +65 -0
- package/dist/agents/extra-tool-names.js +124 -0
- package/dist/agents/subagent.d.ts +17 -5
- package/dist/agents/subagent.js +33 -25
- package/dist/agents/tool-filter.d.ts +17 -1
- package/dist/agents/tool-filter.js +7 -0
- package/dist/core/agent-config-dir.d.ts +20 -0
- package/dist/core/agent-config-dir.js +49 -0
- package/dist/core/allow-entry.d.ts +6 -4
- package/dist/core/allow-entry.js +6 -5
- package/dist/core/ask-origin.d.ts +35 -12
- package/dist/core/ask-origin.js +24 -7
- package/dist/core/checkpoint-store.d.ts +39 -2
- package/dist/core/effective-path-target.d.ts +136 -4
- package/dist/core/effective-path-target.js +110 -2
- package/dist/core/engine-notice.d.ts +12 -4
- package/dist/core/gate-fold.js +5 -2
- package/dist/core/gate-lanes.js +11 -4
- package/dist/core/gate-outcome.d.ts +4 -2
- package/dist/core/gate-outcome.js +2 -2
- package/dist/core/governance-codes.d.ts +3 -1
- package/dist/core/governance-codes.js +3 -0
- package/dist/core/hooks.d.ts +3 -0
- package/dist/core/path-rule-binding.d.ts +65 -0
- package/dist/core/path-rule-binding.js +99 -0
- package/dist/core/permission-rule-model.d.ts +59 -24
- package/dist/core/permission-rule-model.js +48 -44
- package/dist/core/permission-rule-provider.d.ts +7 -0
- package/dist/core/permission-rule-provider.js +10 -3
- package/dist/core/permission-rule-store.d.ts +8 -0
- package/dist/core/permission-rule-store.js +6 -2
- package/dist/core/permission-rule-sync.js +2 -2
- package/dist/core/permission-rules.d.ts +26 -45
- package/dist/core/permission-rules.js +77 -57
- package/dist/core/runner/child-tree.d.ts +97 -0
- package/dist/core/runner/child-tree.js +104 -0
- package/dist/core/runner/construction-doors.d.ts +5 -0
- package/dist/core/runner/construction-doors.js +6 -0
- package/dist/core/runner/contracts.d.ts +46 -0
- package/dist/core/runner/gate-exit.d.ts +4 -1
- package/dist/core/runner/gate-exit.js +5 -1
- package/dist/core/runner/permission-rule-lanes.d.ts +34 -25
- package/dist/core/runner/permission-rule-lanes.js +18 -12
- package/dist/core/runner/persisted-path-rows.d.ts +31 -7
- package/dist/core/runner/persisted-path-rows.js +31 -12
- package/dist/core/runner/prepare-ask-lane.d.ts +4 -0
- package/dist/core/runner/prepare-ask-lane.js +4 -2
- package/dist/core/runner/prepare-execution-env.d.ts +5 -2
- package/dist/core/runner/prepare-execution-env.js +10 -3
- package/dist/core/runner/prepare-gate-stations.d.ts +3 -0
- package/dist/core/runner/prepare-gate-stations.js +2 -1
- package/dist/core/runner/prepare-hands-readface.d.ts +8 -4
- package/dist/core/runner/prepare-hands-readface.js +11 -11
- package/dist/core/runner/prepare-inherited-gate.d.ts +8 -1
- package/dist/core/runner/prepare-inherited-gate.js +8 -2
- package/dist/core/runner/prepare-park-ask.d.ts +3 -0
- package/dist/core/runner/prepare-park-ask.js +5 -3
- package/dist/core/runner/prepare-policy-chain.d.ts +14 -2
- package/dist/core/runner/prepare-policy-chain.js +13 -5
- package/dist/core/runner/prepare-suspend-saga.d.ts +10 -0
- package/dist/core/runner/prepare-suspend-saga.js +7 -1
- package/dist/core/runner/prepare-task.js +37 -18
- package/dist/core/runner/prepare-turn-wiring.d.ts +2 -0
- package/dist/core/runner/prepare-turn-wiring.js +2 -1
- package/dist/core/runner/prepare-workspace-restore.d.ts +3 -0
- package/dist/core/runner/prepare-workspace-restore.js +1 -0
- package/dist/core/runner/resume-apply.js +17 -3
- package/dist/core/runner/resume-checkpoint-screen.js +13 -0
- package/dist/core/runner/run-leg.js +5 -1
- package/dist/core/runner/runtask.js +2 -2
- package/dist/core/runner/sub-agent-deny-lists.d.ts +1 -1
- package/dist/core/runner/write-protection-station.d.ts +3 -2
- package/dist/core/runner/write-protection-station.js +1 -0
- package/dist/core/runner-deps.d.ts +14 -0
- package/dist/core/sensitive-path-policy.d.ts +8 -0
- package/dist/core/sensitive-path-policy.js +18 -2
- package/dist/core/shell-wrapper-projection.d.ts +11 -0
- package/dist/core/shell-wrapper-projection.js +56 -0
- package/dist/core/shell-wrapper-table.d.ts +144 -34
- package/dist/core/shell-wrapper-table.js +40 -20
- package/dist/core/synthetic-read-verdict.d.ts +3 -0
- package/dist/core/synthetic-read-verdict.js +3 -1
- package/dist/core/tool-catalog-entries.d.ts +21 -0
- package/dist/core/tool-catalog-entries.js +12 -2
- package/dist/core/tool-face.d.ts +10 -1
- package/dist/core/tool-name-readings.d.ts +8 -0
- package/dist/core/tool-name-readings.js +2 -0
- package/dist/core/tool-policy.d.ts +40 -17
- package/dist/core/tool-policy.js +11 -9
- package/dist/core/tool-registry.d.ts +9 -0
- package/dist/core/tool-registry.js +10 -0
- package/dist/core/tool-spec.d.ts +3 -2
- package/dist/core/write-protect.d.ts +14 -3
- package/dist/core/write-protect.js +41 -10
- package/dist/index.d.ts +6 -4
- package/dist/index.js +5 -3
- package/dist/orchestration/run-spec.js +8 -7
- package/dist/orchestration/workflow.js +1 -1
- package/dist/shell/lex.d.ts +22 -0
- package/dist/shell/lex.js +75 -13
- package/dist/tools/fs/bash-program-position.d.ts +14 -90
- package/dist/tools/fs/bash-program-position.js +41 -74
- package/dist/tools/fs/bash-readonly-classifier.d.ts +17 -444
- package/dist/tools/fs/bash-readonly-classifier.js +169 -1225
- package/dist/tools/fs/index.d.ts +3 -2
- package/dist/tools/fs/program-read-model.d.ts +711 -0
- package/dist/tools/fs/program-read-model.js +1259 -0
- package/dist/tools/fs/program-read-model.rows.d.ts +18 -0
- package/dist/tools/fs/program-read-model.rows.js +624 -0
- package/dist/tools/fs/read-deny-home.d.ts +19 -1
- package/dist/tools/fs/read-deny-home.js +62 -24
- package/dist/tools/fs/read-deny.d.ts +54 -14
- package/dist/tools/fs/read-deny.js +104 -50
- package/dist/tools/fs/removal-targets.d.ts +7 -6
- package/dist/tools/fs/removal-targets.js +34 -24
- package/dist/tools/fs/safety.d.ts +3 -0
- package/dist/tools/fs/safety.js +10 -3
- package/dist/tools/fs/shell-read-argv.d.ts +86 -0
- package/dist/tools/fs/shell-read-argv.js +388 -0
- package/dist/tools/fs/shell-read-bindings.d.ts +300 -0
- package/dist/tools/fs/shell-read-bindings.js +755 -0
- package/dist/tools/fs/shell-read-check.js +23 -15
- package/dist/tools/fs/shell-read-establish.js +82 -8
- package/dist/tools/fs/shell-read-judge.d.ts +11 -1
- package/dist/tools/fs/shell-read-judge.js +9 -1
- package/dist/tools/fs/shell-read-plan.d.ts +33 -8
- package/dist/tools/fs/shell-read-plan.js +309 -407
- package/dist/tools/fs/shell-read-word.d.ts +60 -26
- package/dist/tools/fs/shell-read-word.js +47 -37
- package/dist/tools/fs/shell-read-write-targets.d.ts +15 -64
- package/dist/tools/fs/shell-read-write-targets.js +85 -137
- package/dist/tools/fs/shell-reentry-text.d.ts +136 -6
- package/dist/tools/fs/shell-reentry-text.js +203 -53
- package/dist/tools/monitor.d.ts +3 -3
- package/package.json +1 -1
- package/test/export-surface.snapshot.json +25 -5
- package/wire-changes/core@7.46.0.json +1522 -0
- package/wire-changes/core@7.47.0.json +412 -0
|
@@ -1,10 +1,140 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The shell text a program hands back to the shell: the text a shell program runs INSTEAD of its argv (`sh -c S`,
|
|
3
|
-
* `eval S
|
|
4
|
-
* ({@link codeBodies}). The plan marks a segment carrying either as a shell
|
|
5
|
-
* module is the one reader of which operand that text is.
|
|
3
|
+
* `eval S`, or its standard input where the argv names no script — {@link reentryText}), and the code bodies a builtin
|
|
4
|
+
* keeps AMONG its operands to run later ({@link codeBodies}). The plan marks a segment carrying either as a shell
|
|
5
|
+
* re-entry (`shell-read-plan.ts`); this module is the one reader of which operand — or which input — that text is.
|
|
6
|
+
*/
|
|
7
|
+
import { type LexedSegment, type LexedWord } from "../../shell/lex.js";
|
|
8
|
+
import { type ProgramPosition } from "./bash-program-position.js";
|
|
9
|
+
import type { BoundValue } from "./shell-read-bindings.js";
|
|
10
|
+
/**
|
|
11
|
+
* The code bodies a builtin keeps among its operands, one per body; empty for every other program. The program read
|
|
12
|
+
* model's row says where the body is: the action of a `trap` (its first operand after the options), the value of an
|
|
13
|
+
* `alias` definition, the shell-text option of `mapfile` / `readarray` / `compgen` (`-C`; compgen runs it at once, to
|
|
14
|
+
* list completions). The text is re-entry text as `eval`'s operand is — the segment re-enters the shell, the command's
|
|
15
|
+
* read set is not established, and each body is its own nested plan whose deny hits still refuse (one unreadable body
|
|
16
|
+
* cannot hide another's). What a body does when it runs is not read from the text, so a body of any content asks: a
|
|
17
|
+
* harmless `trap 'echo bye' EXIT` in front of a read asks as `eval 'echo bye'` does. The builtin's own words stay the
|
|
18
|
+
* candidates they are for any unlisted program. An absent body is no re-entry (`trap - SIG` resets, `trap '' SIG`
|
|
19
|
+
* ignores, `mapfile` without `-C`); an EMPTY alias value or `-C` value is still one. Over-reading is the direction
|
|
20
|
+
* taken: a display option (`trap -p SIG`) and a lone operand (`trap SIG`) still count their operand as the body.
|
|
6
21
|
*/
|
|
7
|
-
/** The code bodies a builtin keeps among its operands, one per body; empty for every other program. */
|
|
8
22
|
export declare function codeBodies(basename: string, args: readonly string[]): readonly string[];
|
|
9
|
-
/** The shell text a re-entry program runs:
|
|
10
|
-
|
|
23
|
+
/** The shell text a re-entry program runs, by its row: the shell-text value its walk reads for a shell (`-c`'s), its
|
|
24
|
+
* words joined for `eval`, its non-option words for `parallel`; none for `source` / `.` (a script file operand), for a
|
|
25
|
+
* shell whose first operand (a script file) or `--` comes before any text, or for a program that is no re-entry. Where
|
|
26
|
+
* the argv names no text and the program runs its standard input ({@link scriptSourceOf}: the row runs it unnamed, or
|
|
27
|
+
* the script file named is standard input), the text is `stdin` — one text that may arrive there, as the caller spells it. */
|
|
28
|
+
export declare function reentryText(basename: string, args: readonly string[], stdin?: string): string | undefined;
|
|
29
|
+
/** One argument of the argv a launcher hands the SHELL it runs: a word of the command line passed on as it stands (`at`,
|
|
30
|
+
* its argv index; `from` — only the word's characters from there on, an option value attached to its option word), a word
|
|
31
|
+
* of the launcher's own (`fixed`: the `-c` in front of a text it builds), or a text it builds from several words
|
|
32
|
+
* (`joined`: their argv indices, joined by a space; `escaped` — every character of a word's value but a letter, a digit,
|
|
33
|
+
* `_`, `-` and `$` escaped with a backslash, as `sudo -s` builds its shell's `-c` text). */
|
|
34
|
+
export type LaunchedArg = {
|
|
35
|
+
readonly at: number;
|
|
36
|
+
readonly from?: number;
|
|
37
|
+
} | {
|
|
38
|
+
readonly fixed: string;
|
|
39
|
+
} | {
|
|
40
|
+
readonly joined: readonly number[];
|
|
41
|
+
readonly escaped?: true;
|
|
42
|
+
};
|
|
43
|
+
/** What a launcher that runs a program named by no word of its own runs: `program` — absent, a SHELL named by no word
|
|
44
|
+
* (sudo's, chroot's, the user's login shell `su` runs); `at` — the word naming it (`su -s PROGRAM`, from its `from`-th
|
|
45
|
+
* character where the value is attached to its option word); `spelled` — a program the launcher takes from elsewhere,
|
|
46
|
+
* as a shell spells it (`su -m`: the caller's `"$SHELL"`) — and the argv it hands that program. */
|
|
47
|
+
export interface LaunchedCommand {
|
|
48
|
+
readonly program?: {
|
|
49
|
+
readonly at: number;
|
|
50
|
+
readonly from?: number;
|
|
51
|
+
} | {
|
|
52
|
+
readonly spelled: string;
|
|
53
|
+
};
|
|
54
|
+
readonly args: readonly LaunchedArg[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* What a launcher that runs a program named by no word of its own runs ({@link readProgramPosition}'s `runsShell`: the
|
|
58
|
+
* launcher, and the first word it hands on), one command per reading of the launcher's row where its implementations
|
|
59
|
+
* read it differently; empty when no launcher of the segment runs one. A shell's argv is read by that shell's row
|
|
60
|
+
* ({@link reentryText}, {@link scriptFileAt}): its `-c` text, its script file, else its standard input. By the launcher
|
|
61
|
+
* row (`LauncherSpec`, program-read-model.ts):
|
|
62
|
+
* · no word handed on (`sudo -s`, `chroot DIR`, a bare `su`): the shell is handed nothing;
|
|
63
|
+
* · `shellCommand: "escaped"` (`sudo -s CMD…`): `-c` and the words, escaped and joined;
|
|
64
|
+
* · `shellText: "joined"` (`watch CMD…`): `-c` and the non-option words, joined — and `-c` with each shell-text value
|
|
65
|
+
* attached to its option word (`script -c'CMD'`);
|
|
66
|
+
* · `shellText: "user"` (`su [-] [USER [ARG…]]`): per implementation — its first operand past a lone `-` names the user;
|
|
67
|
+
* one that reads its options anywhere hands `-c TEXT` for each shell-text value of its own (a command each) and its
|
|
68
|
+
* operands after the user, one that stops at the user hands every word after the user. The program is the value of
|
|
69
|
+
* its option of role `command` (`-s PROGRAM`), else the program a selected `names-program` switch takes from the
|
|
70
|
+
* caller's environment (`-m`: `"$SHELL"`), else the user's login shell.
|
|
71
|
+
*/
|
|
72
|
+
export declare function launchedCommands(argv: readonly LexedWord[], pos?: ProgramPosition): readonly LaunchedCommand[];
|
|
73
|
+
/** How a launched command is read: as a SHELL's argv (`shell`: the shell whose row reads it — a program that runs its
|
|
74
|
+
* `-c` text, `sh`, `bash`, `fish`, …, or `sh` for the shell named by no word), as the command line it is (`line`: a
|
|
75
|
+
* program that is no shell, `su -s /bin/rm …`, its words as written, so its expansions are the command line's), or
|
|
76
|
+
* both — a program the text does not spell (`su -s "$X"`, `su -m`: the caller's `"$SHELL"`) may be any program, a shell
|
|
77
|
+
* among them. */
|
|
78
|
+
export declare function launchedReadings(argv: readonly LexedWord[], command: LaunchedCommand): {
|
|
79
|
+
readonly shell?: string;
|
|
80
|
+
readonly line?: string;
|
|
81
|
+
};
|
|
82
|
+
/** What a launcher runs ({@link launchedCommands}, {@link launchedReadings}), as a reader of the command line reads it:
|
|
83
|
+
* each shell's argv in two spellings — `texts` (a word's literal value, else `spell.text`) and `args` (`spell.folded`) —
|
|
84
|
+
* with the argv index each position stands for (`words`), one argv per reading of the values its words may take
|
|
85
|
+
* (`spell.values`, {@link spellLaunched}); the word naming a shell (`su -s /bin/bash`, `programWords`); and each command
|
|
86
|
+
* line a program that is no shell runs (`lines`, once each). */
|
|
87
|
+
export declare function launchedInput(argv: readonly LexedWord[], pos: ProgramPosition, spell: {
|
|
88
|
+
readonly text: (k: number) => string;
|
|
89
|
+
readonly folded: (k: number) => string;
|
|
90
|
+
readonly values: (k: number) => readonly BoundValue[] | undefined;
|
|
91
|
+
}): {
|
|
92
|
+
readonly shells: readonly {
|
|
93
|
+
readonly shell: string;
|
|
94
|
+
readonly texts: readonly string[];
|
|
95
|
+
readonly args: readonly string[];
|
|
96
|
+
readonly words: readonly (number | undefined)[];
|
|
97
|
+
}[];
|
|
98
|
+
readonly programWords: readonly number[];
|
|
99
|
+
readonly lines: readonly string[];
|
|
100
|
+
};
|
|
101
|
+
/** How a reader spells the words of a command line it hands a launched shell ({@link spellLaunched}): `word` — a word as
|
|
102
|
+
* it stands, from its `from`-th character; `values` — for a word the shell rewrites before the launcher sees it, the
|
|
103
|
+
* values it may take where the reader knows them (each one field, or a pattern whose matches are the fields — its parts
|
|
104
|
+
* say which characters the shell expands), `undefined` where it does not; absent — the reader knows none. */
|
|
105
|
+
export interface LaunchedSpelling {
|
|
106
|
+
readonly word: (at: number, from: number) => string;
|
|
107
|
+
readonly values?: (at: number) => readonly BoundValue[] | undefined;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The argv a launched shell is handed ({@link launchedCommands}), spelled as `spell` spells the command line's words — one
|
|
111
|
+
* argv per reading of the values its words may take. A word an escaping launcher joins (`sudo -s CMD…`) is handed as the
|
|
112
|
+
* launcher hands it: each FIELD the command line's shell gives the launcher, escaped ({@link sudoEscaped}) — the field a
|
|
113
|
+
* literal word spells, or each field the shell established for a word it rewrites first (`X='#'; sudo -s rm -r "$X" d`
|
|
114
|
+
* hands `rm -r \# d`: the value is an operand, never a comment), a pattern's literal characters escaped and its pattern
|
|
115
|
+
* characters bare ({@link launchedSpellingOf}). A word whose fields the reader does not know is handed AS WRITTEN: the
|
|
116
|
+
* launched shell re-reads the expansion with the command line's quoting, so the word stays one argument (an unknown there)
|
|
117
|
+
* and its neighbours stay theirs (`"#$Y" d` is never `#$Y d`). A reading gives each distinct word spelling one value — the
|
|
118
|
+
* same word spelled twice expands alike — and words with several values are read in every combination of them (a value in
|
|
119
|
+
* the program's position meets each operand); past {@link LAUNCHED_READINGS_MAX}
|
|
120
|
+
* combinations reading `i` hands each word its `i`-th value (its last where it holds fewer) — every value of every word is
|
|
121
|
+
* still read, the same word spelled twice takes one value per reading as the shell expands it, and the readings stay as
|
|
122
|
+
* many as one word's values: their cost is linear in the command, whatever its length.
|
|
123
|
+
*/
|
|
124
|
+
export declare function spellLaunched(argv: readonly LexedWord[], args: readonly LaunchedArg[], spell: LaunchedSpelling): string[][];
|
|
125
|
+
/** The argv index of the SCRIPT FILE a shell runs where its argv carries no text ({@link scriptSourceOf}). */
|
|
126
|
+
export declare function scriptFileAt(basename: string, args: readonly string[]): number | undefined;
|
|
127
|
+
/** One text that may arrive on a segment's standard input: `from` = its source as written (a here-document's body,
|
|
128
|
+
* `<<<WORD`, `<FILE`, `<&N`, the segment the pipe comes from); `literal` = the text, where the command spells it. */
|
|
129
|
+
export interface StdinText {
|
|
130
|
+
readonly from: string;
|
|
131
|
+
readonly literal?: string;
|
|
132
|
+
}
|
|
133
|
+
/** What may arrive on a segment's standard input: each here-document (its descriptor is not read: every one counts) —
|
|
134
|
+
* its body, literal when quoted or when nothing in it expands — each here-string (literal when its word is), `<` file
|
|
135
|
+
* or `<&` descriptor written to no other descriptor, and the pipe it is reached through (`piped`) unless one of those
|
|
136
|
+
* three replaces it. */
|
|
137
|
+
export declare function stdinTextsOf(segment: LexedSegment, piped: StdinText | undefined): StdinText[];
|
|
138
|
+
/** What one segment (its argv) writes into the pipe after it: the text a printer spells ({@link printedText}) when its
|
|
139
|
+
* program word and every argument are literal, else only the segment as written. */
|
|
140
|
+
export declare function pipedTextOf(segment: LexedSegment, argv: readonly LexedWord[]): StdinText;
|
|
@@ -1,25 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
["readarray", callbacksOf(new Set(["d", "u", "n", "O", "C", "c", "s"]))],
|
|
6
|
-
["compgen", callbacksOf(new Set(["o", "A", "G", "W", "P", "S", "X", "F", "C", "V"]))],
|
|
7
|
-
]);
|
|
1
|
+
import { literalHeredocBody, literalTextOf } from "../../shell/lex.js";
|
|
2
|
+
import { programBasename, readProgramPosition } from "./bash-program-position.js";
|
|
3
|
+
import { implementationsOf, printedText, programRow, readArgRoles, selectedOptions } from "./program-read-model.js";
|
|
4
|
+
import { namesStandardInput } from "./safety.js";
|
|
8
5
|
export function codeBodies(basename, args) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (a === "--") {
|
|
16
|
-
k++;
|
|
17
|
-
break;
|
|
18
|
-
}
|
|
19
|
-
if (!a.startsWith("-") || a === "-")
|
|
20
|
-
break;
|
|
6
|
+
const row = programRow(basename);
|
|
7
|
+
switch (row?.body) {
|
|
8
|
+
case "first-operand": return firstOperandBody(row, args);
|
|
9
|
+
case "assignment-values": return aliasValues(args);
|
|
10
|
+
case "option-values": return shellTextOptionValues(row, args);
|
|
11
|
+
case undefined: return [];
|
|
21
12
|
}
|
|
22
|
-
|
|
13
|
+
}
|
|
14
|
+
function firstOperandBody(row, args) {
|
|
15
|
+
const first = readArgRoles(row, args).find((e) => e.kind === "operand");
|
|
16
|
+
const action = first === undefined ? undefined : args[first.at];
|
|
23
17
|
return action === undefined || action === "" || action === "-" ? [] : [action];
|
|
24
18
|
}
|
|
25
19
|
function aliasValues(args) {
|
|
@@ -31,43 +25,199 @@ function aliasValues(args) {
|
|
|
31
25
|
}
|
|
32
26
|
return values;
|
|
33
27
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!valueLetters.has(a[i]))
|
|
43
|
-
continue;
|
|
44
|
-
const value = i + 1 < a.length ? a.slice(i + 1) : args[++k];
|
|
45
|
-
if (a[i] === "C" && value !== undefined)
|
|
46
|
-
callbacks.push(value);
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return callbacks;
|
|
51
|
-
};
|
|
28
|
+
function shellTextOptionValues(row, args) {
|
|
29
|
+
const callbacks = [];
|
|
30
|
+
for (const e of optionSection(readArgRoles(row, args))) {
|
|
31
|
+
const text = shellTextOf(e, args);
|
|
32
|
+
if (text !== undefined)
|
|
33
|
+
callbacks.push(text);
|
|
34
|
+
}
|
|
35
|
+
return callbacks;
|
|
52
36
|
}
|
|
53
|
-
|
|
54
|
-
|
|
37
|
+
function optionSection(events) {
|
|
38
|
+
const end = events.findIndex((e) => e.kind === "operand" || e.kind === "dash-word-operand" || e.kind === "end-of-options");
|
|
39
|
+
return end === -1 ? [...events] : events.slice(0, end);
|
|
40
|
+
}
|
|
41
|
+
function shellTextOf(e, args) {
|
|
42
|
+
if (e.kind === "value" && e.role?.kind === "shell-text")
|
|
43
|
+
return args[e.at];
|
|
44
|
+
if (e.kind === "option" && typeof e.reading === "object" && e.reading.role?.kind === "shell-text")
|
|
45
|
+
return e.reading.attached;
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
export function reentryText(basename, args, stdin) {
|
|
49
|
+
const row = programRow(basename);
|
|
50
|
+
const r = row?.reentry;
|
|
51
|
+
if (row === undefined || r?.kind !== "shell")
|
|
52
|
+
return undefined;
|
|
53
|
+
const text = argvText(row, r.text, args);
|
|
54
|
+
if (text !== undefined || stdin === undefined)
|
|
55
|
+
return text;
|
|
56
|
+
const source = scriptSourceOf(row, args);
|
|
57
|
+
return (r.stdin === "script" && source.stdin) || (source.file !== undefined && namesStandardInput(args[source.file])) ? stdin : undefined;
|
|
58
|
+
}
|
|
59
|
+
function argvText(row, at, args) {
|
|
60
|
+
if (at === "words")
|
|
55
61
|
return args.length === 0 ? undefined : args.join(" ");
|
|
56
|
-
if (
|
|
62
|
+
if (at === "non-option-words")
|
|
57
63
|
return args.filter((a) => !a.startsWith("-")).join(" ") || undefined;
|
|
58
|
-
if (
|
|
64
|
+
if (at === "file-operand")
|
|
59
65
|
return undefined;
|
|
60
|
-
for (
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
63
|
-
return
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
for (const e of optionSection(readArgRoles(row, args))) {
|
|
67
|
+
const text = shellTextOf(e, args);
|
|
68
|
+
if (text !== undefined)
|
|
69
|
+
return text;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
export function launchedCommands(argv, pos = readProgramPosition(argv)) {
|
|
74
|
+
const runs = pos.refusal?.kind === "control_syntax_at_program_position" ? pos.refusal.runsShell : undefined;
|
|
75
|
+
if (runs === undefined)
|
|
76
|
+
return [];
|
|
77
|
+
const row = programRow(programBasename(argv[runs.launcher].folded));
|
|
78
|
+
const words = argv.slice(runs.from).map((w) => w.folded);
|
|
79
|
+
const at = (k) => runs.from + k;
|
|
80
|
+
if (words.length === 0 || row?.launcher === undefined)
|
|
81
|
+
return [{ args: [] }];
|
|
82
|
+
if (row.launcher.shellText === "user")
|
|
83
|
+
return userCommands(row, words, at);
|
|
84
|
+
if (row.launcher.shellText === "joined") {
|
|
85
|
+
const joined = words.flatMap((w, k) => (w.startsWith("-") ? [] : [at(k)]));
|
|
86
|
+
const attached = readArgRoles(row, words).flatMap((e) => (e.kind === "option" ? roleValue(e, "shell-text", words, at) ?? [] : []));
|
|
87
|
+
const texts = [...(joined.length === 0 ? [] : [{ joined }]), ...attached];
|
|
88
|
+
return texts.length === 0 ? [{ args: [] }] : texts.map((t) => ({ args: [{ fixed: "-c" }, t] }));
|
|
71
89
|
}
|
|
90
|
+
return [{ args: [{ fixed: "-c" }, { joined: words.map((_, k) => at(k)), escaped: true }] }];
|
|
91
|
+
}
|
|
92
|
+
function roleValue(e, kind, words, at) {
|
|
93
|
+
if (e.kind === "value" && e.role?.kind === kind)
|
|
94
|
+
return { at: at(e.at) };
|
|
95
|
+
if (e.kind === "option" && typeof e.reading === "object" && e.reading.role?.kind === kind)
|
|
96
|
+
return { at: at(e.at), from: words[e.at].length - e.reading.attached.length };
|
|
72
97
|
return undefined;
|
|
73
98
|
}
|
|
99
|
+
function userCommands(row, words, at) {
|
|
100
|
+
const out = [];
|
|
101
|
+
const valued = (e, kind) => roleValue(e, kind, words, at);
|
|
102
|
+
for (const view of implementationsOf(row)) {
|
|
103
|
+
const events = readArgRoles(view, words);
|
|
104
|
+
const operands = events.filter((e) => e.kind === "operand");
|
|
105
|
+
const user = (operands[0]?.dash !== undefined ? operands[1] : operands[0])?.at;
|
|
106
|
+
const end = user ?? words.length;
|
|
107
|
+
const stops = view.grammars[0]?.afterFirstOperand === "operands";
|
|
108
|
+
const own = stops ? events.filter((e) => e.at < end) : events;
|
|
109
|
+
const named = own.flatMap((e) => valued(e, "command") ?? []).at(-1);
|
|
110
|
+
const fromEnvironment = selectedOptions(view, stops ? words.slice(0, end) : words, "one-implementation").some((o) => o.mode === "names-program");
|
|
111
|
+
const program = named !== undefined ? { program: named } : fromEnvironment ? { program: { spelled: "\"$SHELL\"" } } : {};
|
|
112
|
+
if (stops) {
|
|
113
|
+
out.push({ ...program, args: user === undefined ? [] : words.slice(user + 1).map((_, k) => ({ at: at(user + 1 + k) })) });
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const rest = operands.filter((e) => user !== undefined && e.at > user).map((e) => ({ at: at(e.at) }));
|
|
117
|
+
const texts = own.flatMap((e) => valued(e, "shell-text") ?? []);
|
|
118
|
+
if (texts.length === 0)
|
|
119
|
+
out.push({ ...program, args: rest });
|
|
120
|
+
for (const text of texts)
|
|
121
|
+
out.push({ ...program, args: [{ fixed: "-c" }, text, ...rest] });
|
|
122
|
+
}
|
|
123
|
+
return out;
|
|
124
|
+
}
|
|
125
|
+
export function launchedReadings(argv, command) {
|
|
126
|
+
const p = command.program;
|
|
127
|
+
if (p === undefined)
|
|
128
|
+
return { shell: "sh" };
|
|
129
|
+
const raw = (k, from = 0) => {
|
|
130
|
+
if (from === 0)
|
|
131
|
+
return argv[k].raw;
|
|
132
|
+
const literal = literalTextOf(argv[k].pieces);
|
|
133
|
+
return literal === undefined ? argv[k].folded.slice(from) : `'${literal.slice(from).replace(/'/g, "'\\''")}'`;
|
|
134
|
+
};
|
|
135
|
+
const line = [("at" in p ? raw(p.at, p.from) : p.spelled), ...command.args.map((a) => ("fixed" in a ? a.fixed : "at" in a ? raw(a.at, a.from) : a.joined.map((k) => raw(k)).join(" ")))].join(" ");
|
|
136
|
+
const literal = "at" in p ? literalTextOf(argv[p.at].pieces)?.slice(p.from ?? 0) : undefined;
|
|
137
|
+
if (literal === undefined)
|
|
138
|
+
return { shell: "sh", line };
|
|
139
|
+
const basename = programBasename(literal);
|
|
140
|
+
const reentry = programRow(basename)?.reentry;
|
|
141
|
+
return reentry?.kind === "shell" && reentry.text === "c-option" ? { shell: basename } : { line };
|
|
142
|
+
}
|
|
143
|
+
export function launchedInput(argv, pos, spell) {
|
|
144
|
+
const spelled = (word) => (args) => spellLaunched(argv, args, { word: (k, from) => word(k).slice(from), values: spell.values });
|
|
145
|
+
const asTexts = spelled(spell.text);
|
|
146
|
+
const asArgs = spelled(spell.folded);
|
|
147
|
+
const lines = new Set();
|
|
148
|
+
const programWords = [];
|
|
149
|
+
const shells = launchedCommands(argv, pos).flatMap((c) => {
|
|
150
|
+
const { shell, line } = launchedReadings(argv, c);
|
|
151
|
+
if (line !== undefined)
|
|
152
|
+
lines.add(line);
|
|
153
|
+
if (shell === undefined)
|
|
154
|
+
return [];
|
|
155
|
+
if (line === undefined && c.program !== undefined && "at" in c.program && c.program.from === undefined)
|
|
156
|
+
programWords.push(c.program.at);
|
|
157
|
+
const words = c.args.map((x) => ("at" in x && x.from === undefined ? x.at : undefined));
|
|
158
|
+
const args = asArgs(c.args);
|
|
159
|
+
return asTexts(c.args).map((texts, i) => ({ shell, texts, args: args[i], words }));
|
|
160
|
+
});
|
|
161
|
+
return { shells, programWords, lines: [...lines] };
|
|
162
|
+
}
|
|
163
|
+
const LAUNCHED_READINGS_MAX = 64;
|
|
164
|
+
function sudoEscaped(field) {
|
|
165
|
+
return field.replace(/[^A-Za-z0-9_$-]/gu, (c) => `\\${c}`);
|
|
166
|
+
}
|
|
167
|
+
function launchedSpellingOf(v) {
|
|
168
|
+
return v.glob === true ? v.parts.map((p) => (p.pattern ? p.text : sudoEscaped(p.text))).join("") : sudoEscaped(v.spelled);
|
|
169
|
+
}
|
|
170
|
+
export function spellLaunched(argv, args, spell) {
|
|
171
|
+
const choicesOf = (k) => {
|
|
172
|
+
const literal = literalTextOf(argv[k].pieces);
|
|
173
|
+
if (literal !== undefined)
|
|
174
|
+
return [sudoEscaped(literal)];
|
|
175
|
+
const values = spell.values?.(k);
|
|
176
|
+
return values === undefined ? [argv[k].raw] : values.map(launchedSpellingOf);
|
|
177
|
+
};
|
|
178
|
+
const choices = new Map(args.flatMap((a) => ("joined" in a && a.escaped === true ? a.joined : [])).map((k) => [k, choicesOf(k)]));
|
|
179
|
+
const distinct = new Map([...choices].map(([k, c]) => [argv[k].raw, c]));
|
|
180
|
+
const combinations = [...distinct.values()].reduce((n, c) => n * c.length, 1);
|
|
181
|
+
const readings = combinations <= LAUNCHED_READINGS_MAX
|
|
182
|
+
? [...distinct].reduce((acc, [w, c]) => acc.flatMap((r) => c.map((x) => new Map(r).set(w, x))), [new Map()]).map((r) => new Map([...choices.keys()].map((k) => [k, r.get(argv[k].raw)])))
|
|
183
|
+
: Array.from({ length: [...choices.values()].reduce((n, c) => Math.max(n, c.length), 1) }, (_, i) => new Map([...choices].map(([k, c]) => [k, c[Math.min(i, c.length - 1)]])));
|
|
184
|
+
return readings.map((reading) => args.map((a) => ("fixed" in a ? a.fixed : "at" in a ? spell.word(a.at, a.from ?? 0) : a.joined.map((k) => (a.escaped === true ? reading.get(k) : spell.word(k, 0))).join(" "))));
|
|
185
|
+
}
|
|
186
|
+
export function scriptFileAt(basename, args) {
|
|
187
|
+
const row = programRow(basename);
|
|
188
|
+
return row?.reentry?.kind === "shell" && argvText(row, row.reentry.text, args) === undefined ? scriptSourceOf(row, args).file : undefined;
|
|
189
|
+
}
|
|
190
|
+
function scriptSourceOf(row, args) {
|
|
191
|
+
const events = readArgRoles(row, args);
|
|
192
|
+
const options = optionSection(events);
|
|
193
|
+
const end = events[options.length]?.at ?? args.length;
|
|
194
|
+
if (selectedOptions(row, args.slice(0, end), "one-implementation").some((o) => o.mode === "interactive"))
|
|
195
|
+
return { stdin: true };
|
|
196
|
+
const first = events.find((e) => e.kind === "operand");
|
|
197
|
+
if (first?.kind !== "operand" || first.dash !== undefined)
|
|
198
|
+
return { stdin: true };
|
|
199
|
+
return { file: first.at, stdin: options.some((e) => e.kind === "option" && e.reading === "speculative") };
|
|
200
|
+
}
|
|
201
|
+
export function stdinTextsOf(segment, piped) {
|
|
202
|
+
const out = [];
|
|
203
|
+
let replacesPipe = false;
|
|
204
|
+
for (const t of segment.tokens) {
|
|
205
|
+
if (t.kind === "heredoc") {
|
|
206
|
+
const literal = t.quoted ? t.body : literalHeredocBody(t.body);
|
|
207
|
+
out.push(literal === undefined ? { from: t.body } : { from: t.body, literal });
|
|
208
|
+
}
|
|
209
|
+
else if (t.kind === "redirect" && (t.fd ?? 0) === 0 && (t.op === "<<<" || t.op === "<" || (t.op === "<&" && t.dup !== "-"))) {
|
|
210
|
+
const literal = t.op === "<<<" && t.target !== undefined ? literalTextOf(t.target.pieces) : undefined;
|
|
211
|
+
out.push({ from: `${t.op}${t.target?.raw ?? t.dup ?? ""}`, ...(literal !== undefined ? { literal } : {}) });
|
|
212
|
+
replacesPipe = true;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return piped === undefined || replacesPipe ? out : [piped, ...out];
|
|
216
|
+
}
|
|
217
|
+
export function pipedTextOf(segment, argv) {
|
|
218
|
+
const from = `${segment.text.trim()} |`;
|
|
219
|
+
const pos = readProgramPosition(argv);
|
|
220
|
+
const program = pos.program;
|
|
221
|
+
const literal = program === undefined || pos.refusal !== undefined || literalTextOf(argv[program.index].pieces) === undefined ? undefined : printedText(programRow(program.basename), argv.slice(program.index + 1).map((w) => literalTextOf(w.pieces)));
|
|
222
|
+
return literal === undefined ? { from } : { from, literal };
|
|
223
|
+
}
|
package/dist/tools/monitor.d.ts
CHANGED
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
* The handle is a first-class m* registry task: TaskOutput serves the re-readable spool, TaskStop stops the
|
|
29
29
|
* watch (design/134 stoppedBy attribution applies automatically).
|
|
30
30
|
*
|
|
31
|
-
* Security posture: `command` is an arbitrary shell script ⇒ effect:"write", same as Bash
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Security posture: `command` is an arbitrary shell script ⇒ effect:"write", same as Bash; the catalog puts Monitor on the
|
|
32
|
+
* SHELL FACE, so the `Bash(<command>)` rules, the shell seat, the read station and the removal guard judge its `command`
|
|
33
|
+
* as they judge Bash's — Monitor is never a policy side-door around a gated Bash.
|
|
34
34
|
*
|
|
35
35
|
* 深对比残差 M17 CLOSED (2026-07-09 live-CC probe, docs/cc-probe-198/live-schema-monitor-worktree-2026-07-09.json):
|
|
36
36
|
* the deep-dive bundle showed a `command? + ws?:{url,protocols}` dual-mode schema; the LIVE current-CC schema is
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_comment": "design/87 L3 — frozen public export surface of src/index.ts (name -> kind). DO NOT edit by hand to silence a red test. A removed/changed entry = a SemVer-BREAKING change; bump MAJOR and update this fixture in the SAME commit (design/87 §4.2 / §5.2). Regenerate via REGEN in test/export-surface.test.ts.",
|
|
3
3
|
"_tierComment": "#435 v1 — machine-readable layering of the public surface: stable = demonstrated by README.md / src/examples; internal = an `Internal`-marked name or a runner/engine deep-subtree declaration (the model seam src/engine/llm is excluded — it is the BYOM contract, not an engine internal); advanced = a supported export the front door does not walk you through. THIS IS AN INITIAL HEURISTIC, derived mechanically and expected to be refined ticket by ticket: no human reviewed these 1700+ entries one by one, and nothing here claims otherwise. Known bias: a short or English-word export name (ok, err, Result, Usage) can match ordinary prose in README.md and land `stable` on a coincidence. Every export MUST carry a tier — a new export with no row fails the gate in export-surface.test.ts.",
|
|
4
|
-
"count":
|
|
4
|
+
"count": 2627,
|
|
5
5
|
"exports": {
|
|
6
6
|
"A2ATaskState": "type",
|
|
7
7
|
"A2ATaskStateReversal": "type",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"ARTIFACT_PUBLISH_CONTEXTS": "variable",
|
|
44
44
|
"ASK_CLASSES": "variable",
|
|
45
45
|
"ASK_EVIDENCE_ABSENCE_VALUES": "variable",
|
|
46
|
+
"ASK_FACES": "variable",
|
|
46
47
|
"ASK_ORIGINS": "variable",
|
|
47
48
|
"ASK_UNRESOLVABLE_CAUSES": "variable",
|
|
48
49
|
"ASK_USER_QUESTION_TOOL_NAME": "variable",
|
|
@@ -142,6 +143,7 @@
|
|
|
142
143
|
"AskDelegationProvenance": "interface",
|
|
143
144
|
"AskEffective": "type",
|
|
144
145
|
"AskEvidenceAbsence": "type",
|
|
146
|
+
"AskFace": "type",
|
|
145
147
|
"AskOrigin": "type",
|
|
146
148
|
"AskOutcome": "type",
|
|
147
149
|
"AskQuestion": "interface",
|
|
@@ -212,6 +214,7 @@
|
|
|
212
214
|
"BeforeWriteHook": "type",
|
|
213
215
|
"BeforeWriteRequest": "interface",
|
|
214
216
|
"BeforeWriteResult": "type",
|
|
217
|
+
"BoundPathRule": "interface",
|
|
215
218
|
"BoundSkillGrants": "interface",
|
|
216
219
|
"Brain": "interface",
|
|
217
220
|
"BrainError": "class",
|
|
@@ -265,6 +268,8 @@
|
|
|
265
268
|
"CacheBreakFinding": "interface",
|
|
266
269
|
"CacheFamily": "type",
|
|
267
270
|
"CacheIdentityElements": "interface",
|
|
271
|
+
"CallTargetReading": "interface",
|
|
272
|
+
"CallTargetView": "type",
|
|
268
273
|
"CascadeAttempt": "interface",
|
|
269
274
|
"CascadeConfig": "interface",
|
|
270
275
|
"CascadeRunResult": "interface",
|
|
@@ -443,6 +448,7 @@
|
|
|
443
448
|
"EMPTY_DURABLE_RULE_PARTITION": "variable",
|
|
444
449
|
"EMPTY_USAGE_WINDOW_RECORD": "variable",
|
|
445
450
|
"ENGINE_AUTHORITY_ENVELOPE_TAGS": "variable",
|
|
451
|
+
"ENGINE_BUILTIN_TOOL_NAMES": "variable",
|
|
446
452
|
"ENGINE_NOTICE_CODES": "variable",
|
|
447
453
|
"ENTER_PLAN_MODE_TOOL_NAME": "variable",
|
|
448
454
|
"ENV_LIFETIME_SUSPEND_MARGIN_MS": "variable",
|
|
@@ -988,6 +994,7 @@
|
|
|
988
994
|
"PathRuleBase": "type",
|
|
989
995
|
"PathRuleBases": "type",
|
|
990
996
|
"PathRuleDenyRow": "interface",
|
|
997
|
+
"PathRuleSpec": "interface",
|
|
991
998
|
"PathTargetReading": "type",
|
|
992
999
|
"PausedCause": "type",
|
|
993
1000
|
"PeerAdmission": "interface",
|
|
@@ -1154,7 +1161,6 @@
|
|
|
1154
1161
|
"REASONING_BUDGET_SHARE": "variable",
|
|
1155
1162
|
"RECALL_CAVEAT": "variable",
|
|
1156
1163
|
"RECOMMENDED_SENSITIVE_PATTERNS": "variable",
|
|
1157
|
-
"RELEASABLE_ASK_CLASSES": "variable",
|
|
1158
1164
|
"REMOTE_HARVEST_PER_FILE_BYTES": "variable",
|
|
1159
1165
|
"REMOTE_MASS_DELETION_FUSE_RATIO": "variable",
|
|
1160
1166
|
"REMOVAL_LIVENESS_WORDS": "variable",
|
|
@@ -1815,6 +1821,7 @@
|
|
|
1815
1821
|
"artifactAttemptId": "function",
|
|
1816
1822
|
"artifactConformanceVectors": "function",
|
|
1817
1823
|
"artifactDeclarations": "function",
|
|
1824
|
+
"askFaceOf": "function",
|
|
1818
1825
|
"askUnresolvableNotice": "function",
|
|
1819
1826
|
"assembleCodeTools": "function",
|
|
1820
1827
|
"assertAdoptionBootGate": "function",
|
|
@@ -2158,6 +2165,7 @@
|
|
|
2158
2165
|
"isDeclaredWrite": "function",
|
|
2159
2166
|
"isDelegatedAgentTerminal": "function",
|
|
2160
2167
|
"isDeniedBy": "function",
|
|
2168
|
+
"isEngineBuiltinToolName": "function",
|
|
2161
2169
|
"isEngineRefusal": "variable",
|
|
2162
2170
|
"isFreshPeerRow": "function",
|
|
2163
2171
|
"isFullyReadable": "function",
|
|
@@ -2403,6 +2411,7 @@
|
|
|
2403
2411
|
"redactSecrets": "function",
|
|
2404
2412
|
"redeemRuleBatch": "function",
|
|
2405
2413
|
"redeemRuleTicket": "function",
|
|
2414
|
+
"releasableAskClassesFor": "function",
|
|
2406
2415
|
"releaseSessionRetainLedger": "function",
|
|
2407
2416
|
"remainingBudgetMicroUsd": "function",
|
|
2408
2417
|
"remainingTokens": "function",
|
|
@@ -2418,6 +2427,7 @@
|
|
|
2418
2427
|
"renderCrossSessionIdleNotice": "function",
|
|
2419
2428
|
"renderCrossSessionMessageFrame": "function",
|
|
2420
2429
|
"renderCrossSessionNoticeLine": "function",
|
|
2430
|
+
"renderListEntry": "function",
|
|
2421
2431
|
"renderNamedWorkflowListing": "function",
|
|
2422
2432
|
"renderTaskNotificationXml": "function",
|
|
2423
2433
|
"renderUntrustedCommandText": "function",
|
|
@@ -2577,7 +2587,7 @@
|
|
|
2577
2587
|
"toolFaceProblem": "function",
|
|
2578
2588
|
"toolIdentityOf": "function",
|
|
2579
2589
|
"toolPolicyNameSets": "function",
|
|
2580
|
-
"
|
|
2590
|
+
"toolPolicyPathRules": "function",
|
|
2581
2591
|
"toolResultContentSegment": "function",
|
|
2582
2592
|
"toolResultProvenanceOf": "function",
|
|
2583
2593
|
"toolResultStoreContract": "function",
|
|
@@ -2662,6 +2672,7 @@
|
|
|
2662
2672
|
"ARTIFACT_PUBLISH_CONTEXTS": "advanced",
|
|
2663
2673
|
"ASK_CLASSES": "advanced",
|
|
2664
2674
|
"ASK_EVIDENCE_ABSENCE_VALUES": "advanced",
|
|
2675
|
+
"ASK_FACES": "advanced",
|
|
2665
2676
|
"ASK_ORIGINS": "advanced",
|
|
2666
2677
|
"ASK_UNRESOLVABLE_CAUSES": "advanced",
|
|
2667
2678
|
"ASK_USER_QUESTION_TOOL_NAME": "advanced",
|
|
@@ -2761,6 +2772,7 @@
|
|
|
2761
2772
|
"AskDelegationProvenance": "advanced",
|
|
2762
2773
|
"AskEffective": "advanced",
|
|
2763
2774
|
"AskEvidenceAbsence": "advanced",
|
|
2775
|
+
"AskFace": "advanced",
|
|
2764
2776
|
"AskOrigin": "advanced",
|
|
2765
2777
|
"AskOutcome": "advanced",
|
|
2766
2778
|
"AskQuestion": "advanced",
|
|
@@ -2831,6 +2843,7 @@
|
|
|
2831
2843
|
"BeforeWriteHook": "stable",
|
|
2832
2844
|
"BeforeWriteRequest": "advanced",
|
|
2833
2845
|
"BeforeWriteResult": "advanced",
|
|
2846
|
+
"BoundPathRule": "advanced",
|
|
2834
2847
|
"BoundSkillGrants": "advanced",
|
|
2835
2848
|
"Brain": "stable",
|
|
2836
2849
|
"BrainError": "advanced",
|
|
@@ -2884,6 +2897,8 @@
|
|
|
2884
2897
|
"CacheBreakFinding": "advanced",
|
|
2885
2898
|
"CacheFamily": "internal",
|
|
2886
2899
|
"CacheIdentityElements": "advanced",
|
|
2900
|
+
"CallTargetReading": "advanced",
|
|
2901
|
+
"CallTargetView": "advanced",
|
|
2887
2902
|
"CascadeAttempt": "advanced",
|
|
2888
2903
|
"CascadeConfig": "advanced",
|
|
2889
2904
|
"CascadeRunResult": "advanced",
|
|
@@ -3062,6 +3077,7 @@
|
|
|
3062
3077
|
"EMPTY_DURABLE_RULE_PARTITION": "advanced",
|
|
3063
3078
|
"EMPTY_USAGE_WINDOW_RECORD": "advanced",
|
|
3064
3079
|
"ENGINE_AUTHORITY_ENVELOPE_TAGS": "advanced",
|
|
3080
|
+
"ENGINE_BUILTIN_TOOL_NAMES": "advanced",
|
|
3065
3081
|
"ENGINE_NOTICE_CODES": "advanced",
|
|
3066
3082
|
"ENTER_PLAN_MODE_TOOL_NAME": "advanced",
|
|
3067
3083
|
"ENV_LIFETIME_SUSPEND_MARGIN_MS": "internal",
|
|
@@ -3607,6 +3623,7 @@
|
|
|
3607
3623
|
"PathRuleBase": "advanced",
|
|
3608
3624
|
"PathRuleBases": "advanced",
|
|
3609
3625
|
"PathRuleDenyRow": "advanced",
|
|
3626
|
+
"PathRuleSpec": "advanced",
|
|
3610
3627
|
"PathTargetReading": "advanced",
|
|
3611
3628
|
"PausedCause": "advanced",
|
|
3612
3629
|
"PeerAdmission": "advanced",
|
|
@@ -3773,7 +3790,6 @@
|
|
|
3773
3790
|
"REASONING_BUDGET_SHARE": "advanced",
|
|
3774
3791
|
"RECALL_CAVEAT": "advanced",
|
|
3775
3792
|
"RECOMMENDED_SENSITIVE_PATTERNS": "advanced",
|
|
3776
|
-
"RELEASABLE_ASK_CLASSES": "advanced",
|
|
3777
3793
|
"REMOTE_HARVEST_PER_FILE_BYTES": "advanced",
|
|
3778
3794
|
"REMOTE_MASS_DELETION_FUSE_RATIO": "advanced",
|
|
3779
3795
|
"REMOVAL_LIVENESS_WORDS": "advanced",
|
|
@@ -4434,6 +4450,7 @@
|
|
|
4434
4450
|
"artifactAttemptId": "advanced",
|
|
4435
4451
|
"artifactConformanceVectors": "advanced",
|
|
4436
4452
|
"artifactDeclarations": "advanced",
|
|
4453
|
+
"askFaceOf": "advanced",
|
|
4437
4454
|
"askUnresolvableNotice": "advanced",
|
|
4438
4455
|
"assembleCodeTools": "advanced",
|
|
4439
4456
|
"assertAdoptionBootGate": "advanced",
|
|
@@ -4777,6 +4794,7 @@
|
|
|
4777
4794
|
"isDeclaredWrite": "advanced",
|
|
4778
4795
|
"isDelegatedAgentTerminal": "advanced",
|
|
4779
4796
|
"isDeniedBy": "advanced",
|
|
4797
|
+
"isEngineBuiltinToolName": "advanced",
|
|
4780
4798
|
"isEngineRefusal": "advanced",
|
|
4781
4799
|
"isFreshPeerRow": "advanced",
|
|
4782
4800
|
"isFullyReadable": "advanced",
|
|
@@ -5022,6 +5040,7 @@
|
|
|
5022
5040
|
"redactSecrets": "advanced",
|
|
5023
5041
|
"redeemRuleBatch": "advanced",
|
|
5024
5042
|
"redeemRuleTicket": "advanced",
|
|
5043
|
+
"releasableAskClassesFor": "advanced",
|
|
5025
5044
|
"releaseSessionRetainLedger": "advanced",
|
|
5026
5045
|
"remainingBudgetMicroUsd": "advanced",
|
|
5027
5046
|
"remainingTokens": "advanced",
|
|
@@ -5037,6 +5056,7 @@
|
|
|
5037
5056
|
"renderCrossSessionIdleNotice": "advanced",
|
|
5038
5057
|
"renderCrossSessionMessageFrame": "advanced",
|
|
5039
5058
|
"renderCrossSessionNoticeLine": "advanced",
|
|
5059
|
+
"renderListEntry": "advanced",
|
|
5040
5060
|
"renderNamedWorkflowListing": "advanced",
|
|
5041
5061
|
"renderTaskNotificationXml": "advanced",
|
|
5042
5062
|
"renderUntrustedCommandText": "advanced",
|
|
@@ -5196,7 +5216,7 @@
|
|
|
5196
5216
|
"toolFaceProblem": "internal",
|
|
5197
5217
|
"toolIdentityOf": "advanced",
|
|
5198
5218
|
"toolPolicyNameSets": "advanced",
|
|
5199
|
-
"
|
|
5219
|
+
"toolPolicyPathRules": "advanced",
|
|
5200
5220
|
"toolResultContentSegment": "advanced",
|
|
5201
5221
|
"toolResultProvenanceOf": "advanced",
|
|
5202
5222
|
"toolResultStoreContract": "advanced",
|