@sema-agent/server 7.134.0 → 7.135.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 +134 -0
- package/USAGE.md +98 -30
- package/dist/adoption/plan.d.ts +1 -1
- package/dist/approval-ask-audit-store.d.ts +24 -24
- package/dist/approval-ask-machine.d.ts +2 -2
- package/dist/approval-card.d.ts +62 -150
- package/dist/approval-card.js +33 -51
- package/dist/approval-content-kind.d.ts +22 -5
- package/dist/approval-content-kind.js +8 -1
- package/dist/approval-deny-reasons.d.ts +1 -1
- package/dist/approval-gate-currency.d.ts +22 -3
- package/dist/approval-gate-currency.js +44 -18
- package/dist/approval-hmac.d.ts +7 -7
- package/dist/approval-policy-settlement.d.ts +2 -2
- package/dist/approval-reconciler.d.ts +3 -3
- package/dist/approval.d.ts +8 -8
- package/dist/approval.js +4 -2
- package/dist/auth-bridge.d.ts +1 -1
- package/dist/auto-mode-face.d.ts +4 -4
- package/dist/background-session-reap.d.ts +2 -2
- package/dist/bake-runner/main.d.ts +2 -2
- package/dist/bake-runner/runner.d.ts +4 -4
- package/dist/bench/s1/live-deps.d.ts +1 -1
- package/dist/bench/s1/run-firm.d.ts +1 -1
- package/dist/boot/coordinators.d.ts +2 -2
- package/dist/boot/coordinators.js +2 -2
- package/dist/boot/deferred-sandbox-path-env.d.ts +0 -6
- package/dist/boot/deferred-sandbox-path-env.js +0 -5
- package/dist/boot/engine-lease.d.ts +5 -5
- package/dist/boot/execution-env.d.ts +16 -15
- package/dist/boot/execution-env.js +19 -21
- package/dist/boot/fatal-exit.d.ts +2 -2
- package/dist/boot/late-binds.d.ts +1 -1
- package/dist/boot/leader.d.ts +1 -1
- package/dist/boot/memory-boundary.d.ts +2 -2
- package/dist/boot/memory-consolidation.d.ts +15 -15
- package/dist/boot/parked-revive-gate.d.ts +3 -3
- package/dist/boot/parked-revive-gate.js +3 -2
- package/dist/boot/reapers.d.ts +4 -4
- package/dist/boot/resolve-spec.d.ts +1 -1
- package/dist/boot/resolve-spec.js +28 -24
- package/dist/boot/runner-deps.d.ts +11 -11
- package/dist/boot/runner-deps.js +3 -2
- package/dist/boot/session-faces.d.ts +3 -3
- package/dist/boot/session-faces.js +11 -30
- package/dist/boot/shutdown.d.ts +5 -5
- package/dist/boot/side-query-lane.d.ts +2 -2
- package/dist/boot/stage-05-execution-env.js +4 -4
- package/dist/boot/stage-06-runners.js +0 -2
- package/dist/boot/stores.js +2 -1
- package/dist/boot/web-admin.d.ts +17 -17
- package/dist/boot/web-admin.js +5 -10
- package/dist/boot/workflow-orchestration.js +2 -9
- package/dist/brain.d.ts +11 -11
- package/dist/budget.d.ts +4 -4
- package/dist/capabilities/approvals-push.d.ts +4 -4
- package/dist/capabilities/builtin-tools.d.ts +5 -5
- package/dist/capabilities/center-plugins.d.ts +5 -5
- package/dist/capabilities/center-plugins.js +1 -1
- package/dist/capabilities/center-prompts.d.ts +1 -1
- package/dist/capabilities/center-wiring.d.ts +1 -1
- package/dist/capabilities/composite-members.d.ts +1 -1
- package/dist/capabilities/execution-lane.d.ts +5 -5
- package/dist/capabilities/execution-lane.js +2 -2
- package/dist/capabilities/hands-lane.d.ts +5 -5
- package/dist/capabilities/mcp-probe.d.ts +10 -7
- package/dist/capabilities/sandbox-file-send.d.ts +1 -18
- package/dist/capabilities/sandbox-file-send.js +0 -7
- package/dist/capabilities/scenarios.d.ts +28 -10
- package/dist/capabilities/scenarios.js +15 -5
- package/dist/capabilities/send-user-file-tool.d.ts +1 -1
- package/dist/capabilities/skills.d.ts +31 -12
- package/dist/capabilities/skills.js +23 -17
- package/dist/capabilities/tool-defer.d.ts +1 -1
- package/dist/capability-facts.d.ts +26 -25
- package/dist/capability-facts.js +14 -16
- package/dist/center-config-tier.d.ts +1 -1
- package/dist/center-credential.d.ts +4 -4
- package/dist/checkpoint-identity.d.ts +5 -0
- package/dist/checkpoint-identity.js +14 -0
- package/dist/config-catalog.d.ts +12 -12
- package/dist/config-invariants.d.ts +4 -4
- package/dist/config-invariants.js +3 -2
- package/dist/config-lkg.d.ts +1 -1
- package/dist/config-provider.d.ts +13 -13
- package/dist/config-provider.js +2 -1
- package/dist/config-types.d.ts +83 -83
- package/dist/config.d.ts +26 -24
- package/dist/config.js +12 -10
- package/dist/cross-session-settings.d.ts +1 -1
- package/dist/delegated-session-owner.d.ts +16 -13
- package/dist/delegated-session-owner.js +9 -10
- package/dist/deployment-governance.d.ts +16 -16
- package/dist/deployment-shape.d.ts +127 -0
- package/dist/deployment-shape.js +72 -0
- package/dist/device-store.d.ts +1 -1
- package/dist/device-ws-hub.d.ts +1 -1
- package/dist/egress-redirect.d.ts +1 -1
- package/dist/entry-mode-clamp-notice.d.ts +2 -2
- package/dist/env-facts.d.ts +10 -9
- package/dist/env-facts.js +1 -1
- package/dist/env-name-allowlist-knobs.d.ts +5 -5
- package/dist/exec-bounds.d.ts +2 -2
- package/dist/execution-lane-caps.d.ts +31 -43
- package/dist/execution-lane-caps.js +0 -13
- package/dist/file-history-capture.d.ts +9 -9
- package/dist/file-history-disclosure.d.ts +23 -11
- package/dist/file-history-disclosure.js +7 -12
- package/dist/fleet/drain-entry.d.ts +2 -2
- package/dist/fleet/fleet-bus.d.ts +22 -14
- package/dist/fleet/fleet-bus.js +5 -5
- package/dist/fleet/fleet-reconciler.d.ts +9 -9
- package/dist/fleet/subagent-tail-bus.d.ts +4 -4
- package/dist/fleet-client.d.ts +13 -13
- package/dist/fleet-lease.d.ts +16 -16
- package/dist/governance-http-status.d.ts +2 -2
- package/dist/hooks/hook-llm.d.ts +7 -7
- package/dist/hooks/hook-runner.d.ts +57 -30
- package/dist/hooks/hook-runner.js +36 -18
- package/dist/host-decision.d.ts +5 -5
- package/dist/host-lsp-manager.d.ts +5 -5
- package/dist/hosted-posture.d.ts +23 -13
- package/dist/hosted-posture.js +4 -9
- package/dist/http/admission.d.ts +2 -2
- package/dist/http/admission.js +20 -5
- package/dist/http/approval-sweeps.d.ts +1 -1
- package/dist/http/approval-sweeps.js +2 -1
- package/dist/http/checkpoint-ctx.d.ts +39 -13
- package/dist/http/checkpoint-ctx.js +74 -35
- package/dist/http/dispatch.d.ts +3 -3
- package/dist/http/durable-run-leg.js +4 -3
- package/dist/http/idempotency.d.ts +2 -2
- package/dist/http/mcp-dial-deadline.d.ts +7 -5
- package/dist/http/memory-compliance-failure-reply.d.ts +4 -4
- package/dist/http/owner-access.d.ts +4 -6
- package/dist/http/owner-access.js +1 -1
- package/dist/http/principal-gate.d.ts +7 -7
- package/dist/http/principal-gate.js +3 -2
- package/dist/http/readiness.d.ts +1 -1
- package/dist/http/request-guards.d.ts +4 -4
- package/dist/http/request-guards.js +2 -1
- package/dist/http/resume-ctx-read.d.ts +7 -7
- package/dist/http/resume-ctx-read.js +1 -1
- package/dist/http/resume-legs.d.ts +3 -3
- package/dist/http/resume-legs.js +11 -8
- package/dist/http/route-ctx.d.ts +29 -29
- package/dist/http/route-table.d.ts +9 -9
- package/dist/http/routes/agents-roster.d.ts +1 -1
- package/dist/http/routes/approvals-assistant.d.ts +5 -5
- package/dist/http/routes/approvals-assistant.js +55 -15
- package/dist/http/routes/background.d.ts +3 -3
- package/dist/http/routes/background.js +2 -2
- package/dist/http/routes/capabilities.d.ts +1 -1
- package/dist/http/routes/capabilities.js +16 -8
- package/dist/http/routes/config-catalog.d.ts +1 -1
- package/dist/http/routes/devices.d.ts +1 -1
- package/dist/http/routes/diagnostics.d.ts +3 -3
- package/dist/http/routes/fleet.d.ts +1 -1
- package/dist/http/routes/fleet.js +2 -1
- package/dist/http/routes/mcp-reconnect.d.ts +4 -4
- package/dist/http/routes/mcp-reconnect.js +3 -3
- package/dist/http/routes/memory-consolidation.d.ts +1 -1
- package/dist/http/routes/notify-wake.d.ts +1 -1
- package/dist/http/routes/notify-wake.js +2 -2
- package/dist/http/routes/rules.d.ts +1 -1
- package/dist/http/routes/runs.js +22 -10
- package/dist/http/routes/session-sync.d.ts +1 -1
- package/dist/http/routes/session-sync.js +73 -44
- package/dist/http/routes/sessions-list.js +1 -1
- package/dist/http/routes/sessions.js +30 -44
- package/dist/http/routes/tasks.d.ts +1 -1
- package/dist/http/routes/trace-usage.d.ts +1 -1
- package/dist/http/routes/workflows.d.ts +3 -0
- package/dist/http/routes/workflows.js +31 -28
- package/dist/http/send.d.ts +5 -5
- package/dist/http/server.d.ts +34 -34
- package/dist/http/session-inherit-env.d.ts +3 -3
- package/dist/http/sse-lifecycle.d.ts +1 -1
- package/dist/http/sse-log.d.ts +2 -2
- package/dist/http/submit-ctx.js +1 -1
- package/dist/http/sync-submit-body.d.ts +1 -1
- package/dist/http/verify-rounds.d.ts +1 -1
- package/dist/http/wire-types.d.ts +28 -21
- package/dist/instruction-source-notice.d.ts +2 -2
- package/dist/key-resolver.d.ts +3 -3
- package/dist/lane-home-probe.d.ts +1 -1
- package/dist/leader/diffout.d.ts +1 -1
- package/dist/leader/diffup.d.ts +2 -2
- package/dist/leader/endpoint.d.ts +1 -1
- package/dist/leader/fanout.d.ts +1 -1
- package/dist/leader/leader.d.ts +4 -4
- package/dist/leader/merge.d.ts +3 -3
- package/dist/leader/repair-wire.d.ts +1 -1
- package/dist/leader/wire.d.ts +6 -6
- package/dist/list-entry-display.d.ts +1 -1
- package/dist/lsp-evict.d.ts +1 -1
- package/dist/mcp-assertion-header.d.ts +1 -1
- package/dist/memory-layer-legacy-lock.d.ts +1 -1
- package/dist/memory-operator-faces.d.ts +1 -1
- package/dist/memory-posture.js +4 -2
- package/dist/memory-project-layer.d.ts +1 -1
- package/dist/memory-scope.d.ts +19 -19
- package/dist/memory-store-refusal.d.ts +4 -4
- package/dist/model-entry-headers.d.ts +2 -2
- package/dist/model-entry-refusal.d.ts +17 -17
- package/dist/model-provider.d.ts +10 -10
- package/dist/model-reach-scope.d.ts +1 -1
- package/dist/model-route-endpoint.d.ts +6 -6
- package/dist/model-route-url.d.ts +5 -5
- package/dist/model-select.d.ts +15 -6
- package/dist/model-select.js +5 -0
- package/dist/model-unreachable-notice.d.ts +3 -3
- package/dist/namespaced-rule-name.d.ts +15 -5
- package/dist/namespaced-rule-name.js +3 -2
- package/dist/observability/corrupt-read-seat.d.ts +9 -9
- package/dist/observability/cost-taxonomy.d.ts +1 -1
- package/dist/observability/err-text.d.ts +1 -1
- package/dist/observability/fail-open.d.ts +12 -8
- package/dist/observability/fail-open.js +12 -8
- package/dist/observability/metrics.d.ts +3 -3
- package/dist/observability/run-terminal.d.ts +36 -36
- package/dist/observability/secret-env-scrub.d.ts +3 -3
- package/dist/observability/tool-trace.d.ts +1 -1
- package/dist/operator-ask.d.ts +4 -4
- package/dist/orchestration/workflow-agent-session-index.d.ts +3 -3
- package/dist/orchestration/workflow-completion-inbox.d.ts +20 -5
- package/dist/orchestration/workflow-completion-inbox.js +29 -7
- package/dist/orchestration/workflow-notify-journal.d.ts +43 -19
- package/dist/orchestration/workflow-notify-journal.js +17 -0
- package/dist/outbound-dispatcher.d.ts +4 -4
- package/dist/parent-watch.d.ts +4 -4
- package/dist/parked-decide.d.ts +16 -15
- package/dist/parked-decide.js +5 -4
- package/dist/parked-revive-surface.d.ts +7 -7
- package/dist/parked-revive-surface.js +2 -3
- package/dist/peer-directory.d.ts +3 -3
- package/dist/peer-directory.js +1 -1
- package/dist/permission-rule-list.d.ts +10 -1
- package/dist/permission-rule-list.js +7 -5
- package/dist/permission-rule-vocab.d.ts +2 -2
- package/dist/plugins/adoption-log-sql.d.ts +1 -1
- package/dist/plugins/approval-ask-store-file.d.ts +8 -1
- package/dist/plugins/approval-ask-store-file.js +6 -3
- package/dist/plugins/approval-ask-store-memory.d.ts +11 -7
- package/dist/plugins/approval-ask-store-memory.js +11 -7
- package/dist/plugins/approval-ask-store-sql.d.ts +34 -15
- package/dist/plugins/approval-ask-store-sql.js +18 -5
- package/dist/plugins/approval-exemption-store.d.ts +3 -3
- package/dist/plugins/approval-nonce-store.d.ts +3 -3
- package/dist/plugins/background-agent-store-sql.d.ts +1 -1
- package/dist/plugins/background-shell-support.d.ts +2 -2
- package/dist/plugins/blob-backend.d.ts +1 -1
- package/dist/plugins/caching-session-store.d.ts +23 -32
- package/dist/plugins/caching-session-store.js +5 -17
- package/dist/plugins/checkpoint-index-columns.d.ts +81 -0
- package/dist/plugins/checkpoint-index-columns.js +62 -0
- package/dist/plugins/checkpoint-store-sql.d.ts +44 -66
- package/dist/plugins/checkpoint-store-sql.js +55 -102
- package/dist/plugins/device-store-sql.d.ts +7 -6
- package/dist/plugins/e2b-orphan-reclaim.d.ts +1 -1
- package/dist/plugins/ensure-schema-lock-policy.d.ts +1 -1
- package/dist/plugins/file-history-store-sql.d.ts +9 -7
- package/dist/plugins/file-history-store-sql.js +27 -15
- package/dist/plugins/file-run-store.d.ts +8 -8
- package/dist/plugins/fork-routing-session-store.d.ts +2 -2
- package/dist/plugins/fork-routing-session-store.js +1 -1
- package/dist/plugins/host-platform.d.ts +10 -10
- package/dist/plugins/image-bake-store-sql.d.ts +1 -1
- package/dist/plugins/image-index-sql.d.ts +1 -1
- package/dist/plugins/leader-run-store-sql.d.ts +1 -1
- package/dist/plugins/local-checkpoint-store.d.ts +10 -10
- package/dist/plugins/local-checkpoint-store.js +3 -4
- package/dist/plugins/local-session-store.d.ts +34 -38
- package/dist/plugins/local-session-store.js +20 -39
- package/dist/plugins/local-session-window.d.ts +1 -1
- package/dist/plugins/mailbox-store-sql.d.ts +2 -2
- package/dist/plugins/memory-engine-pg.d.ts +1 -1
- package/dist/plugins/memory-run-store.d.ts +4 -4
- package/dist/plugins/memory-sync-store-pg.d.ts +3 -3
- package/dist/plugins/one-time-migrations.d.ts +66 -40
- package/dist/plugins/one-time-migrations.js +115 -34
- package/dist/plugins/outcome-ledger-sql.d.ts +1 -1
- package/dist/plugins/park-commit-watch.d.ts +3 -3
- package/dist/plugins/permission-rule-store-file.d.ts +5 -5
- package/dist/plugins/permission-rule-store-file.js +12 -19
- package/dist/plugins/permission-rule-store-sql.d.ts +38 -4
- package/dist/plugins/permission-rule-store-sql.js +67 -24
- package/dist/plugins/pg-cost-quota.d.ts +1 -1
- package/dist/plugins/pg-pool.d.ts +2 -2
- package/dist/plugins/pg-pool.js +5 -2
- package/dist/plugins/pg-rate-limiter.d.ts +1 -1
- package/dist/plugins/pg-session-storage.d.ts +8 -20
- package/dist/plugins/pg-session-storage.js +14 -27
- package/dist/plugins/remote-env-adb.d.ts +10 -10
- package/dist/plugins/remote-env-device.d.ts +10 -9
- package/dist/plugins/remote-env-device.js +6 -2
- package/dist/plugins/remote-env-e2b.d.ts +3 -3
- package/dist/plugins/remote-env-host.d.ts +16 -16
- package/dist/plugins/remote-env-k8s.d.ts +8 -8
- package/dist/plugins/remote-env-local-docker.d.ts +2 -2
- package/dist/plugins/remote-env-ssh.d.ts +4 -4
- package/dist/plugins/remote-scratchpad.d.ts +2 -3
- package/dist/plugins/remote-scratchpad.js +0 -4
- package/dist/plugins/remote-shell.d.ts +6 -6
- package/dist/plugins/retention-lane-store-sql.d.ts +4 -4
- package/dist/plugins/retention-store-sql.d.ts +4 -4
- package/dist/plugins/roster-store-sql.d.ts +1 -1
- package/dist/plugins/run-store-sql.d.ts +8 -8
- package/dist/plugins/schema-consistency.d.ts +2 -2
- package/dist/plugins/schema-ensure-legs.d.ts +3 -3
- package/dist/plugins/schema-indexes.d.ts +1 -1
- package/dist/plugins/schema-live-columns.d.ts +1 -1
- package/dist/plugins/session-event-payload.d.ts +4 -4
- package/dist/plugins/session-fork.d.ts +34 -0
- package/dist/plugins/session-fork.js +29 -0
- package/dist/plugins/session-ownership.js +1 -1
- package/dist/plugins/session-placement.d.ts +1 -1
- package/dist/plugins/session-policy-store-sql.d.ts +12 -12
- package/dist/plugins/session-store.d.ts +2 -2
- package/dist/plugins/session-store.js +2 -2
- package/dist/plugins/shared-memory-store-sql.d.ts +2 -2
- package/dist/plugins/sql-driver.d.ts +8 -8
- package/dist/plugins/sql-errors.d.ts +1 -1
- package/dist/plugins/sql-json-column.d.ts +21 -21
- package/dist/plugins/sql-row-helpers.d.ts +2 -2
- package/dist/plugins/store-backend.d.ts +17 -16
- package/dist/plugins/store-backend.js +3 -3
- package/dist/plugins/store-contracts.d.ts +21 -21
- package/dist/plugins/task-attachment-store.d.ts +2 -2
- package/dist/plugins/task-list-store-sql.d.ts +1 -1
- package/dist/plugins/tidb-pool.d.ts +2 -2
- package/dist/plugins/tidb-pool.js +9 -2
- package/dist/plugins/tidb-session-store.d.ts +16 -26
- package/dist/plugins/tidb-session-store.js +15 -27
- package/dist/plugins/tool-result-store-sql.d.ts +1 -1
- package/dist/plugins/usage-window-store-sql.d.ts +3 -3
- package/dist/plugins/user-input-ledger-file.d.ts +1 -1
- package/dist/plugins/user-input-ledger-sql.d.ts +3 -3
- package/dist/plugins/web-search.d.ts +19 -5
- package/dist/plugins/web-search.js +19 -4
- package/dist/{orchestration/workflow-journal-entry.d.ts → plugins/workflow-journal-payload.d.ts} +23 -32
- package/dist/plugins/workflow-journal-payload.js +32 -0
- package/dist/plugins/workflow-journal-store-sql.d.ts +28 -14
- package/dist/plugins/workflow-journal-store-sql.js +34 -15
- package/dist/plugins/workflow-run-store-sql.d.ts +4 -4
- package/dist/posture-source.d.ts +11 -11
- package/dist/principal-jwt.d.ts +6 -6
- package/dist/project-identity.d.ts +3 -3
- package/dist/project-memory.d.ts +4 -4
- package/dist/read-face-posture.d.ts +7 -7
- package/dist/request-key-closure.d.ts +1 -1
- package/dist/request-key-closure.js +1 -1
- package/dist/request-value-closure.d.ts +15 -8
- package/dist/request-value-closure.js +2 -0
- package/dist/router/route-orchestration.d.ts +11 -16
- package/dist/router/route-orchestration.js +2 -12
- package/dist/rule-entry-list.d.ts +8 -7
- package/dist/rule-entry-list.js +2 -9
- package/dist/rules-consent.d.ts +6 -6
- package/dist/rules-consent.js +2 -0
- package/dist/run-cancel-context.d.ts +5 -5
- package/dist/run-local.d.ts +10 -10
- package/dist/runs.d.ts +13 -11
- package/dist/runs.js +15 -1
- package/dist/runtime-caps-resolver.d.ts +6 -6
- package/dist/runtime-governance.d.ts +9 -9
- package/dist/sandbox-pkg-source.d.ts +9 -31
- package/dist/sandbox-pkg-source.js +14 -8
- package/dist/sealed-key.d.ts +3 -3
- package/dist/security.d.ts +23 -26
- package/dist/security.js +12 -9
- package/dist/server-secret-env.d.ts +10 -10
- package/dist/session-children-retire.d.ts +1 -1
- package/dist/session-error-wire.d.ts +7 -7
- package/dist/session-incarnation.d.ts +52 -35
- package/dist/session-incarnation.js +23 -8
- package/dist/session-policy-wire.d.ts +27 -5
- package/dist/session-policy-wire.js +15 -1
- package/dist/session-records-skipped-notice.d.ts +1 -1
- package/dist/session-sync-kernel.d.ts +4 -4
- package/dist/session-sync.d.ts +49 -6
- package/dist/session-sync.js +52 -10
- package/dist/session-titler.d.ts +7 -6
- package/dist/session-titler.js +8 -13
- package/dist/session-watch.d.ts +3 -3
- package/dist/session-watch.js +4 -4
- package/dist/sighup-idle.d.ts +2 -2
- package/dist/spec-fields.d.ts +4 -4
- package/dist/sql-engine-posture.d.ts +3 -3
- package/dist/store-posture.d.ts +2 -2
- package/dist/stored-request-tool-axes-m19.d.ts +1 -1
- package/dist/task-a2a.d.ts +3 -1
- package/dist/task-a2a.js +34 -2
- package/dist/task-cwd.d.ts +7 -88
- package/dist/task-cwd.js +2 -15
- package/dist/task-mcp.d.ts +12 -8
- package/dist/task-mcp.js +19 -4
- package/dist/task-settings.d.ts +30 -18
- package/dist/task-settings.js +33 -3
- package/dist/task-workflow.d.ts +0 -24
- package/dist/task-workflow.js +2 -1
- package/dist/terminal.d.ts +5 -5
- package/dist/tighten-only-seats.d.ts +7 -6
- package/dist/tighten-only-seats.js +1 -1
- package/dist/tool-approval.d.ts +143 -197
- package/dist/tool-approval.js +13 -28
- package/dist/tool-rule-names.d.ts +2 -2
- package/dist/trace/core-keyset-guard.d.ts +12 -7
- package/dist/trace/engine-notice-wire.d.ts +5 -5
- package/dist/trace/engine-notice-wire.js +1 -0
- package/dist/trace/exit-seat.d.ts +31 -4
- package/dist/trace/exit-seat.js +41 -63
- package/dist/trace/ledger-events.d.ts +3 -3
- package/dist/trace/ledger-sink.d.ts +1 -1
- package/dist/trace/model-segment.d.ts +3 -3
- package/dist/trace/project.d.ts +47 -45
- package/dist/trace/project.js +33 -1
- package/dist/trace/redact.d.ts +44 -30
- package/dist/trace/redact.js +191 -89
- package/dist/trace/self-minted-wire.d.ts +35 -14
- package/dist/trace/self-minted-wire.js +8 -0
- package/dist/trace/sema-provenance.d.ts +1 -1
- package/dist/trace/task-notification-facets.d.ts +4 -4
- package/dist/trace/wire-projection-faces.d.ts +3 -3
- package/dist/trace/wire-projection-faces.js +1 -1
- package/dist/unattended-permission-mode.d.ts +5 -5
- package/dist/url-credential.d.ts +52 -0
- package/dist/url-credential.js +49 -0
- package/dist/url-refusal.d.ts +6 -2
- package/dist/url-refusal.js +8 -1
- package/dist/usage-analytics.d.ts +2 -2
- package/dist/user-input-ledger.d.ts +23 -23
- package/dist/web-admin-client/apply-effective.d.ts +5 -5
- package/dist/web-admin-client/apply-effective.js +2 -1
- package/dist/web-admin-client/apply-ledger.d.ts +2 -2
- package/dist/web-admin-client/center-request.d.ts +2 -2
- package/dist/web-admin-client/facade.d.ts +5 -5
- package/dist/web-admin-client/facade.js +1 -1
- package/dist/web-admin-client/hot-keys-registry.d.ts +2 -2
- package/dist/web-admin-client/http-client.d.ts +4 -4
- package/dist/web-admin-client/mcp-revocation.d.ts +1 -1
- package/dist/web-admin-client/pull-state.d.ts +1 -1
- package/dist/web-admin-client/read-face.d.ts +2 -2
- package/dist/web-admin-client/read-warnings.d.ts +5 -5
- package/dist/web-admin-client/restart-signal.d.ts +6 -6
- package/dist/web-admin-client/skills-mcp.d.ts +28 -3
- package/dist/web-admin-client/skills-mcp.js +29 -1
- package/dist/web-admin-client/types.d.ts +16 -9
- package/dist/workspace-space.d.ts +5 -3
- package/dist/write-protection.d.ts +2 -2
- package/package.json +4 -3
- package/scripts/drain-check-local.mjs +2 -1
- package/scripts/drain-check.mysql.sql +4 -2
- package/scripts/drain-check.pg.sql +4 -2
- package/skills/loop.md +1 -1
- package/dist/http/run-declared-families.d.ts +0 -16
- package/dist/http/run-declared-families.js +0 -12
- package/dist/orchestration/workflow-journal-entry.js +0 -27
package/dist/fleet-lease.d.ts
CHANGED
|
@@ -9,14 +9,14 @@ export declare const LEASE_PRINCIPAL_CAP = 4096;
|
|
|
9
9
|
/** 复审 O1:lease 协商 RTT 的硬上限——leaseDenied 在提交热路径同步 await 它,一个 accept-but-hang 的
|
|
10
10
|
* center 必须迅速塌成连接级失败臂而不是拖垮提交。取 2.5s(远小于任何续租余量,略紧于 registry 的 8s)。 */
|
|
11
11
|
export declare const LEASE_FETCH_TIMEOUT_MS = 2500;
|
|
12
|
-
/**
|
|
12
|
+
/** [ref] ③:`closed` 姿态下连接级失败给调用方的重试窗(秒)。**固定短窗** —— 不猜中心何时恢复;503 可重试,下一次提交就是
|
|
13
13
|
* 下一次谈判(失败臂不缓存,中心一恢复即恢复)。 */
|
|
14
14
|
export declare const LEASE_UNAVAILABLE_RETRY_SEC = 5;
|
|
15
|
-
/**
|
|
15
|
+
/** [ref] ③:租约连接级失败的两种姿态(= caps `centerWiring.failMode` 的词表;生效值由 `createFleetLeaseFromEnv` 从
|
|
16
16
|
* `FLEET_LEASE_FAIL_CLOSED` 定)。加一种 = 下面按姿态穷举的 `Record` 当场编译红。 */
|
|
17
17
|
export declare const LEASE_FAIL_MODES: readonly ["open", "closed"];
|
|
18
18
|
export type LeaseFailMode = (typeof LEASE_FAIL_MODES)[number];
|
|
19
|
-
/**
|
|
19
|
+
/** [ref] ③:`lease_unavailable` 的两个成因(503 体 `reason` 的词表,与 caps `leaseHealth` 的两个失败词同名)。 */
|
|
20
20
|
export declare const LEASE_UNAVAILABLE_CAUSES: readonly ["auth-rejected", "unreachable"];
|
|
21
21
|
export type LeaseUnavailableCause = (typeof LEASE_UNAVAILABLE_CAUSES)[number];
|
|
22
22
|
/** E4 定稿的 409 结构化字段(center verbatim → 我方 429 body verbatim 透传;人话归壳/web)。 */
|
|
@@ -45,7 +45,7 @@ export type LeaseRefusalAdmission = Extract<LeaseAdmission, {
|
|
|
45
45
|
ok: false;
|
|
46
46
|
}>;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* [ref] ② —— **最近一次谈判怎么收尾的**(`issueOrRenew` 收尾写;新状态,本管理器只此一枚)。闭集:
|
|
49
49
|
* · `none` —— 本进程还没谈判过;
|
|
50
50
|
* · `ok` —— 中心给了合法答复(200 租约 / 409 not-lease / 409 耗尽 —— 耗尽也是「中心在判」);
|
|
51
51
|
* · `auth-error` —— 中心 401 / 403 / 400,或这一次读凭证失败(请求根本没发);
|
|
@@ -54,10 +54,10 @@ export type LeaseRefusalAdmission = Extract<LeaseAdmission, {
|
|
|
54
54
|
*/
|
|
55
55
|
export declare const LEASE_ADMIT_OUTCOMES: readonly ["none", "ok", "auth-error", "unavailable"];
|
|
56
56
|
export type LeaseAdmitOutcome = (typeof LEASE_ADMIT_OUTCOMES)[number];
|
|
57
|
-
/**
|
|
57
|
+
/** [ref] ② caps `centerWiring.leaseHealth` 的词表。 */
|
|
58
58
|
export declare const LEASE_HEALTH_WORDS: readonly ["ok", "auth-rejected", "unreachable", "unobserved"];
|
|
59
59
|
export type LeaseHealth = (typeof LEASE_HEALTH_WORDS)[number];
|
|
60
|
-
/**
|
|
60
|
+
/** [ref] ② caps `centerWiring.caller.lease` 的词表(F-1 裁定:过期 / 耗尽而未续成 ⇒ `unobserved`)。 */
|
|
61
61
|
export declare const CALLER_LEASE_WORDS: readonly ["enforced", "not-enforced", "exhausted", "unobserved"];
|
|
62
62
|
export type CallerLease = (typeof CALLER_LEASE_WORDS)[number];
|
|
63
63
|
/** `snapshot()` 的产物(纯数据):调用方这一刻的租约读数 + 管理器最近一次谈判的健康位。`retryAfterSec` 只随 `exhausted`。 */
|
|
@@ -69,11 +69,11 @@ export interface LeaseSnapshot {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
export interface FleetLeaseOpts {
|
|
72
|
-
/**
|
|
72
|
+
/** [ref]:凭证是**来源**(每次协商取一次值),不是构造期烧进 header 的字符串。 */
|
|
73
73
|
center: CenterEndpoint & {
|
|
74
74
|
worker: string;
|
|
75
75
|
};
|
|
76
|
-
/**
|
|
76
|
+
/** [ref] ③:连接级失败臂的姿态。**必填** —— 安全轴上没有「不知道该放还是该拒」这一形(缺省在配置层按部署姿态派生,不在这里猜)。 */
|
|
77
77
|
failMode: LeaseFailMode;
|
|
78
78
|
fetchImpl?: typeof fetch;
|
|
79
79
|
logger?: {
|
|
@@ -92,9 +92,9 @@ export declare class FleetLeaseManager {
|
|
|
92
92
|
private readonly f;
|
|
93
93
|
private readonly now;
|
|
94
94
|
private failStreak;
|
|
95
|
-
/**
|
|
95
|
+
/** [ref] ②:最近一次谈判的收尾({@link LeaseAdmitOutcome})。只在 `issueOrRenewInner` 的各收尾点写。 */
|
|
96
96
|
private lastAdmit;
|
|
97
|
-
/**
|
|
97
|
+
/** [ref] ③ 生效姿态(caps `centerWiring.failMode` 读的就是它 —— 与执行的那一只同源)。 */
|
|
98
98
|
readonly failMode: LeaseFailMode;
|
|
99
99
|
constructor(opts: FleetLeaseOpts);
|
|
100
100
|
/**
|
|
@@ -117,7 +117,7 @@ export declare class FleetLeaseManager {
|
|
|
117
117
|
costMicroUsd?: number;
|
|
118
118
|
}): void;
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* [ref] ② —— 调用方这一刻的租约读数(caps `centerWiring.caller` / `leaseHealth` 的唯一来源;7.105.0 的 `peek()` 退役:它只回 kind、
|
|
121
121
|
* 不看 `until`,过期条目照回原 kind)。**纯读**:不打中心、不写状态、不动 LRU 序(`Map.get` 不改插入序)—— caps 路由自己不 admit。
|
|
122
122
|
* 规则表(设计稿 v1.1 §2②,逐行钉在 `test/fleet-lease.test.ts`):
|
|
123
123
|
* · principal 缺席 / 无条目(含被 LRU 逐出)⇒ `unobserved`;
|
|
@@ -128,20 +128,20 @@ export declare class FleetLeaseManager {
|
|
|
128
128
|
* `leaseHealth` 按 `lastAdmit`({@link LEASE_HEALTH_BY_OUTCOME})。
|
|
129
129
|
*/
|
|
130
130
|
snapshot(principal: string | undefined, now: number): LeaseSnapshot;
|
|
131
|
-
/** 🔴 复审 O2(Opus)的鉴权失败臂,
|
|
131
|
+
/** 🔴 复审 O2(Opus)的鉴权失败臂,[ref] 起两个入口共用(中心 401/403/400;凭证文件不可读):运维配置事故,
|
|
132
132
|
* 不是可用性事件。**每次**都 warn + 专用计数,且**不缓存**(配置一修好下一次谈判即恢复)。放不放行归姿态
|
|
133
|
-
* ({@link connectionFailure},
|
|
133
|
+
* ({@link connectionFailure},[ref] ③):open = 照旧放行(凭证抖一下不许把单用户锁在门外);closed = 拒。 */
|
|
134
134
|
private authFailure;
|
|
135
|
-
/**
|
|
135
|
+
/** [ref] ③:两条连接级失败臂的**唯一**收尾 —— 按姿态穷举(加一种姿态 = 编译红)。 */
|
|
136
136
|
private connectionFailure;
|
|
137
137
|
private set;
|
|
138
138
|
private issueOrRenew;
|
|
139
139
|
private issueOrRenewInner;
|
|
140
140
|
}
|
|
141
141
|
/**
|
|
142
|
-
* Env/config gate:中心车道配齐({@link centerLaneConfigured} —— 与 fleet 用量环 / 用量累加器**同一只**谓词,
|
|
142
|
+
* Env/config gate:中心车道配齐({@link centerLaneConfigured} —— 与 fleet 用量环 / 用量累加器**同一只**谓词,[ref] ④)即启;
|
|
143
143
|
* 不需要 FLEET_ADVERTISE_ADDRESS(它是出站消费面,不是入站可达性声明)。缺任一件 → undefined,非 fleet 部署零行为变化。
|
|
144
|
-
*
|
|
144
|
+
* [ref]:按**声明**装、不按内容装 —— `SEMA_WEB_ADMIN_TOKEN_FILE`(`WEB_ADMIN_ENV.tokenFile`)在场而
|
|
145
145
|
* 文件此刻不可读,管理器照样装上(每次协商取值,失败走响亮的鉴权失败臂;文件恢复即恢复)。
|
|
146
146
|
*/
|
|
147
147
|
export declare function createFleetLeaseFromEnv(cfg: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* [ref] —— core `GOVERNANCE_CODES` **闭集**在本分诊面上的逐码处置表。
|
|
3
3
|
*
|
|
4
4
|
* 为什么单独一张表而不是继续往下面的 if 链里加行:`failureCodeOf` 是**开集**(顶注写死「消费点一律带
|
|
5
5
|
* default 臂,禁按穷举写」),而开集里嵌着 core 这一个**闭集注册表**。闭集的成员共享两个性质——同一条
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* 值 `null` = **有意**不在本腿分诊(理由逐条写在行上),与「忘了写」在类型上不同形 —— 这是本表存在的
|
|
12
12
|
* 全部意义:让「没表态」不可能静默发生。开集那一半(下面的 if 链 + `resume_at.` 前缀臂 + default)不动。
|
|
13
13
|
*
|
|
14
|
-
* 逐码预期的**行为面**镜像在 `test/resume-anchor.test.ts` 的
|
|
14
|
+
* 逐码预期的**行为面**镜像在 `test/resume-anchor.test.ts` 的 [ref] 段(同型同义、刻意不共用这张表:
|
|
15
15
|
* 测试喂码进函数看状态码,不读本表,否则表写错了两边一起错还全绿)。
|
|
16
16
|
*/
|
|
17
17
|
export declare const GOVERNANCE_HTTP_STATUS: {
|
package/dist/hooks/hook-llm.d.ts
CHANGED
|
@@ -5,23 +5,23 @@ import type { HookLlmCall, HookLlmFailureCode } from "./hook-runner.js";
|
|
|
5
5
|
* hookLlm(prompt 条目/session titler 的模型载体)= 直连一次非流式 completion,从 main.ts 抽出成可注入
|
|
6
6
|
* 单元(fetchImpl/keyResolver 可假),因为这条 wire 在每个默认部署上都活(titler),必须可单测。
|
|
7
7
|
*
|
|
8
|
-
* api 形分派(2026-07-15,黑板 [ref]③b 真缺陷修;**选线依据
|
|
8
|
+
* api 形分派(2026-07-15,黑板 [ref]③b 真缺陷修;**选线依据 [ref] 起改为引擎主路由同一只判词**,见下):被选模型按所落的 brain 腿分家 ——
|
|
9
9
|
* - `openai-completions` ⇒ POST {base}/chat/completions(现状,字节不变);
|
|
10
10
|
* - `anthropic-messages` ⇒ POST {base}/v1/messages(x-api-key / Authorization: Bearer + anthropic-version
|
|
11
11
|
* 头,messages 数组,回包取 content[].text)。此前 hookLlm 只会说 openai 形且缺省 baseUrl 恒落
|
|
12
|
-
* `config.gatewayBaseUrl`(当年它有一个本机 8000 端口的出厂缺省,
|
|
12
|
+
* `config.gatewayBaseUrl`(当年它有一个本机 8000 端口的出厂缺省,[ref] 已删)——anthropic 单路由部署(主模型
|
|
13
13
|
* provider=anthropic 走 ANTHROPIC_BASE_URL,没配 MODEL_GATEWAY_BASEURL)下 titler 每会话打死
|
|
14
14
|
* localhost:8000 ⇒ `session_title_failed: TypeError: fetch failed`;即使端点活着,anthropic-messages
|
|
15
15
|
* 模型也不能用 /chat/completions 形调。
|
|
16
16
|
*
|
|
17
|
-
* 🔴 **选线 = 引擎主路由同一只判词**(
|
|
17
|
+
* 🔴 **选线 = 引擎主路由同一只判词**([ref]):「这只模型走 openai-completions 还是 anthropic-messages」不是本面的事,
|
|
18
18
|
* 是引擎主路由的事 —— `brain.ts` 按 `model.provider` 在「anthropic 路由(仅当 ANTHROPIC 凭据把它装上)/ 网关栈」之间选,
|
|
19
19
|
* 路由没装时整台机器只有网关这一只 brain,**连 `provider:"anthropic"` 的模型也落网关**(判词 `brainLaneFor` = 引擎 `brainLaneOf` 对装上的路由表的答案,
|
|
20
20
|
* 端点判官 / 降级腿 / 启动摘要读的是同一只)。本面此前自己按 `provider === "anthropic"` / `api === "anthropic-messages"`
|
|
21
21
|
* 字面判线 ⇒ 在 `MODEL_PROVIDER=anthropic` 而只配了网关的部署上,主请求去网关、标题与 hooks 的 llm 面却要找一条没装的
|
|
22
22
|
* anthropic 路由,整条拒发(零请求,只落 fail-open 标签)。现在本面只问那一只判词,不留第二个读法 —— 含 `api` 词:
|
|
23
23
|
* 引擎不按 `api` 选线(core 的 `createRoutingBrain` 缺省按 `provider` 键),settings-schema 的 `ModelEntry` 又强制两个词同真同假。
|
|
24
|
-
* (
|
|
24
|
+
* ([ref] 的 (a) 路已兑现:core 7.53.0 [ref] 根导出了那只判官 `brainLaneOf(model, routes)` —— `createRoutingBrain` 对每个请求问的就是它;
|
|
25
25
|
* 本仓自写的合取 `dispatchBrainLane` 随之退役,本调用点与另三处一并改问它。)
|
|
26
26
|
*/
|
|
27
27
|
export type HookModelPick = {
|
|
@@ -31,14 +31,14 @@ export type HookModelPick = {
|
|
|
31
31
|
baseUrl: string;
|
|
32
32
|
api: "openai-completions" | "anthropic-messages";
|
|
33
33
|
}
|
|
34
|
-
/** 选不出来的那一臂自带失败码(
|
|
34
|
+
/** 选不出来的那一臂自带失败码([ref]):两个载体(prompt 直连 / agent 子代理)共用这一只选模闸,同一只判词同一个码。 */
|
|
35
35
|
| {
|
|
36
36
|
ok: false;
|
|
37
37
|
error: string;
|
|
38
38
|
code: Extract<HookLlmFailureCode, "model_unresolved">;
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
|
-
* 🔴 **hook 失败展示文本的唯一铸点**(
|
|
41
|
+
* 🔴 **hook 失败展示文本的唯一铸点**([ref];`build*` = 返回纯数据的一只纯函数)。
|
|
42
42
|
*
|
|
43
43
|
* 病(codex 对 7.88.1/7.88.2 的补审抓出,存量泄漏,本车红先复现):这一族失败文本是**拼**出来的 ——
|
|
44
44
|
* 料有四种:core 的路由拒绝文案(`routeRefusalText` 的 `fixHint` 逐字带 `config.baseUrl` 的值)、
|
|
@@ -59,7 +59,7 @@ export type HookModelPick = {
|
|
|
59
59
|
* 🚧 **已知射程边界(登记,另车修在源头)**:自由文本律对**非规范拼法**的 URL
|
|
60
60
|
* (`https:alice:pw@h/v1` 省了 `//`、authority 里夹 tab)认不出结构 ⇒ 那两形若出现在料里(目录下发的
|
|
61
61
|
* `models[].baseUrl` 今天原样存,`apply-effective.ts` 只校验 `protocol`)仍会原样。修在源头 =
|
|
62
|
-
* 目录 baseUrl 落库前归一成 `new URL(raw).href`(
|
|
62
|
+
* 目录 baseUrl 落库前归一成 `new URL(raw).href`([ref] 收车档未闭环项),不是在这里再加一把尺。
|
|
63
63
|
*/
|
|
64
64
|
export declare function buildHookFailureText(raw: string): string;
|
|
65
65
|
/** The live object `createHookLlm` produces — model-pick resolution + the direct completion call, both capturing the hot-refreshed keyResolver/fetchImpl in closure. */
|
|
@@ -5,6 +5,7 @@ import type { EngineDollar, ModRegistration } from "@sema-agent/core";
|
|
|
5
5
|
import type { Logger } from "../observability/logger.js";
|
|
6
6
|
import type { HookManagedUnrun, HookNoticeObservation } from "../fleet/fleet-bus.js";
|
|
7
7
|
import { LIMIT_REASONS, type LimitMeasure } from "../limit-refusal.js";
|
|
8
|
+
import { type UrlCredential, type UrlCredentialRefusal } from "../url-credential.js";
|
|
8
9
|
import { type HookGroupSource } from "./hook-source.js";
|
|
9
10
|
import { type RunnableCommandHookEntry } from "./command-spawn.js";
|
|
10
11
|
/** 服务侧防线上限(契约本身不设量纲;不设界=单请求可塞任意大配置/任意长命令)。超界=校验错(fail-loud)。 */
|
|
@@ -134,12 +135,12 @@ export type ParseHooksConfigResult = {
|
|
|
134
135
|
readonly pieces?: readonly HooksRefusalPiece[];
|
|
135
136
|
};
|
|
136
137
|
/**
|
|
137
|
-
* 🔴 **
|
|
138
|
+
* 🔴 **[ref] → [ref](clay [ref] ③;八病审计 SG H6-d;test 7.112.0 验收 OBS ①)—— 工具事件的 matcher 选中了工具**别名**、却选不中它的正名 ⇒ fresh 提交面响亮拒。**
|
|
138
139
|
*
|
|
139
140
|
* 病:三个工具事件(PreToolUse / PostToolUse / PostToolUseFailure)的 matcher 都按调用的 **wire 名**匹配(本文件顶注
|
|
140
141
|
* 「tool_name 是哪一个名」;core `NAME_READINGS` 三行均为 `wire`)。引擎自带工具 `ListAgents` 的别名 `ListPeers` 写进 matcher
|
|
141
142
|
* ⇒ **永不命中、一句话都没有**(post 两事件自 7.107.0 / core 7.36.0 起如此,PreToolUse 一直如此)。静默不命中 = 写的人以为在生效的 hook
|
|
142
|
-
* 其实没跑,硬破坏三句要求的「响亮」没有着落。7.112.0(
|
|
143
|
+
* 其实没跑,硬破坏三句要求的「响亮」没有着落。7.112.0([ref])只拒**字面**别名;同一个错误写成 `^ListPeers$` / `ListPeers.*` / `(ListPeers)` 照样 200([ref])。
|
|
143
144
|
*
|
|
144
145
|
* 规则(一条;字面形是它的特例):{@link hooksMatcherIssue} 对 core 静态目录里**每一条退役别名**问「这只 matcher 选不选它 / 选不选它的正名」:
|
|
145
146
|
* matcher **命中别名 ∧ 不命中它的正名** ⇒ `400 request.field_invalid`(`admission.ts` fresh 门)。「选不选」**只有一只读法**:契约包的 `hookMatcherSelects`
|
|
@@ -148,7 +149,7 @@ export type ParseHooksConfigResult = {
|
|
|
148
149
|
* ② **形只问契约包的 `hookMatcherForm`**(与 `hookMatcherSelects` 同一只解析步,本仓不留形判),闭集三词、两档一张表:
|
|
149
150
|
* · `literal`(缺席 / 空 / `*` / 名字表形;契约不编、不跑调用方的正则)⇒ 两档都**直接问契约函数**、**不占求值预算**;
|
|
150
151
|
* · `regex` ⇒ **`"regex"` 档**(hooks 会被采纳的车道,`taskHooksHonored`)把**同一只契约函数**经 `node:vm` 的 `timeout` 带**每次求值各一份固定预算**调用({@link matcherSelectsWithin};
|
|
151
|
-
* 每次求值的额度**不共享**、不随同一受理里别的 matcher 缩水、这一份不读钟 ——
|
|
152
|
+
* 每次求值的额度**不共享**、不随同一受理里别的 matcher 缩水、这一份不读钟 —— [ref];另有一只受理总额度,见下「预算与结局」);**超时 ⇒ 这只 matcher 是灾难回溯 ⇒ `400 request.field_invalid` 拒**(见下「预算与结局」);
|
|
152
153
|
* **`"literal"` 档**(多租户车道:hooks 整只被 resolveSpec 忽略)= **不适用**:该车道没有被守的对象(hooks 不装配),不判、不算未判、不登记 —— **零调用方正则执行**
|
|
153
154
|
* (7.112.0 的字面判保留:裸 `ListPeers` / `Read|ListPeers` 照旧 400);
|
|
154
155
|
* · `invalid`(编不过)⇒ `"regex"` 档 = **`400 request.field_invalid` 拒**(判决 `invalid_regex`,见下「预算与结局」;不进求值 —— 形判已答「读不了」);`"literal"` 档 = 不适用(同上)。
|
|
@@ -156,7 +157,7 @@ export type ParseHooksConfigResult = {
|
|
|
156
157
|
* · **为什么两档**(codex r1 [high] + 主会话裁):受理面是**所有**车道,而运行期只有单用户车道跑 hooks。在受理线程上跑调用方的正则 = 给多租户加一个事件循环 DoS 面
|
|
157
158
|
* (实测:`(.*)*` ×10 + `X` 对 9 字符名字首次执行 1.7 s,18 字符嵌套形 15 s,24 字符 157 s;8 MiB 交替串编译 + 求值 9 s)—— 预算只界住一次请求、界不住「每个请求再拿一份」。
|
|
158
159
|
* 但也不能因此在多租户车道「不判决」(那会放宽已发行为:裸 `ListPeers` 的 400)。所以两车道同一条规则、两档深度。谓词 `taskHooksHonored` 是唯一属主(与 resolveSpec / capabilities 同调)。
|
|
159
|
-
* · **为什么不进 {@link parseHooksConfig}**(codex r1 [high],
|
|
160
|
+
* · **为什么不进 {@link parseHooksConfig}**(codex r1 [high],[ref]):`parseHooksConfig` 同时是 resume 重放(`parseTaskSettings` 宽容层)的校验器,
|
|
160
161
|
* 它判不过 ⇒ **整只 hooks 不采纳**。存量 body 里同一份 hooks 常常还有会真拦的 PreToolUse 钩子 —— 一个永不命中的别名 matcher 把它们一并带走,
|
|
161
162
|
* 升级前被拦的 Bash 升级后放行(安全轴上的回退)。所以这条规则住在 fresh 专用的判据里,与 `taskSettingsKeyIssue` 同姿势
|
|
162
163
|
* (「fresh 400 / resume 宽容」双层:会砖存量的规则只咬 fresh)。resume 照旧整只采纳,别名那一组继续永不命中(与 7.111.0 逐字同),其余照跑。
|
|
@@ -167,57 +168,57 @@ export type ParseHooksConfigResult = {
|
|
|
167
168
|
* · **正名同在则不拒**:`正名|别名` / `List.*` 会命中正名,不是「静默不命中」,且正是 7.107.0 CHANGELOG 给的「滚动期两名都写」补偿形。
|
|
168
169
|
* 只拒「别名那一路永远打不中、而它的正名不在选中集里」—— 含 `Read|ListPeers`(7.112.0 已拒;主会话裁:规则形采「按条目逐条问」,不放宽;卡面整 matcher「匹配不到任何现役名」形会把它放回 200)。
|
|
169
170
|
* 多拒(相对卡面形)三例与出路:`Read|ListPeers` / `ListPeers|mcp__.*`(别名支永不命中,出路:改成正名)/ 排除式 `^(?!ListAgents).*`(出路:`^(?!ListAgents|ListPeers).*` 两名都不命中 ⇒ 放)。
|
|
170
|
-
* · **空白与大小写(
|
|
171
|
+
* · **空白与大小写([ref] / sema-test [ref] 起,运行期与 CC 同形)**:名字表读法(契约函数;`|` 与 `,` 分隔)容忍两端与分隔符两侧空白 ⇒ `" ListPeers"` / `"ListPeers "` / `"Read | ListPeers"` 会命中别名 ⇒ 落进本规则 400;
|
|
171
172
|
* **区分大小写、不剥词内空白** ⇒ `"listpeers"` / `"List Peers"` 对别名与正名都选不中,照旧受理(CC 同形)。
|
|
172
173
|
* · **不在本规则内**:两边都选不中的 matcher(大小写错 / 词内空白 / 纯错字;目录之外的 MCP / 嵌入方工具名同样「选不中目录里任何名」,受理面无从区分错字与它们)=
|
|
173
174
|
* **「选不到目录里任何名」另一类,候设计(台账另立号,主会话裁)**。
|
|
174
175
|
*
|
|
175
|
-
* 🔴 **预算与结局(
|
|
176
|
+
* 🔴 **预算与结局([ref] / [ref];良性设置的受理结局只取决于配置,不取决于机器忙闲)**:regex 档每一次求值(一只正则形 matcher 对一个名字的一次问)各拿**一份固定的墙钟预算**
|
|
176
177
|
* {@link ADMISSION_MATCHER_BUDGET}`.budgetMs`(vm `timeout`,从这次求值开始计)—— **不共享**(此前一次受理共用 100 ms,忙机上会被吃光 ⇒
|
|
177
178
|
* 同一份设置忙机偶尔被收下、闲机恒 400),额度不随同一受理里 matcher 的个数缩水,这一份**不读钟**(没有「截止线」可被调度停顿越过)。预算只防**灾难回溯**:
|
|
178
179
|
* 良性求值 ~0.1 ms,灾难形(指数级)吃满预算也跑不完 —— 两者相差数个数量级,取值给足余量(1 000 ms),让忙机上的调度停顿也跨不过这条线。
|
|
179
|
-
* **另有一只受理总额度**(
|
|
180
|
+
* **另有一只受理总额度**([ref];同一张表的 `.totalMs`,5 000 ms):每次求值的额度界得住「一只 matcher 不会无限算」,界不住「刚好低于它的病态 matcher × 别名数 × 2 × 组数」(3 事件 × 16 组 × 1 别名 × 2 = 96 次,
|
|
180
181
|
* 每次 0.99 s 就是 96 s 的事件循环占用)。一次受理里所有**已完成**的正则形求值的耗时之和(一只单调钟逐次累加;字面形与非工具事件不进 vm、不计)一旦**超过**总额度 ⇒ 同码 `400`,
|
|
181
182
|
* `detail.reason = budget_exceeded`({@link BudgetExceededMatcherIssue},点名越线的那一组与总额度)。单次超时先到、先判 `over_budget`(更具体)。一次受理的最坏占用 ≤ 总额度 + 一次求值的额度。
|
|
182
183
|
* 总额度这一只读钟,但良性设置离它近三个数量级(一份最大的良性配置 —— 3 工具事件 × 16 组 —— 总耗时在毫秒级),所以良性设置的结局仍不随机器忙闲翻转;只有求值总耗时逼近总额度的病态设置才可能落在边界两侧。
|
|
183
184
|
* **超时 ⇒ 确定拒绝**:`400 request.field_invalid`({@link OverBudgetMatcherIssue}),句子点名**哪一只 matcher**(事件 + 组下标,不回显原字节)与**预算**;**按配置顺序遇到的第一只超时 / 命中别名的 matcher 定结局**。
|
|
184
|
-
* 为什么是拒绝而不是放行:运行期 {@link hookMatcherMatches} 在**每次工具调用**里问同一只带预算的口(
|
|
185
|
+
* 为什么是拒绝而不是放行:运行期 {@link hookMatcherMatches} 在**每次工具调用**里问同一只带预算的口([ref] 起;此前是裸调、无预算)—— 一只在受理面连目录里几个短名字都求不完的 matcher 放进去,
|
|
185
186
|
* 运行期每次调用都要白烧一整份预算(超预算的组按选中处理并登记,守卫不丢,但每次调用卡一份预算);放行 = 把一个确定的坏配置推迟成运行期每次调用的卡顿。这条拒不是「越界即拒」的新检测面:被拒的恰是**无法被求值**的 matcher,与 `hook_matcher_invalid`(编不过 ⇒ 该组不跑)同属「这只 matcher 不可用」,
|
|
186
187
|
* 只是编不过的运行期自己安全地不跑它,跑不完的不行。
|
|
187
188
|
* 总用时的上界:首个超时 / 总额度越线即拒、不再往下求值;未超时的求值各自 < 预算,其和 ≤ 总额度 + 一次求值的额度。regex 档只在单用户车道(`taskHooksHonored`,hooks 会装配的那条;调用方就是进程属主,本来就能配任意 `command` 钩子)运行,
|
|
188
189
|
* 多租户车道走 literal 档、零调用方正则执行 —— 受理面的 DoS 面不因此重开。
|
|
189
190
|
*
|
|
190
|
-
* 🔴 **编不过的正则 = 确定的拒绝**(
|
|
191
|
+
* 🔴 **编不过的正则 = 确定的拒绝**([ref] 收尾;与超预算同类 —— 确定性的坏配置,结局只取决于配置):`"regex"` 档遇契约 `hookMatcherForm` 答 `invalid`(或求值时契约函数答 `"invalid"`)⇒
|
|
191
192
|
* `400 request.field_invalid`({@link InvalidRegexMatcherIssue}),句子点名**哪一只 matcher**(事件 + 组下标 + 原文〔超 {@link MATCHER_ECHO_CHARS} 字符截断〕)与引擎的编译错误句;机读位 `detail` 只有闭集三键 + 坐标 `path`(那一组的 `matcher`)。
|
|
192
193
|
* 受理面与运行期问**同一只判**:契约把"编不过"答成 `invalid`,运行期 {@link hookMatcherMatches} 因此不跑那一组(并记 `hook_matcher_invalid`),受理面因此拒 —— 本仓不加第二个判官
|
|
193
194
|
* (编译错误句只是诊断文字,见 {@link matcherCompileSentence};拒不拒由契约函数一个人说了算)。为什么是拒绝而不是放行:放行 = 用户以为在生效的钩子(含会真拦的 PreToolUse deny 钩子)
|
|
194
195
|
* 在每次工具调用里都**悄悄不跑**,硬破坏三句要求的「响亮」没有着落;`"literal"` 档(多租户车道,hooks 不装配)= 不适用,与正则形同一行表。resume 重放不判(照旧采纳、该组不跑)。
|
|
195
|
-
* 🔴 **形判对所有事件同一判**(
|
|
196
|
+
* 🔴 **形判对所有事件同一判**([ref];此前只守三个工具事件,写在 `StopFailure` 的 `error` 词 / `PreCompact`·`PostCompact` 的 `trigger` 词上的坏 matcher 受理、运行期该组不跑并记 `hook_matcher_invalid`;壳跑的事件〔如 `SessionStart`〕由壳按同一只契约函数处置):
|
|
196
197
|
* 「这一串是不是一只读得了的 matcher」是**串的形**问题,不是事件的问题 —— `hookMatcherForm` 答 `invalid` ⇒ `400`,**不论写在 33 个契约事件里的哪一个**(含 matcher 被忽略的 `UserPromptSubmit` / `Stop` / `PostToolBatch`:规则里没有「事件类」这个维度,
|
|
197
198
|
* 也就没有一张按事件类分档的表)。死别名问(「选中别名而选不中正名」)只对 matcher 匹配**工具 wire 名**的事件(上面的三个工具事件)才问 —— 别的事件上 matcher 匹配的不是工具名,没有「别名」可言;这一问不占别的事件的求值预算。
|
|
198
199
|
*
|
|
199
200
|
* 🔴 **「未判」臂过 `recordFailOpen`**(F 类 tag `MATCHER_UNJUDGED_TAG`;主会话裁,CLAUDE.md「合法 F 类回退走登记 tag」):一只 matcher 没能被判 ⇒ 照旧受理 + 登记一笔,
|
|
200
|
-
* detail = `event=… reason=… matcherChars=…`(**不带 matcher 原字节**,
|
|
201
|
+
* detail = `event=… reason=… matcherChars=…`(**不带 matcher 原字节**,[ref] 姿势)。现在只剩一种 reason:
|
|
201
202
|
* `oversize` —— 两档:matcher 超 {@link MAX_MATCHER_EVAL_CHARS} 字符不读(多租户车道上 hooks 不装配,这一笔只为让超长输入显形)。
|
|
202
|
-
* (`over_budget` 臂自
|
|
203
|
+
* (`over_budget` 臂自 [ref] 起退役:它是「预算用尽 ⇒ 照旧受理」的随负载翻转的结局,现在是上面的确定拒绝;`invalid_regex` 臂自 [ref] 收尾起退役,同理。)
|
|
203
204
|
* 放行最坏后果 = 那一只 matcher 没被这条判据守住、照旧永不命中,**不是安全闸**(受理面有效性判)。
|
|
204
205
|
* 拒放集合相对 7.113.0 的一处放宽(披露在 CHANGELOG / MIGRATION):超过上限的字面别名 matcher 7.113.0 拒(当时字面判不设上限),自 7.114.0 两档都判未判、受理。
|
|
205
206
|
*
|
|
206
|
-
* 错误句:死别名与超预算两形只回显**目录里的**别名与正名 / 位置(闭集字符串与数字),不回显调用方的原字节(
|
|
207
|
+
* 错误句:死别名与超预算两形只回显**目录里的**别名与正名 / 位置(闭集字符串与数字),不回显调用方的原字节([ref] 姿势);编不过一形**点名那只 matcher 的原文**(截断到 {@link MATCHER_ECHO_CHARS} 字符)与引擎的编译错误句 ——
|
|
207
208
|
* 调用方要改的就是这一串,且它本来就是调用方自己送来的;机读位 `detail` 仍不带这两段。
|
|
208
209
|
*
|
|
209
|
-
* 🔴 **判决是数据,句子与体的机读位同出一只铸点**(
|
|
210
|
+
* 🔴 **判决是数据,句子与体的机读位同出一只铸点**([ref];client-core 请托,additive):{@link hooksMatcherIssue} 回 {@link HooksMatcherIssue}(闭集四形:{@link DeadToolMatcherIssue} 的 event / alias / canonical,
|
|
210
211
|
* {@link OverBudgetMatcherIssue} 的 event / groupIndex / budgetMs,{@link BudgetExceededMatcherIssue} 的 event / groupIndex / totalMs,{@link InvalidRegexMatcherIssue} 的 event / groupIndex〔+ 句子用的 matcher / compileError〕,以 `reason` 区分)而不是句子;{@link buildHooksRefusal} 是**唯一**把它铸成拒句 + `field` + `detail` 的函数(配置读者的拒同经它),
|
|
211
212
|
* 受理门只取它的返回、**不解析句子**。体上多出的两键让三端不必解析英文就能把这只拒与普通提交失败分流、提示用户改 matcher;死别名那一句逐字同 7.114.0、零新码。
|
|
212
213
|
*/
|
|
213
214
|
/** 超此长度的 matcher 不在受理面读(两档同一个上限;未判,reason = oversize)。与 {@link MAX_HOOK_COMMAND_CHARS} 同量纲的服务侧防线:真实 matcher(精确名 / 交替 / `mcp__.*`)远在其内;目录全部工具名交替 ~0.5 KiB。 */
|
|
214
215
|
export declare const MAX_MATCHER_EVAL_CHARS = 8192;
|
|
215
216
|
/**
|
|
216
|
-
* 正则形 matcher 的**求值预算表**(毫秒)—— 两个数同出这一张表,判据与测试注入都不另持第二份(名字里的 `ADMISSION` 是历史:`budgetMs` 自
|
|
217
|
-
* · `budgetMs` = **每一次**正则形求值各一份的固定墙钟额度(
|
|
218
|
-
* **运行期读同一个数**(
|
|
219
|
-
* 良性求值 ~0.1 ms;灾难回溯(指数级)吃满它也跑不完 ⇒ 这只 matcher 被 400 拒(`over_budget`)。取值是「良性求值之上数个数量级」的余量 —— 小了,忙机上的调度停顿会把良性 matcher 读成灾难(受理结局随负载翻转,正是
|
|
220
|
-
* · `totalMs` = **一次受理**里所有已完成的正则形求值的**耗时之和**的总额度(
|
|
217
|
+
* 正则形 matcher 的**求值预算表**(毫秒)—— 两个数同出这一张表,判据与测试注入都不另持第二份(名字里的 `ADMISSION` 是历史:`budgetMs` 自 [ref] 起**受理面与运行期共用**,`totalMs` 只属受理面):
|
|
218
|
+
* · `budgetMs` = **每一次**正则形求值各一份的固定墙钟额度([ref];vm `timeout`)。**不共享、额度不随受理里别的 matcher 缩水、这一份不读钟**;字面形不占它。
|
|
219
|
+
* **运行期读同一个数**([ref];{@link hookMatcherMatches} 每次现读本对象):运行期每次工具调用对正则形 matcher 的每次求值也各拿这一份,超了 ⇒ 该组按选中处理并登记,不另设运行期额度。
|
|
220
|
+
* 良性求值 ~0.1 ms;灾难回溯(指数级)吃满它也跑不完 ⇒ 这只 matcher 被 400 拒(`over_budget`)。取值是「良性求值之上数个数量级」的余量 —— 小了,忙机上的调度停顿会把良性 matcher 读成灾难(受理结局随负载翻转,正是 [ref] 要根除的形)。
|
|
221
|
+
* · `totalMs` = **一次受理**里所有已完成的正则形求值的**耗时之和**的总额度([ref]):之和一旦超过它 ⇒ `400`,`detail.reason = budget_exceeded`。每次求值的额度只界住「一只 matcher 不会无限算」,
|
|
221
222
|
* 界不住「刚好低于它的病态 matcher × 别名数 × 2 × 组数」—— 今天 3 事件 × 16 组 × 1 别名 × 2 = 96 次,每次 0.99 s 可占住事件循环 96 s(单用户车道上持 token 的调用方)。
|
|
222
223
|
* 总额度读一只单调钟、**只累加已完成求值的耗时**(`performance.now`),求值本身不被它缩短(每次求值的额度仍是固定的 `budgetMs`),所以一次受理最坏占用 ≤ `totalMs` + `budgetMs`。
|
|
223
224
|
* 取值同一条余量律:一份最大的良性配置(3 工具事件 × 16 组)的总耗时实测约 9 ms,离 `totalMs` 近三个数量级 —— 良性设置的结局不随机器忙闲翻转;只有求值总耗时逼近 `totalMs` 的病态设置才可能。
|
|
@@ -226,7 +227,7 @@ export declare const ADMISSION_MATCHER_BUDGET: {
|
|
|
226
227
|
readonly budgetMs: 1000;
|
|
227
228
|
readonly totalMs: 5000;
|
|
228
229
|
};
|
|
229
|
-
/** 拒句里回显的 matcher 原文 / 引擎编译错误句、运行期 `hook_matcher_invalid` 日志行的 `matcher` 字段,各自的字符上限(都过回显的一只口径 `echoCallerText`,截断记号 `…`;
|
|
230
|
+
/** 拒句里回显的 matcher 原文 / 引擎编译错误句、运行期 `hook_matcher_invalid` 日志行的 `matcher` 字段,各自的字符上限(都过回显的一只口径 `echoCallerText`,截断记号 `…`;[ref] 收尾 / [ref])。真实 matcher 远在其内;上限只防一只 8 KiB 的坏 matcher 把拒句撑成一屏。 */
|
|
230
231
|
export declare const MATCHER_ECHO_CHARS = 200;
|
|
231
232
|
/** 运行期 `hook_entries_skipped` 日志行的 `if` 字段(配置写的权限规则表达式)的字符上限;与 matcher 同口径(`echoCallerText`),截断记号 `…`。 */
|
|
232
233
|
export declare const IF_ECHO_CHARS = 200;
|
|
@@ -255,14 +256,14 @@ export interface DeadToolMatcherIssue {
|
|
|
255
256
|
readonly alias: string;
|
|
256
257
|
readonly canonical: string;
|
|
257
258
|
}
|
|
258
|
-
/** 一条受理面判决(纯数据)· 求值超预算(
|
|
259
|
+
/** 一条受理面判决(纯数据)· 求值超预算([ref]):`event` 事件下第 `groupIndex` 组(从 0 起)的 matcher 单次求值没在 `budgetMs` 内结束(灾难回溯)。三键都是闭集 / 数字,不含调用方原字节。 */
|
|
259
260
|
export interface OverBudgetMatcherIssue {
|
|
260
261
|
readonly reason: "over_budget";
|
|
261
262
|
readonly event: HookEventName;
|
|
262
263
|
readonly groupIndex: number;
|
|
263
264
|
readonly budgetMs: number;
|
|
264
265
|
}
|
|
265
|
-
/** 一条受理面判决(纯数据)· 受理总额度用尽(
|
|
266
|
+
/** 一条受理面判决(纯数据)· 受理总额度用尽([ref]):`event` 事件下第 `groupIndex` 组(从 0 起)的 matcher 求完之后,本次受理里所有已完成正则形求值的耗时之和超过了 `totalMs`。三键都是闭集 / 数字,不含调用方原字节。 */
|
|
266
267
|
export interface BudgetExceededMatcherIssue {
|
|
267
268
|
readonly reason: "budget_exceeded";
|
|
268
269
|
readonly event: HookEventName;
|
|
@@ -270,7 +271,7 @@ export interface BudgetExceededMatcherIssue {
|
|
|
270
271
|
readonly totalMs: number;
|
|
271
272
|
}
|
|
272
273
|
/**
|
|
273
|
-
* 一条受理面判决(纯数据)· 正则编不过(
|
|
274
|
+
* 一条受理面判决(纯数据)· 正则编不过([ref] 收尾):`event` 事件下第 `groupIndex` 组(从 0 起)的 matcher 在契约包的读法下答 `invalid`。
|
|
274
275
|
* `matcher` = 那只 matcher 的原文、`compileError` = 引擎的编译错误句(各自截到 {@link MATCHER_ECHO_CHARS} 字符):**只供铸拒句用**,机读位 `detail` 不带它们。
|
|
275
276
|
*/
|
|
276
277
|
export interface InvalidRegexMatcherIssue {
|
|
@@ -393,18 +394,41 @@ export interface HooksRefusal {
|
|
|
393
394
|
}
|
|
394
395
|
/**
|
|
395
396
|
* 判决 → 拒句 + 机读位 —— `settings.hooks` 这一面**拒句与机读位的唯一铸点**(配置读者的拒与 fresh 提交面的 matcher 拒同经这里;受理门 `admission.ts` 用返回值填 400 体,
|
|
396
|
-
* 不从句子里反解字段)。句子:死别名逐字 = 7.114.0 的那一句(`test/hooks-alias-matcher-s995.test.ts` R7 冻结);超预算点名**哪一只**(事件 + 组下标 + `matcher`)与**预算**,不回显 matcher 原字节(
|
|
397
|
+
* 不从句子里反解字段)。句子:死别名逐字 = 7.114.0 的那一句(`test/hooks-alias-matcher-s995.test.ts` R7 冻结);超预算点名**哪一只**(事件 + 组下标 + `matcher`)与**预算**,不回显 matcher 原字节([ref] 姿势);
|
|
397
398
|
* 分类器的一块 = 坐标 + 码 + 释义(+ 坏键);服务侧上限的几句逐字 = 7.131.0。`reason` 闭集穷举(多一形 = 这里编译红)。
|
|
398
399
|
*/
|
|
399
400
|
export declare function buildHooksRefusal(issue: HooksIssue): HooksRefusal;
|
|
400
401
|
/**
|
|
401
|
-
* fresh 提交面专用判据(
|
|
402
|
-
* 拒句与 400 体的机读位由 {@link buildHooksRefusal} 从这份数据铸(
|
|
402
|
+
* fresh 提交面专用判据([ref] / [ref] / [ref] / [ref] / [ref]):配置里第一条「该拒」的 matcher 的判决数据({@link HooksMatcherIssue}):「永远打不中」(死别名,只属工具事件)· 「编不过」(任何事件)· 「单次求值超预算」(灾难回溯)· 「受理总额度用尽」;没有 ⇒ undefined。
|
|
403
|
+
* 拒句与 400 体的机读位由 {@link buildHooksRefusal} 从这份数据铸([ref])。**按配置顺序(事件 → 组)遇到的第一条定结局**;良性设置的结局只取决于配置(每次求值的额度固定、不共享;总额度离良性设置近三个数量级,见头注「预算与结局」)。
|
|
403
404
|
* 入参是 {@link parseHooksConfig} 已校验过的配置;`depth` 由调用点按车道定(见头注:`taskHooksHonored(config) ? "regex" : "literal"`)。
|
|
404
405
|
* `budget` **仅供测试注入**({@link MatcherEvalBudget});生产调用点只传前两个实参。
|
|
405
406
|
* **只有 `admission.ts` 的 fresh 提交门调它** —— resume 重放不调(理由见上面的头注)。未判的 matcher 过 `recordFailOpen`(tag `MATCHER_UNJUDGED_TAG`);超预算的不是未判,是拒。
|
|
406
407
|
*/
|
|
407
408
|
export declare function hooksMatcherIssue(config: RunnableHooksConfig, depth: MatcherEvalDepth, budget?: MatcherEvalBudget): HooksMatcherIssue | undefined;
|
|
409
|
+
/** fresh 提交面 http 钩子 `url` 带凭据的判决(数据):是哪一条(事件 + 组下标 + 条目下标,与 matcher 判决同一种坐标)+ 判官的答案。 */
|
|
410
|
+
export interface HooksUrlCredentialIssue {
|
|
411
|
+
readonly event: HookEventName;
|
|
412
|
+
readonly groupIndex: number;
|
|
413
|
+
readonly entryIndex: number;
|
|
414
|
+
readonly credential: UrlCredential;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* fresh 提交面专用判据([ref]):配置里第一条「url 带凭据」的 http 钩子 —— userinfo,或名字在日志脱敏器凭据名表里的 query / fragment 参数(判官 `url-credential.ts` 一只,
|
|
418
|
+
* MCP `transport.url` · A2A 对端 · 搜索后端 `endpoint` · 包源六址同读);没有 ⇒ undefined。这一座有为凭据设的位(条目的 `headers`,停驻任务的续跑上下文里只以封签存在),
|
|
419
|
+
* url 却照原样进停驻上下文、日志与读面 —— 凭据只许走前者(`$NAME` 引用 + `allowedEnvVars` 让配置本身不携带密钥值,见 USAGE 9.5c)。
|
|
420
|
+
* 入参是 {@link parseHooksConfig} 已校验过的配置:**按配置序**(事件 → 组 → 条目)遇到的第一条定结局;只看 `type:"http"` 条目(别的条目型没有 `url`)。
|
|
421
|
+
*
|
|
422
|
+
* **只有 `admission.ts` 的 fresh 提交门调它** —— 重放存量 body 的腿(`parseTaskSettings`)不调:拒会让升级前停驻的任务里整只 hooks 不被采纳(守卫钩子随之消失 = fail-open),
|
|
423
|
+
* 已落盘的字节也不因拒而消失。拒句与机读位由 {@link buildHooksUrlCredentialRefusal} 铸。
|
|
424
|
+
*/
|
|
425
|
+
export declare function hooksUrlCredentialIssue(config: RunnableHooksConfig): HooksUrlCredentialIssue | undefined;
|
|
426
|
+
/**
|
|
427
|
+
* {@link hooksUrlCredentialIssue} 的判决 → 拒句 + 机读位。`field` 是这一条 `url` 在请求体里的全坐标(`settings.hooks.<事件>[g].hooks[h].url`,与封签位、本族别的 `field` 同一种写法),
|
|
428
|
+
* 出路指到同一条的 `headers`。机读位的形与 MCP / A2A / 搜索后端三座同一只铸点(`url-credential.ts`),所以**不**走上面 {@link buildHooksRefusal} 的 `field:"settings.hooks"` + `detail` 形 ——
|
|
429
|
+
* 那一形按 `detail.reason` 分形、属于配置读者与 matcher 判据;「URL 带凭据」是跨座位的一个事实,消费端按 `reason` 穷举读一次。
|
|
430
|
+
*/
|
|
431
|
+
export declare function buildHooksUrlCredentialRefusal(issue: HooksUrlCredentialIssue): UrlCredentialRefusal;
|
|
408
432
|
/**
|
|
409
433
|
* 坐标的出门段:事件名等键段是用户文本 ⇒ 先过 {@link outgoingPath}(凭据形不原样回显),每个串段再过调用方串的唯一回显口径(`caller-text-echo.ts`:剥控制 / 双向字符、截到 64 字 + …)——
|
|
410
434
|
* 一只 100 KB 的未知键不把拒体撑大、也不在句子里夹看不见的字符。400 体的 `detail.path` 与拒句里的坐标读的都是它。
|
|
@@ -421,7 +445,10 @@ export declare function hooksCoordinate(path: ConfigPath): string;
|
|
|
421
445
|
* · **本仓不执行的条目类型整份拒**:分类器受理契约的全部五型,而本仓只跑 {@link SUPPORTED_HOOK_ENTRY_TYPES}。含其余类型的配置整份拒,不留跳过臂。
|
|
422
446
|
* · **本仓的 wire 键**(分类器不认、会剥掉的三只):组上的 `source`(来源闭集,`hook-source.ts`)、command 条目上的 `plugin` / `args`(执行上下文,`command-spawn.ts`)——
|
|
423
447
|
* 在分类器装上的**同一坐标**上读原值(分类器只在 `loaded` 时放行,装上的件与原值逐位对齐),形错 ⇒ {@link HooksWireKeyIssue}。
|
|
424
|
-
* `plugin` / `args` 只在 command
|
|
448
|
+
* `plugin` / `args` 只在 command 条目上有义。值为 `undefined` 与缺席同读(与分类器读可选字段同一口径)。
|
|
449
|
+
* · **读者不携带的键**(分类器不认的字段、非 command 条目上的 `plugin` / `args`、组上的拼错键):本读者的可跑形里没有它们(读法照分类器)。
|
|
450
|
+
* 「写了却被剥掉」在 FRESH 提交面由键闭集门的第三个实例拒(`task-settings.ts` 的 `hooksKeyIssue`,词表 = 本函数交回的可跑形,400 `request.body_shape`);
|
|
451
|
+
* 续跑重放腿不过那道门,存量体按受理时的读法重放(剥掉,不砖停驻任务)。
|
|
425
452
|
* · **服务侧上限**(广度闸;契约本身不设量纲)。exec 形的命令行(`command` + 各 `args`)计入 `command` 帽;插件上下文一道总字符帽。
|
|
426
453
|
*
|
|
427
454
|
* 拒返回判决(`issue`)与它的句子(`error`)而不 throw —— submit 路径 400 fail-loud(体带 `field: "settings.hooks"` + `detail`)、resume 防御路径 warn-drop(hooks 整只不采纳),由调用方选;
|
|
@@ -433,7 +460,7 @@ export declare function parseHooksConfig(raw: unknown): ParseHooksConfigResult;
|
|
|
433
460
|
* 三形(名字表 / 空 `*` 缺省 / 不锚定的 JS 正则)与「编不过 ⇒ `"invalid"`」都由它答;**对所有带 matcher 的事件同一只读法**(工具事件 / StopFailure 的 `error` 词 /
|
|
434
461
|
* PreCompact·PostCompact 的 `trigger` 词 / `if` 条件的名部),不按事件分档。
|
|
435
462
|
*
|
|
436
|
-
* 🔴 **预算(
|
|
463
|
+
* 🔴 **预算([ref])**:求法与受理面 `"regex"` 档同一格表({@link MATCHER_EVALUATION}):字面形(名字表 / 空 / `*` / 缺省)直接问契约函数,不进 vm、不占额度;
|
|
437
464
|
* 正则形**每一次求值**进 vm、各拿一份固定的 {@link ADMISSION_MATCHER_BUDGET}`.budgetMs`(不共享、不读钟、不新造第二只预算常量)。受理面只对 core 目录里的别名 / 正名这几个短名字求过值,
|
|
438
465
|
* 运行期要对**任意别的工具名**求值 —— 受理过了的 matcher 在某个名字上灾难回溯,不能再同步占住事件循环。
|
|
439
466
|
* 四个答案(闭集,{@link MatcherAnswer}),调用方各用一条穷举 switch 处置({@link matcherGroupSelected} / {@link hookIfMatches}):
|
|
@@ -448,7 +475,7 @@ export declare function hookMatcherMatches(matcher: string | undefined, value: s
|
|
|
448
475
|
* 求值:名部走 permission matcher(交替/正则同 matcher 字段),括号内 arg-模式(`*` 通配)匹配工具输入的
|
|
449
476
|
* 主字符串(Bash=command,文件工具=file_path/path)。CC 行为逐条目:不匹配 → 跳过该条目(记日志);
|
|
450
477
|
* 非工具事件(payload 无 tool_name)→ "cannot be evaluated" 跳过;解析失败 → 跳过。返回:
|
|
451
|
-
* true=跑 / "not_matched" / "unevaluable"(调用方分别记账;跳过永不静默)/ "over_budget"(
|
|
478
|
+
* true=跑 / "not_matched" / "unevaluable"(调用方分别记账;跳过永不静默)/ "over_budget"([ref]:名部求值没在预算内结束 ⇒ 调用方按**选中**处理 + 登记,见 {@link hookMatcherMatches})。
|
|
452
479
|
*
|
|
453
480
|
* 2.1.250 复核([ref],2026-08-30;语料=sema-internal `blueprints/cc-decoded/cli250.js`):求值器与 220
|
|
454
481
|
* 逐字同构——五种工具事件之外「cannot be evaluated for non-tool event」跳过、「Skipping hook due to if
|
|
@@ -517,7 +544,7 @@ export type HookLlmCall = (opts: {
|
|
|
517
544
|
/** 失败判别码(B8:判别一律走码,禁按 error 文案分支——v3.1 批2,统检第二波 high)。error 仍是给人看的
|
|
518
545
|
* 自由文本;code 是给控制流的。缺席=未分类失败(不重试、不特判)。
|
|
519
546
|
*
|
|
520
|
-
* 🔴 **一类真因一个码**(
|
|
547
|
+
* 🔴 **一类真因一个码**([ref];闭集 —— 消费方的 `switch` 无兜底分支,加一个码而不表态 = 编译错误):码是**成因族**的名字,铸点是直连载体
|
|
521
548
|
* (`hook-llm.ts` 的 `callLlm` / `hookModelFor`)的每一个失败臂,消费方(会话标题器的 fail-open 标签表)据此区分「该改哪里」,不读 `error` 文案:
|
|
522
549
|
* · `model_unresolved`:这只模型在本部署上选不出来 —— 目录里没有 / 条目不可用 / 网关腿解析不出端点(改目录或网关配置)
|
|
523
550
|
* · `route_refused`:路由核验拒发 —— key↔URL 不配对,或 foreign 端点无 per-model key(改路由 / 凭据配置;零请求)
|