



























@@ -1,5 +1,10 @@
11import { getPluginRegistryState } from "../plugins/runtime-state.js";
22import { resolveReservedGatewayMethodScope } from "../shared/gateway-method-policy.js";
3+import {
4+DYNAMIC_OPERATOR_SCOPE_METHODS,
5+METHOD_SCOPE_BY_NAME,
6+NODE_ROLE_METHODS,
7+} from "./methods/legacy-metadata.js";
38import {
49ADMIN_SCOPE,
510APPROVALS_SCOPE,
@@ -30,206 +35,6 @@ export const CLI_DEFAULT_OPERATOR_SCOPES: OperatorScope[] = [
3035TALK_SECRETS_SCOPE,
3136];
323733-const NODE_ROLE_METHODS = new Set([
34-"node.invoke.result",
35-"node.event",
36-"node.pluginSurface.refresh",
37-"node.pending.drain",
38-"node.pending.pull",
39-"node.pending.ack",
40-"skills.bins",
41-]);
42-43-const DYNAMIC_OPERATOR_SCOPE_METHODS = new Set(["plugins.sessionAction"]);
44-45-const METHOD_SCOPE_GROUPS: Record<OperatorScope, readonly string[]> = {
46-[APPROVALS_SCOPE]: [
47-"exec.approval.get",
48-"exec.approval.list",
49-"exec.approval.request",
50-"exec.approval.waitDecision",
51-"exec.approval.resolve",
52-"plugin.approval.list",
53-"plugin.approval.request",
54-"plugin.approval.waitDecision",
55-"plugin.approval.resolve",
56-],
57-[PAIRING_SCOPE]: [
58-"node.pair.request",
59-"node.pair.list",
60-"node.pair.reject",
61-"node.pair.remove",
62-"node.pair.verify",
63-"node.pair.approve",
64-"device.pair.list",
65-"device.pair.approve",
66-"device.pair.reject",
67-"device.pair.remove",
68-"device.token.rotate",
69-"device.token.revoke",
70-"node.rename",
71-],
72-[READ_SCOPE]: [
73-"assistant.media.get",
74-"health",
75-"diagnostics.stability",
76-"doctor.memory.status",
77-"doctor.memory.dreamDiary",
78-"doctor.memory.remHarness",
79-"logs.tail",
80-"channels.status",
81-"status",
82-"usage.status",
83-"usage.cost",
84-"tts.status",
85-"tts.providers",
86-"tts.personas",
87-"commands.list",
88-"models.list",
89-"models.authStatus",
90-"tools.catalog",
91-"tools.effective",
92-"tasks.list",
93-"tasks.get",
94-"plugins.uiDescriptors",
95-"agents.list",
96-"agent.identity.get",
97-"skills.status",
98-"skills.search",
99-"skills.detail",
100-"voicewake.get",
101-"voicewake.routing.get",
102-"sessions.list",
103-"sessions.get",
104-"sessions.preview",
105-"sessions.describe",
106-"sessions.resolve",
107-"sessions.compaction.list",
108-"sessions.compaction.get",
109-"sessions.subscribe",
110-"sessions.unsubscribe",
111-"sessions.messages.subscribe",
112-"sessions.messages.unsubscribe",
113-"sessions.usage",
114-"sessions.usage.timeseries",
115-"sessions.usage.logs",
116-"cron.get",
117-"cron.list",
118-"cron.status",
119-"cron.runs",
120-"gateway.identity.get",
121-"gateway.restart.preflight",
122-"system-presence",
123-"last-heartbeat",
124-"node.list",
125-"node.describe",
126-"environments.list",
127-"environments.status",
128-"chat.history",
129-"config.get",
130-"config.schema.lookup",
131-"talk.catalog",
132-"talk.config",
133-"agents.files.list",
134-"agents.files.get",
135-"artifacts.list",
136-"artifacts.get",
137-"artifacts.download",
138-],
139-[WRITE_SCOPE]: [
140-"message.action",
141-"send",
142-"poll",
143-"agent",
144-"agent.wait",
145-"wake",
146-"talk.mode",
147-"talk.client.create",
148-"talk.client.toolCall",
149-"talk.session.create",
150-"talk.session.join",
151-"talk.session.appendAudio",
152-"talk.session.startTurn",
153-"talk.session.endTurn",
154-"talk.session.cancelTurn",
155-"talk.session.cancelOutput",
156-"talk.session.submitToolResult",
157-"talk.session.close",
158-"talk.speak",
159-"tts.enable",
160-"tts.disable",
161-"tts.convert",
162-"tts.setProvider",
163-"tts.setPersona",
164-"voicewake.set",
165-"voicewake.routing.set",
166-"node.invoke",
167-"tools.invoke",
168-"chat.send",
169-"chat.abort",
170-"sessions.create",
171-"sessions.send",
172-"sessions.steer",
173-"sessions.abort",
174-"tasks.cancel",
175-"sessions.compaction.branch",
176-"doctor.memory.backfillDreamDiary",
177-"doctor.memory.resetDreamDiary",
178-"doctor.memory.resetGroundedShortTerm",
179-"doctor.memory.repairDreamingArtifacts",
180-"doctor.memory.dedupeDreamDiary",
181-"push.test",
182-"push.web.vapidPublicKey",
183-"push.web.subscribe",
184-"push.web.unsubscribe",
185-"push.web.test",
186-"node.pending.enqueue",
187-],
188-[ADMIN_SCOPE]: [
189-"channels.start",
190-"channels.stop",
191-"channels.logout",
192-"agents.create",
193-"agents.update",
194-"agents.delete",
195-"skills.upload.begin",
196-"skills.upload.chunk",
197-"skills.upload.commit",
198-"skills.install",
199-"skills.update",
200-"secrets.reload",
201-"secrets.resolve",
202-"cron.add",
203-"cron.update",
204-"cron.remove",
205-"cron.run",
206-"sessions.patch",
207-"sessions.pluginPatch",
208-"sessions.cleanup",
209-"sessions.reset",
210-"sessions.delete",
211-"sessions.compact",
212-"sessions.compaction.restore",
213-"connect",
214-"chat.inject",
215-"nativeHook.invoke",
216-"web.login.start",
217-"web.login.wait",
218-"set-heartbeats",
219-"system-event",
220-"agents.files.set",
221-"update.status",
222-"gateway.restart.request",
223-],
224-[TALK_SECRETS_SCOPE]: [],
225-};
226-227-const METHOD_SCOPE_BY_NAME = new Map<string, OperatorScope>(
228-Object.entries(METHOD_SCOPE_GROUPS).flatMap(([scope, methods]) =>
229-methods.map((method) => [method, scope as OperatorScope]),
230-),
231-);
232-23338function resolveScopedMethod(method: string): OperatorScope | undefined {
23439const explicitScope = METHOD_SCOPE_BY_NAME.get(method);
23540if (explicitScope) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。