@sema-agent/core 7.31.1 → 7.32.1
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 +75 -0
- package/dist/agents/inherited-tool-pool.d.ts +28 -0
- package/dist/agents/inherited-tool-pool.js +15 -0
- package/dist/agents/list-agents-tool.d.ts +7 -0
- package/dist/agents/list-agents-tool.js +9 -2
- package/dist/agents/peer-session-drain.d.ts +2 -0
- package/dist/agents/peer-session-drain.js +1 -0
- package/dist/agents/send-message-tool.d.ts +17 -0
- package/dist/agents/send-message-tool.js +11 -4
- package/dist/agents/subagent.d.ts +10 -1
- package/dist/agents/subagent.js +24 -8
- package/dist/core/ask-origin.d.ts +15 -6
- package/dist/core/ask-origin.js +15 -9
- package/dist/core/background-shell.d.ts +61 -0
- package/dist/core/background-shell.js +14 -0
- package/dist/core/checkpoint-store.d.ts +5 -0
- package/dist/core/checkpoint-store.js +3 -2
- package/dist/core/engine-notice.d.ts +9 -0
- package/dist/core/gate-lanes.js +1 -1
- package/dist/core/governance-codes.d.ts +1 -1
- package/dist/core/governance-codes.js +4 -0
- package/dist/core/hooks.d.ts +2 -0
- package/dist/core/read-root-grant-screen.d.ts +23 -0
- package/dist/core/read-root-grant-screen.js +17 -0
- package/dist/core/runner/contracts.d.ts +1 -1
- package/dist/core/runner/prepare-artifact.d.ts +12 -7
- package/dist/core/runner/prepare-artifact.js +10 -8
- package/dist/core/runner/prepare-ask-lane.d.ts +3 -0
- package/dist/core/runner/prepare-ask-lane.js +5 -1
- package/dist/core/runner/prepare-boundary-parks.js +5 -5
- package/dist/core/runner/prepare-delegation-surface.d.ts +18 -0
- package/dist/core/runner/prepare-delegation-surface.js +6 -25
- package/dist/core/runner/prepare-hands-readface.d.ts +12 -89
- package/dist/core/runner/prepare-hands-readface.js +14 -48
- package/dist/core/runner/prepare-inherited-gate.d.ts +3 -1
- package/dist/core/runner/prepare-inherited-gate.js +2 -1
- package/dist/core/runner/prepare-park-ask.js +6 -4
- package/dist/core/runner/prepare-policy-chain.js +4 -0
- package/dist/core/runner/prepare-task.js +5 -3
- package/dist/core/runner/read-root-grant.d.ts +66 -0
- package/dist/core/runner/read-root-grant.js +77 -0
- package/dist/core/runner/run-notification-lane.d.ts +1 -1
- package/dist/core/runner/run-settle-and-teardown.js +3 -11
- package/dist/core/runner/runtask.js +1 -1
- package/dist/core/runner/send-message-continuation.d.ts +45 -0
- package/dist/core/runner/send-message-continuation.js +27 -0
- package/dist/core/runner/session-read-file-states.d.ts +91 -0
- package/dist/core/runner/session-read-file-states.js +43 -0
- package/dist/core/store-contracts/checkpoint-store-contract.d.ts +2 -0
- package/dist/core/store-contracts/checkpoint-store-contract.js +19 -0
- package/dist/core/task-registry-monitor.js +3 -0
- package/dist/core/task-registry-shared.d.ts +17 -4
- package/dist/core/task-registry.d.ts +68 -29
- package/dist/core/task-registry.js +78 -28
- package/dist/core/task-spec.d.ts +5 -3
- package/dist/core/tool-policy.d.ts +23 -0
- package/dist/core/tool-policy.js +15 -4
- package/dist/core/tool-spec.d.ts +2 -0
- package/dist/engine/execution-env/node-execution-env.d.ts +13 -3
- package/dist/engine/execution-env/node-execution-env.js +26 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/scenarios/full-body.d.ts +5 -2
- package/dist/scenarios/full-body.js +14 -7
- package/dist/tools/fs/fs-bash-background-text.d.ts +16 -0
- package/dist/tools/fs/fs-bash-background-text.js +22 -0
- package/dist/tools/fs/fs-bash.d.ts +6 -0
- package/dist/tools/fs/fs-bash.js +9 -27
- package/dist/tools/fs/fs-read.d.ts +2 -2
- package/dist/tools/fs/fs-search-tools.d.ts +3 -2
- package/dist/tools/fs/index.d.ts +8 -1
- package/dist/tools/fs/index.js +2 -3
- package/dist/tools/fs/repo-map.d.ts +2 -1
- package/dist/tools/fs/safety.d.ts +3 -1
- package/dist/tools/fs/safety.js +2 -1
- package/dist/tools/fs/shell-read-check.d.ts +3 -0
- package/dist/tools/fs/shell-read-check.js +1 -1
- package/dist/tools/fs/shell-read-establish.d.ts +3 -1
- package/dist/tools/fs/shell-read-establish.js +2 -2
- package/dist/tools/monitor.d.ts +5 -4
- package/dist/tools/monitor.js +5 -4
- package/dist/tools/todo.d.ts +3 -3
- package/dist/tools/todo.js +5 -4
- package/package.json +1 -1
- package/test/export-surface.snapshot.json +13 -1
- package/wire-changes/core@7.32.0.json +850 -0
- package/wire-changes/core@7.32.1.json +78 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AgentTool } from "../../internal/harness-types.js";
|
|
2
2
|
import type { ExecutionEnv } from "../../internal/harness-types.js";
|
|
3
|
+
import { type RootsSeat } from "./safety.js";
|
|
3
4
|
import type { ReadDenyMatcher } from "./read-deny.js";
|
|
4
5
|
import type { ContainmentFace } from "./containment-face.js";
|
|
5
6
|
/** Extract top-level symbol names (deduped, in first-seen order) from source text. A lightweight
|
|
@@ -13,4 +14,4 @@ import type { ContainmentFace } from "./containment-face.js";
|
|
|
13
14
|
* (src/core/auto-promote.ts) consumes it in ESCALATE-ONLY mode — a clean scan contributes nothing;
|
|
14
15
|
* it can only ever raise an escalation, never clear one. */
|
|
15
16
|
export declare function extractSymbols(text: string): string[];
|
|
16
|
-
export declare function createRepoMapTool(env: ExecutionEnv, rootCanonical: string, additionalRoots?:
|
|
17
|
+
export declare function createRepoMapTool(env: ExecutionEnv, rootCanonical: string, additionalRoots?: RootsSeat, readDeny?: ReadDenyMatcher, readFace?: ContainmentFace): AgentTool;
|
|
@@ -434,6 +434,8 @@ export declare function joinForFamily(family: PathFamily, base: string, rel: str
|
|
|
434
434
|
* view's "does the TARGET" — a symlink AT a guarded spelling resolves away from it canonically,
|
|
435
435
|
* and only this view still names it. */
|
|
436
436
|
export declare function lexicalViewOf(spelled: string, base: string): string;
|
|
437
|
+
/** A face's extra containment roots: a fixed list, or a getter over a run's live set (read once per resolution). */
|
|
438
|
+
export type RootsSeat = readonly string[] | (() => readonly string[] | undefined);
|
|
437
439
|
/**
|
|
438
440
|
* Resolve a model-supplied path to a canonical key AND enforce rootPath containment. Existing paths
|
|
439
441
|
* use `canonicalPath` (resolves symlinks, so the same file cannot get two keys). New paths
|
|
@@ -441,7 +443,7 @@ export declare function lexicalViewOf(spelled: string, base: string): string;
|
|
|
441
443
|
* therefore cannot land the target outside root. Returns the canonical key, or a `path_not_in_root`
|
|
442
444
|
* violation. Defense-in-depth at the tool layer; NOT a substitute for a sandboxed `executionEnv`.
|
|
443
445
|
*/
|
|
444
|
-
export declare function resolveKey(env: ExecutionEnv, rootCanonical: string, path: string, signal?: AbortSignal, baseCwd?: string,
|
|
446
|
+
export declare function resolveKey(env: ExecutionEnv, rootCanonical: string, path: string, signal?: AbortSignal, baseCwd?: string, additionalRoots?: RootsSeat, exactFileReadExemption?: (canonicalKey: string) => boolean, readDeny?: {
|
|
445
447
|
matchTarget(canonicalKey: string, lexicalView?: string, opts?: {
|
|
446
448
|
readonly aliasResolved?: boolean;
|
|
447
449
|
}): {
|
package/dist/tools/fs/safety.js
CHANGED
|
@@ -448,11 +448,12 @@ function within(rootCanonical, p) {
|
|
|
448
448
|
return true;
|
|
449
449
|
return pN.identity.startsWith(rootN.identity.endsWith(SEP) ? rootN.identity : rootN.identity + SEP);
|
|
450
450
|
}
|
|
451
|
-
export async function resolveKey(env, rootCanonical, path, signal, baseCwd,
|
|
451
|
+
export async function resolveKey(env, rootCanonical, path, signal, baseCwd, additionalRoots, exactFileReadExemption, readDeny, containmentFace) {
|
|
452
452
|
const canon = await canonicalizeTarget(env, path, signal, pathFamilyOf({ root: rootCanonical }), baseCwd);
|
|
453
453
|
if (!canon.ok)
|
|
454
454
|
return { ok: false, violation: { code: "invalid", message: canon.message } };
|
|
455
455
|
const key = canon.key;
|
|
456
|
+
const additionalRootsCanonical = typeof additionalRoots === "function" ? additionalRoots() : additionalRoots;
|
|
456
457
|
if (isBlockedDevicePath(key)) {
|
|
457
458
|
return { ok: false, violation: { code: "invalid", message: `path "${path}" is a blocked device/special file (reading it can hang the process); refused.` } };
|
|
458
459
|
}
|
|
@@ -89,6 +89,9 @@ export interface ShellReadStationOptions {
|
|
|
89
89
|
readonly boundaryOf: (toolName: string, cwd: string | undefined) => ShellReadBoundary | undefined;
|
|
90
90
|
/** The listed read verbs (decides whether a segment is read by verb slots or word by word). */
|
|
91
91
|
readonly readers?: ReadonlySet<string>;
|
|
92
|
+
/** `true` ⇔ every root `boundaryOf` returns is already a canonical identity (the Runner's): the station never
|
|
93
|
+
* re-resolves one, so a root swapped for a link after it was declared or granted cannot bring in the link's target. */
|
|
94
|
+
readonly rootsCanonical?: boolean;
|
|
92
95
|
}
|
|
93
96
|
/** What a consumer hands {@link judgeShellRead}: the command as written, the environment whose filesystem
|
|
94
97
|
* answers where its words land (symlinks resolved, patterns expanded — a `NodeExecutionEnv` over a real
|
|
@@ -170,7 +170,7 @@ export function createShellReadStation(opts) {
|
|
|
170
170
|
const key = roots.join("\0");
|
|
171
171
|
let e = establishers.get(key);
|
|
172
172
|
if (e === undefined) {
|
|
173
|
-
e = createShellReadEstablisher(opts.env, roots);
|
|
173
|
+
e = createShellReadEstablisher(opts.env, roots, { rootsCanonical: opts.rootsCanonical === true });
|
|
174
174
|
establishers.set(key, e);
|
|
175
175
|
}
|
|
176
176
|
return e;
|
|
@@ -79,4 +79,6 @@ export declare function establishShellReadsLexically(plan: ShellReadPlan, bounda
|
|
|
79
79
|
* as declared (canonical by contract); they are resolved once more per instance because the comparison is
|
|
80
80
|
* against `realpath` output on both sides — an aliased root would otherwise refuse every read under itself.
|
|
81
81
|
*/
|
|
82
|
-
export declare function createShellReadEstablisher(env: ExecutionEnv, readRoots: readonly string[]
|
|
82
|
+
export declare function createShellReadEstablisher(env: ExecutionEnv, readRoots: readonly string[], opts?: {
|
|
83
|
+
readonly rootsCanonical?: boolean;
|
|
84
|
+
}): ShellReadEstablisher;
|
|
@@ -145,14 +145,14 @@ export function establishShellReadsLexically(plan, boundary) {
|
|
|
145
145
|
}
|
|
146
146
|
return { plan, reads, nested, roots: boundary.roots };
|
|
147
147
|
}
|
|
148
|
-
export function createShellReadEstablisher(env, readRoots) {
|
|
148
|
+
export function createShellReadEstablisher(env, readRoots, opts) {
|
|
149
149
|
const lexicalOnly = boundaryIsTheSandbox(env);
|
|
150
150
|
const resolverIsAuthoritative = canonicalPathIsAuthoritative(env);
|
|
151
151
|
const family = pathFamilyOf({ root: readRoots[0] ?? "/" });
|
|
152
152
|
const SEP = family === "posix" ? /\// : /[\\/]/;
|
|
153
153
|
const TRAILING_SEP = family === "posix" ? /\/+$/ : /[\\/]+$/;
|
|
154
154
|
const joinUnder = (dir, name) => `${dir.replace(TRAILING_SEP, "")}/${name}`;
|
|
155
|
-
let rootsOnce;
|
|
155
|
+
let rootsOnce = opts?.rootsCanonical === true ? Promise.resolve(readRoots) : undefined;
|
|
156
156
|
const canonicalRoots = async (signal) => {
|
|
157
157
|
rootsOnce ??= (async () => {
|
|
158
158
|
const out = [];
|
package/dist/tools/monitor.d.ts
CHANGED
|
@@ -73,10 +73,11 @@ export interface MonitorToolOptions {
|
|
|
73
73
|
* spawns a shell command too, so what it runs is what the station judged, re-established before the watch
|
|
74
74
|
* spawns. Absent ⇒ no station judged this mount; nothing is re-established. */
|
|
75
75
|
shellReadAdmission?: ShellReadAdmission;
|
|
76
|
-
/** RB-465-b (HRD-PTL-3 残件): spec-level retain (`TaskSpec.retainBackgroundProcesses`) — the
|
|
77
|
-
* retain
|
|
78
|
-
*
|
|
79
|
-
*
|
|
76
|
+
/** RB-465-b (HRD-PTL-3 残件): spec-level retain (`TaskSpec.retainBackgroundProcesses`) — the task lane of
|
|
77
|
+
* THE retain predicate (`retainsBackgroundProcesses`), OR-composed with the env capability. Read twice,
|
|
78
|
+
* by the same predicate: the persistent-watch receipt's wording, and the row's `retained` mark at
|
|
79
|
+
* registration (so the session reap and the exit-boundary hard face judge the row the way the receipt
|
|
80
|
+
* described it). */
|
|
80
81
|
retainBackgroundProcesses?: boolean;
|
|
81
82
|
/** The task root in the SAME canonical spelling `createBashTool` is built with, so a dead-cwd self-heal
|
|
82
83
|
* lands both tools on one directory. Absent ⇒ the diagnosis says it has no reset target, rather than
|
package/dist/tools/monitor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Type } from "typebox";
|
|
2
2
|
import { defineTool, errorResult } from "../core/tools.js";
|
|
3
|
-
import { hasBackgroundShell } from "../core/background-shell.js";
|
|
3
|
+
import { envDeclaresRetain, hasBackgroundShell, retainsBackgroundProcesses } from "../core/background-shell.js";
|
|
4
4
|
import { MONITOR_DEFAULT_TIMEOUT_MS, MONITOR_MAX_TIMEOUT_MS, } from "../core/task-registry.js";
|
|
5
5
|
import { toolFace } from "../core/tool-catalog-entries.js";
|
|
6
6
|
import { isDeadCwd, diagnoseDeadCwd } from "./fs/dead-cwd.js";
|
|
@@ -101,6 +101,7 @@ export function createMonitorTool(env, opts) {
|
|
|
101
101
|
persistent: isPersistent,
|
|
102
102
|
...(sessionScoped ? { sessionScoped: true } : {}),
|
|
103
103
|
...(isPersistent ? {} : { timeoutMs }),
|
|
104
|
+
...(opts.retainBackgroundProcesses !== undefined ? { retainBackgroundProcesses: opts.retainBackgroundProcesses } : {}),
|
|
104
105
|
...(onNotify !== undefined ? { onEvent: (n) => onNotify(n, { priority: "next" }) } : {}),
|
|
105
106
|
...(opts.timers !== undefined ? { timers: opts.timers } : {}),
|
|
106
107
|
...(opts.batchWindowMs !== undefined ? { batchWindowMs: opts.batchWindowMs } : {}),
|
|
@@ -135,12 +136,12 @@ export function createMonitorTool(env, opts) {
|
|
|
135
136
|
const persistentBudget = bgTimeout !== undefined
|
|
136
137
|
? `the execution environment's background time budget ends the watch after ${bgTimeout}s`
|
|
137
138
|
: `the execution environment's background time budget still applies`;
|
|
138
|
-
const retainedByEnv = env
|
|
139
|
+
const retainedByEnv = envDeclaresRetain(env);
|
|
139
140
|
const retainedBySpec = opts.retainBackgroundProcesses === true;
|
|
140
|
-
const retained = retainedByEnv
|
|
141
|
+
const retained = retainsBackgroundProcesses({ env: retainedByEnv, task: retainedBySpec });
|
|
141
142
|
const persistentAnchor = sessionScoped
|
|
142
143
|
? retained
|
|
143
|
-
? ". This run retains background processes (environment capability or task spec), so
|
|
144
|
+
? ". This run retains background processes (environment capability or task spec), so the watch is retained and " +
|
|
144
145
|
"survives the session's release: only your TaskStop, the command's own exit, or that budget end it."
|
|
145
146
|
: "; it runs until then, until you stop it, or until the session ends."
|
|
146
147
|
: retained
|
package/dist/tools/todo.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ import type { ToolSpec } from "../core/types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* design/102 (K-8 CC full-body) — TodoWrite parity (CONTEXT leg). A private, in-task plan the model rewrites to
|
|
4
4
|
* track multi-step work. State lives in this factory's closure — FRESH per task (each `assembleCodeTools` call
|
|
5
|
-
* makes its own)
|
|
5
|
+
* makes its own), one list per calling session (`ctx.sessionId`; upstream keys it by agent, so an Agent child sharing
|
|
6
|
+
* the instance never replaces the leader's plan); nothing durable, no deps, no egress. `effect:"idempotent"` because
|
|
6
7
|
* re-sending the whole list is repeat-safe. Distinct from `present_plan` (that SUSPENDS for human review); this is
|
|
7
|
-
* the model's own scratch
|
|
8
|
-
* mounted default-on, so it stays INERT for non-full-body runs. (A later slice may project the list to the wire.)
|
|
8
|
+
* the model's own scratch, a RAW {@link ToolSpec} pushed via `spec.tools` — NOT mounted default-on (INERT elsewhere).
|
|
9
9
|
*/
|
|
10
10
|
export declare function createTodoWriteTool(): ToolSpec;
|
package/dist/tools/todo.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Type } from "typebox";
|
|
|
2
2
|
import { errorResult } from "../core/tools.js";
|
|
3
3
|
import { toolFace } from "../core/tool-catalog-entries.js";
|
|
4
4
|
export function createTodoWriteTool() {
|
|
5
|
-
|
|
5
|
+
const lists = new Map();
|
|
6
6
|
return {
|
|
7
7
|
name: "TodoWrite",
|
|
8
8
|
...toolFace("todo-write"),
|
|
@@ -81,9 +81,10 @@ export function createTodoWriteTool() {
|
|
|
81
81
|
activeForm: Type.String({ minLength: 1, description: "Present-continuous form shown while in progress (e.g. \"Running the tests\")." }),
|
|
82
82
|
})),
|
|
83
83
|
}),
|
|
84
|
-
execute: (args) => {
|
|
84
|
+
execute: (args, ctx) => {
|
|
85
|
+
const key = ctx?.sessionId ?? "";
|
|
85
86
|
const shape = (t) => ({ content: t.content, status: t.status, activeForm: t.activeForm });
|
|
86
|
-
const oldTodos =
|
|
87
|
+
const oldTodos = (lists.get(key) ?? []).map(shape);
|
|
87
88
|
const written = args.todos;
|
|
88
89
|
for (let i = 0; i < written.length; i++) {
|
|
89
90
|
const activeForm = written[i].activeForm;
|
|
@@ -96,7 +97,7 @@ export function createTodoWriteTool() {
|
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
const allDone = written.every((t) => t.status === "completed");
|
|
99
|
-
|
|
100
|
+
lists.set(key, allDone ? [] : written);
|
|
100
101
|
const newTodos = written.map(shape);
|
|
101
102
|
const open = written.filter((t) => t.status !== "completed").length;
|
|
102
103
|
return {
|
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": 2484,
|
|
5
5
|
"exports": {
|
|
6
6
|
"A2ATaskState": "type",
|
|
7
7
|
"A2ATaskStateReversal": "type",
|
|
@@ -177,10 +177,12 @@
|
|
|
177
177
|
"BackgroundAgentStoreError": "class",
|
|
178
178
|
"BackgroundAgentUsage": "interface",
|
|
179
179
|
"BackgroundChildEvent": "interface",
|
|
180
|
+
"BackgroundHardKillOutcome": "type",
|
|
180
181
|
"BackgroundPoll": "interface",
|
|
181
182
|
"BackgroundShellCapability": "interface",
|
|
182
183
|
"BackgroundShellError": "class",
|
|
183
184
|
"BackgroundShellErrorCode": "type",
|
|
185
|
+
"BackgroundShellHardKillReceipt": "interface",
|
|
184
186
|
"BackgroundShellId": "type",
|
|
185
187
|
"BackgroundShellStatus": "type",
|
|
186
188
|
"BackgroundSpawnOptions": "type",
|
|
@@ -905,6 +907,7 @@
|
|
|
905
907
|
"PERMISSION_MODE_CLASSES": "variable",
|
|
906
908
|
"PERMISSION_RULE_SYNC_PATH": "variable",
|
|
907
909
|
"PERMISSION_RULE_WRITER": "variable",
|
|
910
|
+
"PERSISTED_RULE_MANDATES": "variable",
|
|
908
911
|
"PLAN_SYSTEM_PROMPT": "variable",
|
|
909
912
|
"PLAN_WHEN_TO_USE": "variable",
|
|
910
913
|
"PREFIX_INPUT_CLASSIFICATION": "variable",
|
|
@@ -1013,6 +1016,7 @@
|
|
|
1013
1016
|
"PersistedRuleCoverage": "interface",
|
|
1014
1017
|
"PersistedRuleHit": "interface",
|
|
1015
1018
|
"PersistedRuleHitRule": "interface",
|
|
1019
|
+
"PersistedRuleMandate": "type",
|
|
1016
1020
|
"PersistedRuleMatch": "type",
|
|
1017
1021
|
"PersistedRuleTool": "type",
|
|
1018
1022
|
"PersistedRuleUnreadable": "interface",
|
|
@@ -1131,6 +1135,7 @@
|
|
|
1131
1135
|
"ReadOnlyFlagArity": "type",
|
|
1132
1136
|
"ReadOnlyShellVerdict": "type",
|
|
1133
1137
|
"ReadRootGrantCandidate": "interface",
|
|
1138
|
+
"ReadRootGrantScreen": "type",
|
|
1134
1139
|
"RealApprovalGateBit": "interface",
|
|
1135
1140
|
"ReasoningFormat": "type",
|
|
1136
1141
|
"ReasoningIntensity": "type",
|
|
@@ -2056,6 +2061,7 @@
|
|
|
2056
2061
|
"isPeerSessionId": "function",
|
|
2057
2062
|
"isPeerSessionProcessAlive": "function",
|
|
2058
2063
|
"isPermissionModeClass": "function",
|
|
2064
|
+
"isPersistedRuleMandate": "function",
|
|
2059
2065
|
"isPersonalScope": "function",
|
|
2060
2066
|
"isProcessLive": "function",
|
|
2061
2067
|
"isProtectedWrite": "function",
|
|
@@ -2657,10 +2663,12 @@
|
|
|
2657
2663
|
"BackgroundAgentStoreError": "advanced",
|
|
2658
2664
|
"BackgroundAgentUsage": "advanced",
|
|
2659
2665
|
"BackgroundChildEvent": "advanced",
|
|
2666
|
+
"BackgroundHardKillOutcome": "advanced",
|
|
2660
2667
|
"BackgroundPoll": "advanced",
|
|
2661
2668
|
"BackgroundShellCapability": "advanced",
|
|
2662
2669
|
"BackgroundShellError": "advanced",
|
|
2663
2670
|
"BackgroundShellErrorCode": "advanced",
|
|
2671
|
+
"BackgroundShellHardKillReceipt": "advanced",
|
|
2664
2672
|
"BackgroundShellId": "advanced",
|
|
2665
2673
|
"BackgroundShellStatus": "advanced",
|
|
2666
2674
|
"BackgroundSpawnOptions": "advanced",
|
|
@@ -3385,6 +3393,7 @@
|
|
|
3385
3393
|
"PERMISSION_MODE_CLASSES": "advanced",
|
|
3386
3394
|
"PERMISSION_RULE_SYNC_PATH": "advanced",
|
|
3387
3395
|
"PERMISSION_RULE_WRITER": "advanced",
|
|
3396
|
+
"PERSISTED_RULE_MANDATES": "advanced",
|
|
3388
3397
|
"PLAN_SYSTEM_PROMPT": "advanced",
|
|
3389
3398
|
"PLAN_WHEN_TO_USE": "advanced",
|
|
3390
3399
|
"PREFIX_INPUT_CLASSIFICATION": "advanced",
|
|
@@ -3493,6 +3502,7 @@
|
|
|
3493
3502
|
"PersistedRuleCoverage": "advanced",
|
|
3494
3503
|
"PersistedRuleHit": "advanced",
|
|
3495
3504
|
"PersistedRuleHitRule": "advanced",
|
|
3505
|
+
"PersistedRuleMandate": "advanced",
|
|
3496
3506
|
"PersistedRuleMatch": "advanced",
|
|
3497
3507
|
"PersistedRuleTool": "advanced",
|
|
3498
3508
|
"PersistedRuleUnreadable": "advanced",
|
|
@@ -3611,6 +3621,7 @@
|
|
|
3611
3621
|
"ReadOnlyFlagArity": "advanced",
|
|
3612
3622
|
"ReadOnlyShellVerdict": "advanced",
|
|
3613
3623
|
"ReadRootGrantCandidate": "advanced",
|
|
3624
|
+
"ReadRootGrantScreen": "advanced",
|
|
3614
3625
|
"RealApprovalGateBit": "advanced",
|
|
3615
3626
|
"ReasoningFormat": "advanced",
|
|
3616
3627
|
"ReasoningIntensity": "advanced",
|
|
@@ -4536,6 +4547,7 @@
|
|
|
4536
4547
|
"isPeerSessionId": "advanced",
|
|
4537
4548
|
"isPeerSessionProcessAlive": "advanced",
|
|
4538
4549
|
"isPermissionModeClass": "advanced",
|
|
4550
|
+
"isPersistedRuleMandate": "advanced",
|
|
4539
4551
|
"isPersonalScope": "advanced",
|
|
4540
4552
|
"isProcessLive": "advanced",
|
|
4541
4553
|
"isProtectedWrite": "advanced",
|