@sema-agent/server 7.101.0 → 7.102.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 +23 -0
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/USAGE.md +58 -4
- package/dist/approval-card.d.ts +35 -2
- package/dist/approval-card.js +19 -1
- package/dist/background-session-reap.d.ts +55 -0
- package/dist/background-session-reap.js +90 -0
- package/dist/boot/config-center.d.ts +16 -4
- package/dist/boot/config-center.js +44 -15
- package/dist/boot/exit-boundary.js +17 -0
- package/dist/boot/runner-deps.js +1 -0
- package/dist/boot/runtime-caps.js +3 -2
- package/dist/boot/session-faces.js +3 -4
- package/dist/boot/shutdown.d.ts +2 -1
- package/dist/boot/shutdown.js +33 -12
- package/dist/boot/stage-07-capability-layer.d.ts +1 -1
- package/dist/boot/stage-07-capability-layer.js +6 -4
- package/dist/boot/stage-08-reapers.d.ts +1 -1
- package/dist/boot/stage-09-leader.d.ts +1 -1
- package/dist/boot/stage-10-http-server.d.ts +1 -1
- package/dist/boot/stage-10-http-server.js +9 -3
- package/dist/capabilities/builtin-tools.d.ts +14 -1
- package/dist/capabilities/builtin-tools.js +3 -0
- package/dist/capabilities/scenarios.d.ts +1 -1
- package/dist/capabilities/scenarios.js +3 -3
- package/dist/center-credential-renewer.d.ts +76 -0
- package/dist/center-credential-renewer.js +359 -0
- package/dist/center-credential.d.ts +76 -22
- package/dist/center-credential.js +119 -43
- package/dist/config-catalog.js +9 -4
- package/dist/config-center/apply-effective.js +5 -12
- package/dist/config-center/center-request.d.ts +13 -0
- package/dist/config-center/center-request.js +23 -3
- package/dist/config-center/facade.d.ts +1 -1
- package/dist/config-center/http-client.js +2 -5
- package/dist/config-center/read-warnings.d.ts +19 -48
- package/dist/config-center/read-warnings.js +7 -49
- package/dist/config-center/restart-signal.d.ts +8 -11
- package/dist/config-center/types.d.ts +4 -2
- package/dist/config-provider.js +1 -48
- package/dist/config-types.d.ts +77 -5
- package/dist/config-types.js +5 -0
- package/dist/config.js +49 -13
- package/dist/device-store.d.ts +1 -1
- package/dist/fleet/fleet-bus.d.ts +30 -4
- package/dist/fleet/fleet-bus.js +20 -4
- package/dist/fleet/fleet-reconciler.d.ts +29 -6
- package/dist/fleet/fleet-reconciler.js +109 -79
- package/dist/fleet-client.d.ts +21 -7
- package/dist/fleet-client.js +41 -12
- package/dist/fleet-lease.d.ts +1 -1
- package/dist/http/approval-sweeps.js +5 -20
- package/dist/http/dispatch.js +20 -14
- package/dist/http/readiness.d.ts +87 -0
- package/dist/http/readiness.js +54 -0
- package/dist/http/resume-legs.js +5 -4
- package/dist/http/route-table.d.ts +7 -0
- package/dist/http/route-table.js +6 -0
- package/dist/http/routes/a2a-serve.js +6 -14
- package/dist/http/routes/approvals-assistant.js +1 -0
- package/dist/http/routes/background.d.ts +80 -0
- package/dist/http/routes/background.js +94 -0
- package/dist/http/routes/capabilities.js +2 -0
- package/dist/http/server.d.ts +21 -8
- package/dist/http/server.js +2 -2
- package/dist/model-entry-refusal.d.ts +11 -10
- package/dist/model-entry-refusal.js +13 -10
- package/dist/observability/fail-open.d.ts +6 -2
- package/dist/observability/fail-open.js +6 -2
- package/dist/parked-decide.d.ts +11 -5
- package/dist/parked-decide.js +4 -1
- package/dist/parked-revive-surface.d.ts +47 -0
- package/dist/parked-revive-surface.js +20 -0
- package/dist/plugins/background-shell-support.d.ts +20 -1
- package/dist/plugins/background-shell-support.js +26 -0
- package/dist/plugins/host-platform.d.ts +11 -1
- package/dist/plugins/host-platform.js +11 -0
- package/dist/plugins/remote-env-host.d.ts +14 -1
- package/dist/plugins/remote-env-host.js +18 -5
- package/dist/tool-approval.d.ts +39 -1
- package/dist/tool-approval.js +37 -8
- package/dist/trace/core-keyset-guard.d.ts +3 -3
- package/dist/trace/engine-notice-wire.d.ts +1 -1
- package/dist/trace/engine-notice-wire.js +2 -0
- package/package.json +3 -3
package/dist/tool-approval.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { contentKindOf } from "./approval-content-kind.js";
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
-
import { uuidv7, MAX_RULE_TEXT_CHARS, parseRuleText, pathConfinableWriteToolNames } from "@sema-agent/core";
|
|
3
|
+
import { uuidv7, MAX_RULE_TEXT_CHARS, READ_ROOT_CANDIDATE_DIR_MAX, parseRuleText, pathConfinableWriteToolNames } from "@sema-agent/core";
|
|
4
4
|
import { precheckCardRuleText } from "./rules-consent.js";
|
|
5
5
|
import { redactDeep, redactSecrets, redactSecretsWithArms } from "./trace/redact.js";
|
|
6
6
|
import { hasBidiControls } from "./text-bidi.js";
|
|
@@ -8,7 +8,7 @@ import { approvalPayloadFingerprint } from "./plugins/approval-payload-fingerpri
|
|
|
8
8
|
import { createLogger } from "./observability/logger.js";
|
|
9
9
|
import { recordFailOpen } from "./observability/fail-open.js";
|
|
10
10
|
import { deriveAskId, deriveAskScopedBatchId, deriveBatchId, MAX_DECISION_NOTE_CHARS } from "./approval-ask-machine.js";
|
|
11
|
-
import { ApprovalCardEnvelopeSchema, MAX_RULE_OFFERS, buildApprovalCard, buildApprovalCardEnvelope, buildApprovalRequestFrame, buildRevokeFrame, readDenialLimitFallback, readProbeCause, readReadRootCandidate, readRuleEvidence, readRuleOffersAbsence, readRuleOffersAbsenceSeat, readParkRowTrueSeat, RuleOfferRawSchema, backfillLegacyBatchMemberKind, screenUncoveredDetailSeat, } from "./approval-card.js";
|
|
11
|
+
import { ApprovalCardEnvelopeSchema, MAX_RULE_OFFERS, buildApprovalCard, buildApprovalCardEnvelope, buildApprovalRequestFrame, buildRevokeFrame, readDenialLimitFallback, readProbeCause, readReadRootCandidate, readRuleEvidence, readRuleOffersAbsence, readRuleOffersAbsenceSeat, readParkRowTrueSeat, readClosedWordSeat, RuleOfferRawSchema, backfillLegacyBatchMemberKind, screenUncoveredDetailSeat, } from "./approval-card.js";
|
|
12
12
|
import { POLICY_REFUSAL_DECISION, projectAskTerminalClaimTruth } from "./plugins/approval-ask-store-sql.js";
|
|
13
13
|
import { settleByPolicy } from "./approval-policy-settlement.js";
|
|
14
14
|
import { governanceAskMarksFor, runWithGovernanceAskScope } from "./governance-ask-marks.js";
|
|
@@ -111,6 +111,8 @@ function respondSettledBy(parsed) {
|
|
|
111
111
|
return parsed.settledBy;
|
|
112
112
|
}
|
|
113
113
|
export const SETTLED_BY_DENY_ONLY = 'settledBy is only meaningful with decision "deny" — only a person approves an action that EXECUTES, so a self-reported settlement source on an allow is a contradiction the engine refuses; the refusal would arrive too late to undo this door\'s own side effects (a session allow-all grant, a persisted rule, a DECIDED row that replays as a plain approval), so it is refused here, before the decision';
|
|
114
|
+
export const READ_ROOT_GRANT_ALLOW_ONLY = 'readRootGrant is only meaningful with decision "allow" — it is the card\'s "Yes, and add directory" answer (allow this call and add the card\'s readRootCandidate.dir to this run\'s read directories)';
|
|
115
|
+
export const READ_ROOT_GRANT_SHAPE = `readRootGrant must be the card's readRootCandidate.dir sent back byte for byte — a non-empty string of at most ${READ_ROOT_CANDIDATE_DIR_MAX} characters`;
|
|
114
116
|
export const PERSIST_RULE_SCOPE_REFUSED = "this endpoint does not accept a rule scope — the server mints it from where the approval happened (send neither `scope` nor `persistRule.scope`)";
|
|
115
117
|
export function parseToolApprovalResponse(body) {
|
|
116
118
|
if (body === null || typeof body !== "object" || Array.isArray(body))
|
|
@@ -161,6 +163,12 @@ export function parseToolApprovalResponse(body) {
|
|
|
161
163
|
if (rawSettledBy !== undefined && typeof rawSettledBy !== "string")
|
|
162
164
|
return { ok: false, error: SETTLED_BY_MUST_BE_STRING };
|
|
163
165
|
const settledBy = rawSettledBy;
|
|
166
|
+
const rawGrant = body.readRootGrant;
|
|
167
|
+
if (rawGrant !== undefined && d !== "allow")
|
|
168
|
+
return { ok: false, error: READ_ROOT_GRANT_ALLOW_ONLY };
|
|
169
|
+
if (rawGrant !== undefined && (typeof rawGrant !== "string" || rawGrant === "" || rawGrant.length > READ_ROOT_CANDIDATE_DIR_MAX))
|
|
170
|
+
return { ok: false, error: READ_ROOT_GRANT_SHAPE };
|
|
171
|
+
const readRootGrant = rawGrant;
|
|
164
172
|
return {
|
|
165
173
|
ok: true,
|
|
166
174
|
value: d,
|
|
@@ -168,6 +176,7 @@ export function parseToolApprovalResponse(body) {
|
|
|
168
176
|
...(persistRule !== undefined ? { persistRule } : {}),
|
|
169
177
|
...(note !== undefined ? { note } : {}),
|
|
170
178
|
...(rawSettledBy !== undefined ? { settledBy } : {}),
|
|
179
|
+
...(readRootGrant !== undefined ? { readRootGrant } : {}),
|
|
171
180
|
};
|
|
172
181
|
}
|
|
173
182
|
return { ok: false, error: 'decision must be one of "allow" | "allow_session" | "deny"' };
|
|
@@ -938,6 +947,8 @@ export class ToolApprovalCoordinator {
|
|
|
938
947
|
const bounded = boundArgs(req.args);
|
|
939
948
|
let effectiveGovernanceForced = governanceForced;
|
|
940
949
|
let ruleLaneMaterial = this.buildRuleLaneMaterial(req, origin.owner, governanceForced, origin.sessionId);
|
|
950
|
+
const mandateWord = readClosedWordSeat(req, "mandate");
|
|
951
|
+
const originWord = typeof req.origin === "string" && req.origin.length > 0 ? req.origin : undefined;
|
|
941
952
|
const frame = {
|
|
942
953
|
type: "tool_approval",
|
|
943
954
|
approvalId: id,
|
|
@@ -963,7 +974,8 @@ export class ToolApprovalCoordinator {
|
|
|
963
974
|
...(governanceForced ? { governanceForced: true } : {}),
|
|
964
975
|
...(req.requiresRealApproval === true ? { requiresRealApproval: true } : {}),
|
|
965
976
|
...(req.mandated === true ? { mandated: true } : {}),
|
|
966
|
-
...(
|
|
977
|
+
...(mandateWord !== undefined ? { mandate: mandateWord } : {}),
|
|
978
|
+
...(originWord !== undefined ? { origin: originWord } : {}),
|
|
967
979
|
...(typeof req.persistedRuleShadowed === "string" && req.persistedRuleShadowed !== ""
|
|
968
980
|
? { persistedRuleShadowed: redactSecrets(req.persistedRuleShadowed).slice(0, MAX_RULE_TEXT_CHARS) }
|
|
969
981
|
: {}),
|
|
@@ -1170,11 +1182,17 @@ export class ToolApprovalCoordinator {
|
|
|
1170
1182
|
return unattended === "unavailable" ? unattended : shapeDeny(unattended);
|
|
1171
1183
|
}
|
|
1172
1184
|
if (settled.allowed) {
|
|
1173
|
-
|
|
1185
|
+
if (settled.updatedInput === undefined && settled.readRootGrant === undefined)
|
|
1186
|
+
return true;
|
|
1187
|
+
return {
|
|
1188
|
+
allow: true,
|
|
1189
|
+
...(settled.updatedInput !== undefined ? { updatedInput: settled.updatedInput } : {}),
|
|
1190
|
+
...(settled.readRootGrant !== undefined ? { readRootGrant: settled.readRootGrant } : {}),
|
|
1191
|
+
};
|
|
1174
1192
|
}
|
|
1175
1193
|
return shapeDeny(false);
|
|
1176
1194
|
};
|
|
1177
|
-
const settle = (allowed, outcome, updatedInput, hostSettledBy, denyReason) => {
|
|
1195
|
+
const settle = (allowed, outcome, updatedInput, hostSettledBy, denyReason, readRootGrant) => {
|
|
1178
1196
|
if (done)
|
|
1179
1197
|
return;
|
|
1180
1198
|
done = true;
|
|
@@ -1208,7 +1226,7 @@ export class ToolApprovalCoordinator {
|
|
|
1208
1226
|
...(hostSettledBy !== undefined ? { settledBy: hostSettledBy } : {}),
|
|
1209
1227
|
settledAtMs: Date.now(),
|
|
1210
1228
|
});
|
|
1211
|
-
resolveAllowed({ allowed, ...(allowed && updatedInput !== undefined ? { updatedInput } : {}) });
|
|
1229
|
+
resolveAllowed({ allowed, ...(allowed && updatedInput !== undefined ? { updatedInput } : {}), ...(allowed && readRootGrant !== undefined ? { readRootGrant } : {}) });
|
|
1212
1230
|
};
|
|
1213
1231
|
const broadcastClaimTruth = (read) => {
|
|
1214
1232
|
if (askId === undefined)
|
|
@@ -1483,6 +1501,8 @@ export class ToolApprovalCoordinator {
|
|
|
1483
1501
|
...(effectiveGovernanceForced ? { governanceForced: true } : {}),
|
|
1484
1502
|
...(req.requiresRealApproval === true ? { requiresRealApproval: true } : {}),
|
|
1485
1503
|
...(req.mandated === true ? { mandated: true } : {}),
|
|
1504
|
+
...(mandateWord !== undefined ? { mandate: mandateWord } : {}),
|
|
1505
|
+
...(originWord !== undefined ? { origin: originWord } : {}),
|
|
1486
1506
|
...(askId !== undefined && batchId !== undefined ? { askId, batchId } : {}),
|
|
1487
1507
|
};
|
|
1488
1508
|
selfEntry = pendingEntry;
|
|
@@ -2051,7 +2071,7 @@ export class ToolApprovalCoordinator {
|
|
|
2051
2071
|
approvalPayloadFingerprint({ updatedInput: ambiguousConfirmedRow.updatedInput }) === approvalPayloadFingerprint({ updatedInput: parsed.updatedInput });
|
|
2052
2072
|
const result = this.finishRespond(id, entry, parsed, {
|
|
2053
2073
|
noteRecorded: noteLanded,
|
|
2054
|
-
...(winnerRow !== undefined ? { settleOutcome: outcomeOfDecidedRow(winnerRow) } : {}),
|
|
2074
|
+
...(winnerRow !== undefined ? { settleOutcome: outcomeOfDecidedRow(winnerRow), settleOutcomeIsThisRequest: ambiguousConfirmedRow === undefined } : {}),
|
|
2055
2075
|
...(ambiguousConfirmedRow !== undefined ? { updatedInputDelivered: payloadIsMine } : {}),
|
|
2056
2076
|
});
|
|
2057
2077
|
if (winnerRow !== undefined)
|
|
@@ -2077,7 +2097,8 @@ export class ToolApprovalCoordinator {
|
|
|
2077
2097
|
}
|
|
2078
2098
|
const allowed = parsed.value !== "deny";
|
|
2079
2099
|
const settleArgs = opts?.settleOutcome !== undefined ? settleArgsOfDecided(opts.settleOutcome) : { allowed, updatedInput: parsed.updatedInput, settledBy: respondSettledBy(parsed) };
|
|
2080
|
-
|
|
2100
|
+
const readRootGrant = opts?.settleOutcome === undefined || opts.settleOutcomeIsThisRequest === true ? parsed.readRootGrant : undefined;
|
|
2101
|
+
entry.settle(settleArgs.allowed, settleArgs.allowed ? "allowed" : "denied", settleArgs.updatedInput, settleArgs.settledBy, settleArgs.allowed ? undefined : parsed.note, readRootGrant);
|
|
2081
2102
|
const updatedInputDelivered = opts?.updatedInputDelivered ?? true;
|
|
2082
2103
|
const noteRecorded = opts?.noteRecorded ?? false;
|
|
2083
2104
|
return {
|
|
@@ -2107,6 +2128,8 @@ export class ToolApprovalCoordinator {
|
|
|
2107
2128
|
...(e.requiresRealApproval ? { requiresRealApproval: true } : {}),
|
|
2108
2129
|
...(e.governanceForced ? { governanceForced: true } : {}),
|
|
2109
2130
|
...(e.mandated ? { mandated: true } : {}),
|
|
2131
|
+
...(e.mandate !== undefined ? { mandate: e.mandate } : {}),
|
|
2132
|
+
...(e.origin !== undefined ? { origin: e.origin } : {}),
|
|
2110
2133
|
...(e.originTaskId !== undefined ? { fromSubagent: true, originTaskId: e.originTaskId } : {}),
|
|
2111
2134
|
...(contentKind !== undefined ? { contentKind } : {}),
|
|
2112
2135
|
frame: e.frame.approvalId === id ? e.frame : { ...e.frame, approvalId: id },
|
|
@@ -2114,6 +2137,12 @@ export class ToolApprovalCoordinator {
|
|
|
2114
2137
|
}
|
|
2115
2138
|
return rows;
|
|
2116
2139
|
}
|
|
2140
|
+
hasLivePendingFrom(originTaskId) {
|
|
2141
|
+
for (const e of this.pending.values())
|
|
2142
|
+
if (e.originTaskId === originTaskId)
|
|
2143
|
+
return true;
|
|
2144
|
+
return false;
|
|
2145
|
+
}
|
|
2117
2146
|
async pollSuspendedDecisions() {
|
|
2118
2147
|
const store = this.askStore;
|
|
2119
2148
|
if (!store)
|
|
@@ -43,7 +43,7 @@ type _GuardBgNotifReverse = AssertAllKeysHandled<Exclude<BgNotifProjected | BgNo
|
|
|
43
43
|
type RosterProjected = "name" | "agentId" | "sessionId" | "toolUseId" | "owner" | "scope" | "sessionScoped" | "rootSessionId" | "model" | "modelFallback" | "createdAt";
|
|
44
44
|
type _GuardRoster = AssertAllKeysHandled<Exclude<keyof RosterEntry, RosterProjected>>;
|
|
45
45
|
type _GuardRosterReverse = AssertAllKeysHandled<Exclude<RosterProjected, keyof RosterEntry>>;
|
|
46
|
-
type AskProjected = "toolName" | "toolCallId" | "args" | "message" | "sourceTaskId" | "fromSubagent" | "sourceAgentName" | "delegation" | "ruleOffers" | "ruleOffersAbsence" | "persistedRuleShadowed" | "probeCause" | "ruleEvidence" | "requiresRealApproval" | "denialLimitFallback" | "origin" | "ruleStoreUnreadable" | "readRootCandidate" | "mandated";
|
|
46
|
+
type AskProjected = "toolName" | "toolCallId" | "args" | "message" | "sourceTaskId" | "fromSubagent" | "sourceAgentName" | "delegation" | "ruleOffers" | "ruleOffersAbsence" | "persistedRuleShadowed" | "probeCause" | "ruleEvidence" | "requiresRealApproval" | "denialLimitFallback" | "origin" | "ruleStoreUnreadable" | "readRootCandidate" | "mandated" | "mandate";
|
|
47
47
|
type AskExcluded = "preview" | "principal" | "riskAxes" | "boundInputHash" | "isDelegatedChild" | "probeReason" | "hasBidiControls" | "previewWithheld" | "execCwd";
|
|
48
48
|
type _GuardAsk = AssertAllKeysHandled<Exclude<keyof AskRequest, AskProjected | AskExcluded>>;
|
|
49
49
|
type _GuardAskReverse = AssertAllKeysHandled<Exclude<AskProjected | AskExcluded, keyof AskRequest>>;
|
|
@@ -130,7 +130,7 @@ type _GuardPermissionTraceReverse = AssertAllKeysHandled<Exclude<PermissionTrace
|
|
|
130
130
|
/** `T` 非 `never` 时收敛到 `never`(空集 ⇒ 残留 `"EMPTY"` ⇒ tsc 红)。 */
|
|
131
131
|
type AssertNonEmpty<T> = [T] extends [never] ? "EMPTY" : never;
|
|
132
132
|
type _GuardPermissionTraceNonEmpty = AssertAllKeysHandled<AssertNonEmpty<PermissionTraceKind>>;
|
|
133
|
-
type SummaryProjected = "sessionId" | "scope" | "createdAt" | "gateKind" | "severity" | "spentMicroUsd" | "deadline" | "hasBidiControls" | "requiresRealApproval" | "denialLimitFallback" | "origin" | "ruleStoreUnreadable" | "mandated";
|
|
133
|
+
type SummaryProjected = "sessionId" | "scope" | "createdAt" | "gateKind" | "severity" | "spentMicroUsd" | "deadline" | "hasBidiControls" | "requiresRealApproval" | "denialLimitFallback" | "origin" | "ruleStoreUnreadable" | "mandated" | "mandate";
|
|
134
134
|
type SummaryExcluded = "token" | "toolInput" | "toolName" | "toolCallId" | "preview" | "principal" | "sourceTaskId" | "contentKind" | "restoreMode" | "checkpointId" | "previewWithheld";
|
|
135
135
|
type _GuardInboxSummary = AssertAllKeysHandled<Exclude<keyof CheckpointSummary, SummaryProjected | SummaryExcluded>>;
|
|
136
136
|
type _GuardInboxSummaryReverse = AssertAllKeysHandled<Exclude<SummaryProjected | SummaryExcluded, keyof CheckpointSummary>>;
|
|
@@ -138,7 +138,7 @@ type ParkArmKeys = keyof Extract<PendingAction, {
|
|
|
138
138
|
kind: "tool_approval";
|
|
139
139
|
}>;
|
|
140
140
|
type ParkArmQueueProjected = "toolName" | "toolCallId" | "boundInputHash" | "ruleOffers" | "hasBidiControls" | keyof import("../approval-card.js").ParkRowFacts;
|
|
141
|
-
type ParkArmQueueExcluded = "kind" | "args" | "batchToolCallIds" | "completedCallIds" | "capabilityId" | "contractId" | "shapeDigest" | "implementationRevision" | "rosterDigest" | "family" | "pathTarget" | "preview" | "previewWithheld" | "execCwd" | "denialLimitFallback" | "
|
|
141
|
+
type ParkArmQueueExcluded = "kind" | "args" | "batchToolCallIds" | "completedCallIds" | "capabilityId" | "contractId" | "shapeDigest" | "implementationRevision" | "rosterDigest" | "family" | "pathTarget" | "preview" | "previewWithheld" | "execCwd" | "denialLimitFallback" | "ruleStoreUnreadable";
|
|
142
142
|
type _GuardParkArmQueue = AssertAllKeysHandled<Exclude<ParkArmKeys, ParkArmQueueProjected | ParkArmQueueExcluded>>;
|
|
143
143
|
type _GuardParkArmQueueReverse = AssertAllKeysHandled<Exclude<ParkArmQueueProjected | ParkArmQueueExcluded, ParkArmKeys>>;
|
|
144
144
|
type _NoDoubleBookParkArmQueue = AssertAllKeysHandled<Extract<ParkArmQueueProjected, ParkArmQueueExcluded>>;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* 同文件 G1 e2e 的全码扇出夹具、以及契约文档附录 D.3 那张表(含**小节标题里的码数** —— 那道门本批
|
|
17
17
|
* 刚立,立完就在下一次加码时自己咬住了)。
|
|
18
18
|
*/
|
|
19
|
-
export declare const ENGINE_NOTICE_WIRE_CODES: readonly ["memory.session_polluted", "memory.harvest_quarantined", "memory.delegation_static_mark_waived", "memory.hold_opened", "memory.hold_released", "memory.hold_disposed", "task.turn_interrupted", "steering.parked_input_blocked", "task.user_steer_undrained", "task.user_followup_undrained", "memory.capture_opted_out", "memory.capture_optout_unpersisted", "task.halt_unconsumed", "task.late_approval", "config.durable_gate_unavailable", "peer.inbound_disposition", "peer.held_settled", "peer.idle_subscription", "classifier.denial_limit", "mcp.injection_dropped", "delegation.ask_unresolvable", "task.interrupt_unconsumed", "instructions.source_changed"];
|
|
19
|
+
export declare const ENGINE_NOTICE_WIRE_CODES: readonly ["memory.session_polluted", "memory.harvest_quarantined", "memory.delegation_static_mark_waived", "memory.hold_opened", "memory.hold_released", "memory.hold_disposed", "task.turn_interrupted", "steering.parked_input_blocked", "task.user_steer_undrained", "task.user_followup_undrained", "memory.capture_opted_out", "memory.capture_optout_unpersisted", "task.halt_unconsumed", "task.late_approval", "config.durable_gate_unavailable", "peer.inbound_disposition", "peer.held_settled", "peer.idle_subscription", "classifier.denial_limit", "mcp.injection_dropped", "delegation.ask_unresolvable", "task.interrupt_unconsumed", "approval.read_root_granted", "approval.read_root_grant_rejected", "instructions.source_changed"];
|
|
20
20
|
export type EngineNoticeWireCode = (typeof ENGINE_NOTICE_WIRE_CODES)[number];
|
|
21
21
|
/**
|
|
22
22
|
* S-690 —— **本仓自铸**的通告码与它们的受众(码 / 铸点 / 受众三者的属主都是本仓)。
|
|
@@ -23,6 +23,8 @@ export const ENGINE_NOTICE_WIRE_CODES = [
|
|
|
23
23
|
"mcp.injection_dropped",
|
|
24
24
|
"delegation.ask_unresolvable",
|
|
25
25
|
"task.interrupt_unconsumed",
|
|
26
|
+
"approval.read_root_granted",
|
|
27
|
+
"approval.read_root_grant_rejected",
|
|
26
28
|
"instructions.source_changed",
|
|
27
29
|
];
|
|
28
30
|
export const SERVER_NOTICE_AUDIENCE = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/server",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.102.0",
|
|
4
4
|
"description": "Sema Server — the server/API implementation layer for Sema, wiring core, registry, model providers, and cloud agent execution. Built on @sema-agent/core.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "BUSL-1.1",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"build:binary:run-local:darwin-arm64": "bun build --compile --target=bun-darwin-arm64 src/run-local.ts --outfile dist/run-local-darwin-arm64"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@sema-agent/core": "7.
|
|
65
|
-
"@sema-agent/settings-schema": "6.
|
|
64
|
+
"@sema-agent/core": "7.32.1",
|
|
65
|
+
"@sema-agent/settings-schema": "6.1.0",
|
|
66
66
|
"e2b": "^2.28.0",
|
|
67
67
|
"libsodium-wrappers": "^0.8.4",
|
|
68
68
|
"mysql2": "^3.22.4",
|