@opengeni/api-router 2.10.0-canary.6 → 2.11.0-canary.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/dist/app.js +1 -1
- package/dist/{chunk-NWSVDE7O.js → chunk-EAYCECQK.js} +30234 -29169
- package/dist/chunk-EAYCECQK.js.map +1 -0
- package/dist/codemode.d.ts +13 -0
- package/dist/index.js +1 -1
- package/dist/integrations/slack-interactions.d.ts +1 -1
- package/dist/interaction-agent-access.d.ts +19 -0
- package/dist/mcp/documents.d.ts +8 -1
- package/dist/mcp/first-party-tool-permissions.d.ts +572 -0
- package/dist/mcp/server.d.ts +12 -1
- package/dist/mcp/session-view.d.ts +2 -0
- package/dist/routes/api-keys.d.ts +16 -1
- package/dist/routes/feedback.d.ts +3 -0
- package/dist/routes/model-connection-access.d.ts +3 -0
- package/dist/routes/organization-sessions.d.ts +26 -0
- package/dist/routes/supergrok.d.ts +10 -1
- package/dist/site-session-origin.d.ts +6 -0
- package/dist/workspace-tool-gateway.d.ts +2 -1
- package/package.json +19 -19
- package/src/app.ts +39 -6
- package/src/codemode.ts +42 -6
- package/src/integrations/slack-interactions.ts +24 -13
- package/src/interaction-agent-access.ts +60 -0
- package/src/mcp/documents.ts +22 -1
- package/src/mcp/first-party-tool-permissions.ts +278 -0
- package/src/mcp/server.ts +240 -263
- package/src/routes/api-keys.ts +48 -4
- package/src/routes/browser-sessions.ts +9 -6
- package/src/routes/computer-sessions.ts +9 -6
- package/src/routes/documents.ts +12 -0
- package/src/routes/feedback.ts +113 -0
- package/src/routes/files.ts +37 -2
- package/src/routes/machines.ts +32 -1
- package/src/routes/model-connection-access.ts +161 -0
- package/src/routes/organization-sessions.ts +342 -0
- package/src/routes/sessions.ts +51 -2
- package/src/routes/supergrok.ts +183 -5
- package/src/routes/workspaces.ts +15 -4
- package/src/site-session-origin.ts +28 -0
- package/src/workspace-tool-gateway.ts +30 -2
- package/dist/chunk-NWSVDE7O.js.map +0 -1
package/dist/codemode.d.ts
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { type AccessGrant, type AttemptToolCatalog, type CodemodeCallSubmission as CodemodeCallSubmissionValue, type CodemodeOperation } from "@opengeni/contracts";
|
|
2
2
|
import type { ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
import { type Settings } from "@opengeni/config";
|
|
4
|
+
import { type Permission, type Session } from "@opengeni/contracts";
|
|
5
|
+
/** The REST authority a Codemode SDK proxy token may ever carry. */
|
|
6
|
+
export declare const CODEMODE_SESSION_PROXY_PERMISSION_CEILING: readonly ["workspace:read", "sessions:read", "sessions:create", "sessions:control"];
|
|
7
|
+
/**
|
|
8
|
+
* Proxy permissions = the session's effective first-party permissions, cut
|
|
9
|
+
* down to what its exact model-visible tool selection could actually
|
|
10
|
+
* exercise (plus workspace:read for the context routes), under the fixed
|
|
11
|
+
* ceiling above. A session whose selection has no session_* tool therefore
|
|
12
|
+
* gets only workspace:read and every proxied /sessions handler refuses it,
|
|
13
|
+
* exactly as its MCP surface would.
|
|
14
|
+
*/
|
|
15
|
+
export declare function codemodeSessionProxyPermissions(settings: Pick<Settings, "defaultFirstPartyMcpTools" | "allowedFirstPartyMcpTools">, session: Pick<Session, "firstPartyMcpTools" | "firstPartyMcpPermissions">): Permission[];
|
|
3
16
|
/** Reuse normal REST handlers, including their resource/command authorization.
|
|
4
17
|
* The exact attempt is checked before issuing this internal-only credential. */
|
|
5
18
|
export declare function codemodeSessionRequest(deps: ApiRouteDeps, grant: AccessGrant, request: Request, path: string): Promise<Request>;
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export declare const SLACK_SESSION_INSTRUCTIONS: string;
|
|
|
19
19
|
* selection at session creation while keeping Slack mutations out of the model
|
|
20
20
|
* surface; interaction delivery remains owned by the durable delivery pump.
|
|
21
21
|
*/
|
|
22
|
-
export declare const SLACK_TASK_FIRST_PARTY_MCP_TOOLS: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "artifacts_publish" | "artifacts_restore" | "artifacts_rollback" | "atlassian_get" | "atlassian_search" | "atlassian_sources_list" | "browser_act" | "browser_auth" | "browser_clipboard" | "browser_debug" | "browser_identity" | "browser_lifecycle" | "browser_observe" | "browser_open" | "browser_publish" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_remove" | "editable_artifact_apply" | "editable_artifact_create" | "editable_artifact_export" | "editable_artifact_export_status" | "editable_artifact_get" | "editable_artifact_import" | "editable_artifact_inspect" | "editable_artifact_list" | "environment_list" | "environment_set_variable" | "fiken_bank_accounts_list" | "fiken_companies_list" | "fiken_contact_create" | "fiken_contacts_list" | "fiken_invoice_draft_create" | "fiken_invoice_get" | "fiken_invoices_list" | "fiken_products_list" | "fiken_purchases_list" | "fiken_sales_list" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_progress" | "goal_resume" | "goal_set" | "goal_update" | "instruction_policy_propose" | "interaction_discover" | "interaction_request_human" | "knowledge_correct" | "knowledge_propose" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "reddit_accounts_list" | "reddit_mentions_live" | "reddit_post_reply" | "reddit_posts_sync" | "reddit_search_live" | "reddit_thread_fetch" | "remember" | "remember_confirm" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_file_publish" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_human_input_respond" | "session_pause" | "session_resume" | "session_send_message" | "session_steer" | "session_wait" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_search" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "task_note_archive" | "task_note_promote_instruction_policy" | "task_note_promote_knowledge" | "task_note_promote_preference" | "task_note_replace" | "task_note_save" | "task_notes_list" | "variable_set_get_variable" | "variable_set_list" | "variable_set_set_variable" | "wait_for_input" | "work_claim_release" | "work_claim_upsert" | "x_accounts_list" | "x_mentions_live" | "x_post_reply" | "x_posts_sync" | "x_search_live" | "x_thread_fetch")[];
|
|
22
|
+
export declare const SLACK_TASK_FIRST_PARTY_MCP_TOOLS: ("artifacts_archive" | "artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_prepare_upload" | "artifacts_publish" | "artifacts_restore" | "artifacts_rollback" | "atlassian_get" | "atlassian_search" | "atlassian_sources_list" | "browser_act" | "browser_auth" | "browser_clipboard" | "browser_debug" | "browser_identity" | "browser_lifecycle" | "browser_observe" | "browser_open" | "browser_publish" | "browser_tabs" | "capability_authorization_request" | "capability_catalog_search" | "command_read" | "command_wait" | "company_profile_confirm" | "company_profile_propose" | "computer_act" | "computer_clipboard" | "computer_lifecycle" | "computer_observe" | "computer_open" | "computer_targets" | "connected_machine_remove" | "editable_artifact_apply" | "editable_artifact_create" | "editable_artifact_export" | "editable_artifact_export_status" | "editable_artifact_get" | "editable_artifact_import" | "editable_artifact_inspect" | "editable_artifact_list" | "environment_list" | "environment_set_variable" | "fiken_bank_accounts_list" | "fiken_companies_list" | "fiken_contact_create" | "fiken_contacts_list" | "fiken_invoice_draft_create" | "fiken_invoice_get" | "fiken_invoices_list" | "fiken_products_list" | "fiken_purchases_list" | "fiken_sales_list" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_progress" | "goal_resume" | "goal_set" | "goal_update" | "instruction_policy_propose" | "interaction_discover" | "interaction_request_human" | "knowledge_correct" | "knowledge_propose" | "memory_correct" | "memory_save" | "memory_search" | "preference_propose" | "preference_registry_get" | "preference_registry_summary" | "project_create" | "project_delete" | "project_get" | "project_list" | "project_reorder" | "project_update" | "reddit_accounts_list" | "reddit_mentions_live" | "reddit_post_reply" | "reddit_posts_sync" | "reddit_search_live" | "reddit_thread_fetch" | "remember" | "remember_confirm" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_file_publish" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_human_input_respond" | "session_pause" | "session_resume" | "session_send_message" | "session_set_project" | "session_steer" | "session_wait" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_search" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "task_note_archive" | "task_note_promote_instruction_policy" | "task_note_promote_knowledge" | "task_note_promote_preference" | "task_note_replace" | "task_note_save" | "task_notes_list" | "variable_set_get_variable" | "variable_set_list" | "variable_set_set_variable" | "wait_for_input" | "work_claim_release" | "work_claim_upsert" | "x_accounts_list" | "x_mentions_live" | "x_post_reply" | "x_posts_sync" | "x_search_live" | "x_thread_fetch")[];
|
|
23
23
|
export type NormalizedSlackInteraction = {
|
|
24
24
|
providerEventId: string;
|
|
25
25
|
providerMessageId: string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AccessGrant } from "@opengeni/contracts";
|
|
2
|
+
import { type ApiRouteDeps } from "@opengeni/core";
|
|
3
|
+
type AssociatedInteractionSession = {
|
|
4
|
+
associations: ReadonlyArray<{
|
|
5
|
+
sessionId: string;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Narrow a workspace-wide BrowserSession/ComputerSession inventory to the
|
|
10
|
+
* entries a live agent attempt may reach. Every attach-by-id route already
|
|
11
|
+
* authorizes the exact source session through the core seam; the list is the
|
|
12
|
+
* discovery surface behind `interaction_discover scope=workspace`, so it must
|
|
13
|
+
* apply the same seam (private sessions, Slack ownership, and the 0426
|
|
14
|
+
* agent-access scope) to each associated session instead of exposing every
|
|
15
|
+
* peer's identity. Humans, API keys, and service principals keep the complete
|
|
16
|
+
* workspace inventory exactly as before.
|
|
17
|
+
*/
|
|
18
|
+
export declare function filterInteractionSessionsForGrant<T extends AssociatedInteractionSession>(deps: Pick<ApiRouteDeps, "db" | "sessionAuthorization">, grant: AccessGrant, sessions: readonly T[]): Promise<T[]>;
|
|
19
|
+
export {};
|
package/dist/mcp/documents.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { type DocumentServices } from "@opengeni/documents";
|
|
2
|
-
import { type Database } from "@opengeni/db";
|
|
2
|
+
import { type Database, type MemoryAgentScope } from "@opengeni/db";
|
|
3
3
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
4
4
|
export declare function buildDocumentsMcpServer(db: Database, accountId: string, workspaceId: string, documentServices: DocumentServices, options: {
|
|
5
5
|
createdBySessionId?: string | undefined;
|
|
6
6
|
attemptId?: string | undefined;
|
|
7
7
|
/** Immutable human subject whose agent is making this retrieval request. */
|
|
8
8
|
initiatingSubjectId: string;
|
|
9
|
+
/**
|
|
10
|
+
* The bound session's typed Memory selector (migration 0427), resolved by
|
|
11
|
+
* the caller from the session row. `off` registers neither memory tool;
|
|
12
|
+
* `user`/`session` search the workspace layer plus the own private layer.
|
|
13
|
+
* Omitted keeps the workspace layer.
|
|
14
|
+
*/
|
|
15
|
+
memory?: MemoryAgentScope | null | undefined;
|
|
9
16
|
}): McpServer;
|
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
import { type FirstPartyMcpToolName, type Permission } from "@opengeni/contracts";
|
|
2
|
+
export type FirstPartyToolAuthorization = {
|
|
3
|
+
sessionRequired?: true;
|
|
4
|
+
allOf?: readonly Permission[];
|
|
5
|
+
anyOf?: readonly Permission[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Authorization is deliberately complete and separate from visibility. The
|
|
9
|
+
* `satisfies Record` check makes every catalog addition choose an explicit
|
|
10
|
+
* registration predicate before it can compile.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FIRST_PARTY_TOOL_AUTHORIZATION: {
|
|
13
|
+
set_session_title: {
|
|
14
|
+
sessionRequired: true;
|
|
15
|
+
allOf: "sessions:control"[];
|
|
16
|
+
};
|
|
17
|
+
goal_set: {
|
|
18
|
+
sessionRequired: true;
|
|
19
|
+
allOf: "goals:manage"[];
|
|
20
|
+
};
|
|
21
|
+
goal_update: {
|
|
22
|
+
sessionRequired: true;
|
|
23
|
+
allOf: "goals:manage"[];
|
|
24
|
+
};
|
|
25
|
+
goal_progress: {
|
|
26
|
+
sessionRequired: true;
|
|
27
|
+
allOf: "goals:manage"[];
|
|
28
|
+
};
|
|
29
|
+
wait_for_input: {
|
|
30
|
+
sessionRequired: true;
|
|
31
|
+
allOf: "sessions:control"[];
|
|
32
|
+
};
|
|
33
|
+
goal_complete: {
|
|
34
|
+
sessionRequired: true;
|
|
35
|
+
allOf: "goals:manage"[];
|
|
36
|
+
};
|
|
37
|
+
goal_pause: {
|
|
38
|
+
sessionRequired: true;
|
|
39
|
+
allOf: "goals:manage"[];
|
|
40
|
+
};
|
|
41
|
+
goal_resume: {
|
|
42
|
+
sessionRequired: true;
|
|
43
|
+
allOf: "goals:manage"[];
|
|
44
|
+
};
|
|
45
|
+
memory_search: {
|
|
46
|
+
sessionRequired: true;
|
|
47
|
+
allOf: "documents:search"[];
|
|
48
|
+
};
|
|
49
|
+
memory_save: {
|
|
50
|
+
sessionRequired: true;
|
|
51
|
+
allOf: "documents:search"[];
|
|
52
|
+
};
|
|
53
|
+
memory_correct: {
|
|
54
|
+
sessionRequired: true;
|
|
55
|
+
allOf: "documents:search"[];
|
|
56
|
+
};
|
|
57
|
+
preference_registry_summary: {
|
|
58
|
+
sessionRequired: true;
|
|
59
|
+
allOf: "workspace:read"[];
|
|
60
|
+
};
|
|
61
|
+
preference_registry_get: {
|
|
62
|
+
sessionRequired: true;
|
|
63
|
+
allOf: "workspace:read"[];
|
|
64
|
+
};
|
|
65
|
+
task_notes_list: {
|
|
66
|
+
sessionRequired: true;
|
|
67
|
+
allOf: "sessions:read"[];
|
|
68
|
+
};
|
|
69
|
+
task_note_save: {
|
|
70
|
+
sessionRequired: true;
|
|
71
|
+
allOf: "sessions:control"[];
|
|
72
|
+
};
|
|
73
|
+
task_note_archive: {
|
|
74
|
+
sessionRequired: true;
|
|
75
|
+
allOf: "sessions:control"[];
|
|
76
|
+
};
|
|
77
|
+
task_note_replace: {
|
|
78
|
+
sessionRequired: true;
|
|
79
|
+
allOf: "sessions:control"[];
|
|
80
|
+
};
|
|
81
|
+
work_claim_upsert: {
|
|
82
|
+
sessionRequired: true;
|
|
83
|
+
allOf: "sessions:control"[];
|
|
84
|
+
};
|
|
85
|
+
work_claim_release: {
|
|
86
|
+
sessionRequired: true;
|
|
87
|
+
allOf: "sessions:control"[];
|
|
88
|
+
};
|
|
89
|
+
knowledge_propose: {
|
|
90
|
+
sessionRequired: true;
|
|
91
|
+
allOf: "documents:search"[];
|
|
92
|
+
};
|
|
93
|
+
knowledge_correct: {
|
|
94
|
+
sessionRequired: true;
|
|
95
|
+
allOf: "documents:search"[];
|
|
96
|
+
};
|
|
97
|
+
task_note_promote_knowledge: {
|
|
98
|
+
sessionRequired: true;
|
|
99
|
+
allOf: ("documents:search" | "sessions:control")[];
|
|
100
|
+
};
|
|
101
|
+
task_note_promote_instruction_policy: {
|
|
102
|
+
sessionRequired: true;
|
|
103
|
+
allOf: ("documents:search" | "sessions:control" | "workspace:read")[];
|
|
104
|
+
};
|
|
105
|
+
task_note_promote_preference: {
|
|
106
|
+
sessionRequired: true;
|
|
107
|
+
allOf: ("documents:search" | "sessions:control" | "workspace:read")[];
|
|
108
|
+
};
|
|
109
|
+
instruction_policy_propose: {
|
|
110
|
+
sessionRequired: true;
|
|
111
|
+
allOf: ("documents:search" | "workspace:read")[];
|
|
112
|
+
};
|
|
113
|
+
preference_propose: {
|
|
114
|
+
sessionRequired: true;
|
|
115
|
+
allOf: ("documents:search" | "workspace:read")[];
|
|
116
|
+
};
|
|
117
|
+
remember: {
|
|
118
|
+
sessionRequired: true;
|
|
119
|
+
allOf: ("documents:search" | "sessions:control" | "workspace:read")[];
|
|
120
|
+
};
|
|
121
|
+
remember_confirm: {
|
|
122
|
+
sessionRequired: true;
|
|
123
|
+
allOf: ("documents:search" | "sessions:control" | "workspace:read")[];
|
|
124
|
+
};
|
|
125
|
+
company_profile_propose: {
|
|
126
|
+
sessionRequired: true;
|
|
127
|
+
allOf: ("sessions:control" | "workspace:read")[];
|
|
128
|
+
};
|
|
129
|
+
company_profile_confirm: {
|
|
130
|
+
sessionRequired: true;
|
|
131
|
+
allOf: ("sessions:control" | "workspace:read")[];
|
|
132
|
+
};
|
|
133
|
+
sandboxes_list: {
|
|
134
|
+
sessionRequired: true;
|
|
135
|
+
allOf: "sessions:read"[];
|
|
136
|
+
};
|
|
137
|
+
sandbox_attach: {
|
|
138
|
+
sessionRequired: true;
|
|
139
|
+
allOf: "sessions:control"[];
|
|
140
|
+
};
|
|
141
|
+
sandbox_swap: {
|
|
142
|
+
sessionRequired: true;
|
|
143
|
+
allOf: "sessions:control"[];
|
|
144
|
+
};
|
|
145
|
+
run_on: {
|
|
146
|
+
sessionRequired: true;
|
|
147
|
+
allOf: "sessions:control"[];
|
|
148
|
+
};
|
|
149
|
+
sandbox_provision: {
|
|
150
|
+
sessionRequired: true;
|
|
151
|
+
allOf: "sessions:control"[];
|
|
152
|
+
};
|
|
153
|
+
connected_machine_remove: {
|
|
154
|
+
allOf: "enrollments:manage"[];
|
|
155
|
+
};
|
|
156
|
+
rig_list: {
|
|
157
|
+
allOf: "rigs:use"[];
|
|
158
|
+
};
|
|
159
|
+
rig_get: {
|
|
160
|
+
allOf: "rigs:use"[];
|
|
161
|
+
};
|
|
162
|
+
rig_propose_change: {
|
|
163
|
+
allOf: "rigs:use"[];
|
|
164
|
+
};
|
|
165
|
+
rig_verify: {
|
|
166
|
+
allOf: "rigs:use"[];
|
|
167
|
+
};
|
|
168
|
+
rig_promote: {
|
|
169
|
+
allOf: "rigs:manage"[];
|
|
170
|
+
};
|
|
171
|
+
sessions_list: {
|
|
172
|
+
allOf: "sessions:read"[];
|
|
173
|
+
};
|
|
174
|
+
session_get: {
|
|
175
|
+
allOf: "sessions:read"[];
|
|
176
|
+
};
|
|
177
|
+
session_events: {
|
|
178
|
+
allOf: "sessions:read"[];
|
|
179
|
+
};
|
|
180
|
+
session_wait: {
|
|
181
|
+
sessionRequired: true;
|
|
182
|
+
allOf: "sessions:read"[];
|
|
183
|
+
};
|
|
184
|
+
command_wait: {
|
|
185
|
+
sessionRequired: true;
|
|
186
|
+
allOf: "sessions:read"[];
|
|
187
|
+
};
|
|
188
|
+
command_read: {
|
|
189
|
+
sessionRequired: true;
|
|
190
|
+
allOf: "sessions:read"[];
|
|
191
|
+
};
|
|
192
|
+
session_create: {
|
|
193
|
+
allOf: "sessions:create"[];
|
|
194
|
+
};
|
|
195
|
+
session_send_message: {
|
|
196
|
+
allOf: "sessions:control"[];
|
|
197
|
+
};
|
|
198
|
+
session_pause: {
|
|
199
|
+
allOf: "sessions:control"[];
|
|
200
|
+
};
|
|
201
|
+
session_resume: {
|
|
202
|
+
allOf: "sessions:control"[];
|
|
203
|
+
};
|
|
204
|
+
session_steer: {
|
|
205
|
+
sessionRequired: true;
|
|
206
|
+
allOf: "sessions:control"[];
|
|
207
|
+
};
|
|
208
|
+
session_human_input_respond: {
|
|
209
|
+
sessionRequired: true;
|
|
210
|
+
allOf: "sessions:control"[];
|
|
211
|
+
};
|
|
212
|
+
set_other_session_title: {
|
|
213
|
+
allOf: "sessions:control"[];
|
|
214
|
+
};
|
|
215
|
+
interaction_discover: {
|
|
216
|
+
sessionRequired: true;
|
|
217
|
+
allOf: "sessions:read"[];
|
|
218
|
+
};
|
|
219
|
+
browser_open: {
|
|
220
|
+
sessionRequired: true;
|
|
221
|
+
allOf: "sessions:control"[];
|
|
222
|
+
};
|
|
223
|
+
browser_tabs: {
|
|
224
|
+
sessionRequired: true;
|
|
225
|
+
allOf: "sessions:control"[];
|
|
226
|
+
};
|
|
227
|
+
browser_observe: {
|
|
228
|
+
sessionRequired: true;
|
|
229
|
+
allOf: "sessions:read"[];
|
|
230
|
+
};
|
|
231
|
+
browser_act: {
|
|
232
|
+
sessionRequired: true;
|
|
233
|
+
allOf: "sessions:control"[];
|
|
234
|
+
};
|
|
235
|
+
browser_clipboard: {
|
|
236
|
+
sessionRequired: true;
|
|
237
|
+
allOf: "sessions:read"[];
|
|
238
|
+
};
|
|
239
|
+
browser_debug: {
|
|
240
|
+
sessionRequired: true;
|
|
241
|
+
allOf: "sessions:read"[];
|
|
242
|
+
};
|
|
243
|
+
browser_auth: {
|
|
244
|
+
sessionRequired: true;
|
|
245
|
+
allOf: "sessions:control"[];
|
|
246
|
+
};
|
|
247
|
+
interaction_request_human: {
|
|
248
|
+
sessionRequired: true;
|
|
249
|
+
allOf: "sessions:control"[];
|
|
250
|
+
};
|
|
251
|
+
browser_identity: {
|
|
252
|
+
sessionRequired: true;
|
|
253
|
+
allOf: "sessions:control"[];
|
|
254
|
+
};
|
|
255
|
+
browser_publish: {
|
|
256
|
+
sessionRequired: true;
|
|
257
|
+
allOf: "sessions:control"[];
|
|
258
|
+
};
|
|
259
|
+
browser_lifecycle: {
|
|
260
|
+
sessionRequired: true;
|
|
261
|
+
allOf: "sessions:control"[];
|
|
262
|
+
};
|
|
263
|
+
computer_open: {
|
|
264
|
+
sessionRequired: true;
|
|
265
|
+
allOf: "sessions:control"[];
|
|
266
|
+
};
|
|
267
|
+
computer_targets: {
|
|
268
|
+
sessionRequired: true;
|
|
269
|
+
allOf: "sessions:read"[];
|
|
270
|
+
};
|
|
271
|
+
computer_observe: {
|
|
272
|
+
sessionRequired: true;
|
|
273
|
+
allOf: "sessions:read"[];
|
|
274
|
+
};
|
|
275
|
+
computer_clipboard: {
|
|
276
|
+
sessionRequired: true;
|
|
277
|
+
allOf: "sessions:read"[];
|
|
278
|
+
};
|
|
279
|
+
computer_act: {
|
|
280
|
+
sessionRequired: true;
|
|
281
|
+
allOf: "sessions:control"[];
|
|
282
|
+
};
|
|
283
|
+
computer_lifecycle: {
|
|
284
|
+
sessionRequired: true;
|
|
285
|
+
allOf: "sessions:control"[];
|
|
286
|
+
};
|
|
287
|
+
variable_set_list: {
|
|
288
|
+
allOf: ("secrets:list" | "variable-sets:list")[];
|
|
289
|
+
};
|
|
290
|
+
environment_list: {
|
|
291
|
+
allOf: ("secrets:list" | "variable-sets:list")[];
|
|
292
|
+
};
|
|
293
|
+
variable_set_get_variable: {
|
|
294
|
+
sessionRequired: true;
|
|
295
|
+
allOf: ("secrets:read" | "variable-sets:read")[];
|
|
296
|
+
};
|
|
297
|
+
variable_set_set_variable: {
|
|
298
|
+
allOf: ("secrets:write" | "variable-sets:write")[];
|
|
299
|
+
};
|
|
300
|
+
environment_set_variable: {
|
|
301
|
+
allOf: ("secrets:write" | "variable-sets:write")[];
|
|
302
|
+
};
|
|
303
|
+
capability_catalog_search: {
|
|
304
|
+
sessionRequired: true;
|
|
305
|
+
allOf: "workspace:read"[];
|
|
306
|
+
};
|
|
307
|
+
capability_authorization_request: {
|
|
308
|
+
sessionRequired: true;
|
|
309
|
+
allOf: "workspace:read"[];
|
|
310
|
+
};
|
|
311
|
+
github_connect_link: {
|
|
312
|
+
allOf: "github:use"[];
|
|
313
|
+
};
|
|
314
|
+
github_repositories_list: {
|
|
315
|
+
allOf: "github:use"[];
|
|
316
|
+
};
|
|
317
|
+
social_connections_list: {
|
|
318
|
+
allOf: "connections:read"[];
|
|
319
|
+
};
|
|
320
|
+
social_posts_recent: {
|
|
321
|
+
allOf: "connections:read"[];
|
|
322
|
+
};
|
|
323
|
+
social_daily_analysis_context: {
|
|
324
|
+
allOf: "connections:read"[];
|
|
325
|
+
};
|
|
326
|
+
social_search_live: {
|
|
327
|
+
allOf: "connections:read"[];
|
|
328
|
+
};
|
|
329
|
+
social_mentions_live: {
|
|
330
|
+
allOf: "connections:read"[];
|
|
331
|
+
};
|
|
332
|
+
social_thread_fetch: {
|
|
333
|
+
allOf: "connections:read"[];
|
|
334
|
+
};
|
|
335
|
+
social_posts_sync: {
|
|
336
|
+
allOf: "connections:write"[];
|
|
337
|
+
};
|
|
338
|
+
social_post_reply: {
|
|
339
|
+
allOf: "connections:write"[];
|
|
340
|
+
};
|
|
341
|
+
x_accounts_list: {
|
|
342
|
+
allOf: "connections:read"[];
|
|
343
|
+
};
|
|
344
|
+
x_search_live: {
|
|
345
|
+
allOf: "connections:read"[];
|
|
346
|
+
};
|
|
347
|
+
x_mentions_live: {
|
|
348
|
+
allOf: "connections:read"[];
|
|
349
|
+
};
|
|
350
|
+
x_thread_fetch: {
|
|
351
|
+
allOf: "connections:read"[];
|
|
352
|
+
};
|
|
353
|
+
x_posts_sync: {
|
|
354
|
+
allOf: "connections:write"[];
|
|
355
|
+
};
|
|
356
|
+
x_post_reply: {
|
|
357
|
+
allOf: "connections:write"[];
|
|
358
|
+
};
|
|
359
|
+
reddit_accounts_list: {
|
|
360
|
+
allOf: "connections:read"[];
|
|
361
|
+
};
|
|
362
|
+
reddit_search_live: {
|
|
363
|
+
allOf: "connections:read"[];
|
|
364
|
+
};
|
|
365
|
+
reddit_mentions_live: {
|
|
366
|
+
allOf: "connections:read"[];
|
|
367
|
+
};
|
|
368
|
+
reddit_thread_fetch: {
|
|
369
|
+
allOf: "connections:read"[];
|
|
370
|
+
};
|
|
371
|
+
reddit_posts_sync: {
|
|
372
|
+
allOf: "connections:write"[];
|
|
373
|
+
};
|
|
374
|
+
reddit_post_reply: {
|
|
375
|
+
allOf: "connections:write"[];
|
|
376
|
+
};
|
|
377
|
+
scheduled_tasks_list: {
|
|
378
|
+
anyOf: ("scheduled_tasks:manage" | "scheduled_tasks:run")[];
|
|
379
|
+
};
|
|
380
|
+
scheduled_tasks_get: {
|
|
381
|
+
anyOf: ("scheduled_tasks:manage" | "scheduled_tasks:run")[];
|
|
382
|
+
};
|
|
383
|
+
scheduled_tasks_create: {
|
|
384
|
+
allOf: "scheduled_tasks:manage"[];
|
|
385
|
+
};
|
|
386
|
+
scheduled_tasks_update: {
|
|
387
|
+
allOf: "scheduled_tasks:manage"[];
|
|
388
|
+
};
|
|
389
|
+
scheduled_tasks_pause: {
|
|
390
|
+
allOf: "scheduled_tasks:manage"[];
|
|
391
|
+
};
|
|
392
|
+
scheduled_tasks_resume: {
|
|
393
|
+
allOf: "scheduled_tasks:manage"[];
|
|
394
|
+
};
|
|
395
|
+
scheduled_tasks_trigger: {
|
|
396
|
+
allOf: "scheduled_tasks:run"[];
|
|
397
|
+
};
|
|
398
|
+
scheduled_tasks_delete: {
|
|
399
|
+
allOf: "scheduled_tasks:manage"[];
|
|
400
|
+
};
|
|
401
|
+
scheduled_task_runs_list: {
|
|
402
|
+
anyOf: ("scheduled_tasks:manage" | "scheduled_tasks:run")[];
|
|
403
|
+
};
|
|
404
|
+
slack_bot_list_channels: {
|
|
405
|
+
allOf: "connections:read"[];
|
|
406
|
+
};
|
|
407
|
+
slack_bot_search: {
|
|
408
|
+
allOf: "connections:read"[];
|
|
409
|
+
};
|
|
410
|
+
slack_bot_channel_history: {
|
|
411
|
+
allOf: "connections:read"[];
|
|
412
|
+
};
|
|
413
|
+
slack_bot_thread_replies: {
|
|
414
|
+
allOf: "connections:read"[];
|
|
415
|
+
};
|
|
416
|
+
slack_bot_list_users: {
|
|
417
|
+
allOf: "connections:read"[];
|
|
418
|
+
};
|
|
419
|
+
slack_bot_list_files: {
|
|
420
|
+
allOf: "connections:read"[];
|
|
421
|
+
};
|
|
422
|
+
slack_bot_file_info: {
|
|
423
|
+
allOf: "connections:read"[];
|
|
424
|
+
};
|
|
425
|
+
slack_bot_file_content: {
|
|
426
|
+
allOf: "connections:read"[];
|
|
427
|
+
};
|
|
428
|
+
slack_bot_post_message: {
|
|
429
|
+
allOf: "connections:read"[];
|
|
430
|
+
};
|
|
431
|
+
slack_bot_delete_message: {
|
|
432
|
+
allOf: "connections:read"[];
|
|
433
|
+
};
|
|
434
|
+
fiken_companies_list: {
|
|
435
|
+
allOf: "connections:read"[];
|
|
436
|
+
};
|
|
437
|
+
fiken_contacts_list: {
|
|
438
|
+
allOf: "connections:read"[];
|
|
439
|
+
};
|
|
440
|
+
fiken_products_list: {
|
|
441
|
+
allOf: "connections:read"[];
|
|
442
|
+
};
|
|
443
|
+
fiken_invoices_list: {
|
|
444
|
+
allOf: "connections:read"[];
|
|
445
|
+
};
|
|
446
|
+
fiken_invoice_get: {
|
|
447
|
+
allOf: "connections:read"[];
|
|
448
|
+
};
|
|
449
|
+
fiken_bank_accounts_list: {
|
|
450
|
+
allOf: "connections:read"[];
|
|
451
|
+
};
|
|
452
|
+
fiken_purchases_list: {
|
|
453
|
+
allOf: "connections:read"[];
|
|
454
|
+
};
|
|
455
|
+
fiken_sales_list: {
|
|
456
|
+
allOf: "connections:read"[];
|
|
457
|
+
};
|
|
458
|
+
fiken_contact_create: {
|
|
459
|
+
allOf: "connections:write"[];
|
|
460
|
+
};
|
|
461
|
+
fiken_invoice_draft_create: {
|
|
462
|
+
allOf: "connections:write"[];
|
|
463
|
+
};
|
|
464
|
+
atlassian_sources_list: {
|
|
465
|
+
allOf: "connections:read"[];
|
|
466
|
+
};
|
|
467
|
+
atlassian_search: {
|
|
468
|
+
allOf: "connections:read"[];
|
|
469
|
+
};
|
|
470
|
+
atlassian_get: {
|
|
471
|
+
allOf: "connections:read"[];
|
|
472
|
+
};
|
|
473
|
+
artifacts_list: {
|
|
474
|
+
allOf: "artifacts:read"[];
|
|
475
|
+
};
|
|
476
|
+
artifacts_get_source: {
|
|
477
|
+
sessionRequired: true;
|
|
478
|
+
allOf: "artifacts:read"[];
|
|
479
|
+
};
|
|
480
|
+
artifacts_prepare_upload: {
|
|
481
|
+
sessionRequired: true;
|
|
482
|
+
allOf: "artifacts:publish"[];
|
|
483
|
+
};
|
|
484
|
+
artifacts_create: {
|
|
485
|
+
sessionRequired: true;
|
|
486
|
+
allOf: "artifacts:publish"[];
|
|
487
|
+
};
|
|
488
|
+
artifacts_publish: {
|
|
489
|
+
sessionRequired: true;
|
|
490
|
+
allOf: "artifacts:publish"[];
|
|
491
|
+
};
|
|
492
|
+
artifacts_rollback: {
|
|
493
|
+
sessionRequired: true;
|
|
494
|
+
allOf: "artifacts:publish"[];
|
|
495
|
+
};
|
|
496
|
+
artifacts_archive: {
|
|
497
|
+
sessionRequired: true;
|
|
498
|
+
allOf: "artifacts:publish"[];
|
|
499
|
+
};
|
|
500
|
+
artifacts_restore: {
|
|
501
|
+
sessionRequired: true;
|
|
502
|
+
allOf: "artifacts:publish"[];
|
|
503
|
+
};
|
|
504
|
+
sandbox_file_publish: {
|
|
505
|
+
sessionRequired: true;
|
|
506
|
+
allOf: ("files:read" | "files:upload")[];
|
|
507
|
+
};
|
|
508
|
+
editable_artifact_list: {
|
|
509
|
+
sessionRequired: true;
|
|
510
|
+
allOf: "artifacts:read"[];
|
|
511
|
+
};
|
|
512
|
+
editable_artifact_create: {
|
|
513
|
+
sessionRequired: true;
|
|
514
|
+
allOf: "artifacts:publish"[];
|
|
515
|
+
};
|
|
516
|
+
editable_artifact_import: {
|
|
517
|
+
sessionRequired: true;
|
|
518
|
+
allOf: ("artifacts:publish" | "files:read")[];
|
|
519
|
+
};
|
|
520
|
+
editable_artifact_get: {
|
|
521
|
+
sessionRequired: true;
|
|
522
|
+
allOf: "artifacts:read"[];
|
|
523
|
+
};
|
|
524
|
+
editable_artifact_inspect: {
|
|
525
|
+
sessionRequired: true;
|
|
526
|
+
allOf: "artifacts:read"[];
|
|
527
|
+
};
|
|
528
|
+
editable_artifact_apply: {
|
|
529
|
+
sessionRequired: true;
|
|
530
|
+
allOf: "artifacts:publish"[];
|
|
531
|
+
};
|
|
532
|
+
editable_artifact_export: {
|
|
533
|
+
sessionRequired: true;
|
|
534
|
+
allOf: "artifacts:read"[];
|
|
535
|
+
};
|
|
536
|
+
editable_artifact_export_status: {
|
|
537
|
+
sessionRequired: true;
|
|
538
|
+
allOf: ("artifacts:read" | "files:upload")[];
|
|
539
|
+
};
|
|
540
|
+
project_list: {
|
|
541
|
+
allOf: "sessions:read"[];
|
|
542
|
+
};
|
|
543
|
+
project_get: {
|
|
544
|
+
allOf: "sessions:read"[];
|
|
545
|
+
};
|
|
546
|
+
project_create: {
|
|
547
|
+
allOf: "sessions:create"[];
|
|
548
|
+
};
|
|
549
|
+
project_update: {
|
|
550
|
+
allOf: "sessions:create"[];
|
|
551
|
+
};
|
|
552
|
+
project_reorder: {
|
|
553
|
+
allOf: "sessions:create"[];
|
|
554
|
+
};
|
|
555
|
+
project_delete: {
|
|
556
|
+
allOf: "sessions:create"[];
|
|
557
|
+
};
|
|
558
|
+
session_set_project: {
|
|
559
|
+
allOf: "sessions:control"[];
|
|
560
|
+
};
|
|
561
|
+
};
|
|
562
|
+
/**
|
|
563
|
+
* The permissions a session's first-party tool selection can possibly
|
|
564
|
+
* exercise, derived from the same per-tool registration data that gates the
|
|
565
|
+
* MCP surface. A caller that only proxies REST handlers on behalf of a
|
|
566
|
+
* selection (the Codemode SDK proxy) must never hold more than this: a
|
|
567
|
+
* selection without any session_* orchestration tool cannot need
|
|
568
|
+
* sessions:create or sessions:control, so a delegated token for it must not
|
|
569
|
+
* carry them either. `anyOf` alternatives are all counted because any one of
|
|
570
|
+
* them could be the permission the selection actually holds.
|
|
571
|
+
*/
|
|
572
|
+
export declare function permissionsRequiredByFirstPartyTools(tools: readonly FirstPartyMcpToolName[]): Permission[];
|