@sema-agent/server 7.142.0 → 7.143.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 +442 -0
- package/USAGE.md +41 -24
- package/dist/adoption/plan.js +22 -0
- package/dist/approval-ask-audit-store.d.ts +7 -5
- package/dist/approval-ask-audit-store.js +12 -6
- package/dist/approval-ask-machine.d.ts +15 -7
- package/dist/approval-ask-machine.js +10 -4
- package/dist/approval-card.d.ts +124 -25
- package/dist/approval-card.js +103 -23
- package/dist/approval-queue-kind.d.ts +27 -0
- package/dist/approval-queue-kind.js +6 -0
- package/dist/approval-reconciler.d.ts +8 -8
- package/dist/approval-reconciler.js +3 -3
- package/dist/audit.js +4 -2
- package/dist/boot/budget-tracing.d.ts +1 -1
- package/dist/boot/governance-seams.d.ts +26 -41
- package/dist/boot/governance-seams.js +61 -28
- package/dist/boot/late-binds.d.ts +7 -4
- package/dist/boot/late-binds.js +3 -1
- package/dist/boot/leader.js +2 -4
- package/dist/boot/memory-consolidation.d.ts +0 -8
- package/dist/boot/memory-consolidation.js +3 -3
- package/dist/boot/reapers.js +5 -4
- package/dist/boot/resolve-spec.d.ts +1 -1
- package/dist/boot/resolve-spec.js +8 -8
- package/dist/boot/runner-deps.d.ts +10 -7
- package/dist/boot/runner-deps.js +5 -17
- package/dist/boot/shutdown.d.ts +9 -0
- package/dist/boot/shutdown.js +16 -2
- package/dist/boot/stage-02-web-admin-pull.js +3 -0
- package/dist/boot/stage-03-store-backend.d.ts +4 -1
- package/dist/boot/stage-03-store-backend.js +1 -2
- package/dist/boot/stage-04-stores.d.ts +5 -2
- package/dist/boot/stage-04-stores.js +3 -5
- package/dist/boot/stage-05-execution-env.d.ts +5 -2
- package/dist/boot/stage-06-runners.d.ts +5 -2
- package/dist/boot/stage-06-runners.js +1 -3
- package/dist/boot/stage-07-capability-layer.d.ts +5 -2
- package/dist/boot/stage-07-capability-layer.js +5 -1
- package/dist/boot/stage-08-reapers.d.ts +5 -2
- package/dist/boot/stage-09-leader.d.ts +5 -2
- package/dist/boot/stage-10-http-server.d.ts +5 -2
- package/dist/boot/stage-10-http-server.js +9 -1
- package/dist/boot/stores.d.ts +5 -2
- package/dist/boot/stores.js +7 -7
- package/dist/boot/web-admin.d.ts +5 -1
- package/dist/boot/web-admin.js +31 -19
- package/dist/capabilities/hands-lane.d.ts +9 -39
- package/dist/capabilities/hands-lane.js +8 -13
- package/dist/capabilities/mcp-probe.d.ts +3 -2
- package/dist/capabilities/scenarios.d.ts +11 -1
- package/dist/capabilities/scenarios.js +1 -0
- package/dist/capabilities/skills.d.ts +1 -17
- package/dist/capabilities/skills.js +0 -8
- package/dist/capability-facts.d.ts +8 -8
- package/dist/capability-facts.js +4 -4
- package/dist/card-void.d.ts +6 -9
- package/dist/config-catalog.js +1 -1
- package/dist/config-dir-trust.js +58 -29
- package/dist/config-invariants.d.ts +7 -1
- package/dist/config-invariants.js +7 -0
- package/dist/config-provider.d.ts +10 -0
- package/dist/config-provider.js +15 -4
- package/dist/config-root-migration.d.ts +13 -0
- package/dist/config-root-migration.js +99 -0
- package/dist/config-types.d.ts +5 -5
- package/dist/config.d.ts +4 -3
- package/dist/config.js +1 -1
- package/dist/delegated-session-owner.d.ts +5 -3
- package/dist/delegated-session-owner.js +1 -1
- package/dist/device-ws-protocol.d.ts +1 -0
- package/dist/device-ws-protocol.js +2 -1
- package/dist/env-model-table-gate.d.ts +53 -0
- package/dist/env-model-table-gate.js +53 -0
- package/dist/fleet/fleet-bus.d.ts +28 -52
- package/dist/fleet/fleet-bus.js +35 -100
- package/dist/fleet/fleet-reconciler.d.ts +4 -4
- package/dist/fleet/fleet-reconciler.js +1 -1
- package/dist/fleet/subagent-tail-bus.d.ts +14 -11
- package/dist/fleet/subagent-tail-bus.js +15 -28
- package/dist/hooks/hook-runner.js +28 -7
- package/dist/host-decision.d.ts +54 -20
- package/dist/host-decision.js +42 -14
- package/dist/http/admission.d.ts +1 -1
- package/dist/http/admission.js +7 -3
- package/dist/http/approval-sweeps.js +11 -8
- package/dist/http/caller-trust.d.ts +1 -1
- package/dist/http/durable-run-leg.js +2 -2
- package/dist/http/engine-refusal.d.ts +16 -0
- package/dist/http/engine-refusal.js +17 -0
- package/dist/http/memory-compliance-failure-reply.d.ts +1 -3
- package/dist/http/memory-compliance-failure-reply.js +4 -6
- package/dist/http/owner-access.d.ts +11 -0
- package/dist/http/owner-access.js +13 -0
- package/dist/http/resume-legs.d.ts +21 -7
- package/dist/http/resume-legs.js +71 -49
- package/dist/http/resume-restatement.d.ts +39 -0
- package/dist/http/resume-restatement.js +25 -0
- package/dist/http/route-ctx.d.ts +35 -10
- package/dist/http/route-ctx.js +1 -1
- package/dist/http/routes/approvals-assistant.d.ts +9 -1
- package/dist/http/routes/approvals-assistant.js +142 -31
- package/dist/http/routes/capabilities.js +11 -2
- package/dist/http/routes/memory-policy.d.ts +2 -2
- package/dist/http/routes/memory-policy.js +1 -1
- package/dist/http/routes/notify-wake.js +23 -25
- package/dist/http/routes/rules.js +48 -13
- package/dist/http/routes/runs.js +9 -8
- package/dist/http/routes/session-memory-sync.d.ts +34 -6
- package/dist/http/routes/session-memory-sync.js +27 -10
- package/dist/http/routes/session-sync.js +13 -20
- package/dist/http/routes/sessions.d.ts +2 -2
- package/dist/http/routes/sessions.js +22 -23
- package/dist/http/routes/tasks.js +27 -49
- package/dist/http/server.d.ts +13 -7
- package/dist/http/server.js +2 -2
- package/dist/http/stored-body-replay.js +15 -4
- package/dist/http/wire-types.d.ts +17 -7
- package/dist/leader/leader.js +5 -2
- package/dist/leader/wire.d.ts +7 -1
- package/dist/leader/wire.js +6 -5
- package/dist/leg-facts.d.ts +37 -0
- package/dist/leg-facts.js +15 -0
- package/dist/memory-bundle-engine.d.ts +1 -4
- package/dist/memory-bundle-engine.js +2 -2
- package/dist/memory-operator-faces.d.ts +30 -66
- package/dist/memory-operator-faces.js +17 -88
- package/dist/memory-scope-stores.d.ts +38 -40
- package/dist/memory-scope-stores.js +51 -36
- package/dist/memory-scope.d.ts +0 -9
- package/dist/memory-scope.js +0 -9
- package/dist/memory-sync-client.js +14 -3
- package/dist/memory-sync.d.ts +20 -4
- package/dist/memory-sync.js +23 -4
- package/dist/model-plane-face.d.ts +13 -7
- package/dist/model-plane-face.js +2 -1
- package/dist/observability/fail-open.d.ts +20 -4
- package/dist/observability/fail-open.js +17 -4
- package/dist/observability/run-terminal.js +4 -0
- package/dist/orchestration/workflow-completion-inbox.d.ts +5 -19
- package/dist/orchestration/workflow-completion-inbox.js +0 -12
- package/dist/orchestration/workflow-notify-journal.d.ts +3 -2
- package/dist/orchestration/workflow-park-decision.d.ts +8 -3
- package/dist/orchestration/workflow-park-decision.js +5 -3
- package/dist/org-delivery-gate.d.ts +11 -0
- package/dist/org-delivery-gate.js +19 -1
- package/dist/parked-decide.d.ts +13 -9
- package/dist/parked-decide.js +7 -7
- package/dist/parked-revive-surface.js +1 -1
- package/dist/peer-inbound-face.d.ts +127 -0
- package/dist/peer-inbound-face.js +158 -0
- package/dist/permission-rule-list.d.ts +13 -9
- package/dist/permission-rule-list.js +7 -3
- package/dist/plugins/approval-ask-store-file.js +18 -6
- package/dist/plugins/approval-ask-store-memory.js +8 -6
- package/dist/plugins/approval-ask-store-sql.d.ts +28 -13
- package/dist/plugins/approval-ask-store-sql.js +30 -11
- package/dist/plugins/checkpoint-store-sql.d.ts +4 -4
- package/dist/plugins/checkpoint-store-sql.js +9 -7
- package/dist/plugins/file-history-store-sql.d.ts +24 -18
- package/dist/plugins/file-history-store-sql.js +24 -19
- package/dist/plugins/file-run-store.d.ts +29 -0
- package/dist/plugins/file-run-store.js +97 -8
- package/dist/plugins/imported-layer-root-retirement.d.ts +82 -0
- package/dist/plugins/imported-layer-root-retirement.js +96 -0
- package/dist/plugins/local-checkpoint-store.d.ts +1 -1
- package/dist/plugins/local-checkpoint-store.js +2 -2
- package/dist/plugins/local-session-store.d.ts +6 -2
- package/dist/plugins/local-session-store.js +8 -2
- package/dist/plugins/mailbox-recipient-lifecycle.d.ts +9 -31
- package/dist/plugins/mailbox-recipient-lifecycle.js +4 -0
- package/dist/plugins/mailbox-store-sql.d.ts +12 -8
- package/dist/plugins/mailbox-store-sql.js +76 -7
- package/dist/plugins/memory-sync-store-pg.d.ts +15 -0
- package/dist/plugins/memory-sync-store-pg.js +21 -0
- package/dist/plugins/memory-sync-store-tidb.d.ts +2 -0
- package/dist/plugins/memory-sync-store-tidb.js +13 -1
- package/dist/plugins/one-time-migrations.d.ts +32 -2
- package/dist/plugins/one-time-migrations.js +106 -3
- package/dist/plugins/org-delivery-quota-store.d.ts +1 -1
- package/dist/plugins/org-delivery-quota-store.js +2 -12
- package/dist/plugins/park-commit-watch.d.ts +1 -1
- package/dist/plugins/permission-rule-store-file.d.ts +10 -1
- package/dist/plugins/permission-rule-store-file.js +15 -2
- package/dist/plugins/permission-rule-store-sql.d.ts +31 -1
- package/dist/plugins/permission-rule-store-sql.js +35 -2
- package/dist/plugins/remote-env-device.d.ts +8 -11
- package/dist/plugins/remote-env-device.js +6 -3
- package/dist/plugins/remote-env-k8s.d.ts +37 -24
- package/dist/plugins/remote-env-k8s.js +50 -17
- package/dist/plugins/retention-store-sql.d.ts +2 -2
- package/dist/plugins/sandbox-read-floor.d.ts +5 -7
- package/dist/plugins/sandbox-read-floor.js +2 -7
- package/dist/plugins/sql-errors.d.ts +10 -1
- package/dist/plugins/sql-errors.js +13 -0
- package/dist/plugins/store-backend.d.ts +23 -28
- package/dist/plugins/store-backend.js +9 -1
- package/dist/plugins/store-contracts.d.ts +29 -5
- package/dist/plugins/store-contracts.js +4 -1
- package/dist/plugins/task-attachment-store.d.ts +2 -2
- package/dist/plugins/task-attachment-store.js +37 -52
- package/dist/plugins/tool-result-store-sql.d.ts +9 -8
- package/dist/plugins/tool-result-store-sql.js +23 -2
- package/dist/plugins/wiring-section-codec.d.ts +32 -0
- package/dist/plugins/wiring-section-codec.js +55 -0
- package/dist/plugins/workspace-fill.d.ts +1 -1
- package/dist/rule-entry-list.d.ts +3 -2
- package/dist/rule-entry-list.js +5 -1
- package/dist/rules-consent.d.ts +28 -5
- package/dist/rules-consent.js +40 -28
- package/dist/run-local.js +9 -5
- package/dist/runs.d.ts +12 -8
- package/dist/runs.js +6 -7
- package/dist/runtime-governance.d.ts +1 -1
- package/dist/server-secret-env.d.ts +4 -0
- package/dist/session-error-wire.d.ts +12 -0
- package/dist/session-error-wire.js +6 -0
- package/dist/session-incarnation.d.ts +1 -1
- package/dist/session-notify-door.d.ts +106 -0
- package/dist/session-notify-door.js +93 -0
- package/dist/session-sync.d.ts +9 -14
- package/dist/session-sync.js +5 -5
- package/dist/session-workspace.d.ts +3 -13
- package/dist/session-workspace.js +0 -9
- package/dist/standing-answer-grant.d.ts +5 -0
- package/dist/standing-answer-grant.js +10 -0
- package/dist/stores-sql/session-policy-store-sql.d.ts +4 -2
- package/dist/stores-sql/session-policy-store-sql.js +3 -13
- package/dist/task-mcp.d.ts +1 -1
- package/dist/task-settings.d.ts +11 -8
- package/dist/task-settings.js +31 -11
- package/dist/tool-approval.d.ts +52 -34
- package/dist/tool-approval.js +66 -57
- package/dist/trace/core-keyset-guard.d.ts +11 -8
- package/dist/trace/engine-notice-wire.d.ts +1 -1
- package/dist/trace/engine-notice-wire.js +3 -1
- package/dist/trace/exit-seat.d.ts +7 -1
- package/dist/trace/exit-seat.js +1 -0
- package/dist/trace/ledger-sink.d.ts +2 -2
- package/dist/trace/model-segment.d.ts +55 -25
- package/dist/trace/model-segment.js +101 -33
- package/dist/trace/project.d.ts +7 -4
- package/dist/trace/project.js +6 -0
- package/dist/trace/redact.d.ts +61 -9
- package/dist/trace/redact.js +1490 -468
- package/dist/trace/self-minted-wire.d.ts +510 -38
- package/dist/trace/self-minted-wire.js +165 -17
- package/dist/trace/wire-projection-faces.d.ts +1 -1
- package/dist/trace/wire-projection-faces.js +1 -1
- package/dist/verifier-pause-card.d.ts +33 -5
- package/dist/verifier-pause-card.js +15 -10
- package/dist/web-admin-client/apply-effective.d.ts +12 -16
- package/dist/web-admin-client/apply-effective.js +90 -10
- package/dist/workspace-space.d.ts +19 -3
- package/dist/workspace-space.js +8 -4
- package/docs/DEVICE-EXECUTOR-PROTOCOL.md +3 -1
- package/package.json +3 -2
- package/wire-changes/server@7.143.0.json +1167 -0
|
@@ -45,7 +45,6 @@ export const SELF_MINTED_WIRE = {
|
|
|
45
45
|
"memory.erasure_evidence_unavailable": { attr: 409, since: "7.108.0" },
|
|
46
46
|
"memory.erasure_selector_mismatch": { attr: 409, since: "7.108.0" },
|
|
47
47
|
"memory.erasure_census_incomplete": { attr: 409, since: "7.108.0" },
|
|
48
|
-
"memory.erasure_store_unjudged": { attr: 409, since: "7.140.0" },
|
|
49
48
|
"internal.memory_control_plane_corrupt": { attr: 500, since: "7.108.0" },
|
|
50
49
|
},
|
|
51
50
|
},
|
|
@@ -381,9 +380,6 @@ export const SELF_MINTED_WIRE = {
|
|
|
381
380
|
"POST /v1/runs|/v1/tasks Idempotency-Key#conflict.idempotency_payload_mismatch": { attr: 409, since: "7.126.0" },
|
|
382
381
|
"POST /v1/tasks|/v1/tasks/stream#replay_first_answer_envelope(同键重放的体 = 首答的信封 + replay: true:终局 = 引擎结果(result 是串),停驻 = 结果 + 回执三键,行还在跑 = 回执三键;流式腿放进 done.result)": { attr: 200, since: "7.142.0" },
|
|
383
382
|
},
|
|
384
|
-
retired: {
|
|
385
|
-
"POST /v1/tasks|/v1/tasks/stream#replay_run_read_face(同键重放的体 = GET /v1/runs/:id 的读面 + replay: true:result 是对象,外加 status / errorCode / heldBy 等读面键)": { attr: 200, since: "7.125.0", until: "7.142.0" },
|
|
386
|
-
},
|
|
387
383
|
},
|
|
388
384
|
builtinScenario: {
|
|
389
385
|
at: "GET /v1/capabilities#scenarios[] 内建成员",
|
|
@@ -435,12 +431,48 @@ export const SELF_MINTED_WIRE = {
|
|
|
435
431
|
aliases: { attr: "always", since: "7.135.0" },
|
|
436
432
|
},
|
|
437
433
|
},
|
|
434
|
+
modelPlaneKey: {
|
|
435
|
+
at: "GET /v1/models modelPlane.<键>(<键> → 在场律)",
|
|
436
|
+
members: {
|
|
437
|
+
servedTable: { attr: "always", since: "7.133.0" },
|
|
438
|
+
catalog: { attr: "always", since: "7.133.0" },
|
|
439
|
+
refusalCode: { attr: "present-iff the boot route judge refuses the table in force", since: "7.133.0" },
|
|
440
|
+
gap: { attr: "present-iff the boot route judge refuses the table in force", since: "7.133.0" },
|
|
441
|
+
planeRefusalCode: { attr: "present-iff the latest arriving catalog candidate is refused at the model plane group", since: "7.143.0" },
|
|
442
|
+
},
|
|
443
|
+
},
|
|
438
444
|
approvalRequestCardKey: {
|
|
439
445
|
at: "approval_request 帧 card.<键>(活铸帧的 card · 落库的卡信封 card_json · 断连重放帧的 card)",
|
|
440
446
|
members: {
|
|
441
447
|
approvalCard: { attr: "present-iff", since: "7.136.0" },
|
|
442
448
|
},
|
|
443
449
|
},
|
|
450
|
+
approvalRequestReplayFact: {
|
|
451
|
+
at: "approval_request 断连重放帧顶层(断流续读 · 开流 preamble · livePending 接管行 / 按问读口的 frame)",
|
|
452
|
+
members: {
|
|
453
|
+
mandated: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
454
|
+
mandate: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
455
|
+
origin: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
456
|
+
boundGrantDigest: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
457
|
+
boundGrants: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
458
|
+
classifierNoRuling: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
459
|
+
boundGrantAbsence: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
460
|
+
approvalCard: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
461
|
+
readRootCandidate: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
462
|
+
probeReason: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
463
|
+
requestedBy: { attr: "present-iff recorded on the ask row (same value as the live frame)", since: "7.143.0" },
|
|
464
|
+
liveFactsUnknown: { attr: "present-iff the ask row carries no readable live facts (replay frames only)", since: "7.143.0" },
|
|
465
|
+
},
|
|
466
|
+
},
|
|
467
|
+
livePendingAdoptedRowKey: {
|
|
468
|
+
at: "GET /v1/approvals livePending[] 行顶层 · /v1/approvals/stream live_pending 帧 · GET /v1/tool-approvals/:id pending 体(起服接管行)",
|
|
469
|
+
members: {
|
|
470
|
+
mandated: { attr: "present-iff recorded on the ask row (adopted rows; same value as row.frame)", since: "7.143.0" },
|
|
471
|
+
mandate: { attr: "present-iff recorded on the ask row (adopted rows; same value as row.frame)", since: "7.143.0" },
|
|
472
|
+
origin: { attr: "present-iff recorded on the ask row (adopted rows; same value as row.frame)", since: "7.143.0" },
|
|
473
|
+
liveFactsUnknown: { attr: "present-iff row.frame.liveFactsUnknown (adopted rows only)", since: "7.143.0" },
|
|
474
|
+
},
|
|
475
|
+
},
|
|
444
476
|
approvalQueuePendingKey: {
|
|
445
477
|
at: "GET /v1/approvals pending[] 行 · GET /v1/approvals/stream pending 帧(停驻技能卡的批准绑定三位;与助手收件箱行同一只投影)",
|
|
446
478
|
members: {
|
|
@@ -449,6 +481,51 @@ export const SELF_MINTED_WIRE = {
|
|
|
449
481
|
classifierNoRuling: { attr: "present-iff", since: "7.136.0" },
|
|
450
482
|
},
|
|
451
483
|
},
|
|
484
|
+
approvalQueueKind: {
|
|
485
|
+
at: "GET /v1/approvals pending[].kind · GET /v1/approvals/stream pending / resolved 帧的 kind(恒带)",
|
|
486
|
+
members: {
|
|
487
|
+
checkpoint: { attr: "-", since: "7.143.0" },
|
|
488
|
+
peer_inbound: { attr: "-", since: "7.143.0" },
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
peerInboundRowKey: {
|
|
492
|
+
at: "GET /v1/approvals pending[] 的 peer_inbound 行 · GET /v1/approvals/stream 的 peer_inbound pending 帧(<键> → 在场律)",
|
|
493
|
+
members: {
|
|
494
|
+
kind: { attr: "always", since: "7.143.0" },
|
|
495
|
+
id: { attr: "always", since: "7.143.0" },
|
|
496
|
+
recipientSessionId: { attr: "always", since: "7.143.0" },
|
|
497
|
+
lane: { attr: "always", since: "7.143.0" },
|
|
498
|
+
cause: { attr: "always", since: "7.143.0" },
|
|
499
|
+
content: { attr: "always", since: "7.143.0" },
|
|
500
|
+
sentAt: { attr: "always", since: "7.143.0" },
|
|
501
|
+
heldAt: { attr: "always", since: "7.143.0" },
|
|
502
|
+
fromSession: { attr: "present-iff", since: "7.143.0" },
|
|
503
|
+
fromName: { attr: "present-iff", since: "7.143.0" },
|
|
504
|
+
fromScope: { attr: "present-iff", since: "7.143.0" },
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
peerInboundLane: {
|
|
508
|
+
at: "GET /v1/approvals pending[] 的 peer_inbound 行 lane",
|
|
509
|
+
members: {
|
|
510
|
+
session: { attr: "-", since: "7.143.0" },
|
|
511
|
+
principal_inbox: { attr: "-", since: "7.143.0" },
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
approvalsResolvedFrameKey: {
|
|
515
|
+
at: "GET /v1/approvals/stream resolved 帧(<键> → 在场律;只登本版新增的)",
|
|
516
|
+
members: {
|
|
517
|
+
kind: { attr: "always", since: "7.143.0" },
|
|
518
|
+
id: { attr: "present-iff kind = peer_inbound", since: "7.143.0" },
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
peerInboundDecideBodyKey: {
|
|
522
|
+
at: "POST /v1/approvals/:id/decide 200 体(peer_inbound 族;<键> → 在场律)",
|
|
523
|
+
members: {
|
|
524
|
+
kind: { attr: "always", since: "7.143.0" },
|
|
525
|
+
id: { attr: "always", since: "7.143.0" },
|
|
526
|
+
outcome: { attr: "always", since: "7.143.0" },
|
|
527
|
+
},
|
|
528
|
+
},
|
|
452
529
|
constraintRejectedBodyKey: {
|
|
453
530
|
at: "409 resume.constraint_rejected 拒体(<键> → 在场律)",
|
|
454
531
|
members: {
|
|
@@ -519,6 +596,8 @@ export const SELF_MINTED_WIRE = {
|
|
|
519
596
|
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(settings.permissions.deny|ask)": { attr: 200, since: "7.137.0" },
|
|
520
597
|
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#settings.permissions.deny|ask 带层条目 { rule, layer }(新提交;layer = 设置来源词)": { attr: 200, since: "7.141.0" },
|
|
521
598
|
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#user 层 / 形路径规则而执行环境的配置根读不出(沙箱车道没转 SEMA_CONFIG_DIR 且 home 未知;体 request.unprocessable + problems[].reason home_unresolvable;续跑 409 同句)": { attr: 422, since: "7.141.0" },
|
|
599
|
+
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#settings.permissions.allow 带层条目 { rule, layer }(新提交;layer = 设置来源词)": { attr: 200, since: "7.143.0" },
|
|
600
|
+
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#allow 桶里 user 层 / 形路径规则而执行环境的配置根读不出(沙箱车道没转 SEMA_CONFIG_DIR 且 home 未知;体 request.unprocessable + field settings.permissions.allow + problems[].reason home_unresolvable;续跑 409 同句)": { attr: 422, since: "7.143.0" },
|
|
522
601
|
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(excludeTools)": { attr: 200, since: "7.137.0" },
|
|
523
602
|
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(skills[i].disallowedTools|agents[i].skills[j].disallowedTools)": { attr: 200, since: "7.137.0" },
|
|
524
603
|
"POST /v1/tasks|/v1/tasks/stream|/v1/runs#限制侧名内带 *(agents[i].denyTools)": { attr: 200, since: "7.137.0" },
|
|
@@ -531,13 +610,34 @@ export const SELF_MINTED_WIRE = {
|
|
|
531
610
|
"PATCH /v1/sessions/:id#owner_changed_after_gate(门那一读之后同一会话的属主被改;体 not_found.session)": { attr: 404, since: "7.139.0" },
|
|
532
611
|
"PATCH /v1/sessions/:id#expectedRowTag_stale(行已不在那只标签上;体 conflict.session_row_changed + currentRow)": { attr: 409, since: "7.139.0" },
|
|
533
612
|
"PATCH /v1/sessions/:id#expectedRowTag_current(行仍在那只标签上;体 = 列表行)": { attr: 200, since: "7.139.0" },
|
|
534
|
-
"GET /v1/memory/entries/:entryId/provenance|
|
|
535
|
-
"POST /v1/memory/
|
|
536
|
-
"POST /v1/memory/
|
|
537
|
-
"
|
|
538
|
-
"POST /v1/memory/
|
|
539
|
-
"POST /v1/memory/
|
|
540
|
-
"POST /v1/memory/
|
|
613
|
+
"GET /v1/memory/entries/:entryId/provenance|GET /v1/memory/origin/clearances|POST /v1/memory/origin/entries/:entryId/clear#layer_unaddressed_two_stores(不点名层的条目 id / 店级账本请求,本部署有两只店 —— 盘上的店集:个人挂载上有个人店;体 request.memory_layer)": { attr: 400, since: "7.143.0" },
|
|
614
|
+
"POST /v1/memory/export|POST /v1/memory/import|GET /v1/memory/origin/external#layers_span_two_stores(请求点名的层分住两只店;体 request.memory_layer)": { attr: 400, since: "7.143.0" },
|
|
615
|
+
"POST /v1/memory/erase#grant_spans_two_stores(expectedScopes 的层分住两只店;体 config.memory_erasure_scope,什么都没删、什么都没记)": { attr: 400, since: "7.143.0" },
|
|
616
|
+
"POST /v1/memory/erase|POST /v1/sessions/:id/memory/erase#reaches_second_store(点名的层住在个人店 / 按会话或按 id 抹除而另一只店里有那一份;每只到达的店各擦各的那一份,收执合成一份)": { attr: 200, since: "7.143.0" },
|
|
617
|
+
"POST /v1/memory/erase|POST /v1/sessions/:id/memory/erase#requestId_reused_across_stores(同一个 requestId 先在一只店执行过、再换选择子或落到另一只店;体 memory.erasure_selector_mismatch,什么都没删、什么都没记)": { attr: 409, since: "7.143.0" },
|
|
618
|
+
"POST /v1/sessions/:id/memory/erase#body.scope(层座退役;体 request.body_shape)": { attr: 400, since: "7.143.0" },
|
|
619
|
+
"记忆诸口 + POST /v1/admin/memory/consolidation/run|GET /v1/admin/memory/consolidation|GET /v1/memory/export#layer_unreadable(请求点名的层引擎读不出;体 request.memory_layer)": { attr: 400, since: "7.140.0" },
|
|
620
|
+
"POST /v1/memory/sync/:scope#any(同步口改到 /v2;旧路径无人认领;体 not_found.route)": { attr: 404, since: "7.143.0" },
|
|
621
|
+
"POST /v2/memory/sync/:scope#layer_unreadable(请求点名的层引擎读不出;任何读写之前;体 request.memory_layer)": { attr: 400, since: "7.143.0" },
|
|
622
|
+
"POST /v2/memory/sync/:scope#identity_undeclared(DB 记忆平面没声明 MEMORY_SYNC_SERVE_IDENTITY;鉴权之后;体 feature.memory_sync_serve_disabled)": { attr: 501, since: "7.143.0" },
|
|
623
|
+
"POST /v2/memory/sync/:scope#peer_not_declared_identity(peer 不是同步身份的规范形 / 带凭据 / 非 http(s) / 超宽 / 空串;体 request.field_invalid + field peer + reason)": { attr: 400, since: "7.143.0" },
|
|
624
|
+
"POST /v2/memory/sync/:scope#peer_not_this_center(peer 是规范形但不等于本中心声明的身份;零读零写;体 config.memory_sync_target_mismatch)": { attr: 409, since: "7.143.0" },
|
|
625
|
+
"POST /v2/memory/sync/:scope#partition_reset(一轮的最后一次写之后分区化身已变;体 internal.error)": { attr: 500, since: "7.143.0" },
|
|
626
|
+
"POST /v1/approvals/:id/decide#peer_inbound_decided(:id 带 peer_inbound: 前缀,调用方自己的、成因人能答的被扣来信;体 { kind, id, outcome })": { attr: 200, since: "7.143.0" },
|
|
627
|
+
"POST /v1/approvals/:id/decide#peer_inbound_keys_do_not_apply(体带 decision 以外的停驻门键;体 request.body_shape + unsupportedKeys)": { attr: 400, since: "7.143.0" },
|
|
628
|
+
"POST /v1/approvals/:id/decide#peer_inbound_store_refused(信箱店拒了决断那一步,什么都没决;体 state.peer_decision_unrecorded)": { attr: 503, since: "7.143.0" },
|
|
629
|
+
"POST /v1/approvals/:sessionId/decide#tool_approval_decided_without_boundInputHash(工具审批门;只回显 boundCallId 或一位都不回显;门型守卫之后;体 decide_requires_binding + bindingEnforced + missingKeys;卡仍 pending)": { attr: 400, since: "7.143.0" },
|
|
630
|
+
"POST /v1/approvals/:sessionId/decide#replay_without_boundInputHash(首决已结清、同一份体不带 boundInputHash 重发;体 not_found.approval)": { attr: 404, since: "7.143.0" },
|
|
631
|
+
"GET /v1/sessions/:id#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
632
|
+
"GET /v1/sessions/:id/memory-status#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
633
|
+
"POST /v1/sessions/:id/memory/erase#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
634
|
+
"GET /v1/sessions/:id/head#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
635
|
+
"GET /v1/sessions/:id/events#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
636
|
+
"GET /v1/sessions/:id/execution-placement#owner_unreadable(DB_BACKEND=local;行事实没有落下 ∧ 存档读不出 ⇒ 属主不可判;体 not_found.session,与非属主 / 不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
637
|
+
"POST /v1/sessions/:id/notify#occupant_changed_before_delivery(属主门读过之后、投递之前会话被删或同 id 换了住客;零投递;体 not_found.session,与不存在同码同文)": { attr: 404, since: "7.143.0" },
|
|
638
|
+
"GET /v1/capabilities/mcp#engine_name_collision(中心声明两台归一后同挂一个工具命名空间前缀,引擎在任何传输被触碰之前整集拒;体 config.mcp_server_name_collision + 引擎原句;与同步提交腿同一张码 → 状态表)": { attr: 409, since: "7.143.0" },
|
|
639
|
+
"POST /v1/tasks#engine_name_collision(同步腿;同一份声明集被引擎整集拒;零工作的拒;体 config.mcp_server_name_collision)": { attr: 409, since: "7.143.0" },
|
|
640
|
+
"POST /v1/rules/local-import/prepare#tightening_write_failed(一条收下的 deny / ask 写不进店;这一批的放行扣下、没有票;体 state.rule_write_failed + committed,同 POST /v1/rules)": { attr: 503, since: "7.143.0" },
|
|
541
641
|
},
|
|
542
642
|
},
|
|
543
643
|
memoryLayerSeatKey: {
|
|
@@ -546,8 +646,7 @@ export const SELF_MINTED_WIRE = {
|
|
|
546
646
|
"GET /v1/memory/entries/:entryId/provenance#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers", since: "7.140.0" },
|
|
547
647
|
"GET /v1/memory/origin/clearances#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers", since: "7.140.0" },
|
|
548
648
|
"POST /v1/memory/origin/entries/:entryId/clear#body.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers;not passed to the engine", since: "7.140.0" },
|
|
549
|
-
"GET /v1/sessions/:id/memory-status#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers;absent ⇒ every store
|
|
550
|
-
"POST /v1/sessions/:id/memory/erase#body.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers;absent ⇒ the deployment's store;selector still minted from the path", since: "7.140.0" },
|
|
649
|
+
"GET /v1/sessions/:id/memory-status#query.scope": { attr: "optional;non-empty-string else 400 request.field_invalid;names the layer whose store answers (that store's engine answer);absent ⇒ the deployment's answer (the engine folds every store on disk);cache keyed by (session, store control plane | deployment)", since: "7.140.0" },
|
|
551
650
|
},
|
|
552
651
|
},
|
|
553
652
|
sessionMemoryStatusKey: {
|
|
@@ -563,7 +662,7 @@ export const SELF_MINTED_WIRE = {
|
|
|
563
662
|
},
|
|
564
663
|
},
|
|
565
664
|
memorySyncIdentityFlaw: {
|
|
566
|
-
at: "400 request.field_invalid reason(POST /v1/sessions/:id/memory/sync 的 target · POST /
|
|
665
|
+
at: "400 request.field_invalid reason(POST /v1/sessions/:id/memory/sync 的 target · POST /v2/memory/sync/:scope 的 peer;另带 field)",
|
|
567
666
|
members: {
|
|
568
667
|
"not-http-url": { attr: "-", since: "7.142.0" },
|
|
569
668
|
userinfo: { attr: "-", since: "7.142.0" },
|
|
@@ -580,10 +679,37 @@ export const SELF_MINTED_WIRE = {
|
|
|
580
679
|
"body#target": { attr: "required;the only key;the target engine's GET /v1/capabilities memorySyncServe.identity verbatim;not a declared sync identity ⇒ 400 request.field_invalid", since: "7.142.0" },
|
|
581
680
|
"200#target": { attr: "always;engine report verbatim", since: "7.142.0" },
|
|
582
681
|
"200#sourceRevision": { attr: "always;the session leafId read in the same head read as the owner gate", since: "7.142.0" },
|
|
583
|
-
"200#scopes": { attr: "always;the read set: latest settled run's effectiveMemoryScopes (mounted ⇒ scope keys in serving order;
|
|
682
|
+
"200#scopes": { attr: "always;the read set: latest settled run's effectiveMemoryScopes (mounted ⇒ scope keys in serving order; none ⇒ []; memoryless ⇒ no read set, 409 reason memory_not_mounted)", since: "7.143.0" },
|
|
584
683
|
"200#layers": { attr: "present-iff no whole-round refusal;one entry per read-set layer the round ran (engine outcome synced | incomplete | refused | failed)", since: "7.142.0" },
|
|
585
684
|
"200#refused": { attr: "present-iff whole-round refusal;{code: config.memory_sync_target_mismatch | session_active, message}", since: "7.142.0" },
|
|
586
685
|
"409 conflict.session_memory_unobserved#activeTaskId": { attr: "present-iff the session has a run in flight", since: "7.142.0" },
|
|
686
|
+
"409 conflict.session_memory_unobserved#reason": { attr: "always;closed set sessionMemoryUnobservedReason, judged in read order (no settled run → the latest settled run's observation gives no read set: empty observation or memory not mounted → no leaf);the message is a function of reason", since: "7.143.0" },
|
|
687
|
+
},
|
|
688
|
+
},
|
|
689
|
+
centralMemorySyncWire: {
|
|
690
|
+
at: "POST /v2/memory/sync/:scope(<面>#<键> → 读法 / 在场律)",
|
|
691
|
+
members: {
|
|
692
|
+
"path#version": { attr: "/v2/memory/sync/:scope (the engine's path);/v1/memory/sync/… is unclaimed ⇒ 404 not_found.route", since: "7.143.0" },
|
|
693
|
+
"body#peerIncarnation": { attr: "optional;the client cursor's peerIncarnation verbatim;1..128 chars else 422 memory_sync_invalid_body;compared with the scope partition's incarnation before any read or write", since: "7.143.0" },
|
|
694
|
+
"200#cursor.incarnation": { attr: "always on a result;the scope partition's incarnation (minted when the partition is first read by a sync, then stored);equals the claim when one was made", since: "7.143.0" },
|
|
695
|
+
"200#refused": { attr: "present-iff the round is refused on the incarnation axis;\"baseline_incarnation\";the claim is not the partition's incarnation, or a non-empty baseRevs with no claim;nothing read or written", since: "7.143.0" },
|
|
696
|
+
"200#incarnation": { attr: "present-iff refused;the scope partition's incarnation", since: "7.143.0" },
|
|
697
|
+
},
|
|
698
|
+
},
|
|
699
|
+
sessionMemoryUnobservedReason: {
|
|
700
|
+
at: "409 conflict.session_memory_unobserved reason(POST /v1/sessions/:id/memory/sync)",
|
|
701
|
+
members: {
|
|
702
|
+
no_settled_run: { attr: "-", since: "7.143.0" },
|
|
703
|
+
run_result_missing: { attr: "-", since: "7.143.0" },
|
|
704
|
+
run_result_unobserved: { attr: "-", since: "7.143.0" },
|
|
705
|
+
memory_not_mounted: { attr: "-", since: "7.143.0" },
|
|
706
|
+
no_leaf: { attr: "-", since: "7.143.0" },
|
|
707
|
+
},
|
|
708
|
+
},
|
|
709
|
+
decideRequiresBindingBodyKey: {
|
|
710
|
+
at: "400 decide_requires_binding 拒体(<键> → 在场律)",
|
|
711
|
+
members: {
|
|
712
|
+
missingKeys: { attr: "always;non-empty subset of [boundCallId, boundInputHash] in that order (absent or empty string ⇒ missing)", since: "7.143.0" },
|
|
587
713
|
},
|
|
588
714
|
},
|
|
589
715
|
refusalSentenceForm: {
|
|
@@ -599,7 +725,7 @@ export const SELF_MINTED_WIRE = {
|
|
|
599
725
|
"connect_failed(run 失败终局)#snapshot_bucket_missing(k8s 车道读 latest 得 404 NoSuchBucket;连沙箱失败,一只 pod 都不建)": { attr: "workspace space pointer read failed (snapshot_bucket_missing): the workspace snapshot bucket <name> (WORKSPACE_SNAPSHOT_BUCKET; default workspaces) does not exist in the object store — refusing to start this run … Ways out: create the bucket, or set WORKSPACE_SNAPSHOT_BUCKET to one that exists, or set WORKSPACE_PERSIST=off …", since: "7.136.0" },
|
|
600
726
|
"400 request.field_invalid#images[i].url.credential": { attr: "<field> <规则句> — the URL is kept as written (a parked task's resume context, logs), while images[i] can carry the image bytes inline: send { data, mimeType } instead of a URL that holds the credential", since: "7.136.0" },
|
|
601
727
|
"400 request.field_invalid#settings.permissions.deny|ask.bad_entry": { attr: "<field>[<index>] is neither a non-empty rule string nor a { \"rule\", \"layer\" } entry (…) — every entry must be one. …", since: "7.141.0" },
|
|
602
|
-
"400 request.field_invalid#settings.permissions.allow.bad_entry": { attr: "<field>[<index>] is
|
|
728
|
+
"400 request.field_invalid#settings.permissions.allow.bad_entry": { attr: "<field>[<index>] is neither a rule string nor a { \"rule\", \"layer\" } entry (…) — every entry must be one. …", since: "7.143.0" },
|
|
603
729
|
"400 request.field_invalid#a2aPeers.not_array": { attr: "head: a2aPeers is <shape>, not an array of A2A peer declarations", since: "7.136.0" },
|
|
604
730
|
"400 request.field_invalid#a2aPeers[i].not_object": { attr: "head: a2aPeers[i] is <shape>, not an A2A peer declaration (an object)", since: "7.136.0" },
|
|
605
731
|
"400 request.field_invalid#a2aPeers[i].<key>.unusable(url / cardUrl 凭据拒之外的键值坏形)": { attr: "<field> (peer <name>) is not a usable declaration — <rule> …", since: "7.136.0" },
|
|
@@ -620,12 +746,28 @@ export const SELF_MINTED_WIRE = {
|
|
|
620
746
|
"400 request.field_invalid#PATCH /v1/sessions/:id.expectedRowTag": { attr: "expectedRowTag must be the `rowTag` string a session list row carries (43 characters: letters, digits, `-` and `_`)", since: "7.139.0" },
|
|
621
747
|
"409 conflict.session_mirror#PATCH /v1/sessions/:id": { attr: "this session is a read-only mirror of a session whose writer is elsewhere — it cannot be renamed or pinned here; fork it (forkPath) to continue here; nothing was written", since: "7.139.0" },
|
|
622
748
|
"409 conflict.session_row_changed#PATCH /v1/sessions/:id": { attr: "the session row changed since the rowTag you sent was read — nothing was written; currentRow is the row as it stands now: decide again, then send its rowTag", since: "7.139.0" },
|
|
749
|
+
"400 decide_requires_binding#POST /v1/approvals/:sessionId/decide": { attr: "decide requires the decision-action binding — echo boundCallId and boundInputHash exactly as the pending approval you are deciding shows them (GET /v1/approvals), so a decision on a view that has since been replaced is refused instead of landing on the gate that replaced it", since: "7.143.0" },
|
|
750
|
+
"400 request.body_shape#/decide.root_shape": { attr: "body must be { decision: 'approve' | 'deny', boundCallId, boundInputHash, reason?, answer?, checkpointToken?, updatedInput?, remember?, decidedBy?, feedback? }", since: "7.143.0" },
|
|
751
|
+
"409 conflict.session_memory_unobserved#run_result_missing|run_result_unobserved": { attr: "the latest settled run in this session has no memory observation on record, and an earlier run is never read in its place — run another task in this session (…), then sync", since: "7.143.0" },
|
|
752
|
+
"409 conflict.session_memory_unobserved#memory_not_mounted": { attr: "memory was configured for the latest settled run in this session but did not mount, so which memory this session reads is unknown, and an earlier run is never read in its place — run another task in this session (…), then sync", since: "7.143.0" },
|
|
753
|
+
"409 conflict.session_memory_unobserved#no_leaf": { attr: "this session has no transcript yet, so there is no revision to sync from — run a task in it (…), then sync", since: "7.143.0" },
|
|
623
754
|
},
|
|
624
755
|
},
|
|
625
756
|
decisionBodyKey: {
|
|
626
757
|
at: "回决门族决断体的受理键(<端点>#<键> → 读法;只登本版新增的键)",
|
|
627
758
|
members: {
|
|
628
759
|
"POST /v1/assistant/tasks/:id/plan_review#checkpointId": { attr: "optional;non-empty-string≤128;not-current⇒409 approval_stale;direct-door:signed-envelope-ext", since: "7.137.0" },
|
|
760
|
+
"POST /v1/tool-approvals/:id/respond#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid (this door: request.body_shape)", since: "7.143.0" },
|
|
761
|
+
"POST /v1/tasks/:taskId/asks/:askId/decision#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid", since: "7.143.0" },
|
|
762
|
+
"POST /v1/approvals/:sessionId/decide#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid;direct-door:never accepted", since: "7.143.0" },
|
|
763
|
+
"POST /v1/assistant/tasks/:id/plan_review#decidedVia": { attr: "optional;DECIDED_VIA word beside decidedBy \"policy\" only;else⇒400 request.field_invalid;direct-door:never accepted", since: "7.143.0" },
|
|
764
|
+
},
|
|
765
|
+
},
|
|
766
|
+
resumeRestatementKey: {
|
|
767
|
+
at: "续跑门族请求体(POST /v1/approvals/:id/decide · /v1/assistant/tasks/:id/plan_review · /v1/assistant/tasks/:id/resume · /v1/sessions/:id/wake)的重述键",
|
|
768
|
+
members: {
|
|
769
|
+
a2aPeers: { attr: "optional;submit-shape;present⇒replaces-stored-table+written-back;absent|null⇒frozen;direct-door(decide,plan_review)⇒400 restatement_not_in_proof", since: "7.143.0" },
|
|
770
|
+
mcpServers: { attr: "optional;submit-shape;present⇒replaces-stored-table+written-back;absent|null⇒frozen;direct-door(decide,plan_review)⇒400 restatement_not_in_proof", since: "7.143.0" },
|
|
629
771
|
},
|
|
630
772
|
},
|
|
631
773
|
sessionRowWriteKey: {
|
|
@@ -686,6 +828,7 @@ export const SELF_MINTED_WIRE = {
|
|
|
686
828
|
1: { attr: "base", since: "7.51.0" },
|
|
687
829
|
2: { attr: "+liveness_no_output", since: "7.133.0" },
|
|
688
830
|
3: { attr: "+name_too_long", since: "7.137.0" },
|
|
831
|
+
4: { attr: "+symlink_loop", since: "7.143.0" },
|
|
689
832
|
},
|
|
690
833
|
},
|
|
691
834
|
hookNonBlockingFailureReason: {
|
|
@@ -750,12 +893,17 @@ export const SELF_MINTED_WIRE = {
|
|
|
750
893
|
"GET /v1/config/catalog#rows[DEVICE_RELAY_URL].semantics": { attr: "required-on-device-lane;ws-url-or-literal-none;none-with-bindings-warns", since: "7.141.0" },
|
|
751
894
|
"GET /v1/config/catalog#rows[DEVICE_RELAY_URL].derivedDefaultNote": { attr: "no-default;absent-refuses-boot", since: "7.141.0" },
|
|
752
895
|
"GET /v1/config/catalog#rows[DEVICE_RELAY_URL].enumValues": { attr: "none(echoed-verbatim)", since: "7.141.0" },
|
|
896
|
+
"GET /v1/config/catalog#rows[MODEL_ROUTER_ID].derivedDefaultNote": { attr: "absent=>classifier-role-in-served-table", since: "7.143.0" },
|
|
753
897
|
"GET /v1/sessions/:id/mcp#servers[].error": { attr: "exit-seat:mcp-remote-text(engine-mark=masked-value)+truncate:200", since: "7.138.0" },
|
|
754
898
|
"POST /v1/sessions/:id/mcp/reconnect#reason|status.error|listingIncomplete.error": { attr: "exit-seat:mcp-remote-text(engine-mark=masked-value)+truncate:200", since: "7.138.0" },
|
|
755
899
|
"GET /v1/config/catalog#rows[MODEL_VISION].semantics": { attr: "names-engine-notice:model.capability_downgraded", since: "7.137.0" },
|
|
756
900
|
"GET /v1/config/catalog#rows[MODEL_VISION].derivedDefaultNote": { attr: "names-engine-notice:model.capability_downgraded", since: "7.137.0" },
|
|
757
901
|
"GET /v1/config/catalog#rows[MODEL_CHEAP_VISION].semantics": { attr: "names-engine-notice:model.capability_downgraded", since: "7.137.0" },
|
|
758
|
-
"GET /v1/sessions/:id/memory-status#committedCount|foldedCount|lastCaptureAt|captureOptedOut|optOutSource(不带层座)": { attr: "
|
|
902
|
+
"GET /v1/sessions/:id/memory-status#committedCount|foldedCount|lastCaptureAt|captureOptedOut|optOutSource(不带层座)": { attr: "engine-deployment-fold(memory.deployment_status.fold:sum|latest|any-record⇒true+record|all-false⇒false|else optOutSource:fault);store set = stores on disk;one-store⇒identity", since: "7.140.0" },
|
|
903
|
+
"GET /v1/models#modelPlane.catalog(refused 的模型面那一半)": { attr: "latest-arrival", since: "7.143.0" },
|
|
904
|
+
"SSE text_delta#delta": { attr: "live-hold:same-redactor-stream(pending-tail-from-arm-table);concat=segment-end-content;remainder-frame-without-eventId", since: "7.143.0" },
|
|
905
|
+
"SSE reasoning_delta#delta": { attr: "live-hold:same-redactor-stream(pending-tail-from-arm-table);concat=segment-end-content;remainder-frame-without-eventId", since: "7.143.0" },
|
|
906
|
+
"GET /v1/runs/:id/subagents/:handle/stream#reasoning_end.content": { attr: "whole-segment-for-late-subscriber", since: "7.143.0" },
|
|
759
907
|
},
|
|
760
908
|
},
|
|
761
909
|
};
|
|
@@ -219,7 +219,7 @@ export declare const WIRE_PROJECTION_FACES: {
|
|
|
219
219
|
readonly task_notification: {
|
|
220
220
|
readonly projector: "taskNotificationEventData";
|
|
221
221
|
readonly coreType: `TaskNotificationPayload & ${string}`;
|
|
222
|
-
readonly excluded: readonly ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice"];
|
|
222
|
+
readonly excluded: readonly ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice", "received"];
|
|
223
223
|
readonly unwrapped: readonly ["notification"];
|
|
224
224
|
readonly minted: readonly ["injected"];
|
|
225
225
|
};
|
|
@@ -45,7 +45,7 @@ export const WIRE_PROJECTION_FACES = {
|
|
|
45
45
|
task_notification: {
|
|
46
46
|
projector: "taskNotificationEventData",
|
|
47
47
|
coreType: `TaskNotificationPayload & ${arm("task_notification")}`,
|
|
48
|
-
excluded: ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice"],
|
|
48
|
+
excluded: ["peer", "crossSessionMessage", "crossSessionNotice", "inboxNotice", "received"],
|
|
49
49
|
unwrapped: ["notification"],
|
|
50
50
|
minted: ["injected"],
|
|
51
51
|
},
|
|
@@ -1,8 +1,36 @@
|
|
|
1
|
-
import { type CardVoidPort } from "./card-void.js";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* **验证器自己的停驻卡,结算时当场作废** —— 本服务兑现不了它,就不让它挂在待决面上;动词是引擎的 `Runner.voidVerifierPause`。
|
|
3
|
+
*
|
|
4
|
+
* ## 这张卡是什么
|
|
5
|
+
* 验证门(core `runWithVerification` / `resumeWithVerification`)里,**验证器腿**自己在耐久门上停住时,引擎把那次停驻交回在
|
|
6
|
+
* `verification.verifierPause`(`unverifiedReason: "verifier_paused"`),实现腿照常 `completed`,run 照常终局。那张卡落在验证器
|
|
7
|
+
* **现铸的会话**上,不在本 run 的会话上 —— 宿主判官看不见它(`terminal.ts` 的 `atHostBoundary`:它不在结果因由里);
|
|
8
|
+
* 卡上记着它是谁的哪条腿(`CheckpointState.compositionLeg`,`entry: "verify"`)。
|
|
9
|
+
*
|
|
10
|
+
* ## 为什么作废,而不是留着等人决
|
|
11
|
+
* 本服务的续跑链按会话把一张卡连回 run(决定腿读这只会话的续跑输入);验证器会话上没有续跑输入 ⇒ `/decide` 恒答
|
|
12
|
+
* `409 conflict.resume_context_unavailable`。即便能续上,验证器跑完的判词也回不到那条已经终局的 run。判据只有一条,与
|
|
13
|
+
* `parked-decide.ts` 的「复活不了的卡作废」同一条:**本服务兑现不了的卡不留在待决面上**。
|
|
14
|
+
*
|
|
15
|
+
* ## 规则(一条读法)
|
|
16
|
+
* 「手里这张是不是验证器的卡」只有引擎答:`Runner.voidVerifierPause(token)` 读卡上的组合腿,只作废 `entry: "verify"` 的卡
|
|
17
|
+
* (别的卡拒 `resume.composition_mismatch`,一行不动),作废 = 与到期同一只 CAS(行 `expired`)+ 本进程持有的停驻环境销毁 +
|
|
18
|
+
* **释放验证器会话的钉**。本文件只答「结果上有没有那枚凭据」,不读店、不比会话、不判腿 —— 服务端不留第二份读法。
|
|
19
|
+
* 动词必须是**跑过这次验证门的那只 Runner** 的(停驻环境的回收记录在它手里)。
|
|
20
|
+
*
|
|
21
|
+
* ## 三问
|
|
22
|
+
* · 谁要:看待决列表 / 审批收件箱的人与壳 —— 修前那里躺着一张点不动的卡;长寿副本 —— 修前每次验证器停驻都钉住一只会话直到进程重启;
|
|
23
|
+
* · 谁伤:想让验证器把那一步做完的人 —— 修前也做不到(决不掉、判词回不到 run);run 的判词照旧是 `unverified` /
|
|
24
|
+
* `verifier_paused`,停驻的门、状态、验证器会话 id 与 `checkpointId` 照旧在结果上(凭据由出口封口摘);
|
|
25
|
+
* · 补偿:重新提交带 `verify` 的任务再验一次;作废没做成 ⇒ 卡回到修前的形(兜底收割),计数 + 一次性 warn 显形。
|
|
6
26
|
*/
|
|
7
|
-
|
|
27
|
+
import type { Runner } from "@sema-agent/core";
|
|
28
|
+
/** 结算点手里那只 Runner 的作废动词(跑过这次验证门的那只)。 */
|
|
29
|
+
export type VerifierPauseVoider = Pick<Runner, "voidVerifierPause">;
|
|
30
|
+
/**
|
|
31
|
+
* 结果上若有验证器自己的停驻(带凭据)⇒ 交引擎作废那张卡;否则零调用。**必须在出口封口之前调**(封口摘掉的正是这里要用的凭据)。
|
|
32
|
+
* 不抛:动词答 `false`(别的结算者先到了:续跑赢了 / 收割或更早的作废已到期它)⇒ 什么都不做;动词抛(卡不在、卡不是验证器的、
|
|
33
|
+
* 店抛、作废了但会话钉没放掉 `checkpoint.void_unpin_failed`)⇒ 结算照常往下走,响亮留痕({@link VOID_FAILED})。
|
|
34
|
+
*/
|
|
35
|
+
export declare function voidVerifierPauseCard(result: unknown, runner: VerifierPauseVoider): Promise<void>;
|
|
8
36
|
//# sourceMappingURL=verifier-pause-card.d.ts.map
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { errorCodeOf, errorText } from "./observability/err-text.js";
|
|
2
|
+
import { recordFailOpen } from "./observability/fail-open.js";
|
|
2
3
|
const VOID_FAILED = "server.verifier-pause.card-void-failed";
|
|
3
|
-
export async function voidVerifierPauseCard(result,
|
|
4
|
-
const
|
|
5
|
-
if (
|
|
6
|
-
|
|
4
|
+
export async function voidVerifierPauseCard(result, runner) {
|
|
5
|
+
const token = verifierPauseTokenOf(result);
|
|
6
|
+
if (token === undefined)
|
|
7
|
+
return;
|
|
8
|
+
try {
|
|
9
|
+
await runner.voidVerifierPause(token);
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
recordFailOpen(VOID_FAILED, `code=${errorCodeOf(e) ?? "thrown"} err=${errorText(e)}`);
|
|
13
|
+
}
|
|
7
14
|
}
|
|
8
|
-
function
|
|
15
|
+
function verifierPauseTokenOf(result) {
|
|
9
16
|
if (result === null || typeof result !== "object")
|
|
10
17
|
return undefined;
|
|
11
18
|
const pause = result.verification?.verifierPause;
|
|
12
19
|
if (pause === null || typeof pause !== "object")
|
|
13
20
|
return undefined;
|
|
14
|
-
const { checkpointToken
|
|
15
|
-
return typeof checkpointToken === "string" && checkpointToken !== ""
|
|
16
|
-
? { token: checkpointToken, sessionId }
|
|
17
|
-
: undefined;
|
|
21
|
+
const { checkpointToken } = pause;
|
|
22
|
+
return typeof checkpointToken === "string" && checkpointToken !== "" ? checkpointToken : undefined;
|
|
18
23
|
}
|
|
19
24
|
//# sourceMappingURL=verifier-pause-card.js.map
|
|
@@ -13,6 +13,7 @@ import type { EffectiveConfig } from "./types.js";
|
|
|
13
13
|
import { type ModelRefusalVerdict } from "../model-entry-refusal.js";
|
|
14
14
|
import { type ConfigApplyReport } from "./apply-ledger.js";
|
|
15
15
|
import { type ConfigCandidateRead } from "./candidate-gate.js";
|
|
16
|
+
import type { CatalogSource } from "../env-model-table-gate.js";
|
|
16
17
|
/** Apply center config OVER the env-derived config (mutates `config`). Empty domains keep env defaults. */
|
|
17
18
|
/** Replace a record's contents IN PLACE (clear keys, copy source) so holders of the SAME reference see the
|
|
18
19
|
* change. This is what makes models/roles/pricing HOT-apply: core's Runner reads
|
|
@@ -50,6 +51,11 @@ export type ApplyLeg = {
|
|
|
50
51
|
readonly checkpointStorePresent: boolean;
|
|
51
52
|
};
|
|
52
53
|
export type ApplyEffectiveOpts = ApplyLeg & {
|
|
54
|
+
/**
|
|
55
|
+
* 这份候选**从哪条配置腿来**(本地腿另带配置根上 env 模型表的决定在同一拍的读数)—— 模型面 stage 的本地腿确认闸只读它({@link stageModelPlane})。
|
|
56
|
+
* 必填、没有缺省腿(同 {@link ApplyLeg}):取自候选自己的 `FetchEffectiveResult.catalogSource`,LKG 读回 / 降档 / 按组回落的合成是中心腿的事(LKG 只在中心腿启用)。
|
|
57
|
+
*/
|
|
58
|
+
readonly catalogSource: CatalogSource;
|
|
53
59
|
readonly sealedKeys?: SealedKeyOpener;
|
|
54
60
|
readonly generation?: number;
|
|
55
61
|
readonly report?: (r: ApplyReport) => void;
|
|
@@ -94,28 +100,18 @@ export declare function withModelPlaneOf<E extends EffectiveConfig>(target: E, s
|
|
|
94
100
|
*/
|
|
95
101
|
export declare function fullyLandedForLkg(read: ConfigCandidateRead, report: ApplyReport | undefined): boolean;
|
|
96
102
|
/**
|
|
97
|
-
* [ref]:组拒码 → 铸它的那条模型面不变量 ——
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* · {@link ENGINE_MINTED_PLANE_REFUSAL_CODES} = 契约包出码、执法者是本仓但**今天未执法**的码(名字里的 ENGINE 沿契约包的词义 = worker,即本仓),本仓 stage 现在不铸。
|
|
103
|
+
* [ref]:组拒码 → 铸它的那条模型面不变量 —— **以码为键**,键集**恰是**契约包的组拒码闭集 `MODEL_PLANE_REFUSAL_CODES`(每个码恰有一个铸码方,就是本仓模型面 stage):
|
|
104
|
+
* 契约包加一个码而本表没收 ⇒ 本仓 tsc 红(`satisfies` 的映射型要求每个键)。模型面 stage 的组拒按**码**铸(码是判决那刻的数据),不变量 id 由本表派生 ——
|
|
105
|
+
* 一个 id 两个码(`model-route-endpoint`)时码不可能从 id 反推,反过来查才是全函数。
|
|
106
|
+
* (曾有第二本账 `ENGINE_MINTED_PLANE_REFUSAL_CODES`:契约包出码、执法者是本仓而尚未执法的码。本地腿确认闸落地后那一码由 stage 铸,第二本账与它的三道交叉门一并退役 —— 一本账、一道门。)
|
|
102
107
|
*/
|
|
103
108
|
export declare const PLANE_REFUSAL_INVARIANT_OF: {
|
|
104
109
|
readonly "config.default_model_missing": "default-model-resolvable";
|
|
105
110
|
readonly "config.model_refused_name_minted": "refused-names-not-minted";
|
|
106
111
|
readonly "config.model_route_endpoint_missing": "model-route-endpoint";
|
|
107
112
|
readonly "config.gateway_fallback_without_primary": "model-route-endpoint";
|
|
113
|
+
readonly "config.catalog_replaces_env_models": "env-table-replacement-acknowledged";
|
|
108
114
|
};
|
|
109
|
-
/**
|
|
110
|
-
* 契约包出码、执法者是本仓但今天**未执法**的组拒码:本地配置腿上「管模型面的目录会顶替已声明的 env 表、决定不是 `replaced`」那道闸。
|
|
111
|
-
*
|
|
112
|
-
* 词义:settings-schema 发布说明里的「engine / 引擎一侧」指**本仓(worker)**,不是 `@sema-agent/core` —— 这个码要的全部输入(本地配置腿、env 表、模型面 stage 与组拒口)只在本仓,core 里没有读
|
|
113
|
-
* `MODEL_ID` / `config.d` 的地方、也没有组拒码。所以本仓 stage 现在没有对应的不变量、不铸这个码,不是因为「归引擎」,而是**还没做**:
|
|
114
|
-
* · `CATALOG_REPLACES_ENV_MODELS_CODE`:执法是一整组跨仓件 —— 开机迁移 SS-M11(铸决定文档)· 本地腿每拍读决定(读数身份进候选的 etag)· 目录信任判官走根级文档 · 命令行 / 桌面 / 客户端核心三个写者先接契约包的计划助手;
|
|
115
|
-
* 候设计票。在那之前,候选目录管着模型面而 env 表也声明了时,仍照旧由目录服务(与升级前逐位同)。
|
|
116
|
-
* 这个码开始被铸之后,它进 `/health.modelRefusals.plane` 的座位是**另案设计**(现在没有座:见 `model-plane-face.ts` 对「装配期被引擎整份拒收」的披露),不在这张表里偷铸一个不变量替它占位。
|
|
117
|
-
*/
|
|
118
|
-
export declare const ENGINE_MINTED_PLANE_REFUSAL_CODES: readonly ["config.catalog_replaces_env_models"];
|
|
119
115
|
/**
|
|
120
116
|
* [ref] —— **「无中心配置」档的候选**:中心凭证换人时,server 把在用的中心配置降到这一档({@link applyEffective} 吃它,和吃任何候选走同一条 stage → swap → commit)。
|
|
121
117
|
* 它的意思是「**撤回**中心配置」—— 中心下发的每个热面回 env 底:
|
|
@@ -159,5 +155,5 @@ export declare function applyRuntimeHot(config: ServiceConfig, gov: EffectiveCon
|
|
|
159
155
|
* (env-derived) config, WITHOUT applying it. The safe-rollout step the web-admin recommends — verify
|
|
160
156
|
* the center's models/roles match (or intentionally differ from) the env baseline before going live.
|
|
161
157
|
*/
|
|
162
|
-
export declare function logEffectiveDiff(config: ServiceConfig, eff: EffectiveConfig, logger?: Logger): void;
|
|
158
|
+
export declare function logEffectiveDiff(config: ServiceConfig, eff: EffectiveConfig, catalogSource: CatalogSource, logger?: Logger): void;
|
|
163
159
|
//# sourceMappingURL=apply-effective.d.ts.map
|