@provos/ironcurtain 0.8.0 → 0.9.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/auth/auth-command.d.ts +15 -0
- package/dist/auth/auth-command.js +424 -0
- package/dist/auth/auth-command.js.map +1 -0
- package/dist/auth/oauth-flow.d.ts +46 -0
- package/dist/auth/oauth-flow.js +279 -0
- package/dist/auth/oauth-flow.js.map +1 -0
- package/dist/auth/oauth-provider.d.ts +55 -0
- package/dist/auth/oauth-provider.js +73 -0
- package/dist/auth/oauth-provider.js.map +1 -0
- package/dist/auth/oauth-registry.d.ts +34 -0
- package/dist/auth/oauth-registry.js +69 -0
- package/dist/auth/oauth-registry.js.map +1 -0
- package/dist/auth/oauth-token-provider.d.ts +52 -0
- package/dist/auth/oauth-token-provider.js +159 -0
- package/dist/auth/oauth-token-provider.js.map +1 -0
- package/dist/auth/oauth-token-store.d.ts +30 -0
- package/dist/auth/oauth-token-store.js +93 -0
- package/dist/auth/oauth-token-store.js.map +1 -0
- package/dist/auth/providers/google-scopes.d.ts +35 -0
- package/dist/auth/providers/google-scopes.js +183 -0
- package/dist/auth/providers/google-scopes.js.map +1 -0
- package/dist/auth/providers/google.d.ts +2 -0
- package/dist/auth/providers/google.js +28 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/config-command.js +39 -1
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/constitution-readonly.md +14 -11
- package/dist/config/constitution-user-base.md +15 -0
- package/dist/config/generated/test-scenarios.json +1 -1
- package/dist/config/generated/tool-annotations.json +10617 -296
- package/dist/config/generated-readonly/compiled-policy.json +787 -244
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +23 -0
- package/dist/config/paths.d.ts +15 -0
- package/dist/config/paths.js +35 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/user-config.d.ts +2 -0
- package/dist/config/user-config.js +2 -0
- package/dist/config/user-config.js.map +1 -1
- package/dist/cron/headless-transport.d.ts +4 -0
- package/dist/cron/headless-transport.js +1 -1
- package/dist/cron/headless-transport.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.js +6 -1
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/docker/docker-agent-session.d.ts +3 -1
- package/dist/docker/docker-agent-session.js +49 -28
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.js +33 -8
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/docker-manager.d.ts +2 -0
- package/dist/docker/docker-manager.js +9 -1
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/mitm-proxy.d.ts +50 -0
- package/dist/docker/mitm-proxy.js +220 -31
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/platform.d.ts +6 -6
- package/dist/docker/platform.js +8 -6
- package/dist/docker/platform.js.map +1 -1
- package/dist/docker/proxy-tools.d.ts +80 -0
- package/dist/docker/proxy-tools.js +248 -0
- package/dist/docker/proxy-tools.js.map +1 -0
- package/dist/docker/pty-session.js +48 -29
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +4 -0
- package/dist/docker/pty-types.js.map +1 -1
- package/dist/escalation/escalation-watcher.d.ts +3 -1
- package/dist/escalation/escalation-watcher.js +6 -2
- package/dist/escalation/escalation-watcher.js.map +1 -1
- package/dist/escalation/listener-command.js +24 -10
- package/dist/escalation/listener-command.js.map +1 -1
- package/dist/escalation/listener-lock.d.ts +5 -0
- package/dist/escalation/listener-lock.js +14 -0
- package/dist/escalation/listener-lock.js.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/auto-save.d.ts +25 -0
- package/dist/memory/auto-save.js +89 -0
- package/dist/memory/auto-save.js.map +1 -0
- package/dist/mux/mux-app.d.ts +4 -0
- package/dist/mux/mux-app.js +168 -18
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-command.d.ts +2 -2
- package/dist/mux/mux-command.js +14 -22
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-escalation-manager.d.ts +9 -3
- package/dist/mux/mux-escalation-manager.js +69 -19
- package/dist/mux/mux-escalation-manager.js.map +1 -1
- package/dist/mux/mux-input-handler.d.ts +31 -1
- package/dist/mux/mux-input-handler.js +106 -25
- package/dist/mux/mux-input-handler.js.map +1 -1
- package/dist/mux/mux-renderer.d.ts +17 -1
- package/dist/mux/mux-renderer.js +288 -7
- package/dist/mux/mux-renderer.js.map +1 -1
- package/dist/mux/pty-bridge.d.ts +4 -0
- package/dist/mux/pty-bridge.js +13 -1
- package/dist/mux/pty-bridge.js.map +1 -1
- package/dist/mux/types.d.ts +24 -1
- package/dist/mux/types.js +10 -1
- package/dist/mux/types.js.map +1 -1
- package/dist/persona/persona-command.js +0 -5
- package/dist/persona/persona-command.js.map +1 -1
- package/dist/pipeline/annotate.js +1 -7
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.d.ts +5 -2
- package/dist/pipeline/compile.js +23 -11
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.d.ts +302 -3
- package/dist/pipeline/constitution-compiler.js +285 -23
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/generate-with-repair.d.ts +2 -2
- package/dist/pipeline/generate-with-repair.js +2 -2
- package/dist/pipeline/handwritten-scenarios.d.ts +20 -7
- package/dist/pipeline/handwritten-scenarios.js +20 -41
- package/dist/pipeline/handwritten-scenarios.js.map +1 -1
- package/dist/pipeline/list-resolver.d.ts +18 -20
- package/dist/pipeline/list-resolver.js +28 -36
- package/dist/pipeline/list-resolver.js.map +1 -1
- package/dist/pipeline/pipeline-runner.d.ts +102 -13
- package/dist/pipeline/pipeline-runner.js +497 -237
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +7 -9
- package/dist/pipeline/pipeline-shared.js +8 -18
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/policy-verifier.d.ts +32 -5
- package/dist/pipeline/policy-verifier.js +137 -8
- package/dist/pipeline/policy-verifier.js.map +1 -1
- package/dist/pipeline/proxy-mcp-connections.d.ts +25 -0
- package/dist/pipeline/proxy-mcp-connections.js +121 -0
- package/dist/pipeline/proxy-mcp-connections.js.map +1 -0
- package/dist/pipeline/refresh-lists.js +21 -13
- package/dist/pipeline/refresh-lists.js.map +1 -1
- package/dist/pipeline/scenario-generator.d.ts +29 -49
- package/dist/pipeline/scenario-generator.js +180 -143
- package/dist/pipeline/scenario-generator.js.map +1 -1
- package/dist/pipeline/scenario-schema-validator.d.ts +51 -0
- package/dist/pipeline/scenario-schema-validator.js +132 -0
- package/dist/pipeline/scenario-schema-validator.js.map +1 -0
- package/dist/pipeline/tool-annotator.d.ts +9 -8
- package/dist/pipeline/tool-annotator.js +48 -95
- package/dist/pipeline/tool-annotator.js.map +1 -1
- package/dist/pipeline/types.d.ts +31 -24
- package/dist/sandbox/index.js +20 -0
- package/dist/sandbox/index.js.map +1 -1
- package/dist/servers/fetch-server.js +10 -5
- package/dist/servers/fetch-server.js.map +1 -1
- package/dist/session/agent-session.d.ts +6 -19
- package/dist/session/agent-session.js +18 -69
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/base-transport.d.ts +17 -1
- package/dist/session/base-transport.js +25 -1
- package/dist/session/base-transport.js.map +1 -1
- package/dist/session/cli-transport.d.ts +5 -0
- package/dist/session/cli-transport.js +48 -25
- package/dist/session/cli-transport.js.map +1 -1
- package/dist/session/prompts.js +0 -1
- package/dist/session/prompts.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.js +12 -0
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/types.d.ts +6 -1
- package/dist/session/types.js.map +1 -1
- package/dist/signal/signal-bot-daemon.js +24 -8
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/signal/signal-transport.d.ts +5 -2
- package/dist/signal/signal-transport.js +3 -3
- package/dist/signal/signal-transport.js.map +1 -1
- package/dist/trusted-process/approval-whitelist.d.ts +117 -0
- package/dist/trusted-process/approval-whitelist.js +237 -0
- package/dist/trusted-process/approval-whitelist.js.map +1 -0
- package/dist/trusted-process/gworkspace-credentials.d.ts +40 -0
- package/dist/trusted-process/gworkspace-credentials.js +45 -0
- package/dist/trusted-process/gworkspace-credentials.js.map +1 -0
- package/dist/trusted-process/index.d.ts +11 -1
- package/dist/trusted-process/index.js +63 -27
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +14 -0
- package/dist/trusted-process/mcp-proxy-server.js +325 -64
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +8 -2
- package/dist/trusted-process/policy-engine.js +18 -22
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/policy-types.d.ts +17 -0
- package/dist/trusted-process/sandbox-integration.d.ts +23 -0
- package/dist/trusted-process/sandbox-integration.js +115 -3
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/trusted-process/token-file-refresher.d.ts +69 -0
- package/dist/trusted-process/token-file-refresher.js +120 -0
- package/dist/trusted-process/token-file-refresher.js.map +1 -0
- package/dist/types/argument-roles.d.ts +7 -1
- package/dist/types/argument-roles.js +50 -0
- package/dist/types/argument-roles.js.map +1 -1
- package/dist/types/audit.d.ts +11 -0
- package/docker/Dockerfile.claude-code +2 -2
- package/docker/entrypoint-claude-code.sh +15 -5
- package/package.json +3 -2
- package/src/config/constitution-user-base.md +15 -0
- package/src/config/generated/test-scenarios.json +1 -1
- package/src/config/generated/tool-annotations.json +10617 -296
- package/src/config/mcp-servers.json +23 -0
- package/dist/pipeline/mcp-connections.d.ts +0 -16
- package/dist/pipeline/mcp-connections.js +0 -61
- package/dist/pipeline/mcp-connections.js.map +0 -1
|
@@ -1,13 +1,49 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-03-
|
|
3
|
-
"constitutionHash": "
|
|
4
|
-
"inputHash": "
|
|
2
|
+
"generatedAt": "2026-03-22T20:08:37.921Z",
|
|
3
|
+
"constitutionHash": "3a2fca5ca6489fc9e766b906764c58c082305b74fad84681d5088f16960198df",
|
|
4
|
+
"inputHash": "3be01d05b84bde1648f2e0aafc9354e67e0b3893f5289db3433becd4b2ab49b7",
|
|
5
5
|
"rules": [
|
|
6
6
|
{
|
|
7
|
-
"name": "allow-
|
|
8
|
-
"description": "
|
|
9
|
-
"principle": "
|
|
7
|
+
"name": "allow-web-search",
|
|
8
|
+
"description": "Permit web searches for data gathering purposes.",
|
|
9
|
+
"principle": "Controlled web access: Web search is permitted.",
|
|
10
10
|
"if": {
|
|
11
|
+
"server": [
|
|
12
|
+
"fetch"
|
|
13
|
+
],
|
|
14
|
+
"tool": [
|
|
15
|
+
"web_search"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"then": "allow",
|
|
19
|
+
"reason": "The constitution explicitly permits web search for data gathering."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "allow-http-fetch-known-domains",
|
|
23
|
+
"description": "Permit fetching any URL via HTTP for data gathering, including IP-based URLs.",
|
|
24
|
+
"principle": "Controlled web access: Fetching URLs from known safe domains is permitted for data gathering.",
|
|
25
|
+
"if": {
|
|
26
|
+
"roles": [
|
|
27
|
+
"fetch-url"
|
|
28
|
+
],
|
|
29
|
+
"server": [
|
|
30
|
+
"fetch"
|
|
31
|
+
],
|
|
32
|
+
"tool": [
|
|
33
|
+
"http_fetch"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"then": "allow",
|
|
37
|
+
"reason": "The constitution permits fetching URLs for data gathering; no domain restrictions are specified, so all URLs including raw IP addresses are allowed."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "allow-read-only-operations",
|
|
41
|
+
"description": "Allow all read-only filesystem operations including reading files, listing directories, and querying metadata.",
|
|
42
|
+
"principle": "Read-only exploration: The agent may only observe and query -- never modify, create, or delete.",
|
|
43
|
+
"if": {
|
|
44
|
+
"server": [
|
|
45
|
+
"filesystem"
|
|
46
|
+
],
|
|
11
47
|
"tool": [
|
|
12
48
|
"read_file",
|
|
13
49
|
"read_text_file",
|
|
@@ -17,452 +53,959 @@
|
|
|
17
53
|
"list_directory_with_sizes",
|
|
18
54
|
"directory_tree",
|
|
19
55
|
"search_files",
|
|
20
|
-
"get_file_info"
|
|
56
|
+
"get_file_info",
|
|
57
|
+
"list_allowed_directories"
|
|
21
58
|
]
|
|
22
59
|
},
|
|
23
60
|
"then": "allow",
|
|
24
|
-
"reason": "Constitution explicitly permits reading files
|
|
61
|
+
"reason": "Constitution explicitly permits reading files, listing directories, and querying metadata anywhere on the filesystem."
|
|
25
62
|
},
|
|
26
63
|
{
|
|
27
|
-
"name": "allow-
|
|
28
|
-
"description": "Allow
|
|
29
|
-
"principle": "
|
|
64
|
+
"name": "allow-edit-file-read",
|
|
65
|
+
"description": "Allow the read-path role of edit_file so the file can be inspected, but not the write-path role.",
|
|
66
|
+
"principle": "Read-only exploration: The agent may only observe and query -- never modify, create, or delete.",
|
|
30
67
|
"if": {
|
|
68
|
+
"roles": [
|
|
69
|
+
"read-path"
|
|
70
|
+
],
|
|
71
|
+
"server": [
|
|
72
|
+
"filesystem"
|
|
73
|
+
],
|
|
31
74
|
"tool": [
|
|
32
|
-
"
|
|
75
|
+
"edit_file"
|
|
33
76
|
]
|
|
34
77
|
},
|
|
35
78
|
"then": "allow",
|
|
36
|
-
"reason": "
|
|
79
|
+
"reason": "edit_file has a read-path role for inspecting the file; reading is permitted, but the write-path role falls through to default-deny."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "escalate-move-file",
|
|
83
|
+
"description": "Escalate any move_file operation for human approval since it moves or renames files and directories.",
|
|
84
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
85
|
+
"if": {
|
|
86
|
+
"server": [
|
|
87
|
+
"filesystem"
|
|
88
|
+
],
|
|
89
|
+
"tool": [
|
|
90
|
+
"move_file"
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
"then": "escalate",
|
|
94
|
+
"reason": "Moving files involves deletion and creation of data; all move operations require human approval per the constitution."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "escalate-edit-file",
|
|
98
|
+
"description": "Escalate any edit_file operation outside the sandbox for human approval.",
|
|
99
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
100
|
+
"if": {
|
|
101
|
+
"server": [
|
|
102
|
+
"filesystem"
|
|
103
|
+
],
|
|
104
|
+
"tool": [
|
|
105
|
+
"edit_file"
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"then": "escalate",
|
|
109
|
+
"reason": "Editing files modifies data and requires human approval per the constitution; sandbox calls are handled structurally before this rule fires."
|
|
37
110
|
},
|
|
38
111
|
{
|
|
39
|
-
"name": "escalate-
|
|
40
|
-
"description": "Escalate any
|
|
112
|
+
"name": "escalate-create-directory",
|
|
113
|
+
"description": "Escalate any create_directory operation outside the sandbox for human approval.",
|
|
41
114
|
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
42
115
|
"if": {
|
|
116
|
+
"server": [
|
|
117
|
+
"filesystem"
|
|
118
|
+
],
|
|
43
119
|
"tool": [
|
|
44
|
-
"write_file",
|
|
45
|
-
"edit_file",
|
|
46
120
|
"create_directory"
|
|
47
121
|
]
|
|
48
122
|
},
|
|
49
123
|
"then": "escalate",
|
|
50
|
-
"reason": "
|
|
124
|
+
"reason": "Creating directories is a mutation that requires human approval per the constitution; sandbox calls are handled structurally before this rule fires."
|
|
51
125
|
},
|
|
52
126
|
{
|
|
53
|
-
"name": "escalate-
|
|
54
|
-
"description": "Escalate any
|
|
127
|
+
"name": "escalate-write-file",
|
|
128
|
+
"description": "Escalate any write_file operation outside the sandbox for human approval.",
|
|
55
129
|
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
56
130
|
"if": {
|
|
131
|
+
"server": [
|
|
132
|
+
"filesystem"
|
|
133
|
+
],
|
|
57
134
|
"tool": [
|
|
58
|
-
"
|
|
135
|
+
"write_file"
|
|
59
136
|
]
|
|
60
137
|
},
|
|
61
138
|
"then": "escalate",
|
|
62
|
-
"reason": "
|
|
139
|
+
"reason": "Writing files is a mutation that requires human approval per the constitution; sandbox calls are handled structurally before this rule fires."
|
|
63
140
|
},
|
|
64
141
|
{
|
|
65
|
-
"name": "allow-
|
|
66
|
-
"description": "Allow
|
|
67
|
-
"principle": "
|
|
142
|
+
"name": "allow-github-read-tools",
|
|
143
|
+
"description": "Allow all read-only GitHub tools that only retrieve repository, issue, PR, release, tag, branch, commit, user, and team metadata.",
|
|
144
|
+
"principle": "GitHub read access: Querying GitHub repositories, issues, and pull requests is permitted for reading.",
|
|
68
145
|
"if": {
|
|
146
|
+
"server": [
|
|
147
|
+
"github"
|
|
148
|
+
],
|
|
69
149
|
"tool": [
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
150
|
+
"get_commit",
|
|
151
|
+
"get_file_contents",
|
|
152
|
+
"get_label",
|
|
153
|
+
"get_latest_release",
|
|
154
|
+
"get_me",
|
|
155
|
+
"get_release_by_tag",
|
|
156
|
+
"get_tag",
|
|
157
|
+
"get_team_members",
|
|
158
|
+
"get_teams",
|
|
159
|
+
"issue_read",
|
|
160
|
+
"list_branches",
|
|
161
|
+
"list_commits",
|
|
162
|
+
"list_issue_types",
|
|
163
|
+
"list_issues",
|
|
164
|
+
"list_pull_requests",
|
|
165
|
+
"list_releases",
|
|
166
|
+
"list_tags",
|
|
167
|
+
"pull_request_read",
|
|
168
|
+
"search_code",
|
|
169
|
+
"search_issues",
|
|
170
|
+
"search_pull_requests",
|
|
171
|
+
"search_repositories",
|
|
172
|
+
"search_users"
|
|
77
173
|
]
|
|
78
174
|
},
|
|
79
175
|
"then": "allow",
|
|
80
|
-
"reason": "
|
|
176
|
+
"reason": "These tools are purely read-only and directly permitted by the constitution's GitHub read access principle."
|
|
81
177
|
},
|
|
82
178
|
{
|
|
83
|
-
"name": "
|
|
84
|
-
"description": "
|
|
85
|
-
"principle": "
|
|
179
|
+
"name": "escalate-github-write-issue",
|
|
180
|
+
"description": "Escalate issue write operations (create/update issues) for human approval.",
|
|
181
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
86
182
|
"if": {
|
|
183
|
+
"server": [
|
|
184
|
+
"github"
|
|
185
|
+
],
|
|
87
186
|
"tool": [
|
|
88
|
-
"
|
|
89
|
-
"git_clear_working_dir"
|
|
187
|
+
"issue_write"
|
|
90
188
|
]
|
|
91
189
|
},
|
|
92
|
-
"then": "
|
|
93
|
-
"reason": "
|
|
190
|
+
"then": "escalate",
|
|
191
|
+
"reason": "Creating or updating issues modifies GitHub data and requires human approval per the no-mutations principle."
|
|
94
192
|
},
|
|
95
193
|
{
|
|
96
|
-
"name": "
|
|
97
|
-
"description": "
|
|
98
|
-
"principle": "
|
|
194
|
+
"name": "escalate-github-add-issue-comment",
|
|
195
|
+
"description": "Escalate adding comments to issues or PRs for human approval.",
|
|
196
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
99
197
|
"if": {
|
|
198
|
+
"server": [
|
|
199
|
+
"github"
|
|
200
|
+
],
|
|
100
201
|
"tool": [
|
|
101
|
-
"
|
|
202
|
+
"add_issue_comment"
|
|
102
203
|
]
|
|
103
204
|
},
|
|
104
|
-
"then": "
|
|
105
|
-
"reason": "
|
|
205
|
+
"then": "escalate",
|
|
206
|
+
"reason": "Adding a comment to an issue or PR creates new data and requires human approval."
|
|
106
207
|
},
|
|
107
208
|
{
|
|
108
|
-
"name": "
|
|
109
|
-
"description": "
|
|
110
|
-
"principle": "
|
|
209
|
+
"name": "escalate-github-add-comment-to-pending-review",
|
|
210
|
+
"description": "Escalate adding comments to pending PR reviews for human approval.",
|
|
211
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
111
212
|
"if": {
|
|
112
|
-
"
|
|
113
|
-
"
|
|
213
|
+
"server": [
|
|
214
|
+
"github"
|
|
114
215
|
],
|
|
115
216
|
"tool": [
|
|
116
|
-
"
|
|
217
|
+
"add_comment_to_pending_review"
|
|
117
218
|
]
|
|
118
219
|
},
|
|
119
|
-
"then": "
|
|
120
|
-
"reason": "
|
|
220
|
+
"then": "escalate",
|
|
221
|
+
"reason": "Adding a review comment modifies PR review data and requires human approval."
|
|
121
222
|
},
|
|
122
223
|
{
|
|
123
|
-
"name": "
|
|
124
|
-
"description": "
|
|
125
|
-
"principle": "
|
|
224
|
+
"name": "escalate-github-add-reply-to-pr-comment",
|
|
225
|
+
"description": "Escalate adding replies to PR comments for human approval.",
|
|
226
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
126
227
|
"if": {
|
|
127
|
-
"
|
|
128
|
-
"
|
|
228
|
+
"server": [
|
|
229
|
+
"github"
|
|
129
230
|
],
|
|
130
231
|
"tool": [
|
|
131
|
-
"
|
|
232
|
+
"add_reply_to_pull_request_comment"
|
|
132
233
|
]
|
|
133
234
|
},
|
|
134
|
-
"then": "
|
|
135
|
-
"reason": "
|
|
235
|
+
"then": "escalate",
|
|
236
|
+
"reason": "Replying to a PR comment creates new data and requires human approval."
|
|
136
237
|
},
|
|
137
238
|
{
|
|
138
|
-
"name": "escalate-
|
|
139
|
-
"description": "Escalate
|
|
140
|
-
"principle": "
|
|
239
|
+
"name": "escalate-github-assign-copilot-to-issue",
|
|
240
|
+
"description": "Escalate assigning Copilot to an issue for human approval.",
|
|
241
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
141
242
|
"if": {
|
|
142
|
-
"
|
|
143
|
-
"
|
|
243
|
+
"server": [
|
|
244
|
+
"github"
|
|
144
245
|
],
|
|
145
246
|
"tool": [
|
|
146
|
-
"
|
|
247
|
+
"assign_copilot_to_issue"
|
|
147
248
|
]
|
|
148
249
|
},
|
|
149
250
|
"then": "escalate",
|
|
150
|
-
"reason": "
|
|
251
|
+
"reason": "Assigning Copilot to an issue triggers automated changes and requires human approval."
|
|
151
252
|
},
|
|
152
253
|
{
|
|
153
|
-
"name": "
|
|
154
|
-
"description": "
|
|
155
|
-
"principle": "
|
|
254
|
+
"name": "escalate-github-create-branch",
|
|
255
|
+
"description": "Escalate branch creation for human approval.",
|
|
256
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
156
257
|
"if": {
|
|
258
|
+
"server": [
|
|
259
|
+
"github"
|
|
260
|
+
],
|
|
157
261
|
"tool": [
|
|
158
|
-
"
|
|
262
|
+
"create_branch"
|
|
263
|
+
]
|
|
264
|
+
},
|
|
265
|
+
"then": "escalate",
|
|
266
|
+
"reason": "Creating a branch modifies the repository and requires human approval."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"name": "escalate-github-create-or-update-file",
|
|
270
|
+
"description": "Escalate file creation or update operations for human approval.",
|
|
271
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
272
|
+
"if": {
|
|
273
|
+
"server": [
|
|
274
|
+
"github"
|
|
159
275
|
],
|
|
160
|
-
"
|
|
161
|
-
"
|
|
162
|
-
|
|
163
|
-
],
|
|
164
|
-
"allowed": [
|
|
165
|
-
"github.com"
|
|
166
|
-
]
|
|
167
|
-
}
|
|
276
|
+
"tool": [
|
|
277
|
+
"create_or_update_file"
|
|
278
|
+
]
|
|
168
279
|
},
|
|
169
|
-
"then": "
|
|
170
|
-
"reason": "
|
|
280
|
+
"then": "escalate",
|
|
281
|
+
"reason": "Creating or updating a file in a repository is a write operation requiring human approval."
|
|
171
282
|
},
|
|
172
283
|
{
|
|
173
|
-
"name": "
|
|
174
|
-
"description": "
|
|
175
|
-
"principle": "
|
|
284
|
+
"name": "escalate-github-create-pull-request",
|
|
285
|
+
"description": "Escalate pull request creation for human approval.",
|
|
286
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
176
287
|
"if": {
|
|
288
|
+
"server": [
|
|
289
|
+
"github"
|
|
290
|
+
],
|
|
177
291
|
"tool": [
|
|
178
|
-
"
|
|
292
|
+
"create_pull_request"
|
|
293
|
+
]
|
|
294
|
+
},
|
|
295
|
+
"then": "escalate",
|
|
296
|
+
"reason": "Creating a pull request modifies the repository state and requires human approval."
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"name": "escalate-github-create-repository",
|
|
300
|
+
"description": "Escalate repository creation for human approval.",
|
|
301
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
302
|
+
"if": {
|
|
303
|
+
"server": [
|
|
304
|
+
"github"
|
|
179
305
|
],
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
|
|
183
|
-
],
|
|
184
|
-
"allowed": [
|
|
185
|
-
"github.com"
|
|
186
|
-
]
|
|
187
|
-
}
|
|
306
|
+
"tool": [
|
|
307
|
+
"create_repository"
|
|
308
|
+
]
|
|
188
309
|
},
|
|
189
|
-
"then": "
|
|
190
|
-
"reason": "
|
|
310
|
+
"then": "escalate",
|
|
311
|
+
"reason": "Creating a new repository is a write operation requiring human approval."
|
|
191
312
|
},
|
|
192
313
|
{
|
|
193
|
-
"name": "
|
|
194
|
-
"description": "
|
|
195
|
-
"principle": "
|
|
314
|
+
"name": "escalate-github-delete-file",
|
|
315
|
+
"description": "Escalate file deletion for human approval.",
|
|
316
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
196
317
|
"if": {
|
|
197
|
-
"
|
|
198
|
-
"
|
|
318
|
+
"server": [
|
|
319
|
+
"github"
|
|
199
320
|
],
|
|
200
321
|
"tool": [
|
|
201
|
-
"
|
|
322
|
+
"delete_file"
|
|
202
323
|
]
|
|
203
324
|
},
|
|
204
|
-
"then": "
|
|
205
|
-
"reason": "
|
|
325
|
+
"then": "escalate",
|
|
326
|
+
"reason": "Deleting a file from a repository is a destructive write operation requiring human approval."
|
|
206
327
|
},
|
|
207
328
|
{
|
|
208
|
-
"name": "escalate-
|
|
209
|
-
"description": "Escalate
|
|
210
|
-
"principle": "
|
|
329
|
+
"name": "escalate-github-fork-repository",
|
|
330
|
+
"description": "Escalate repository forking for human approval.",
|
|
331
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
211
332
|
"if": {
|
|
212
|
-
"
|
|
213
|
-
"
|
|
333
|
+
"server": [
|
|
334
|
+
"github"
|
|
214
335
|
],
|
|
215
336
|
"tool": [
|
|
216
|
-
"
|
|
337
|
+
"fork_repository"
|
|
217
338
|
]
|
|
218
339
|
},
|
|
219
340
|
"then": "escalate",
|
|
220
|
-
"reason": "
|
|
341
|
+
"reason": "Forking a repository creates a new repository and requires human approval."
|
|
221
342
|
},
|
|
222
343
|
{
|
|
223
|
-
"name": "
|
|
224
|
-
"description": "
|
|
225
|
-
"principle": "
|
|
344
|
+
"name": "escalate-github-merge-pull-request",
|
|
345
|
+
"description": "Escalate PR merges for human approval.",
|
|
346
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
226
347
|
"if": {
|
|
227
|
-
"
|
|
228
|
-
"
|
|
348
|
+
"server": [
|
|
349
|
+
"github"
|
|
350
|
+
],
|
|
351
|
+
"tool": [
|
|
352
|
+
"merge_pull_request"
|
|
353
|
+
]
|
|
354
|
+
},
|
|
355
|
+
"then": "escalate",
|
|
356
|
+
"reason": "Merging a pull request permanently modifies the repository history and requires human approval."
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "escalate-github-pull-request-review-write",
|
|
360
|
+
"description": "Escalate creating, submitting, or deleting PR reviews for human approval.",
|
|
361
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
362
|
+
"if": {
|
|
363
|
+
"server": [
|
|
364
|
+
"github"
|
|
365
|
+
],
|
|
366
|
+
"tool": [
|
|
367
|
+
"pull_request_review_write"
|
|
368
|
+
]
|
|
369
|
+
},
|
|
370
|
+
"then": "escalate",
|
|
371
|
+
"reason": "Writing, submitting, or deleting a PR review modifies GitHub data and requires human approval."
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "escalate-github-push-files",
|
|
375
|
+
"description": "Escalate pushing files to a repository branch for human approval.",
|
|
376
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
377
|
+
"if": {
|
|
378
|
+
"server": [
|
|
379
|
+
"github"
|
|
380
|
+
],
|
|
381
|
+
"tool": [
|
|
382
|
+
"push_files"
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
"then": "escalate",
|
|
386
|
+
"reason": "Pushing files to a repository is a write operation requiring human approval."
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"name": "escalate-github-request-copilot-review",
|
|
390
|
+
"description": "Escalate requesting a Copilot review for human approval.",
|
|
391
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
392
|
+
"if": {
|
|
393
|
+
"server": [
|
|
394
|
+
"github"
|
|
395
|
+
],
|
|
396
|
+
"tool": [
|
|
397
|
+
"request_copilot_review"
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
"then": "escalate",
|
|
401
|
+
"reason": "Requesting a Copilot review modifies the PR state and requires human approval."
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"name": "escalate-github-sub-issue-write",
|
|
405
|
+
"description": "Escalate sub-issue relationship modifications for human approval.",
|
|
406
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
407
|
+
"if": {
|
|
408
|
+
"server": [
|
|
409
|
+
"github"
|
|
410
|
+
],
|
|
411
|
+
"tool": [
|
|
412
|
+
"sub_issue_write"
|
|
413
|
+
]
|
|
414
|
+
},
|
|
415
|
+
"then": "escalate",
|
|
416
|
+
"reason": "Adding, removing, or reprioritizing sub-issues modifies issue data and requires human approval."
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "escalate-github-update-pull-request",
|
|
420
|
+
"description": "Escalate updating pull request metadata for human approval.",
|
|
421
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
422
|
+
"if": {
|
|
423
|
+
"server": [
|
|
424
|
+
"github"
|
|
425
|
+
],
|
|
426
|
+
"tool": [
|
|
427
|
+
"update_pull_request"
|
|
428
|
+
]
|
|
429
|
+
},
|
|
430
|
+
"then": "escalate",
|
|
431
|
+
"reason": "Updating a pull request's metadata is a write operation requiring human approval."
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"name": "escalate-github-update-pull-request-branch",
|
|
435
|
+
"description": "Escalate updating a PR's head branch for human approval.",
|
|
436
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
437
|
+
"if": {
|
|
438
|
+
"server": [
|
|
439
|
+
"github"
|
|
440
|
+
],
|
|
441
|
+
"tool": [
|
|
442
|
+
"update_pull_request_branch"
|
|
443
|
+
]
|
|
444
|
+
},
|
|
445
|
+
"then": "escalate",
|
|
446
|
+
"reason": "Updating a PR branch modifies the repository state and requires human approval."
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"name": "allow-drive-read-operations",
|
|
450
|
+
"description": "Allow reading, searching, listing, and getting metadata for Google Drive files.",
|
|
451
|
+
"principle": "Cloud service read access: Reading files and document content from connected cloud services is permitted.",
|
|
452
|
+
"if": {
|
|
453
|
+
"server": [
|
|
454
|
+
"google-workspace"
|
|
229
455
|
],
|
|
230
456
|
"tool": [
|
|
231
|
-
"
|
|
457
|
+
"drive_search",
|
|
458
|
+
"drive_read_file",
|
|
459
|
+
"drive_list_files",
|
|
460
|
+
"drive_get_metadata",
|
|
461
|
+
"drive_list_folder_contents",
|
|
462
|
+
"drive_list_permissions",
|
|
463
|
+
"drive_export_file",
|
|
464
|
+
"drive_list_revisions"
|
|
232
465
|
]
|
|
233
466
|
},
|
|
234
467
|
"then": "allow",
|
|
235
|
-
"reason": "
|
|
468
|
+
"reason": "Constitution explicitly permits reading files and document content from connected cloud services."
|
|
236
469
|
},
|
|
237
470
|
{
|
|
238
|
-
"name": "escalate-
|
|
239
|
-
"description": "Escalate
|
|
471
|
+
"name": "escalate-drive-upload-file",
|
|
472
|
+
"description": "Escalate uploading new files to Google Drive for human approval.",
|
|
240
473
|
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
241
474
|
"if": {
|
|
242
|
-
"
|
|
243
|
-
"
|
|
475
|
+
"server": [
|
|
476
|
+
"google-workspace"
|
|
244
477
|
],
|
|
245
478
|
"tool": [
|
|
246
|
-
"
|
|
479
|
+
"drive_upload_file"
|
|
247
480
|
]
|
|
248
481
|
},
|
|
249
482
|
"then": "escalate",
|
|
250
|
-
"reason": "
|
|
483
|
+
"reason": "Uploading files creates new data in cloud storage and requires human approval per the constitution."
|
|
251
484
|
},
|
|
252
485
|
{
|
|
253
|
-
"name": "escalate-
|
|
254
|
-
"description": "Escalate
|
|
255
|
-
"principle": "
|
|
486
|
+
"name": "escalate-drive-create-file",
|
|
487
|
+
"description": "Escalate creating new files or Google Workspace documents in Drive for human approval.",
|
|
488
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
256
489
|
"if": {
|
|
490
|
+
"server": [
|
|
491
|
+
"google-workspace"
|
|
492
|
+
],
|
|
257
493
|
"tool": [
|
|
258
|
-
"
|
|
494
|
+
"drive_create_file"
|
|
259
495
|
]
|
|
260
496
|
},
|
|
261
497
|
"then": "escalate",
|
|
262
|
-
"reason": "
|
|
498
|
+
"reason": "Creating files is a mutation that requires human approval per the constitution."
|
|
263
499
|
},
|
|
264
500
|
{
|
|
265
|
-
"name": "escalate-
|
|
266
|
-
"description": "Escalate
|
|
267
|
-
"principle": "
|
|
501
|
+
"name": "escalate-drive-delete-file",
|
|
502
|
+
"description": "Escalate moving a Drive file to trash for human approval.",
|
|
503
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
268
504
|
"if": {
|
|
505
|
+
"server": [
|
|
506
|
+
"google-workspace"
|
|
507
|
+
],
|
|
269
508
|
"tool": [
|
|
270
|
-
"
|
|
509
|
+
"drive_delete_file"
|
|
271
510
|
]
|
|
272
511
|
},
|
|
273
512
|
"then": "escalate",
|
|
274
|
-
"reason": "
|
|
513
|
+
"reason": "Deleting files is a destructive mutation that requires human approval per the constitution."
|
|
275
514
|
},
|
|
276
515
|
{
|
|
277
|
-
"name": "escalate-
|
|
278
|
-
"description": "Escalate
|
|
279
|
-
"principle": "
|
|
516
|
+
"name": "escalate-drive-copy-file",
|
|
517
|
+
"description": "Escalate copying a Drive file for human approval.",
|
|
518
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
280
519
|
"if": {
|
|
520
|
+
"server": [
|
|
521
|
+
"google-workspace"
|
|
522
|
+
],
|
|
281
523
|
"tool": [
|
|
282
|
-
"
|
|
524
|
+
"drive_copy_file"
|
|
283
525
|
]
|
|
284
526
|
},
|
|
285
527
|
"then": "escalate",
|
|
286
|
-
"reason": "
|
|
528
|
+
"reason": "Copying a file creates a new file in cloud storage, which is a mutation requiring human approval."
|
|
287
529
|
},
|
|
288
530
|
{
|
|
289
|
-
"name": "escalate-
|
|
290
|
-
"description": "Escalate
|
|
291
|
-
"principle": "
|
|
531
|
+
"name": "escalate-drive-move-file",
|
|
532
|
+
"description": "Escalate moving a Drive file to a different folder for human approval.",
|
|
533
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
292
534
|
"if": {
|
|
535
|
+
"server": [
|
|
536
|
+
"google-workspace"
|
|
537
|
+
],
|
|
293
538
|
"tool": [
|
|
294
|
-
"
|
|
539
|
+
"drive_move_file"
|
|
295
540
|
]
|
|
296
541
|
},
|
|
297
542
|
"then": "escalate",
|
|
298
|
-
"reason": "
|
|
543
|
+
"reason": "Moving a file modifies its location in cloud storage, requiring human approval."
|
|
299
544
|
},
|
|
300
545
|
{
|
|
301
|
-
"name": "escalate-
|
|
302
|
-
"description": "Escalate
|
|
303
|
-
"principle": "
|
|
546
|
+
"name": "escalate-drive-rename-file",
|
|
547
|
+
"description": "Escalate renaming a Drive file for human approval.",
|
|
548
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
304
549
|
"if": {
|
|
550
|
+
"server": [
|
|
551
|
+
"google-workspace"
|
|
552
|
+
],
|
|
305
553
|
"tool": [
|
|
306
|
-
"
|
|
554
|
+
"drive_rename_file"
|
|
307
555
|
]
|
|
308
556
|
},
|
|
309
557
|
"then": "escalate",
|
|
310
|
-
"reason": "
|
|
558
|
+
"reason": "Renaming a file is a modification that requires human approval per the constitution."
|
|
311
559
|
},
|
|
312
560
|
{
|
|
313
|
-
"name": "escalate-
|
|
314
|
-
"description": "Escalate
|
|
315
|
-
"principle": "
|
|
561
|
+
"name": "escalate-drive-update-file",
|
|
562
|
+
"description": "Escalate updating a Drive file's metadata or content for human approval.",
|
|
563
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
316
564
|
"if": {
|
|
565
|
+
"server": [
|
|
566
|
+
"google-workspace"
|
|
567
|
+
],
|
|
317
568
|
"tool": [
|
|
318
|
-
"
|
|
569
|
+
"drive_update_file"
|
|
319
570
|
]
|
|
320
571
|
},
|
|
321
572
|
"then": "escalate",
|
|
322
|
-
"reason": "
|
|
573
|
+
"reason": "Updating file content or metadata is a mutation requiring human approval per the constitution."
|
|
323
574
|
},
|
|
324
575
|
{
|
|
325
|
-
"name": "escalate-
|
|
326
|
-
"description": "Escalate
|
|
327
|
-
"principle": "
|
|
576
|
+
"name": "escalate-drive-create-folder",
|
|
577
|
+
"description": "Escalate creating a new folder in Google Drive for human approval.",
|
|
578
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
328
579
|
"if": {
|
|
580
|
+
"server": [
|
|
581
|
+
"google-workspace"
|
|
582
|
+
],
|
|
329
583
|
"tool": [
|
|
330
|
-
"
|
|
584
|
+
"drive_create_folder"
|
|
331
585
|
]
|
|
332
586
|
},
|
|
333
587
|
"then": "escalate",
|
|
334
|
-
"reason": "
|
|
588
|
+
"reason": "Creating a folder is a mutation requiring human approval per the constitution."
|
|
335
589
|
},
|
|
336
590
|
{
|
|
337
|
-
"name": "escalate-
|
|
338
|
-
"description": "Escalate
|
|
339
|
-
"principle": "
|
|
591
|
+
"name": "escalate-drive-move-to-folder",
|
|
592
|
+
"description": "Escalate moving a Drive file into a specific folder for human approval.",
|
|
593
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
340
594
|
"if": {
|
|
595
|
+
"server": [
|
|
596
|
+
"google-workspace"
|
|
597
|
+
],
|
|
341
598
|
"tool": [
|
|
342
|
-
"
|
|
599
|
+
"drive_move_to_folder"
|
|
600
|
+
]
|
|
601
|
+
},
|
|
602
|
+
"then": "escalate",
|
|
603
|
+
"reason": "Moving a file modifies its location, which is a mutation requiring human approval."
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"name": "escalate-drive-share-file",
|
|
607
|
+
"description": "Escalate sharing a Drive file (adding permissions) for human approval.",
|
|
608
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
609
|
+
"if": {
|
|
610
|
+
"server": [
|
|
611
|
+
"google-workspace"
|
|
343
612
|
],
|
|
344
|
-
"
|
|
345
|
-
"
|
|
346
|
-
|
|
347
|
-
],
|
|
348
|
-
"allowed": [
|
|
349
|
-
"github.com"
|
|
350
|
-
]
|
|
351
|
-
}
|
|
613
|
+
"tool": [
|
|
614
|
+
"drive_share_file"
|
|
615
|
+
]
|
|
352
616
|
},
|
|
353
617
|
"then": "escalate",
|
|
354
|
-
"reason": "
|
|
618
|
+
"reason": "Sharing a file modifies access permissions and requires human approval per the constitution."
|
|
355
619
|
},
|
|
356
620
|
{
|
|
357
|
-
"name": "escalate-
|
|
358
|
-
"description": "Escalate
|
|
359
|
-
"principle": "
|
|
621
|
+
"name": "escalate-drive-update-permission",
|
|
622
|
+
"description": "Escalate updating an existing Drive file permission for human approval.",
|
|
623
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
360
624
|
"if": {
|
|
625
|
+
"server": [
|
|
626
|
+
"google-workspace"
|
|
627
|
+
],
|
|
361
628
|
"tool": [
|
|
362
|
-
"
|
|
629
|
+
"drive_update_permission"
|
|
363
630
|
]
|
|
364
631
|
},
|
|
365
632
|
"then": "escalate",
|
|
366
|
-
"reason": "
|
|
633
|
+
"reason": "Modifying permissions is a mutation requiring human approval per the constitution."
|
|
367
634
|
},
|
|
368
635
|
{
|
|
369
|
-
"name": "escalate-
|
|
370
|
-
"description": "Escalate
|
|
371
|
-
"principle": "
|
|
636
|
+
"name": "escalate-drive-remove-permission",
|
|
637
|
+
"description": "Escalate removing a permission from a Drive file for human approval.",
|
|
638
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
372
639
|
"if": {
|
|
640
|
+
"server": [
|
|
641
|
+
"google-workspace"
|
|
642
|
+
],
|
|
373
643
|
"tool": [
|
|
374
|
-
"
|
|
644
|
+
"drive_remove_permission"
|
|
375
645
|
]
|
|
376
646
|
},
|
|
377
647
|
"then": "escalate",
|
|
378
|
-
"reason": "
|
|
648
|
+
"reason": "Removing permissions is a destructive mutation requiring human approval per the constitution."
|
|
379
649
|
},
|
|
380
650
|
{
|
|
381
|
-
"name": "escalate-
|
|
382
|
-
"description": "Escalate
|
|
651
|
+
"name": "escalate-drive-empty-trash",
|
|
652
|
+
"description": "Escalate permanently deleting all files in Drive trash for human approval.",
|
|
383
653
|
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
384
654
|
"if": {
|
|
655
|
+
"server": [
|
|
656
|
+
"google-workspace"
|
|
657
|
+
],
|
|
385
658
|
"tool": [
|
|
386
|
-
"
|
|
659
|
+
"drive_empty_trash"
|
|
387
660
|
]
|
|
388
661
|
},
|
|
389
662
|
"then": "escalate",
|
|
390
|
-
"reason": "
|
|
663
|
+
"reason": "Permanently deleting files is an irreversible destructive action requiring human approval."
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
"name": "allow-gsheets-read-operations",
|
|
667
|
+
"description": "Allow reading data and listing sheets from Google Spreadsheets.",
|
|
668
|
+
"principle": "Cloud service read access: Reading files and document content from connected cloud services is permitted.",
|
|
669
|
+
"if": {
|
|
670
|
+
"server": [
|
|
671
|
+
"google-workspace"
|
|
672
|
+
],
|
|
673
|
+
"tool": [
|
|
674
|
+
"gsheets_read",
|
|
675
|
+
"gsheets_list_sheets"
|
|
676
|
+
]
|
|
677
|
+
},
|
|
678
|
+
"then": "allow",
|
|
679
|
+
"reason": "Constitution explicitly permits reading document content from connected cloud services."
|
|
391
680
|
},
|
|
392
681
|
{
|
|
393
|
-
"name": "escalate-
|
|
394
|
-
"description": "Escalate
|
|
682
|
+
"name": "escalate-gsheets-mutations",
|
|
683
|
+
"description": "Escalate all Google Sheets mutation operations for human approval.",
|
|
395
684
|
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
396
685
|
"if": {
|
|
686
|
+
"server": [
|
|
687
|
+
"google-workspace"
|
|
688
|
+
],
|
|
397
689
|
"tool": [
|
|
398
|
-
"
|
|
690
|
+
"gsheets_update_cell",
|
|
691
|
+
"gsheets_add_sheet",
|
|
692
|
+
"gsheets_delete_sheet",
|
|
693
|
+
"gsheets_insert_rows",
|
|
694
|
+
"gsheets_insert_columns",
|
|
695
|
+
"gsheets_delete_rows",
|
|
696
|
+
"gsheets_delete_columns",
|
|
697
|
+
"gsheets_append_data",
|
|
698
|
+
"gsheets_batch_update",
|
|
699
|
+
"gsheets_clear_data",
|
|
700
|
+
"gsheets_copy_sheet",
|
|
701
|
+
"gsheets_copy_to",
|
|
702
|
+
"gsheets_merge_cells",
|
|
703
|
+
"gsheets_unmerge_cells",
|
|
704
|
+
"gsheets_update_borders",
|
|
705
|
+
"gsheets_format_cells",
|
|
706
|
+
"gsheets_sort_range",
|
|
707
|
+
"gsheets_create_spreadsheet",
|
|
708
|
+
"gsheets_duplicate_sheet",
|
|
709
|
+
"gsheets_rename_sheet",
|
|
710
|
+
"gsheets_batch_clear",
|
|
711
|
+
"gsheets_auto_resize",
|
|
712
|
+
"gsheets_set_number_format",
|
|
713
|
+
"gsheets_set_data_validation",
|
|
714
|
+
"gsheets_add_conditional_format",
|
|
715
|
+
"gsheets_create_filter",
|
|
716
|
+
"gsheets_add_protected_range",
|
|
717
|
+
"gsheets_delete_protected_range",
|
|
718
|
+
"gsheets_update_protected_range",
|
|
719
|
+
"gsheets_find_replace",
|
|
720
|
+
"gsheets_add_named_range",
|
|
721
|
+
"gsheets_update_named_range",
|
|
722
|
+
"gsheets_delete_named_range",
|
|
723
|
+
"gsheets_freeze_rows",
|
|
724
|
+
"gsheets_freeze_columns",
|
|
725
|
+
"gsheets_add_chart",
|
|
726
|
+
"gsheets_update_chart",
|
|
727
|
+
"gsheets_delete_chart",
|
|
728
|
+
"gsheets_add_histogram",
|
|
729
|
+
"gsheets_add_waterfall",
|
|
730
|
+
"gsheets_add_candlestick",
|
|
731
|
+
"gsheets_add_combo",
|
|
732
|
+
"gsheets_add_bubble",
|
|
733
|
+
"gsheets_add_treemap",
|
|
734
|
+
"gsheets_add_org_chart",
|
|
735
|
+
"gsheets_add_filter_view",
|
|
736
|
+
"gsheets_add_pivot_table",
|
|
737
|
+
"gsheets_add_dimension_group",
|
|
738
|
+
"gsheets_delete_dimension_group",
|
|
739
|
+
"gsheets_update_dimension_group",
|
|
740
|
+
"gsheets_create_developer_metadata",
|
|
741
|
+
"gsheets_update_developer_metadata",
|
|
742
|
+
"gsheets_delete_developer_metadata"
|
|
399
743
|
]
|
|
400
744
|
},
|
|
401
745
|
"then": "escalate",
|
|
402
|
-
"reason": "
|
|
746
|
+
"reason": "All Sheets write, create, delete, and formatting operations modify cloud data and require human approval."
|
|
403
747
|
},
|
|
404
748
|
{
|
|
405
|
-
"name": "allow-
|
|
406
|
-
"description": "Allow
|
|
407
|
-
"principle": "
|
|
749
|
+
"name": "allow-gdocs-read-operations",
|
|
750
|
+
"description": "Allow reading Google Documents content, metadata, listing documents, and exporting to other formats.",
|
|
751
|
+
"principle": "Cloud service read access: Reading files and document content from connected cloud services is permitted.",
|
|
408
752
|
"if": {
|
|
753
|
+
"server": [
|
|
754
|
+
"google-workspace"
|
|
755
|
+
],
|
|
409
756
|
"tool": [
|
|
410
|
-
"
|
|
411
|
-
"
|
|
412
|
-
"
|
|
413
|
-
"
|
|
414
|
-
"get_me",
|
|
415
|
-
"get_release_by_tag",
|
|
416
|
-
"get_tag",
|
|
417
|
-
"get_team_members",
|
|
418
|
-
"get_teams",
|
|
419
|
-
"issue_read",
|
|
420
|
-
"list_branches",
|
|
421
|
-
"list_commits",
|
|
422
|
-
"list_issue_types",
|
|
423
|
-
"list_issues",
|
|
424
|
-
"list_pull_requests",
|
|
425
|
-
"list_releases",
|
|
426
|
-
"list_tags",
|
|
427
|
-
"pull_request_read",
|
|
428
|
-
"search_code",
|
|
429
|
-
"search_issues",
|
|
430
|
-
"search_pull_requests",
|
|
431
|
-
"search_repositories",
|
|
432
|
-
"search_users"
|
|
757
|
+
"gdocs_read",
|
|
758
|
+
"gdocs_get_metadata",
|
|
759
|
+
"gdocs_list_documents",
|
|
760
|
+
"gdocs_export"
|
|
433
761
|
]
|
|
434
762
|
},
|
|
435
763
|
"then": "allow",
|
|
436
|
-
"reason": "Constitution explicitly permits
|
|
437
|
-
},
|
|
438
|
-
{
|
|
439
|
-
"name": "escalate-
|
|
440
|
-
"description": "Escalate all
|
|
441
|
-
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
442
|
-
"if": {
|
|
443
|
-
"
|
|
444
|
-
"
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
"
|
|
448
|
-
"
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
452
|
-
"
|
|
453
|
-
"
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"
|
|
460
|
-
"
|
|
461
|
-
"
|
|
764
|
+
"reason": "Constitution explicitly permits reading document content from connected cloud services; exporting converts content to another format without modifying cloud data."
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
"name": "escalate-gdocs-mutations",
|
|
768
|
+
"description": "Escalate all Google Docs mutation operations for human approval.",
|
|
769
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
770
|
+
"if": {
|
|
771
|
+
"server": [
|
|
772
|
+
"google-workspace"
|
|
773
|
+
],
|
|
774
|
+
"tool": [
|
|
775
|
+
"gdocs_create",
|
|
776
|
+
"gdocs_insert_text",
|
|
777
|
+
"gdocs_update_text",
|
|
778
|
+
"gdocs_delete_text",
|
|
779
|
+
"gdocs_replace_text",
|
|
780
|
+
"gdocs_append_text",
|
|
781
|
+
"gdocs_format_text",
|
|
782
|
+
"gdocs_create_heading",
|
|
783
|
+
"gdocs_create_list",
|
|
784
|
+
"gdocs_set_alignment",
|
|
785
|
+
"gdocs_apply_style",
|
|
786
|
+
"gdocs_insert_image",
|
|
787
|
+
"gdocs_create_table",
|
|
788
|
+
"gdocs_insert_page_break",
|
|
789
|
+
"gdocs_insert_link",
|
|
790
|
+
"gdocs_insert_toc",
|
|
791
|
+
"gdocs_batch_update",
|
|
792
|
+
"gdocs_merge_documents",
|
|
793
|
+
"gdocs_suggest_mode"
|
|
794
|
+
]
|
|
795
|
+
},
|
|
796
|
+
"then": "escalate",
|
|
797
|
+
"reason": "All Docs write, create, and delete operations modify cloud data and require human approval per the constitution."
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"name": "allow-gmail-read-operations",
|
|
801
|
+
"description": "Allow reading Gmail messages, threads, and labels.",
|
|
802
|
+
"principle": "Cloud service read access: Reading messages from connected cloud services is permitted.",
|
|
803
|
+
"if": {
|
|
804
|
+
"server": [
|
|
805
|
+
"google-workspace"
|
|
806
|
+
],
|
|
807
|
+
"tool": [
|
|
808
|
+
"gmail_list_labels",
|
|
809
|
+
"gmail_search_messages",
|
|
810
|
+
"gmail_get_message",
|
|
811
|
+
"gmail_get_thread",
|
|
812
|
+
"gmail_get_messages_batch",
|
|
813
|
+
"gmail_get_threads_batch"
|
|
814
|
+
]
|
|
815
|
+
},
|
|
816
|
+
"then": "allow",
|
|
817
|
+
"reason": "Constitution explicitly permits reading messages from connected cloud services."
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
"name": "escalate-gmail-send-message",
|
|
821
|
+
"description": "Escalate sending Gmail messages for human approval.",
|
|
822
|
+
"principle": "No mutations: The agent must ask for approval before sending messages.",
|
|
823
|
+
"if": {
|
|
824
|
+
"server": [
|
|
825
|
+
"google-workspace"
|
|
826
|
+
],
|
|
827
|
+
"tool": [
|
|
828
|
+
"gmail_send_message"
|
|
829
|
+
]
|
|
830
|
+
},
|
|
831
|
+
"then": "escalate",
|
|
832
|
+
"reason": "Sending messages is explicitly called out as requiring human approval in the constitution."
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"name": "escalate-gmail-draft-message",
|
|
836
|
+
"description": "Escalate creating Gmail draft messages for human approval.",
|
|
837
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
838
|
+
"if": {
|
|
839
|
+
"server": [
|
|
840
|
+
"google-workspace"
|
|
841
|
+
],
|
|
842
|
+
"tool": [
|
|
843
|
+
"gmail_draft_message"
|
|
844
|
+
]
|
|
845
|
+
},
|
|
846
|
+
"then": "escalate",
|
|
847
|
+
"reason": "Creating draft messages creates new data in cloud services and requires human approval."
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"name": "escalate-gmail-modify-labels",
|
|
851
|
+
"description": "Escalate modifying labels on Gmail messages for human approval.",
|
|
852
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
853
|
+
"if": {
|
|
854
|
+
"server": [
|
|
855
|
+
"google-workspace"
|
|
856
|
+
],
|
|
857
|
+
"tool": [
|
|
858
|
+
"gmail_modify_labels",
|
|
859
|
+
"gmail_batch_modify_labels"
|
|
860
|
+
]
|
|
861
|
+
},
|
|
862
|
+
"then": "escalate",
|
|
863
|
+
"reason": "Modifying message labels is a mutation of cloud data requiring human approval."
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"name": "escalate-gmail-manage-label",
|
|
867
|
+
"description": "Escalate creating, updating, or deleting Gmail labels for human approval.",
|
|
868
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
869
|
+
"if": {
|
|
870
|
+
"server": [
|
|
871
|
+
"google-workspace"
|
|
872
|
+
],
|
|
873
|
+
"tool": [
|
|
874
|
+
"gmail_manage_label"
|
|
875
|
+
]
|
|
876
|
+
},
|
|
877
|
+
"then": "escalate",
|
|
878
|
+
"reason": "Managing labels creates or modifies cloud data requiring human approval."
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
"name": "allow-calendar-read-operations",
|
|
882
|
+
"description": "Allow reading Google Calendar events, calendars, and settings.",
|
|
883
|
+
"principle": "Cloud service read access: Reading calendar events from connected cloud services is permitted.",
|
|
884
|
+
"if": {
|
|
885
|
+
"server": [
|
|
886
|
+
"google-workspace"
|
|
887
|
+
],
|
|
888
|
+
"tool": [
|
|
889
|
+
"calendar_list_events",
|
|
890
|
+
"calendar_get_event",
|
|
891
|
+
"calendar_freebusy_query",
|
|
892
|
+
"calendar_calendarlist_list",
|
|
893
|
+
"calendar_calendarlist_get",
|
|
894
|
+
"calendar_events_instances",
|
|
895
|
+
"calendar_colors_get",
|
|
896
|
+
"calendar_calendars_get",
|
|
897
|
+
"calendar_acl_list",
|
|
898
|
+
"calendar_settings_list"
|
|
899
|
+
]
|
|
900
|
+
},
|
|
901
|
+
"then": "allow",
|
|
902
|
+
"reason": "Constitution explicitly permits reading calendar events from connected cloud services."
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
"name": "escalate-calendar-create-event",
|
|
906
|
+
"description": "Escalate creating new calendar events for human approval.",
|
|
907
|
+
"principle": "No mutations: The agent must ask for approval before creating events.",
|
|
908
|
+
"if": {
|
|
909
|
+
"server": [
|
|
910
|
+
"google-workspace"
|
|
911
|
+
],
|
|
912
|
+
"tool": [
|
|
913
|
+
"calendar_create_event",
|
|
914
|
+
"calendar_events_quickadd"
|
|
915
|
+
]
|
|
916
|
+
},
|
|
917
|
+
"then": "escalate",
|
|
918
|
+
"reason": "Creating calendar events is explicitly called out as requiring human approval in the constitution."
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"name": "escalate-calendar-update-event",
|
|
922
|
+
"description": "Escalate updating existing calendar events for human approval.",
|
|
923
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
924
|
+
"if": {
|
|
925
|
+
"server": [
|
|
926
|
+
"google-workspace"
|
|
927
|
+
],
|
|
928
|
+
"tool": [
|
|
929
|
+
"calendar_update_event"
|
|
930
|
+
]
|
|
931
|
+
},
|
|
932
|
+
"then": "escalate",
|
|
933
|
+
"reason": "Modifying calendar events is a mutation requiring human approval per the constitution."
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
"name": "escalate-calendar-delete-event",
|
|
937
|
+
"description": "Escalate deleting calendar events for human approval.",
|
|
938
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
939
|
+
"if": {
|
|
940
|
+
"server": [
|
|
941
|
+
"google-workspace"
|
|
942
|
+
],
|
|
943
|
+
"tool": [
|
|
944
|
+
"calendar_delete_event"
|
|
945
|
+
]
|
|
946
|
+
},
|
|
947
|
+
"then": "escalate",
|
|
948
|
+
"reason": "Deleting calendar events is a destructive mutation requiring human approval per the constitution."
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
"name": "escalate-calendar-move-event",
|
|
952
|
+
"description": "Escalate moving a calendar event between calendars for human approval.",
|
|
953
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
954
|
+
"if": {
|
|
955
|
+
"server": [
|
|
956
|
+
"google-workspace"
|
|
957
|
+
],
|
|
958
|
+
"tool": [
|
|
959
|
+
"calendar_events_move"
|
|
960
|
+
]
|
|
961
|
+
},
|
|
962
|
+
"then": "escalate",
|
|
963
|
+
"reason": "Moving events between calendars modifies cloud data and requires human approval."
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
"name": "escalate-calendar-create-calendar",
|
|
967
|
+
"description": "Escalate creating a new secondary Google Calendar for human approval.",
|
|
968
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
969
|
+
"if": {
|
|
970
|
+
"server": [
|
|
971
|
+
"google-workspace"
|
|
972
|
+
],
|
|
973
|
+
"tool": [
|
|
974
|
+
"calendar_calendars_insert"
|
|
975
|
+
]
|
|
976
|
+
},
|
|
977
|
+
"then": "escalate",
|
|
978
|
+
"reason": "Creating a new calendar is a mutation requiring human approval per the constitution."
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"name": "escalate-calendar-update-calendar",
|
|
982
|
+
"description": "Escalate updating calendar metadata for human approval.",
|
|
983
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
984
|
+
"if": {
|
|
985
|
+
"server": [
|
|
986
|
+
"google-workspace"
|
|
987
|
+
],
|
|
988
|
+
"tool": [
|
|
989
|
+
"calendar_calendars_update"
|
|
990
|
+
]
|
|
991
|
+
},
|
|
992
|
+
"then": "escalate",
|
|
993
|
+
"reason": "Updating calendar metadata is a mutation requiring human approval per the constitution."
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
"name": "escalate-calendar-acl-insert",
|
|
997
|
+
"description": "Escalate adding access control rules to a calendar for human approval.",
|
|
998
|
+
"principle": "No mutations: Any operation that creates, modifies, or deletes data must be escalated for human approval.",
|
|
999
|
+
"if": {
|
|
1000
|
+
"server": [
|
|
1001
|
+
"google-workspace"
|
|
1002
|
+
],
|
|
1003
|
+
"tool": [
|
|
1004
|
+
"calendar_acl_insert"
|
|
462
1005
|
]
|
|
463
1006
|
},
|
|
464
1007
|
"then": "escalate",
|
|
465
|
-
"reason": "
|
|
1008
|
+
"reason": "Sharing a calendar by adding ACL rules modifies permissions and requires human approval."
|
|
466
1009
|
}
|
|
467
1010
|
]
|
|
468
1011
|
}
|