@sema-agent/server 7.149.0 → 7.150.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/MIGRATION.md +122 -9
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/USAGE.md +39 -15
- package/dist/approval-card.d.ts +1 -1
- package/dist/approval-gate-currency.d.ts +1 -1
- package/dist/audit.d.ts +1 -1
- package/dist/audit.js +2 -2
- package/dist/background-session-reap.d.ts +1 -1
- package/dist/boot/deferred-sandbox-path-env.d.ts +5 -3
- package/dist/boot/deferred-sandbox-path-env.js +1 -2
- package/dist/boot/parked-revive-gate.d.ts +5 -5
- package/dist/boot/parked-revive-gate.js +2 -3
- package/dist/boot/resolve-spec.d.ts +4 -5
- package/dist/boot/resolve-spec.js +61 -25
- package/dist/boot/retention-lane.d.ts +1 -1
- package/dist/boot/session-faces.js +21 -21
- package/dist/boot/stage-03-store-backend.js +2 -2
- package/dist/boot/stage-06-runners.js +1 -2
- package/dist/boot/stage-07-capability-layer.js +1 -1
- package/dist/boot/stage-10-http-server.d.ts +33 -1
- package/dist/boot/stage-10-http-server.js +9 -4
- package/dist/boot/web-admin.d.ts +1 -1
- package/dist/capability-facts.d.ts +65 -56
- package/dist/capability-facts.js +42 -35
- package/dist/config-catalog.js +1 -1
- package/dist/config-types.d.ts +12 -11
- package/dist/deployment-governance.d.ts +7 -28
- package/dist/deployment-governance.js +1 -14
- package/dist/device-ws-hub.d.ts +1 -0
- package/dist/device-ws-hub.js +64 -28
- package/dist/device-ws-protocol.d.ts +20 -6
- package/dist/device-ws-protocol.js +9 -2
- package/dist/engine-identity.d.ts +7 -1
- package/dist/engine-identity.js +5 -0
- package/dist/field-conflict.d.ts +2 -2
- package/dist/fleet/engine-signal.d.ts +14 -1
- package/dist/fleet/engine-signal.js +5 -1
- package/dist/fleet/fleet-reconciler.d.ts +1 -1
- package/dist/fleet/serving-lease.d.ts +18 -3
- package/dist/fleet/serving-lease.js +81 -35
- package/dist/fleet-client.d.ts +13 -11
- package/dist/fleet-client.js +53 -33
- package/dist/history-anchor.js +1 -1
- package/dist/hitl-delivery.d.ts +1 -3
- package/dist/hitl-delivery.js +1 -1
- package/dist/http/active-run-conflict.d.ts +3 -7
- package/dist/http/active-run-conflict.js +2 -2
- package/dist/http/admission.js +2 -2
- package/dist/http/approval-sweeps.js +2 -1
- package/dist/http/caller-trust.d.ts +2 -2
- package/dist/http/caller-trust.js +3 -3
- package/dist/http/checkpoint-ctx.d.ts +18 -63
- package/dist/http/checkpoint-ctx.js +1 -24
- package/dist/http/claim-heartbeat.d.ts +4 -4
- package/dist/http/claim-heartbeat.js +3 -3
- package/dist/http/dispatch.js +2 -2
- package/dist/http/durable-run-leg.js +4 -4
- package/dist/http/owner-access.d.ts +243 -19
- package/dist/http/owner-access.js +184 -5
- package/dist/http/readiness.d.ts +4 -2
- package/dist/http/resume-ctx-read.js +16 -1
- package/dist/http/resume-legs.js +18 -14
- package/dist/http/route-ctx.d.ts +23 -11
- package/dist/http/routes/a2a-serve.js +15 -14
- package/dist/http/routes/approvals-assistant.d.ts +3 -2
- package/dist/http/routes/approvals-assistant.js +8 -9
- package/dist/http/routes/capabilities.js +4 -3
- package/dist/http/routes/config-catalog.d.ts +1 -1
- package/dist/http/routes/mcp-reconnect.js +2 -2
- package/dist/http/routes/memory-origin.d.ts +1 -1
- package/dist/http/routes/notify-wake.js +2 -3
- package/dist/http/routes/projects.d.ts +1 -0
- package/dist/http/routes/projects.js +5 -3
- package/dist/http/routes/retention-ops.d.ts +1 -1
- package/dist/http/routes/run-permission-mode.d.ts +1 -1
- package/dist/http/routes/run-permission-mode.js +2 -2
- package/dist/http/routes/runs.d.ts +1 -1
- package/dist/http/routes/runs.js +23 -30
- package/dist/http/routes/session-memory-sync.js +4 -5
- package/dist/http/routes/session-sync.js +3 -7
- package/dist/http/routes/sessions.d.ts +1 -1
- package/dist/http/routes/sessions.js +18 -44
- package/dist/http/routes/tasks.js +9 -8
- package/dist/http/routes/trace-usage.js +14 -14
- package/dist/http/routes/workflows.d.ts +1 -0
- package/dist/http/routes/workflows.js +20 -38
- package/dist/http/server.d.ts +8 -4
- package/dist/http/server.js +5 -1
- package/dist/http/stored-body-replay.d.ts +3 -24
- package/dist/http/stored-body-replay.js +2 -12
- package/dist/http/submit-ctx.d.ts +1 -2
- package/dist/http/submit-ctx.js +3 -2
- package/dist/http/submit-replay.d.ts +15 -2
- package/dist/http/submit-replay.js +10 -4
- package/dist/http/wire-types.d.ts +6 -3
- package/dist/leader/endpoint.js +9 -8
- package/dist/leg-facts.d.ts +8 -2
- package/dist/leg-facts.js +1 -0
- package/dist/mcp-authorization-face.d.ts +18 -14
- package/dist/mcp-authorization-face.js +3 -2
- package/dist/memory-store-refusal.d.ts +1 -1
- package/dist/observability/corrupt-read-seat.d.ts +1 -1
- package/dist/observability/fail-open.d.ts +5 -5
- package/dist/observability/fail-open.js +5 -5
- package/dist/observability/logger.d.ts +7 -0
- package/dist/observability/logger.js +3 -1
- package/dist/observability/run-terminal.d.ts +1 -1
- package/dist/owner-faces.d.ts +27 -3
- package/dist/owner-faces.js +2 -0
- package/dist/peer-seat.d.ts +1 -1
- package/dist/peer-seat.js +52 -59
- package/dist/plugins/exec-path-law.d.ts +34 -0
- package/dist/plugins/exec-path-law.js +13 -0
- package/dist/plugins/file-run-store.js +1 -1
- package/dist/plugins/local-checkpoint-store.d.ts +4 -1
- package/dist/plugins/local-checkpoint-store.js +3 -0
- package/dist/plugins/memory-run-store.js +1 -1
- package/dist/plugins/one-time-migrations.d.ts +74 -49
- package/dist/plugins/one-time-migrations.js +134 -69
- package/dist/plugins/pg-pool.js +4 -0
- package/dist/plugins/posix-shell-fs.js +4 -2
- package/dist/plugins/remote-env-adb.js +3 -2
- package/dist/plugins/remote-env-device.js +8 -6
- package/dist/plugins/remote-env-e2b.d.ts +3 -1
- package/dist/plugins/remote-env-e2b.js +11 -8
- package/dist/plugins/remote-env-host.d.ts +1 -1
- package/dist/plugins/remote-env-host.js +20 -11
- package/dist/plugins/remote-env-k8s.js +3 -2
- package/dist/plugins/remote-env-local-docker.js +3 -2
- package/dist/plugins/remote-env-ssh.js +4 -3
- package/dist/plugins/remote-shell.d.ts +3 -1
- package/dist/plugins/remote-shell.js +3 -3
- package/dist/plugins/replica-registration.d.ts +35 -0
- package/dist/plugins/replica-registration.js +48 -0
- package/dist/plugins/retention-lane-store-sql.d.ts +1 -1
- package/dist/plugins/run-store-sql.d.ts +1 -1
- package/dist/plugins/run-store-sql.js +2 -2
- package/dist/plugins/scenario-prefix-switch-m42.d.ts +6 -12
- package/dist/plugins/scenario-prefix-switch-m42.js +7 -5
- package/dist/plugins/schema-consistency.d.ts +7 -5
- package/dist/plugins/schema-consistency.js +29 -16
- package/dist/plugins/schema-drift-sentence.js +1 -1
- package/dist/plugins/serving-requirement.d.ts +49 -0
- package/dist/plugins/serving-requirement.js +53 -0
- package/dist/plugins/stop-then-start-sentence.d.ts +42 -3
- package/dist/plugins/stop-then-start-sentence.js +44 -0
- package/dist/plugins/store-backend.d.ts +1 -1
- package/dist/plugins/store-contracts.d.ts +12 -2
- package/dist/plugins/store-contracts.js +3 -0
- package/dist/plugins/tidb-pool.js +4 -0
- package/dist/process-instance.d.ts +3 -0
- package/dist/process-instance.js +7 -0
- package/dist/project-context.d.ts +66 -0
- package/dist/project-context.js +70 -0
- package/dist/question.d.ts +9 -21
- package/dist/question.js +28 -19
- package/dist/run-cancel-card.d.ts +1 -1
- package/dist/run-cancel-card.js +2 -1
- package/dist/security.d.ts +1 -1
- package/dist/session-agent.d.ts +1 -10
- package/dist/session-agent.js +0 -6
- package/dist/session-incarnation.d.ts +18 -4
- package/dist/session-incarnation.js +4 -1
- package/dist/session-notify-door.d.ts +4 -4
- package/dist/session-notify-door.js +5 -6
- package/dist/session-rules-seat.d.ts +4 -3
- package/dist/session-rules-seat.js +3 -11
- package/dist/session-sync.js +3 -3
- package/dist/stores-sql/checkpoint-store-sql.d.ts +21 -2
- package/dist/stores-sql/checkpoint-store-sql.js +106 -18
- package/dist/stores-sql/retention-store-sql.d.ts +1 -1
- package/dist/task-cwd.d.ts +4 -3
- package/dist/task-settings.d.ts +13 -0
- package/dist/task-settings.js +13 -7
- package/dist/tool-approval.d.ts +7 -6
- package/dist/tool-approval.js +41 -37
- package/dist/trace/engine-notice-wire.d.ts +14 -0
- package/dist/trace/engine-notice-wire.js +18 -1
- package/dist/trace/project.d.ts +4 -3
- package/dist/trace/project.js +3 -2
- package/dist/trace/projection-table.d.ts +33 -2
- package/dist/trace/self-minted-wire.d.ts +150 -17
- package/dist/trace/self-minted-wire.js +54 -16
- package/dist/trace/tool-card.d.ts +3 -0
- package/dist/trace/tool-card.js +24 -0
- package/dist/trace/tool-output-media.d.ts +2 -1
- package/dist/unattended-permission-mode.d.ts +1 -1
- package/dist/web-admin-client/apply-effective.d.ts +1 -1
- package/dist/web-admin-client/effective-keys.d.ts +1 -1
- package/dist/web-admin-client/skills-mcp.d.ts +1 -1
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +57 -29
- package/package.json +2 -2
- package/wire-changes/server@7.150.0.json +335 -0
package/dist/tool-approval.js
CHANGED
|
@@ -115,10 +115,28 @@ const FS_WRITE_TOOLS = pathConfinableWriteToolNames();
|
|
|
115
115
|
function sessionAllowCategory(toolName) {
|
|
116
116
|
return FS_WRITE_TOOLS.has(toolName) ? "fs-write" : `tool:${toolName}`;
|
|
117
117
|
}
|
|
118
|
-
function sessionAllowKey(owner,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
function sessionAllowKey(owner, seat, category, binding) {
|
|
119
|
+
return JSON.stringify([owner, seat.sessionId, seat.incarnation, category, binding.kind === "bound" ? binding.digest : null]);
|
|
120
|
+
}
|
|
121
|
+
function sessionAllowSeatOf(leg) {
|
|
122
|
+
return leg.sessionId && leg.incarnation ? { sessionId: leg.sessionId, incarnation: leg.incarnation } : undefined;
|
|
123
|
+
}
|
|
124
|
+
function liveSessionAnswer(facts, leg) {
|
|
125
|
+
const home = standingAnswerHome(facts);
|
|
126
|
+
switch (home) {
|
|
127
|
+
case "none":
|
|
128
|
+
return { home: "none", occupantUnreadable: false };
|
|
129
|
+
case "seat": {
|
|
130
|
+
const seat = sessionAllowSeatOf(leg);
|
|
131
|
+
return seat !== undefined ? { home: "seat", seat } : { home: "none", occupantUnreadable: Boolean(leg.sessionId) };
|
|
132
|
+
}
|
|
133
|
+
case "server_store":
|
|
134
|
+
return leg.sessionId ? { home: "server_store", sessionId: leg.sessionId } : { home: "none", occupantUnreadable: false };
|
|
135
|
+
default: {
|
|
136
|
+
const unhandled = home;
|
|
137
|
+
throw new Error(`unhandled standing-answer home: ${String(unhandled)}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
122
140
|
}
|
|
123
141
|
function askStandingAnswerFacts(req, governanceForced, deploymentListAsks) {
|
|
124
142
|
const classes = screenAskClassMembers(req.askClass, req.classes)?.classes;
|
|
@@ -196,8 +214,8 @@ function pendingEntryStandingAnswerFacts(entry) {
|
|
|
196
214
|
deploymentListQuestion: entry.deploymentListQuestion === true,
|
|
197
215
|
};
|
|
198
216
|
}
|
|
199
|
-
function projectDecisionFacts(facts, frame, card) {
|
|
200
|
-
const rememberRefused =
|
|
217
|
+
function projectDecisionFacts(facts, leg, frame, card) {
|
|
218
|
+
const rememberRefused = liveSessionAnswer(facts, leg).home === "none";
|
|
201
219
|
if (frame !== undefined) {
|
|
202
220
|
if (facts.requiresRealApproval)
|
|
203
221
|
frame.requiresRealApproval = true;
|
|
@@ -256,7 +274,7 @@ function livePendingRowOf(e) {
|
|
|
256
274
|
...(e.requiresRealApproval ? { requiresRealApproval: true } : {}),
|
|
257
275
|
...(e.governanceForced ? { governanceForced: true } : {}),
|
|
258
276
|
...(listFrame.mandated === true ? { mandated: true } : {}),
|
|
259
|
-
...(
|
|
277
|
+
...(liveSessionAnswer(pendingEntryStandingAnswerFacts(e), e).home === "none" ? { rememberRefused: true } : {}),
|
|
260
278
|
...(listFrame.mandate !== undefined ? { mandate: listFrame.mandate } : {}),
|
|
261
279
|
...(listFrame.origin !== undefined ? { origin: listFrame.origin } : {}),
|
|
262
280
|
...(listFrame.type === "approval_request" && listFrame.liveFactsUnknown === true ? { liveFactsUnknown: true } : {}),
|
|
@@ -959,8 +977,8 @@ export class ToolApprovalCoordinator {
|
|
|
959
977
|
const sessionId = origin.sessionId;
|
|
960
978
|
if (!sessionId)
|
|
961
979
|
return false;
|
|
962
|
-
const
|
|
963
|
-
const live =
|
|
980
|
+
const seat = sessionAllowSeatOf(origin);
|
|
981
|
+
const live = seat !== undefined && this.allowAllSessions.has(sessionAllowKey(origin.owner, seat, sessionAllowCategory(req.toolName), facts.grantBinding));
|
|
964
982
|
const durable = !live && facts.grantBinding.kind === "none" && (await this.durableGrantHas(sessionId, req.toolName));
|
|
965
983
|
if (!live && !durable)
|
|
966
984
|
return false;
|
|
@@ -1330,7 +1348,7 @@ export class ToolApprovalCoordinator {
|
|
|
1330
1348
|
...(askReasonsOfReq !== undefined ? { askReasons: askReasonsOfReq } : {}),
|
|
1331
1349
|
...(governanceForced ? { governanceForced: true } : {}),
|
|
1332
1350
|
...(req.mandated === true ? { mandated: true } : {}),
|
|
1333
|
-
...(
|
|
1351
|
+
...(liveSessionAnswer(askStandingAnswerFacts(req, governanceForced, deploymentListAsks), origin).home === "none" ? { rememberRefused: true } : {}),
|
|
1334
1352
|
...(typeof req.boundGrantDigest === "string" ? { boundGrantDigest: req.boundGrantDigest, ...(req.boundGrants !== undefined ? { boundGrants: req.boundGrants } : {}) } : {}),
|
|
1335
1353
|
...(noRulingCause !== undefined ? { classifierNoRuling: noRulingCause } : {}),
|
|
1336
1354
|
...(grantAbsence !== undefined ? { boundGrantAbsence: grantAbsence } : {}),
|
|
@@ -1897,7 +1915,7 @@ export class ToolApprovalCoordinator {
|
|
|
1897
1915
|
grantBinding: entryGrantBinding,
|
|
1898
1916
|
classes: entryClasses,
|
|
1899
1917
|
...(entryDeploymentListQuestion ? { deploymentListQuestion: true } : {}),
|
|
1900
|
-
}), frame, cardForFrame);
|
|
1918
|
+
}), origin, frame, cardForFrame);
|
|
1901
1919
|
const cardFrame = askId !== undefined && cardForFrame !== undefined
|
|
1902
1920
|
? buildApprovalRequestFrame({ askId, taskId: origin.taskId, approvalId: wireApprovalId, card: cardForFrame, expiresAtMs: persistedExpiresAtMs, nowMs: Date.now(), live: frame })
|
|
1903
1921
|
: undefined;
|
|
@@ -1944,7 +1962,7 @@ export class ToolApprovalCoordinator {
|
|
|
1944
1962
|
if (s.requiresRealApproval === true)
|
|
1945
1963
|
continue;
|
|
1946
1964
|
s.requiresRealApproval = true;
|
|
1947
|
-
const card = projectDecisionFacts(pendingEntryStandingAnswerFacts(s), s.frame, s.cardFrame?.card);
|
|
1965
|
+
const card = projectDecisionFacts(pendingEntryStandingAnswerFacts(s), s, s.frame, s.cardFrame?.card);
|
|
1948
1966
|
if (s.cardFrame !== undefined && card !== undefined && card !== s.cardFrame.card)
|
|
1949
1967
|
s.cardFrame = { ...s.cardFrame, card };
|
|
1950
1968
|
}
|
|
@@ -2097,11 +2115,10 @@ export class ToolApprovalCoordinator {
|
|
|
2097
2115
|
}
|
|
2098
2116
|
recordDeploymentListAnswer(decided, entry, judgedOwner, parsed, principal, eligibility) {
|
|
2099
2117
|
const store = this.sessionGrants;
|
|
2100
|
-
const
|
|
2101
|
-
if (parsed.value !== "allow_session" ||
|
|
2102
|
-
return decided;
|
|
2103
|
-
if (standingAnswerHome(pendingEntryStandingAnswerFacts(entry)) !== "server_store")
|
|
2118
|
+
const answer = liveSessionAnswer(pendingEntryStandingAnswerFacts(entry), entry);
|
|
2119
|
+
if (parsed.value !== "allow_session" || answer.home !== "server_store" || store === undefined)
|
|
2104
2120
|
return decided;
|
|
2121
|
+
const sessionId = answer.sessionId;
|
|
2105
2122
|
return (async () => {
|
|
2106
2123
|
const result = await decided;
|
|
2107
2124
|
if (result.status !== 200)
|
|
@@ -2781,25 +2798,11 @@ export class ToolApprovalCoordinator {
|
|
|
2781
2798
|
}
|
|
2782
2799
|
finishRespond(entry, judgedOwner, parsed, opts) {
|
|
2783
2800
|
let rememberApplied;
|
|
2784
|
-
const home = standingAnswerHome(pendingEntryStandingAnswerFacts(entry));
|
|
2785
|
-
let grantable;
|
|
2786
|
-
switch (home) {
|
|
2787
|
-
case "seat":
|
|
2788
|
-
grantable = true;
|
|
2789
|
-
break;
|
|
2790
|
-
case "none":
|
|
2791
|
-
case "server_store":
|
|
2792
|
-
grantable = false;
|
|
2793
|
-
break;
|
|
2794
|
-
default: {
|
|
2795
|
-
const unhandled = home;
|
|
2796
|
-
throw new Error(`unhandled standing-answer home: ${String(unhandled)}`);
|
|
2797
|
-
}
|
|
2798
|
-
}
|
|
2799
2801
|
if (parsed.value === "allow_session") {
|
|
2800
|
-
const
|
|
2801
|
-
rememberApplied =
|
|
2802
|
-
if (
|
|
2802
|
+
const answer = liveSessionAnswer(pendingEntryStandingAnswerFacts(entry), entry);
|
|
2803
|
+
rememberApplied = answer.home === "seat";
|
|
2804
|
+
if (answer.home === "seat") {
|
|
2805
|
+
const grantKey = sessionAllowKey(judgedOwner, answer.seat, sessionAllowCategory(entry.toolName), entry.grantBinding);
|
|
2803
2806
|
if (this.allowAllSessions.size >= MAX_ALLOW_SESSIONS) {
|
|
2804
2807
|
const oldest = this.allowAllSessions.values().next().value;
|
|
2805
2808
|
if (oldest !== undefined)
|
|
@@ -2807,7 +2810,7 @@ export class ToolApprovalCoordinator {
|
|
|
2807
2810
|
}
|
|
2808
2811
|
this.allowAllSessions.add(grantKey);
|
|
2809
2812
|
}
|
|
2810
|
-
else if (
|
|
2813
|
+
else if (answer.home === "none" && answer.occupantUnreadable) {
|
|
2811
2814
|
defaultLogger.warn("session_grant_refused_occupant_unreadable", { sessionId: entry.sessionId, toolName: entry.toolName });
|
|
2812
2815
|
}
|
|
2813
2816
|
}
|
|
@@ -2880,7 +2883,8 @@ export class ToolApprovalCoordinator {
|
|
|
2880
2883
|
grantBinding: { kind: "unreadable" },
|
|
2881
2884
|
...(card.classes !== undefined ? { classes: card.classes } : {}),
|
|
2882
2885
|
};
|
|
2883
|
-
const
|
|
2886
|
+
const leg = row.sessionId !== row.taskId ? { sessionId: row.sessionId } : {};
|
|
2887
|
+
const rememberRefused = liveSessionAnswer(pendingEntryStandingAnswerFacts(facts), leg).home === "none";
|
|
2884
2888
|
const cardFrame = (card.rememberRefused === true) === rememberRefused
|
|
2885
2889
|
? replayFrame
|
|
2886
2890
|
: { ...replayFrame, card: rememberRefused ? { ...card, rememberRefused: true } : (({ rememberRefused: _stale, ...rest }) => rest)(card) };
|
|
@@ -2911,7 +2915,7 @@ export class ToolApprovalCoordinator {
|
|
|
2911
2915
|
owner: row.owner,
|
|
2912
2916
|
ownerReadSeq: this.rowReadSeq,
|
|
2913
2917
|
executionLane: row.executionLane,
|
|
2914
|
-
...
|
|
2918
|
+
...leg,
|
|
2915
2919
|
...(card.fromSubagent === true ? { originTaskId: row.sourceSessionId } : {}),
|
|
2916
2920
|
toolName: card.toolName,
|
|
2917
2921
|
...facts,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { projectMcpAuthorization } from "../mcp-authorization-face.js";
|
|
1
2
|
/**
|
|
2
3
|
* 上 wire 的通告码 —— **显式闭集常量表**(设计稿 ①,起步三码;今天的码数以本常量自身为准——
|
|
3
4
|
* 在散文里抄数字必陈腐,codex 5.65 增量批 R1-[low] 实逮:上一句曾写「今天九码」而表里是十条。
|
|
@@ -108,6 +109,19 @@ export declare function redactNoticeMessage(message: unknown): string;
|
|
|
108
109
|
* 交中和形,空白 / 超长的条目两只码不同)。其余字段、其余码原样。
|
|
109
110
|
*/
|
|
110
111
|
export declare function redactNoticeRuleText(code: string, detail: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* 通告 `detail` 里**平铺着一条有处置表的记录**的码:码 → 那条记录的成员名与出门投影(一张表,不在 {@link engineNoticeEventData} 里写分支)。
|
|
114
|
+
* 记录成员只经那只投影出门(结构位:不过 {@link sanitizeWireText} 的脱敏与截断 —— 结构位的形与长由记录的属主判);detail 的其余成员照旧经
|
|
115
|
+
* {@link sanitizeNoticeDetail},合并按引擎 detail 的原键序。投影答 `undefined`(`reason` 出闭集 / 缺席)⇒ 记录成员整组缺席(在场而读不出由表的丢弃口计一次),
|
|
116
|
+
* 与状态面「整格缺席」同一失败方向。
|
|
117
|
+
* 运维日志腿(`boot/runner-deps.ts` 的转发席)不读这张登记:日志答「发生了什么」(给运维,整行过日志行的出口座),wire 答「用户拿到什么」—— 两个问题,两个读者。
|
|
118
|
+
*/
|
|
119
|
+
export declare const NOTICE_DETAIL_RECORDS: {
|
|
120
|
+
readonly "mcp.authorization_required": {
|
|
121
|
+
readonly members: readonly string[];
|
|
122
|
+
readonly project: typeof projectMcpAuthorization;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
111
125
|
export declare function engineNoticeEventData(notice: {
|
|
112
126
|
code: string;
|
|
113
127
|
message: string;
|
|
@@ -2,6 +2,7 @@ import { uuidv7 } from "@sema-agent/core";
|
|
|
2
2
|
import { redactSecrets } from "./redact.js";
|
|
3
3
|
import { redactListEntry } from "../list-entry-display.js";
|
|
4
4
|
import { recordFailOpen } from "../observability/fail-open.js";
|
|
5
|
+
import { MCP_AUTHORIZATION_MEMBERS, projectMcpAuthorization } from "../mcp-authorization-face.js";
|
|
5
6
|
export const ENGINE_NOTICE_WIRE_CODES = [
|
|
6
7
|
"memory.session_polluted",
|
|
7
8
|
"memory.harvest_quarantined",
|
|
@@ -136,11 +137,27 @@ export function redactNoticeRuleText(code, detail) {
|
|
|
136
137
|
});
|
|
137
138
|
return { ...detail, [at.array]: redacted };
|
|
138
139
|
}
|
|
140
|
+
export const NOTICE_DETAIL_RECORDS = {
|
|
141
|
+
"mcp.authorization_required": { members: MCP_AUTHORIZATION_MEMBERS, project: projectMcpAuthorization },
|
|
142
|
+
};
|
|
143
|
+
function noticeDetailOf(code, detail) {
|
|
144
|
+
const records = NOTICE_DETAIL_RECORDS;
|
|
145
|
+
const record = Object.hasOwn(records, code) ? records[code] : undefined;
|
|
146
|
+
if (record === undefined || detail === undefined)
|
|
147
|
+
return sanitizeNoticeDetail(redactNoticeRuleText(code, detail));
|
|
148
|
+
const own = (key) => record.members.includes(key);
|
|
149
|
+
const face = { ...record.project(Object.fromEntries(Object.entries(detail).filter(([k]) => own(k)))) };
|
|
150
|
+
const rest = sanitizeNoticeDetail(redactNoticeRuleText(code, Object.fromEntries(Object.entries(detail).filter(([k]) => !own(k)))));
|
|
151
|
+
return Object.fromEntries(Object.keys(detail).flatMap((k) => {
|
|
152
|
+
const from = own(k) ? face : rest;
|
|
153
|
+
return Object.hasOwn(from, k) ? [[k, from[k]]] : [];
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
139
156
|
export function engineNoticeEventData(notice, sessionId, nowMs, eventId) {
|
|
140
157
|
return {
|
|
141
158
|
code: notice.code,
|
|
142
159
|
message: redactNoticeMessage(notice.message).slice(0, NOTICE_TEXT_MAX),
|
|
143
|
-
detail:
|
|
160
|
+
detail: noticeDetailOf(notice.code, notice.detail),
|
|
144
161
|
sessionId,
|
|
145
162
|
ts: nowMs,
|
|
146
163
|
eventId,
|
package/dist/trace/project.d.ts
CHANGED
|
@@ -217,7 +217,7 @@ export declare function toolStartEventData(ev: {
|
|
|
217
217
|
* `done` 永远到不了、重连恒复现同一处),而 `gate-outcome-defective` 那一格还不涨。
|
|
218
218
|
*
|
|
219
219
|
* ⇒ 兑现方式从「枚举」换成**结构**:任何逃出投影的异常同走既有的那一口 report + withhold。规则因此变少
|
|
220
|
-
* (不是「守住已知的 N 种坏形」而是「坏字节一律 withhold」)。core 7.51.0 起筛本身对任意 JSON 形不抛(
|
|
220
|
+
* (不是「守住已知的 N 种坏形」而是「坏字节一律 withhold」)。core 7.51.0 起筛本身对任意 JSON 形不抛([ref]:只覆盖 JSON ——
|
|
221
221
|
* 访问器 / Proxy 这类非 JSON 值仍可能抛),本仓此前叠在筛前的具名形门与成员门(第二读法)随之退役,诊断串就是筛给的缺陷句。
|
|
222
222
|
* ⛔ **刻意不动**「先脱敏后截断」的次序:截断在前会把跨界的密钥切成半截明文留在输出里,而且它只治
|
|
223
223
|
* `note` 一条叶(`approver` 同病)—— 那是给一个类打两个特判,正是本仓要消掉的形。
|
|
@@ -294,7 +294,8 @@ export declare function reasoningEndEventData(ev: Record<string, unknown>): Segm
|
|
|
294
294
|
* can never appear here) — SAME UNTRUSTED RAW contract as `output` (a card carries `originalFile`/stdout bodies),
|
|
295
295
|
* so it gets the same deep redaction before it is persisted or echoed — except a media card's `file.base64` (image / document
|
|
296
296
|
* cards: the second encoding of the same bytes the `output` block carries), which, like the block's `data`, is an encoding of
|
|
297
|
-
* bytes and not text
|
|
297
|
+
* bytes and not text; a card that carries a record with a disposition table (an MCP authorization failure card's `authorization`) has that member
|
|
298
|
+
* projected by the record's table ({@link projectToolCard}, the one reader of a tool card — session history reads `toolResult.details` with it too; the durable face drops the media bytes in the ledger confluence). `label`(core 展示名,同 tool_start 的
|
|
298
299
|
* label 待遇 verbatim)白名单排查(2026-07-24)补齐进函数本体——此前外包给调用点各自手动拼接,7 处只有
|
|
299
300
|
* 3 处记得拼,resume leg + ledger-sink 落盘两处漏了,持久化记录本身缺 label 一写盘就永久追不回来。 */
|
|
300
301
|
export declare function toolEndEventData(ev: {
|
|
@@ -333,7 +334,7 @@ export declare function toolEndEventData(ev: {
|
|
|
333
334
|
* · `toolCallId` / `toolName` —— 调用 id(🔴 [ref] 订正:出身是**服务商**在 tool_use / tool_calls 里给的,引擎缺席时自铸兜底、越界时折叠 ——
|
|
334
335
|
* 此前写「引擎铸」不实)与名册里的工具名(与 `tool_start` 逐字同源)⇒ verbatim。调用 id 这一族的形状在**全部面的共同入口**一次施加 ——
|
|
335
336
|
* core 7.36.0([ref])brain 建调用那一行的准入(在形原样 / 越界单射折叠,原字节只在转录 `ToolCall.wireId`),一方 brain 新铸的调用在逐帧面上
|
|
336
|
-
* 恒是在形的引擎 id(残余两条 [ref]:≤7.106.0 写下的存量行 resume 出来的帧是服务商原串逐字;宿主 Brain 不准入
|
|
337
|
+
* 恒是在形的引擎 id(残余两条 [ref]:≤7.106.0 写下的存量行 resume 出来的帧是服务商原串逐字;宿主 Brain 不准入 [ref] —— 详见
|
|
337
338
|
* run-terminal `admitProviderEcho` 顶注);
|
|
338
339
|
* 本仓不设第二道闸(见 run-terminal `admitProviderEcho` 顶注;[ref] 关)。
|
|
339
340
|
* · `elapsedTimeSeconds` —— 引擎铸的整秒,单调、一 call 一个原点 ⇒ 有限数才铸键。
|
package/dist/trace/project.js
CHANGED
|
@@ -6,7 +6,8 @@ import { errorText } from "../observability/err-text.js";
|
|
|
6
6
|
import { redactSecrets, redactDeep } from "./redact.js";
|
|
7
7
|
import { seatText } from "./exit-seat.js";
|
|
8
8
|
import { sanitizeWireText } from "./engine-notice-wire.js";
|
|
9
|
-
import { projectToolOutput
|
|
9
|
+
import { projectToolOutput } from "./tool-output-media.js";
|
|
10
|
+
import { projectToolCard } from "./tool-card.js";
|
|
10
11
|
import { injectionTierOrAbsent } from "./injection-tier.js";
|
|
11
12
|
import { semaProvenanceFields } from "./sema-provenance.js";
|
|
12
13
|
import { resupplyFields, sessionBoxCarrierFields, terminalFrameFacetFields } from "./task-notification-facets.js";
|
|
@@ -255,7 +256,7 @@ export function toolEndEventData(ev) {
|
|
|
255
256
|
...(ev.output !== undefined ? { output: projectToolOutput(ev.output) } : {}),
|
|
256
257
|
...(ev.truncated ? { truncated: true } : {}),
|
|
257
258
|
...(Number.isFinite(ev.totalChars) ? { totalChars: ev.totalChars } : {}),
|
|
258
|
-
...(ev.structured !== undefined ? { structured:
|
|
259
|
+
...(ev.structured !== undefined ? { structured: projectToolCard(ev.structured, redactDeep) } : {}),
|
|
259
260
|
...(typeof ev.errorCode === "string" && ev.errorCode.length <= 128 ? { errorCode: ev.errorCode } : {}),
|
|
260
261
|
...(typeof ev.delivered === "string" && MCP_DELIVERY_VERDICTS.includes(ev.delivered) ? { delivered: ev.delivered } : {}),
|
|
261
262
|
...(gate !== undefined ? { gate } : {}),
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* `nested` 不收各臂键不同的联合(`keyof` 只给交集,某一臂独有的键会悄悄没有处置),core 写成 `unknown` / `any` 的值只能 `strip`;
|
|
16
16
|
* **一格只许一词** —— 类型上把其余词的键写成 `never`(展开也混不进第二个词),运行期再核一次,两词同在 ⇒ 响亮抛。
|
|
17
17
|
* 投影函数是表的解释器 {@link projectByTable};`core-keyset-guard.ts` 读表({@link TableCoreKeys})—— 门与投影只有一个写者。
|
|
18
|
+
* 解释器的产物型也是表的函数({@link FaceOf}):表翻一格,出门型随之变,出口不另写产物型、不解构挑键。
|
|
18
19
|
*
|
|
19
20
|
* ## 三条读法(所有表同一条)
|
|
20
21
|
* · **缺席即缺席**:源值 `undefined` ⇒ 键缺席(不补 `[]` / `false` / 默认值);
|
|
@@ -91,10 +92,40 @@ export type TableCoreKeys<Tbl> = {
|
|
|
91
92
|
readonly mint: unknown;
|
|
92
93
|
} ? never : K;
|
|
93
94
|
}[keyof Tbl];
|
|
95
|
+
/** 表的一格在 core 型上的源值型(铸键不在 core 型上 ⇒ 没有源值)。 */
|
|
96
|
+
type SourceOf<T, K> = K extends keyof T ? T[K] : never;
|
|
97
|
+
/** 列表位的元素型。 */
|
|
98
|
+
type RowOf<V> = NonNullable<V> extends readonly (infer E)[] ? E : never;
|
|
99
|
+
/** 一格出门后的型 —— 与解释器 {@link projectNode} 逐臂同读(谓词臂在布尔读法臂之前:谓词也是布尔读法,它多说了值认成什么型)。 */
|
|
100
|
+
type CellFace<V, E> = E extends "forward" ? Exclude<V, undefined> : E extends {
|
|
101
|
+
readonly mint: (...args: never[]) => infer X;
|
|
102
|
+
} ? Exclude<X, undefined> : E extends {
|
|
103
|
+
readonly forward: (raw: unknown) => raw is infer G;
|
|
104
|
+
} ? G : E extends {
|
|
105
|
+
readonly forward: unknown;
|
|
106
|
+
} ? Exclude<V, undefined> : E extends {
|
|
107
|
+
readonly redact: unknown;
|
|
108
|
+
} ? string : E extends {
|
|
109
|
+
readonly nested: infer Sub;
|
|
110
|
+
readonly rows: unknown;
|
|
111
|
+
} ? FaceOf<RowOf<V>, Sub>[] : E extends {
|
|
112
|
+
readonly nested: infer Sub;
|
|
113
|
+
} ? FaceOf<NonNullable<V>, Sub> : never;
|
|
114
|
+
/**
|
|
115
|
+
* 一张表的**出门型** = 解释器 {@link projectByTable} 的产物型,逐格由处置词推出(表是唯一写者,型随表走):
|
|
116
|
+
* · `"strip"` ⇒ 键不在型里;
|
|
117
|
+
* · `"forward"` / `{ forward: 布尔读法 }` ⇒ 源值型去 `undefined`(解释器只把 `undefined` 读作缺席,`null` 原样出门);
|
|
118
|
+
* · `{ forward: (raw) => raw is G }` ⇒ `G`(读法认的就是出门的型);
|
|
119
|
+
* · `{ redact }` ⇒ `string`;`{ nested }` ⇒ 子表的出门型(写了 `rows` ⇒ 它的数组);`{ mint }` ⇒ 铸函数返回型去 `undefined`。
|
|
120
|
+
* 每个键都可选(缺席即缺席 / 在场却读不出 ⇒ 丢);不带表字面量的 `readonly`(产物是解释器新建的对象)。
|
|
121
|
+
*/
|
|
122
|
+
export type FaceOf<T, Tbl> = {
|
|
123
|
+
-readonly [K in keyof Tbl as Tbl[K] extends "strip" ? never : K]?: CellFace<SourceOf<T, K>, Tbl[K]>;
|
|
124
|
+
};
|
|
94
125
|
/**
|
|
95
126
|
* 按表投影一个值。`face` = 计数 / 报错里的面名(`<面>.<键路径>`);`root` = 铸键与 `rows` 读到的根(面的顶层值)。
|
|
96
|
-
*
|
|
127
|
+
* 纯数据进、纯数据出;不改入参。产物型 = {@link FaceOf}(本函数是表的唯一解释器,型的唯一断言在这里)。
|
|
97
128
|
*/
|
|
98
|
-
export declare function projectByTable<T extends object, R
|
|
129
|
+
export declare function projectByTable<T extends object, R, Tbl extends CoreTable<T, R>>(face: string, table: Tbl, value: T, root: R): FaceOf<T, Tbl>;
|
|
99
130
|
export {};
|
|
100
131
|
//# sourceMappingURL=projection-table.d.ts.map
|
|
@@ -804,6 +804,96 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
804
804
|
};
|
|
805
805
|
};
|
|
806
806
|
};
|
|
807
|
+
/**
|
|
808
|
+
* stdout 启动协议行 `listening`(`msg:"listening"` 的那一行 JSON;不随 `LOG_LEVEL`,见 `observability/logger.ts` 的 `STARTUP_PROTOCOL_EVENTS`)的顶层键 → 在场律。
|
|
809
|
+
* 起本进程的壳 / 嵌入宿主 / 夹具从这一行取口(`port`)与实绑地址(`boundAddress`),再用 `/health` 的 `pid` / `dataRoot` 验身份。本集 7.150.0 才登记;
|
|
810
|
+
* `1.214.2` = 本仓 org 树首个 tag(那一批键在它之前就在这一行上),`bindHost` / `bindHostNote` 按各自首次出现的 tag。值的读法(词表、显示形)不在本集。
|
|
811
|
+
*/
|
|
812
|
+
readonly listeningLineKey: {
|
|
813
|
+
readonly at: "stdout 启动协议行 listening(<键> → 在场律)";
|
|
814
|
+
readonly members: {
|
|
815
|
+
port: {
|
|
816
|
+
attr: string;
|
|
817
|
+
since: string;
|
|
818
|
+
};
|
|
819
|
+
bindHost: {
|
|
820
|
+
attr: string;
|
|
821
|
+
since: string;
|
|
822
|
+
};
|
|
823
|
+
bindHostNote: {
|
|
824
|
+
attr: string;
|
|
825
|
+
since: string;
|
|
826
|
+
};
|
|
827
|
+
boundAddress: {
|
|
828
|
+
attr: string;
|
|
829
|
+
since: string;
|
|
830
|
+
};
|
|
831
|
+
model: {
|
|
832
|
+
attr: string;
|
|
833
|
+
since: string;
|
|
834
|
+
};
|
|
835
|
+
brain: {
|
|
836
|
+
attr: string;
|
|
837
|
+
since: string;
|
|
838
|
+
};
|
|
839
|
+
breakerState: {
|
|
840
|
+
attr: string;
|
|
841
|
+
since: string;
|
|
842
|
+
};
|
|
843
|
+
session: {
|
|
844
|
+
attr: string;
|
|
845
|
+
since: string;
|
|
846
|
+
};
|
|
847
|
+
memory: {
|
|
848
|
+
attr: string;
|
|
849
|
+
since: string;
|
|
850
|
+
};
|
|
851
|
+
instanceId: {
|
|
852
|
+
attr: string;
|
|
853
|
+
since: string;
|
|
854
|
+
};
|
|
855
|
+
rateLimitPerMin: {
|
|
856
|
+
attr: string;
|
|
857
|
+
since: string;
|
|
858
|
+
};
|
|
859
|
+
rateLimit: {
|
|
860
|
+
attr: string;
|
|
861
|
+
since: string;
|
|
862
|
+
};
|
|
863
|
+
maxPrincipalCostUsd: {
|
|
864
|
+
attr: string;
|
|
865
|
+
since: string;
|
|
866
|
+
};
|
|
867
|
+
costQuota: {
|
|
868
|
+
attr: string;
|
|
869
|
+
since: string;
|
|
870
|
+
};
|
|
871
|
+
toolResultStore: {
|
|
872
|
+
attr: string;
|
|
873
|
+
since: string;
|
|
874
|
+
};
|
|
875
|
+
otel: {
|
|
876
|
+
attr: string;
|
|
877
|
+
since: string;
|
|
878
|
+
};
|
|
879
|
+
perModelKeys: {
|
|
880
|
+
attr: string;
|
|
881
|
+
since: string;
|
|
882
|
+
};
|
|
883
|
+
sealedModelKeys: {
|
|
884
|
+
attr: string;
|
|
885
|
+
since: string;
|
|
886
|
+
};
|
|
887
|
+
sealedPoisonedModels: {
|
|
888
|
+
attr: string;
|
|
889
|
+
since: string;
|
|
890
|
+
};
|
|
891
|
+
workflowRunStore: {
|
|
892
|
+
attr: string;
|
|
893
|
+
since: string;
|
|
894
|
+
};
|
|
895
|
+
};
|
|
896
|
+
};
|
|
807
897
|
readonly healthStoreKey: {
|
|
808
898
|
readonly at: "GET /health store";
|
|
809
899
|
readonly members: {
|
|
@@ -1130,6 +1220,10 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
1130
1220
|
attr: string;
|
|
1131
1221
|
since: string;
|
|
1132
1222
|
};
|
|
1223
|
+
contentAttestedAt: {
|
|
1224
|
+
attr: string;
|
|
1225
|
+
since: string;
|
|
1226
|
+
};
|
|
1133
1227
|
};
|
|
1134
1228
|
};
|
|
1135
1229
|
/** `GET /v1/projects` 200 体的顶层键(闭集;体是路由里的内联字面量 —— 行的键集在 `projectRowKey`)。 */
|
|
@@ -1243,7 +1337,13 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
1243
1337
|
};
|
|
1244
1338
|
};
|
|
1245
1339
|
};
|
|
1246
|
-
/**
|
|
1340
|
+
/**
|
|
1341
|
+
* MCP 授权记录 `authorization` 在 wire 上的**全部投影载体**(与 `errorCode:"unauthorized"` 同在)。出门只经一张处置表(`mcp-authorization-face.ts` 的
|
|
1342
|
+
* `MCP_AUTHORIZATION_DISPOSITIONS`,投影 `projectMcpAuthorization` 一只;今天只放行闭集词 `reason`)。账本帧、面板的 `lastLegMcp.mcp[]`、能力面两口载的是状态行投影
|
|
1343
|
+
* (`wiring_manifest.mcp[]` 行)写入 / 应答那一刻的产物;会话历史与 `tool_end.structured`(活面 SSE、持久面账本行与 `GET /v1/runs/:id/events` 等回放)是工具卡的投影
|
|
1344
|
+
* (一只读者 `projectToolCard`,登记 `TOOL_CARD_RECORDS`,`trace/tool-card.ts`;活面只载带已准入 `type` 的卡,即自注册工具在 `code: "unauthorized"` 卡上放的 `authorization`)。通告 `mcp.authorization_required` 的 `detail`
|
|
1345
|
+
* 里平铺的记录成员经同一只投影(登记 `NOTICE_DETAIL_RECORDS`),它的键由附录 D.3 登记,不在本集。会话同步拉取口(`/sync/entries`)是存档的逐字复制、不是投影,不在本集。
|
|
1346
|
+
*/
|
|
1247
1347
|
readonly mcpAuthorizationKey: {
|
|
1248
1348
|
readonly at: "MCP 授权记录 authorization 的出现面(<面>#<键> → 在场律)";
|
|
1249
1349
|
readonly members: {
|
|
@@ -1251,6 +1351,18 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
1251
1351
|
readonly attr: "present-iff errorCode unauthorized";
|
|
1252
1352
|
readonly since: "7.138.0";
|
|
1253
1353
|
};
|
|
1354
|
+
readonly "GET /v1/sessions/:id/mcp#lastLegMcp.mcp[].authorization": {
|
|
1355
|
+
readonly attr: "present-iff errorCode unauthorized";
|
|
1356
|
+
readonly since: "7.138.0";
|
|
1357
|
+
};
|
|
1358
|
+
readonly "GET /v1/capabilities/mcp#servers[].authorization": {
|
|
1359
|
+
readonly attr: "present-iff errorCode unauthorized";
|
|
1360
|
+
readonly since: "7.138.0";
|
|
1361
|
+
};
|
|
1362
|
+
readonly "POST /v1/capabilities/mcp/probe#servers[].authorization": {
|
|
1363
|
+
readonly attr: "present-iff errorCode unauthorized";
|
|
1364
|
+
readonly since: "7.138.0";
|
|
1365
|
+
};
|
|
1254
1366
|
readonly "POST /v1/sessions/:id/mcp/reconnect#status.authorization": {
|
|
1255
1367
|
readonly attr: "present-iff errorCode unauthorized";
|
|
1256
1368
|
readonly since: "7.138.0";
|
|
@@ -1259,6 +1371,35 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
1259
1371
|
readonly attr: "present-iff server unauthorized (this face carries no errorCode)";
|
|
1260
1372
|
readonly since: "7.138.0";
|
|
1261
1373
|
};
|
|
1374
|
+
readonly "GET /v1/sessions/:id#messages[].details.authorization": {
|
|
1375
|
+
readonly attr: "present-iff details.code unauthorized";
|
|
1376
|
+
readonly since: "7.138.0";
|
|
1377
|
+
};
|
|
1378
|
+
readonly "SSE tool_end#structured.authorization": {
|
|
1379
|
+
readonly attr: "present-iff structured.code unauthorized and reason in the closed set; members = reason";
|
|
1380
|
+
readonly since: "7.138.0";
|
|
1381
|
+
};
|
|
1382
|
+
readonly "GET /v1/runs/:id/events#tool_end.structured.authorization": {
|
|
1383
|
+
readonly attr: "present-iff structured.code unauthorized and reason in the closed set; members = reason";
|
|
1384
|
+
readonly since: "7.138.0";
|
|
1385
|
+
};
|
|
1386
|
+
};
|
|
1387
|
+
readonly retired: {
|
|
1388
|
+
readonly "GET /v1/sessions/:id#messages[].details.authorization.resourceMetadataUrl": {
|
|
1389
|
+
readonly attr: "remote-claimed URL from the endpoint's challenge (deep-scrubbed text)";
|
|
1390
|
+
readonly since: "7.138.0";
|
|
1391
|
+
readonly until: "7.150.0";
|
|
1392
|
+
};
|
|
1393
|
+
readonly "SSE tool_end#structured.authorization(reason \u4EE5\u5916\u7684\u6210\u5458)": {
|
|
1394
|
+
readonly attr: "card members passed through the text redactor (resourceMetadataUrl, a custom card's own members)";
|
|
1395
|
+
readonly since: "7.138.0";
|
|
1396
|
+
readonly until: "7.150.0";
|
|
1397
|
+
};
|
|
1398
|
+
readonly "GET /v1/runs/:id/events#tool_end.structured.authorization(reason \u4EE5\u5916\u7684\u6210\u5458)": {
|
|
1399
|
+
readonly attr: "card members passed through the text redactor (resourceMetadataUrl, a custom card's own members)";
|
|
1400
|
+
readonly since: "7.138.0";
|
|
1401
|
+
readonly until: "7.150.0";
|
|
1402
|
+
};
|
|
1262
1403
|
};
|
|
1263
1404
|
};
|
|
1264
1405
|
/** `wiring_manifest.mods[].provenance`(每条腿的清单帧,每行 mod 注册一个出处标签):本服务自铸的注册带 `server`、运维声明的包带 `operator`;与同一行上 `seat` 的座词(`deployment` / `task`)互不相交。 */
|
|
@@ -1290,7 +1431,7 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
1290
1431
|
};
|
|
1291
1432
|
};
|
|
1292
1433
|
/**
|
|
1293
|
-
* `request.field_conflict` 拒体根上的 `reason`(字段之间互斥 / 互为前置的哪一类;`fields` = 请求体坐标,不在本表 ——
|
|
1434
|
+
* `request.field_conflict` 拒体根上的 `reason`(字段之间互斥 / 互为前置的哪一类;`fields` = 请求体坐标,不在本表 —— 它不是闭集;某一类的坐标并集变了,记在那一词的 `attr` 上)。
|
|
1294
1435
|
* 词表属主 = `field-conflict.ts` 的 `FIELD_CONFLICT_REASONS`:`satisfies Record<FieldConflictReason, …>`,加词而本行没跟 / 多一个词 ⇒ tsc 红。
|
|
1295
1436
|
* 契约附录 A 的 `request.field_conflict` 行逐个列这些词(`test/field-conflict-detail.test.ts` 钉)。同一组词 7.133.0–7.147.0 在 `detail.kind`(集名 `fieldConflictKind`,
|
|
1296
1437
|
* 随拒体版式律退役);`since` 记的是它们出现在根上 `reason` 的那一版。
|
|
@@ -2036,7 +2177,7 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
2036
2177
|
};
|
|
2037
2178
|
/**
|
|
2038
2179
|
* 运维队列停驻行(`kind: "checkpoint"`)与订阅流 `pending` 帧上的 `agent` —— 行的会话(`sessionId`)在委派树里的位置 `{ id?, parentSessionId?, rootSessionId? }`,
|
|
2039
|
-
* 与 `GET /v1/sessions/:sessionId` 体顶层的同名键同一只读口(`
|
|
2180
|
+
* 与 `GET /v1/sessions/:sessionId` 体顶层的同名键同一只读口(`http/owner-access.ts` 的 `readSessionAgent`)、同一只投影,逐值同答。
|
|
2040
2181
|
* 在场律 `present-iff`:这一次列表读到行的会话是一只 placed 委派子代(会话行上存着引擎写下的委派元组);宿主会话、同步委派的子代、`fork` 型后台子代、
|
|
2041
2182
|
* 不存元组的店、那一读没读成(F 类 `server.approvals.queue-row-agent-unreadable`)⇒ 缺席 —— 缺席读作「这台 server 没有说」。`satisfies` 绑行形:删键 / 改名而本表没跟 ⇒ tsc 红。
|
|
2042
2183
|
*/
|
|
@@ -2672,17 +2813,14 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
2672
2813
|
};
|
|
2673
2814
|
readonly "POST /v1/approvals/:sessionId/decide|/v1/sessions/:id/wake|/v1/assistant/tasks/:id/resume|/v1/assistant/tasks/:id/plan_review#resume_claim_store_fault(\u8BA4\u9886\u4E4B\u524D\u90A3\u4E00\u6B21\u6267\u884C\u5E2D\u8BFB\u3001\u8BA4\u9886\u90A3\u4E00\u7B14 \u2014\u2014 markResuming / wake \u73B0\u5EFA\u884C\u7684 createRun \u2014\u2014 \u6216\u8BA4\u9886\u4E4B\u540E\u63D0\u4EA4\u6267\u884C\u653E\u7F6E\u90A3\u4E00\u6B21\u5E97\u5F80\u8FD4\u5931\u8D25:\u5E93\u65AD\u8FDE / \u62D2\u8FDE / \u8D85\u65F6\u3001\u7F3A\u8868 / \u6743\u9650\u62D2\u3001\u8BA4\u4E0D\u51FA\u7684\u5E93\u9519;\u8BA4\u9886\u4E4B\u540E\u90A3\u4E00\u5F62\u7EED\u8DD1\u8BA4\u9886\u7684\u505C\u9A7B\u884C\u56DE\u5230\u8BA4\u9886\u4E4B\u524D\u7684\u505C\u9A7B\u8BCD\u3001\u8BA4\u9886\u7559\u7740,wake \u73B0\u5EFA\u7684\u884C\u5220\u6389;\u5361\u4ECD\u5F85\u51B3;\u4F53 state.resume_context_unreadable)": {
|
|
2674
2815
|
readonly attr: 503;
|
|
2675
|
-
readonly revises: readonly ["errorCode:internal.error"];
|
|
2676
2816
|
readonly since: "7.149.0";
|
|
2677
2817
|
};
|
|
2678
2818
|
readonly "POST /v1/runs/:id/cancel#parked_card_body_scope_differs(\u505C\u9A7B run \u4E0A\u7684\u53D6\u6D88:\u8FD9\u5F20\u5361\u884C\u4F53\u91CC\u81EA\u5E26\u7684\u5C5E\u4E3B\u683C\u4E0E\u5E97\u7684\u5C5E\u4E3B\u683C\u4E0D\u4E00\u81F4 \u2014\u2014 \u53D6\u6D88\u53EA\u8BFB\u5E97\u7684\u5C5E\u4E3B\u683C,\u7ED3\u7B97\u8FD9\u5F20\u5361\u3001\u9A71 run \u7EC8\u5C40;\u4F53 { taskId, status: failed, errorCode: cancelled, cancelRequested: false, note })": {
|
|
2679
2819
|
readonly attr: 202;
|
|
2680
|
-
readonly revises: readonly ["errorCode:conflict.approval_settled"];
|
|
2681
2820
|
readonly since: "7.149.0";
|
|
2682
2821
|
};
|
|
2683
2822
|
readonly "POST /v1/runs/:id/cancel#parked_card_body_unreadable(\u505C\u9A7B run \u4E0A\u7684\u53D6\u6D88:\u8FD9\u5F20\u5361\u7684\u884C\u4F53\u8BFB\u4E0D\u6210\u68C0\u67E5\u70B9 \u2014\u2014 \u53D6\u6D88\u53EA\u8BFB\u5E97\u7684\u5217,\u7ED3\u7B97\u8FD9\u5F20\u5361\u3001\u9A71 run \u7EC8\u5C40;\u4F53\u540C\u4E0A)": {
|
|
2684
2823
|
readonly attr: 202;
|
|
2685
|
-
readonly revises: readonly ["errorCode:internal.error"];
|
|
2686
2824
|
readonly since: "7.149.0";
|
|
2687
2825
|
};
|
|
2688
2826
|
readonly "POST /v1/approvals/:sessionId/decide#parked_agent_definition_unavailable(\u505C\u9A7B\u8D4E\u56DE;\u884C\u4E0A\u7684\u4EE3\u7406\u7C7B\u578B\u4E0D\u5728\u8D4E\u56DE\u9762\u59D4\u6D3E\u5DE5\u5177\u7684\u540D\u518C\u91CC:\u9010\u8BF7\u6C42 `agents` \u5B9A\u4E49 / \u505C\u9A7B\u540E\u88AB\u64A4\u7684\u90E8\u7F72\u5B9A\u4E49 / \u540D\u53EB fork \u7684\u5B9A\u4E49;approve \u4E0E deny \u540C\u7B54;\u8BA4\u9886\u56DE\u6EDA\u3001\u59D4\u6D3E\u5DE5\u5177\u96F6\u8C03\u7528\u3001\u5361\u4ECD\u5F85\u51B3;\u4F53 decide.agent_definition_unavailable + taskId + rollback)": {
|
|
@@ -2691,32 +2829,26 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
2691
2829
|
};
|
|
2692
2830
|
readonly "POST /v1/tasks|/v1/tasks/stream|/v1/runs#run_claim_store_fault(\u65B0\u63D0\u4EA4:\u8BA4\u9886\u4E4B\u524D\u90A3\u4E00\u6B21\u6267\u884C\u5E2D\u8BFB,\u6216\u8BA4\u9886\u8FD9\u4E00\u6BB5 \u2014\u2014 \u5EFA\u884C\u8BA4\u9886 createRun\u3001\u6267\u884C\u653E\u7F6E\u3001\u7EED\u8DD1\u8F93\u5165\u7684\u5199\u3001\u8D77\u8DD1\u4E4B\u524D\u7684\u8BA4\u9886\u590D\u6838 \u2014\u2014 \u6709\u4E00\u6B21\u5E97\u5F80\u8FD4\u6CA1\u7B54\u51FA\u6765:\u5E93\u65AD\u8FDE / \u62D2\u8FDE / \u8D85\u65F6\u3001\u7F3A\u8868 / \u6743\u9650\u62D2\u3001\u8BA4\u4E0D\u51FA\u7684\u5E93\u9519;\u672C\u8BF7\u6C42\u94F8\u7684\u884C\u5DF2\u5220\u6389 \u2014\u2014 \u8BA4\u9886\u4E0E\u5E42\u7B49\u952E\u968F\u884C\u53BB,\u540C\u4E00\u4E2A\u81EA\u5E26 taskId \u91CD\u53D1\u5373\u65B0\u63D0\u4EA4 \u2014\u2014 \u4EC0\u4E48\u90FD\u6CA1\u8D77\u8DD1;\u8BA4\u9886\u4E4B\u540E\u7684\u6D41\u5F0F\u817F = \u6D41\u7684\u7EC8\u5E27;\u5DF2\u7ED1\u8BBE\u5907\u7684\u4F1A\u8BDD\u4E0A\u8BA4\u9886\u4E4B\u540E\u90A3\u4E00\u6B21\u6267\u884C\u5E2D\u8BFB\u540C\u7B54;\u4F53 state.run_store_unavailable)": {
|
|
2693
2831
|
readonly attr: 503;
|
|
2694
|
-
readonly revises: readonly ["errorCode:internal.error", "errorCode:device.not_bound"];
|
|
2695
2832
|
readonly since: "7.149.0";
|
|
2696
2833
|
};
|
|
2697
2834
|
readonly "POST /v1/approvals/:sessionId/decide|/v1/sessions/:id/wake|/v1/assistant/tasks/:id/resume|/v1/assistant/tasks/:id/plan_review#resume_pre_engine_store_fault(\u7EED\u8DD1\u817F\u63D0\u4EA4\u653E\u884C\u4E4B\u540E\u3001\u4EA4\u7ED9\u5F15\u64CE\u4E4B\u524D\u90A3\u4E00\u6BB5 \u2014\u2014 \u6392\u7A7A workflow \u5B8C\u6210\u7684\u5E8F\u53F7\u57FA\u5740\u73B0\u8BFB\u4E0E\u843D\u8D26\u3001\u901A\u544A\u53E3\u843D\u8D26 \u2014\u2014 \u5E97\u5F80\u8FD4\u6CA1\u7B54\u51FA\u6765;\u7EED\u8DD1\u8BA4\u9886\u7684\u505C\u9A7B\u884C\u56DE\u5230\u505C\u9A7B\u3001\u8BA4\u9886\u7559\u7740,wake \u73B0\u5EFA\u7684\u884C\u5220\u6389;\u5361\u4ECD\u5F85\u51B3;\u4F53 state.resume_context_unreadable)": {
|
|
2698
2835
|
readonly attr: 503;
|
|
2699
|
-
readonly revises: readonly ["errorCode:internal.error"];
|
|
2700
2836
|
readonly since: "7.149.0";
|
|
2701
2837
|
};
|
|
2702
2838
|
readonly "POST /v1/approvals/:sessionId/decide#workflow_host_turn_claim_store_fault(workflow \u51B3\u5B9A\u5728\u5BBF\u4E3B\u4F1A\u8BDD\u4E0A\u8D77\u7684\u65B0\u4E00\u8DD1:\u5EFA\u884C\u8BA4\u9886 / \u6267\u884C\u653E\u7F6E / \u7EED\u8DD1\u8F93\u5165 / \u51B3\u5B9A\u843D\u884C / \u8D77\u8DD1\u4E4B\u524D\u7684\u8BA4\u9886\u590D\u6838\u6709\u4E00\u6B21\u5E97\u5F80\u8FD4\u6CA1\u7B54\u51FA\u6765;\u51B3\u5B9A\u843D\u884C\u90A3\u4E00\u7B14\u5728 wake \u817F\u4E0A\u540C\u7B54;\u73B0\u5EFA\u7684\u884C\u5DF2\u5220\u6389,\u5B50\u4EE3\u7684\u5361\u4ECD\u5F85\u51B3;\u4F53 state.resume_context_unreadable)": {
|
|
2703
2839
|
readonly attr: 503;
|
|
2704
|
-
readonly revises: readonly ["errorCode:internal.error"];
|
|
2705
2840
|
readonly since: "7.149.0";
|
|
2706
2841
|
};
|
|
2707
2842
|
readonly "POST /v1/approvals/:sessionId/decide#workflow_decision_not_recorded(workflow \u51B3\u5B9A\u7684\u6295\u9012\u90A3\u4E00\u8DD1\u5728\u51B3\u5B9A\u843D\u884C\u90A3\u4E00\u62CD\u5DF2\u4E0D\u6301\u5BBF\u4E3B\u4F1A\u8BDD\u7684\u8BA4\u9886 \u2014\u2014 \u5FC3\u8DF3\u505C\u6EE1\u4E00\u7A97\u88AB\u6536\u5272;\u51B3\u5B9A\u6CA1\u843D\u3001\u90A3\u4E00\u8DD1\u6CA1\u8D77;\u4E0E\u8D77\u8DD1\u4E4B\u524D\u8BA4\u9886\u590D\u6838\u7B54\u300C\u6CA1\u6301\u6709\u300D\u540C\u4E00\u53EA\u7B54\u590D:\u8BA4\u9886\u5728\u522B\u7684 run \u4E0A \u21D2 409 conflict.session_active_run,\u5BBF\u4E3B\u4F1A\u8BDD\u5DF2\u5220 \u21D2 404 resume.session_not_found,\u5426\u5219 409 conflict.claim_lost)": {
|
|
2708
2843
|
readonly attr: 409;
|
|
2709
|
-
readonly revises: readonly ["errorCode:internal.error"];
|
|
2710
2844
|
readonly since: "7.149.0";
|
|
2711
2845
|
};
|
|
2712
2846
|
readonly "POST /v1/approvals/:sessionId/decide#parked_redeem_placement_store_fault(\u505C\u9A7B\u5B50\u4EE3\u8D4E\u56DE:\u8BA4\u9886\u4E4B\u524D\u90A3\u4E00\u6B21\u6267\u884C\u5E2D\u8BFB,\u6216\u8BA4\u9886\u4E4B\u540E\u90A3\u4E00\u6B21\u6267\u884C\u653E\u7F6E\u7684\u5E97\u5F80\u8FD4\u6CA1\u7B54\u51FA\u6765;\u8BA4\u9886\u6CA1\u6709\u6216\u5DF2\u56DE\u6EDA,\u5B50\u4EE3\u4ECD\u505C\u7740\u3001\u5361\u4ECD\u5F85\u51B3;\u4F53 decide.store_unreachable + taskId)": {
|
|
2713
2847
|
readonly attr: 503;
|
|
2714
|
-
readonly revises: readonly ["errorCode:internal.error"];
|
|
2715
2848
|
readonly since: "7.149.0";
|
|
2716
2849
|
};
|
|
2717
2850
|
readonly "POST /v1/approvals/:sessionId/decide|/v1/sessions/:id/wake|/v1/assistant/tasks/:id/resume|/v1/assistant/tasks/:id/plan_review#placement_refused_after_claim(\u7EED\u8DD1\u5BB6\u65CF\u3001workflow \u51B3\u5B9A\u5728\u5BBF\u4E3B\u4F1A\u8BDD\u4E0A\u8D77\u7684\u65B0\u4E00\u8DD1\u3001\u505C\u9A7B\u5B50\u4EE3\u8D4E\u56DE\u8BA4\u9886\u4E4B\u540E\u63D0\u4EA4\u6267\u884C\u653E\u7F6E\u8BFB\u51FA\u8FD9\u6761\u4F1A\u8BDD\u6B64\u523B\u4E0D\u80FD\u5728\u672C\u5904\u6267\u884C:\u5DF2\u653E\u5728\u522B\u7684\u8F66\u9053 / \u5199\u8005\u5728\u522B\u5904 / \u8BBE\u5907\u62D2;\u7EED\u8DD1\u8BA4\u9886\u7684\u505C\u9A7B\u884C\u56DE\u5230\u505C\u9A7B\u3001\u505C\u9A7B\u8D4E\u56DE\u56DE\u6EDA,\u5361\u4ECD\u5F85\u51B3,wake \u4E0E\u5BBF\u4E3B\u65B0\u4E00\u8DD1\u73B0\u5EFA\u7684\u884C\u5220\u6389;\u4E0E\u8BA4\u9886\u4E4B\u524D\u540C\u4E00\u53EA\u6298\u6CD5\u3001\u540C\u4E00\u53EA\u4F53;\u4F53 resume_blocked_by_policy + blockedBy \u539F\u7801 + \u539F\u4E8B\u5B9E forkPath / boundLane + retriable)": {
|
|
2718
2851
|
readonly attr: 409;
|
|
2719
|
-
readonly revises: readonly ["errorCode:execution_lane.tree_bound", "errorCode:conflict.session_mirror"];
|
|
2720
2852
|
readonly since: "7.149.0";
|
|
2721
2853
|
};
|
|
2722
2854
|
readonly "POST /v1/tasks#park_commit_ended(\u540C\u6B65\u817F\u505C\u5728\u8981\u6279\u7684\u95E8\u4E0A,\u800C\u505C\u9A7B\u63D0\u4EA4\u7B54\u51FA\u8FD9\u6761 run \u6CA1\u6709\u505C\u4F4F\u3001\u5DF2\u6536\u573A \u2014\u2014 \u505C\u9A7B\u5199\u4E4B\u524D\u5DF2\u6309\u4E0B\u53D6\u6D88 / \u88AB\u5931\u8054\u6536\u5272 / \u522B\u5904\u7EC8\u7ED3;\u5361\u5DF2\u4F5C\u5E9F;\u4F53 = \u6536\u573A\u90A3\u4E00\u884C\u7684\u4FE1\u5C01,\u4E0E\u540C\u952E\u91CD\u653E\u540C\u4E00\u53EA:\u7EC8\u5C40\u884C\u7684\u7ED3\u679C,\u53D6\u6D88\u90A3\u4E00\u5F62 terminal.code cancelled;\u884C\u4E0A\u65E0\u7ED3\u679C \u21D2 \u56DE\u6267\u4E09\u952E)": {
|
|
@@ -2733,17 +2865,14 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
2733
2865
|
};
|
|
2734
2866
|
readonly "GET /v1/tool-approvals/:id#row_unreadable(\u6709\u884C\u7684\u95EE,\u6309 id \u8BFB\u884C\u90A3\u4E00\u62CD\u5E97\u629B / \u8D85\u65F6;\u672C\u526F\u672C\u81EA\u5DF1\u94F8\u7684\u6D3B\u5361\u4E0E\u8D77\u670D\u63A5\u7BA1\u7684\u767B\u8BB0\u540C\u7B54;\u4F53 not_found.ask,\u4E0E\u67E5\u65E0 / \u4E0D\u662F\u4F60\u7684\u9010\u5B57\u8282\u540C)": {
|
|
2735
2867
|
readonly attr: 404;
|
|
2736
|
-
readonly revises: readonly ["selfMinted.toolApprovalReadState:pending"];
|
|
2737
2868
|
readonly since: "7.149.0";
|
|
2738
2869
|
};
|
|
2739
2870
|
readonly "POST /v1/sessions/:id/sync/plan|POST /v1/sessions/:id/sync/import|PUT /v1/sessions/:id/sync/blobs/:hash#foreign_session_deleting(\u63A8\u9001\u4E09\u53E3\u7684\u95E8:id \u4E0A\u662F\u522B\u7684\u4E3B\u4F53\u6B63\u5728\u5220\u9664\u7684\u4F1A\u8BDD \u2014\u2014 \u5220\u9664\u56F4\u680F\u5DF2\u7ACB\u3001\u5C1A\u672A\u5220\u51C0;\u300C\u88AB\u5360\u7740\u300D\u8BFB\u6D3B\u884C \u222A \u5728\u5220\u884C,\u4E0E\u5BF9\u522B\u4EBA\u7684\u6D3B\u884C\u540C\u7B54;\u672C\u4EBA / fleet \u5BF9\u81EA\u5DF1\u5728\u5220\u7684\u4F1A\u8BDD\u4E0D\u53D8,\u62C9\u53D6\u53E3\u4ECD\u53EA\u8BA4\u6D3B\u884C;\u4F53 not_found.session,\u4E0E\u5BF9\u4E0D\u5B58\u5728 id \u7684\u62C9\u53D6\u7B54\u590D\u9010\u5B57\u8282\u540C)": {
|
|
2740
2871
|
readonly attr: 404;
|
|
2741
|
-
readonly revises: readonly ["errorCode:conflict"];
|
|
2742
2872
|
readonly since: "7.149.0";
|
|
2743
2873
|
};
|
|
2744
2874
|
readonly "POST /v1/sessions/:id/sync/import#idle_id_other_principal_in_flight(\u7B2C\u4E00\u9636\u6BB5:id \u4E0A\u8FD8\u6CA1\u6709\u4F1A\u8BDD\u884C,\u800C\u53E6\u4E00\u4E2A\u4E3B\u4F53\u5728\u8FD9\u53EA id \u4E0A\u7684\u7B2C\u4E00\u9636\u6BB5\u6B63\u5728\u98DE;\u5BFC\u5165\u79DF\u7EA6\u952E = \u843D\u70B9\u5C5E\u4E3B\u683C + \u4F1A\u8BDD id,\u7A7A\u95F2 id \u4E0A\u5404\u5360\u5404\u7684;\u4F53 = \u7B2C\u4E00\u9636\u6BB5\u7684\u6682\u5B58\u56DE\u6267 stagingId;\u5148\u63D0\u4EA4\u8005\u5F97,\u8F93\u7684\u90A3\u4E00\u4EFD\u5728\u63D0\u4EA4\u524D\u590D\u5224\u7B54 404 not_found.session,\u4E0E\u8D62\u5BB6\u7684\u63D0\u4EA4\u649E\u5728\u540C\u4E00\u523B\u65F6\u7531\u5E97\u7684\u5C5E\u4E3B CAS \u62D2 409 conflict)": {
|
|
2745
2875
|
readonly attr: 200;
|
|
2746
|
-
readonly revises: readonly ["errorCodeFamily:import_in_flight"];
|
|
2747
2876
|
readonly since: "7.149.0";
|
|
2748
2877
|
};
|
|
2749
2878
|
readonly "POST /v1/tasks|/v1/tasks/stream|/v1/runs#a2aPeers_headers_reserved_member(\u65B0\u63D0\u4EA4;a2aPeers[i].headers \u7684\u6210\u5458\u540D\u662F constructor / prototype \u2014\u2014 \u4E0E mcpServers[i].transport.headers / .env \u540C\u4E00\u5F20\u4FDD\u7559\u6210\u5458\u540D\u8868\u3001\u540C\u4E00\u53EA\u8BFB\u6CD5,\u5927\u5C0F\u5199\u654F\u611F;\u4F53 request.field_invalid + field \u6210\u5458\u7EA7\u8DEF\u5F84 a2aPeers[i].headers.<\u540D>;\u5B58\u76D8\u7EED\u8DD1\u4F53\u91CC\u540C\u5F62 \u21D2 \u7EED\u8DD1\u5BB6\u65CF\u65E2\u6709\u4E00\u9762 #stored_unread_members 409)": {
|
|
@@ -2956,7 +3085,6 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
2956
3085
|
};
|
|
2957
3086
|
readonly "session faces \u00B7 list faces \u00B7 /metrics family#dev-open-principal-header-not-owner": {
|
|
2958
3087
|
readonly attr: "each face's missing-row answer, same body as a missing row (404 not_found.session on GET /v1/sessions/:id · /head · /events · /memory-status · /execution-placement · PATCH /v1/sessions/:id · fork · sync reads (manifest · entries · history blob) · memory/erase · background · background/stop · mcp/reconnect · policy · notify; approval exemptions 404 not_found.session (not found); DELETE /v1/sessions/:id 200 {deleted:false}; sync push family (plan · import · blob put) 404 on another owner's session, its existing create answer on a missing id); GET /v1/sessions · /v1/fleet/stream · /v1/agents/roster · /v1/tasks (trace list) · /v1/usage/* · /v1/sendfile-links pinned to the named caller; /metrics* and GET /v1/tasks/source-summary 401 auth.unauthorized (operator sentence; METRICS_TOKEN, when configured, still opens /metrics* and is judged first); a Bearer this deployment cannot verify does not count as naming no principal (no fleet); a caller naming no principal and presenting no unverifiable credential unchanged (fleet); was 200 / fleet-wide (the principal header read as a label)";
|
|
2959
|
-
readonly revises: readonly ["selfMinted.ownerFaceAnswer:GET /v1/runs/:id · /v1/runs/:id/events#dev-open-principal-header-not-owner"];
|
|
2960
3088
|
readonly since: "7.149.0";
|
|
2961
3089
|
};
|
|
2962
3090
|
readonly "owner-only session ports#unreadable-archive-ownerless-session-fleet-or-operator": {
|
|
@@ -3581,9 +3709,10 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
3581
3709
|
/**
|
|
3582
3710
|
* 设备 WS 协议的修订号(成员 = 修订号;能力位 `deviceExecutor.protocolVersion` 报最高那一只,challenge 帧同值)。`attr` = 那一修订号加进 executor → server 结局码闭集的词
|
|
3583
3711
|
* (修订号 1 = 首版的基集 `base`,词集见随包 `docs/DEVICE-EXECUTOR-PROTOCOL.md` §2.1);executor 声明哪个修订号就只发到那一行为止的词。
|
|
3712
|
+
* 零加词的语义修订(server 发来的帧意思变了)attr = 变更名;协议文档同一行第三栏写变更全文。
|
|
3584
3713
|
*/
|
|
3585
3714
|
readonly deviceProtocolRevision: {
|
|
3586
|
-
readonly at: "GET /v1/capabilities deviceExecutor.protocolVersion 与 device WS challenge 帧的修订号(<修订号> →
|
|
3715
|
+
readonly at: "GET /v1/capabilities deviceExecutor.protocolVersion 与 device WS challenge 帧的修订号(<修订号> → 它加进结局码闭集的词;零加词的语义修订 → 变更名)";
|
|
3587
3716
|
readonly members: {
|
|
3588
3717
|
1: {
|
|
3589
3718
|
attr: string;
|
|
@@ -3601,6 +3730,10 @@ export declare const SELF_MINTED_WIRE: {
|
|
|
3601
3730
|
attr: string;
|
|
3602
3731
|
since: string;
|
|
3603
3732
|
};
|
|
3733
|
+
5: {
|
|
3734
|
+
attr: string;
|
|
3735
|
+
since: string;
|
|
3736
|
+
};
|
|
3604
3737
|
};
|
|
3605
3738
|
};
|
|
3606
3739
|
/**
|