Files
openclaw-zero-token/gateway/node-invoke-system-run-approval-match.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

56 lines
1.6 KiB
TypeScript

import type { ExecApprovalRequestPayload } from "../infra/exec-approvals.js";
import {
buildSystemRunApprovalBinding,
missingSystemRunApprovalBinding,
matchSystemRunApprovalBinding,
type SystemRunApprovalMatchResult,
} from "../infra/system-run-approval-binding.js";
export type SystemRunApprovalBinding = {
cwd: string | null;
agentId: string | null;
sessionKey: string | null;
env?: unknown;
};
function requestMismatch(): SystemRunApprovalMatchResult {
return {
ok: false,
code: "APPROVAL_REQUEST_MISMATCH",
message: "approval id does not match request",
};
}
export { toSystemRunApprovalMismatchError } from "../infra/system-run-approval-binding.js";
export type { SystemRunApprovalMatchResult } from "../infra/system-run-approval-binding.js";
export function evaluateSystemRunApprovalMatch(params: {
argv: string[];
request: ExecApprovalRequestPayload;
binding: SystemRunApprovalBinding;
}): SystemRunApprovalMatchResult {
if (params.request.host !== "node") {
return requestMismatch();
}
const actualBinding = buildSystemRunApprovalBinding({
argv: params.argv,
cwd: params.binding.cwd,
agentId: params.binding.agentId,
sessionKey: params.binding.sessionKey,
env: params.binding.env,
});
const expectedBinding = params.request.systemRunBinding;
if (!expectedBinding) {
return missingSystemRunApprovalBinding({
actualEnvKeys: actualBinding.envKeys,
});
}
return matchSystemRunApprovalBinding({
expected: expectedBinding,
actual: actualBinding.binding,
actualEnvKeys: actualBinding.envKeys,
});
}