@aerostack/openclaw-bridge 0.11.0 → 0.12.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/README.md +66 -2
- package/dist/guardian.d.ts +64 -0
- package/dist/guardian.js +141 -0
- package/dist/guardian.js.map +1 -0
- package/dist/index.js +122 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,7 @@ Instead of configuring 50 separate MCP servers in OpenClaw, point at one Aerosta
|
|
|
14
14
|
- **All tools in one place** — composed from multiple MCP servers
|
|
15
15
|
- **Centralized OAuth** — 27+ providers managed by Aerostack, not your agent
|
|
16
16
|
- **Human approval gates** — sensitive tools require workspace owner approval before executing
|
|
17
|
+
- **Local Guardian** — approval gates for local operations (file delete, shell, git push, deploy)
|
|
17
18
|
- **Per-tool permissions** — workspace tokens scope exactly which tools are accessible
|
|
18
19
|
- **Usage tracking & audit** — every tool call logged and metered
|
|
19
20
|
- **Rate limiting** — per-token, plan-tiered
|
|
@@ -94,13 +95,74 @@ When a workspace owner configures approval requirements on sensitive tools, the
|
|
|
94
95
|
OpenClaw calls dangerous_tool
|
|
95
96
|
→ Bridge forwards to workspace
|
|
96
97
|
→ Workspace returns "needs approval" (-32050)
|
|
97
|
-
→ Bridge
|
|
98
|
-
→ Workspace owner approves/rejects in
|
|
98
|
+
→ Bridge waits via WebSocket (instant) or polls as fallback
|
|
99
|
+
→ Workspace owner approves/rejects in dashboard or mobile
|
|
99
100
|
→ Bridge retries on approval, returns error on rejection
|
|
100
101
|
```
|
|
101
102
|
|
|
102
103
|
Your OpenClaw agent sees either a successful result or a clear error — no special handling needed.
|
|
103
104
|
|
|
105
|
+
## Local Guardian
|
|
106
|
+
|
|
107
|
+
Approval gates for **local operations** — file deletion, destructive shell commands, git push, deploys, and more. The agent asks for approval before acting on your machine.
|
|
108
|
+
|
|
109
|
+
### How it works
|
|
110
|
+
|
|
111
|
+
The bridge injects an `aerostack__local_guardian` tool alongside your workspace tools. When the LLM is about to perform a risky local operation, it calls this tool first. The bridge sends an approval request to your workspace — you get a push notification and can approve or reject from the dashboard or your phone.
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Agent wants to: rm -rf ./old-config/
|
|
115
|
+
→ Agent calls aerostack__local_guardian (action: "delete old-config directory")
|
|
116
|
+
→ Bridge sends approval request to workspace
|
|
117
|
+
→ You get push notification: "[LOCAL] delete old-config directory"
|
|
118
|
+
→ You tap Approve or Reject
|
|
119
|
+
→ Agent proceeds or stops
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Default rules
|
|
123
|
+
|
|
124
|
+
The guardian covers these categories out of the box:
|
|
125
|
+
|
|
126
|
+
| Category | What it covers |
|
|
127
|
+
|----------|---------------|
|
|
128
|
+
| `file_delete` | Deleting, removing, or overwriting files |
|
|
129
|
+
| `shell_destructive` | `rm -rf`, `DROP TABLE`, `TRUNCATE`, etc. |
|
|
130
|
+
| `git_push` | `git push`, force push, `git reset --hard` |
|
|
131
|
+
| `config_modify` | `.env`, credentials, secrets, production configs |
|
|
132
|
+
| `deploy` | Deploy, publish, release to any environment |
|
|
133
|
+
| `database` | Direct database mutations outside of migrations |
|
|
134
|
+
|
|
135
|
+
### Custom rules (from your dashboard)
|
|
136
|
+
|
|
137
|
+
Configure custom rules in your workspace settings via the Aerostack Admin Dashboard or API:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Example: add a custom "email" rule via API
|
|
141
|
+
curl -X PATCH "https://api.aerostack.dev/api/community/workspaces/{id}" \
|
|
142
|
+
-H "Authorization: Bearer YOUR_JWT" \
|
|
143
|
+
-d '{
|
|
144
|
+
"settings": {
|
|
145
|
+
"local_guardian_rules": [
|
|
146
|
+
{ "category": "email", "description": "Sending any email", "examples": ["send email", "compose", "reply"] },
|
|
147
|
+
{ "category": "payments", "description": "Any payment or billing operation", "examples": ["charge", "refund", "invoice"] },
|
|
148
|
+
{ "category": "file_delete", "description": "Deleting files", "examples": ["rm", "unlink"] }
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
}'
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
When workspace rules are configured, they **replace** the defaults. The bridge fetches rules automatically during initialization — no env vars needed.
|
|
155
|
+
|
|
156
|
+
### Disable Local Guardian
|
|
157
|
+
|
|
158
|
+
**From the dashboard:** Set `local_guardian_enabled: false` in workspace settings.
|
|
159
|
+
|
|
160
|
+
**From the agent side:** Set `AEROSTACK_LOCAL_GUARDIAN=false` in env to force-disable regardless of workspace config.
|
|
161
|
+
|
|
162
|
+
### Requires workspace approval rules
|
|
163
|
+
|
|
164
|
+
Local Guardian uses your workspace's approval system. You need at least one approval rule configured in your workspace settings. If no rules are configured, the guardian allows all actions with a warning.
|
|
165
|
+
|
|
104
166
|
## Configuration
|
|
105
167
|
|
|
106
168
|
All configuration is via environment variables:
|
|
@@ -112,6 +174,8 @@ All configuration is via environment variables:
|
|
|
112
174
|
| `AEROSTACK_APPROVAL_POLL_MS` | No | `3000` | Approval polling interval (ms) |
|
|
113
175
|
| `AEROSTACK_APPROVAL_TIMEOUT_MS` | No | `300000` | Max approval wait time (5 min) |
|
|
114
176
|
| `AEROSTACK_REQUEST_TIMEOUT_MS` | No | `30000` | HTTP request timeout (30s) |
|
|
177
|
+
| `AEROSTACK_LOCAL_GUARDIAN` | No | `true` | Force-disable Local Guardian (`false` to disable) |
|
|
178
|
+
| `AEROSTACK_LOG_LEVEL` | No | `info` | Log level (debug, info, warn, error) |
|
|
115
179
|
|
|
116
180
|
## Supported MCP Methods
|
|
117
181
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Guardian — synthetic MCP tool for LLM-cooperative approval gates
|
|
3
|
+
* on local operations (file system, shell, git, deploy).
|
|
4
|
+
*
|
|
5
|
+
* Rules are fetched from the workspace during initialization.
|
|
6
|
+
* When no workspace rules are configured, sensible defaults apply.
|
|
7
|
+
* The bridge injects this tool into tools/list alongside workspace tools.
|
|
8
|
+
* When the LLM calls it, the bridge delegates to the workspace's existing
|
|
9
|
+
* `aerostack__request_approval` permission gate — same WebSocket, same
|
|
10
|
+
* approval queue, same dashboard.
|
|
11
|
+
*/
|
|
12
|
+
export interface GuardianRule {
|
|
13
|
+
/** Machine-readable category (lowercase, alphanumeric + underscores) */
|
|
14
|
+
category: string;
|
|
15
|
+
/** Human-readable description of what this rule covers */
|
|
16
|
+
description: string;
|
|
17
|
+
/** Example patterns — helps the LLM recognize matching operations */
|
|
18
|
+
examples?: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface GuardianConfig {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
rules: GuardianRule[];
|
|
23
|
+
}
|
|
24
|
+
export declare const DEFAULT_RULES: GuardianRule[];
|
|
25
|
+
/**
|
|
26
|
+
* Extract Local Guardian config from workspace initialize response.
|
|
27
|
+
* The workspace returns `_aerostack.local_guardian` with rules configured
|
|
28
|
+
* by the workspace owner in the dashboard.
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseWorkspaceGuardianConfig(initResult: Record<string, unknown>): GuardianConfig | null;
|
|
31
|
+
export declare function buildGuardianTool(rules: GuardianRule[]): {
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: "object";
|
|
36
|
+
properties: {
|
|
37
|
+
action: {
|
|
38
|
+
type: string;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
category: {
|
|
42
|
+
type: string;
|
|
43
|
+
description: string;
|
|
44
|
+
};
|
|
45
|
+
details: {
|
|
46
|
+
type: string;
|
|
47
|
+
description: string;
|
|
48
|
+
};
|
|
49
|
+
risk_level: {
|
|
50
|
+
type: string;
|
|
51
|
+
enum: string[];
|
|
52
|
+
description: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
required: readonly ["action", "category"];
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export declare function buildGuardianInstructions(rules: GuardianRule[]): string;
|
|
59
|
+
/**
|
|
60
|
+
* Check if Local Guardian is force-disabled via env var.
|
|
61
|
+
* Default: enabled. Set AEROSTACK_LOCAL_GUARDIAN=false to disable
|
|
62
|
+
* regardless of workspace config.
|
|
63
|
+
*/
|
|
64
|
+
export declare function isGuardianForceDisabled(): boolean;
|
package/dist/guardian.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Guardian — synthetic MCP tool for LLM-cooperative approval gates
|
|
3
|
+
* on local operations (file system, shell, git, deploy).
|
|
4
|
+
*
|
|
5
|
+
* Rules are fetched from the workspace during initialization.
|
|
6
|
+
* When no workspace rules are configured, sensible defaults apply.
|
|
7
|
+
* The bridge injects this tool into tools/list alongside workspace tools.
|
|
8
|
+
* When the LLM calls it, the bridge delegates to the workspace's existing
|
|
9
|
+
* `aerostack__request_approval` permission gate — same WebSocket, same
|
|
10
|
+
* approval queue, same dashboard.
|
|
11
|
+
*/
|
|
12
|
+
// ── Default Rules ─────────────────────────────────────────────────
|
|
13
|
+
// Used when workspace has no custom rules configured.
|
|
14
|
+
export const DEFAULT_RULES = [
|
|
15
|
+
{
|
|
16
|
+
category: 'file_delete',
|
|
17
|
+
description: 'Deleting, removing, or permanently overwriting files',
|
|
18
|
+
examples: ['rm', 'unlink', 'delete file', 'remove file', 'overwrite existing file'],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
category: 'shell_destructive',
|
|
22
|
+
description: 'Destructive or irreversible shell commands',
|
|
23
|
+
examples: ['rm -rf', 'DROP TABLE', 'DELETE FROM', 'truncate', 'format disk', 'mkfs'],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
category: 'git_push',
|
|
27
|
+
description: 'Pushing code, force operations, or rewriting history',
|
|
28
|
+
examples: ['git push', 'git force-push', 'git reset --hard', 'git rebase onto remote'],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
category: 'config_modify',
|
|
32
|
+
description: 'Modifying sensitive configuration, environment, or credential files',
|
|
33
|
+
examples: ['.env', '.env.production', 'credentials', 'secrets.yaml', 'config.production'],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
category: 'deploy',
|
|
37
|
+
description: 'Deploying, publishing, or releasing to any environment',
|
|
38
|
+
examples: ['deploy to production', 'npm publish', 'wrangler deploy', 'docker push'],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
category: 'database',
|
|
42
|
+
description: 'Direct database mutations outside of migrations',
|
|
43
|
+
examples: ['DROP', 'TRUNCATE', 'ALTER TABLE', 'DELETE FROM', 'UPDATE ... SET'],
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
// ── Parse workspace config ────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Extract Local Guardian config from workspace initialize response.
|
|
49
|
+
* The workspace returns `_aerostack.local_guardian` with rules configured
|
|
50
|
+
* by the workspace owner in the dashboard.
|
|
51
|
+
*/
|
|
52
|
+
export function parseWorkspaceGuardianConfig(initResult) {
|
|
53
|
+
const ext = initResult._aerostack;
|
|
54
|
+
if (!ext?.local_guardian)
|
|
55
|
+
return null;
|
|
56
|
+
const guardian = ext.local_guardian;
|
|
57
|
+
const enabled = guardian.enabled !== false;
|
|
58
|
+
const rules = guardian.rules;
|
|
59
|
+
if (!Array.isArray(rules) || rules.length === 0)
|
|
60
|
+
return null;
|
|
61
|
+
// Validate each rule minimally
|
|
62
|
+
const valid = rules.filter(r => typeof r.category === 'string' &&
|
|
63
|
+
typeof r.description === 'string' &&
|
|
64
|
+
/^[a-z0-9_]{1,50}$/.test(r.category));
|
|
65
|
+
return valid.length > 0 ? { enabled, rules: valid } : null;
|
|
66
|
+
}
|
|
67
|
+
// ── Tool Schema ───────────────────────────────────────────────────
|
|
68
|
+
export function buildGuardianTool(rules) {
|
|
69
|
+
const ruleList = rules
|
|
70
|
+
.map(r => {
|
|
71
|
+
const exampleStr = r.examples?.length
|
|
72
|
+
? ` (e.g. ${r.examples.slice(0, 3).join(', ')})`
|
|
73
|
+
: '';
|
|
74
|
+
return ` - ${r.category}: ${r.description}${exampleStr}`;
|
|
75
|
+
})
|
|
76
|
+
.join('\n');
|
|
77
|
+
const categories = rules.map(r => r.category);
|
|
78
|
+
return {
|
|
79
|
+
name: 'aerostack__local_guardian',
|
|
80
|
+
description: 'IMPORTANT: You MUST call this tool BEFORE performing any of these operations on the local machine:\n' +
|
|
81
|
+
ruleList + '\n\n' +
|
|
82
|
+
'This sends an approval request to the workspace owner via push notification. ' +
|
|
83
|
+
'WAIT for the response before proceeding. If REJECTED, do NOT perform the operation — ' +
|
|
84
|
+
'inform the user that it was blocked and provide the rejection reason. ' +
|
|
85
|
+
'If APPROVED, proceed normally.\n\n' +
|
|
86
|
+
'For operations not listed above but that feel risky or destructive, use category "other".',
|
|
87
|
+
inputSchema: {
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
action: {
|
|
91
|
+
type: 'string',
|
|
92
|
+
description: 'What you are about to do — be specific (e.g. "delete config.old.json", "git push to main", "send email to client@acme.com")',
|
|
93
|
+
},
|
|
94
|
+
category: {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: `Category of the operation. Known categories: ${categories.join(', ')}. Use "other" for anything else that seems risky.`,
|
|
97
|
+
},
|
|
98
|
+
details: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'Additional context — full command, file paths, target environment, recipients, etc.',
|
|
101
|
+
},
|
|
102
|
+
risk_level: {
|
|
103
|
+
type: 'string',
|
|
104
|
+
enum: ['low', 'medium', 'high', 'critical'],
|
|
105
|
+
description: 'Your assessment of the risk level',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
required: ['action', 'category'],
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// ── Instructions ──────────────────────────────────────────────────
|
|
113
|
+
export function buildGuardianInstructions(rules) {
|
|
114
|
+
const ruleLines = rules
|
|
115
|
+
.map(r => `- **${r.category}**: ${r.description}`)
|
|
116
|
+
.join('\n');
|
|
117
|
+
return [
|
|
118
|
+
'',
|
|
119
|
+
'## Local Operation Approval Rules (Enforced by Workspace)',
|
|
120
|
+
'',
|
|
121
|
+
'Before performing any of the following operations on the local machine,',
|
|
122
|
+
'you MUST call the `aerostack__local_guardian` tool and wait for approval.',
|
|
123
|
+
'Do NOT skip this step — the workspace owner requires review for:',
|
|
124
|
+
'',
|
|
125
|
+
ruleLines,
|
|
126
|
+
'',
|
|
127
|
+
'If approval is rejected, do NOT proceed. Inform the user of the rejection reason.',
|
|
128
|
+
'If approval times out, ask the user whether to proceed or wait longer.',
|
|
129
|
+
].join('\n');
|
|
130
|
+
}
|
|
131
|
+
// ── Env-level override ───────────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* Check if Local Guardian is force-disabled via env var.
|
|
134
|
+
* Default: enabled. Set AEROSTACK_LOCAL_GUARDIAN=false to disable
|
|
135
|
+
* regardless of workspace config.
|
|
136
|
+
*/
|
|
137
|
+
export function isGuardianForceDisabled() {
|
|
138
|
+
const val = process.env.AEROSTACK_LOCAL_GUARDIAN?.toLowerCase();
|
|
139
|
+
return val === 'false' || val === '0' || val === 'off';
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=guardian.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardian.js","sourceRoot":"","sources":["../src/guardian.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,8 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
25
25
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
26
26
|
import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
27
27
|
import { resolveApproval } from './resolution.js';
|
|
28
|
-
import { info, error as logError } from './logger.js';
|
|
28
|
+
import { info, warn, error as logError } from './logger.js';
|
|
29
|
+
import { DEFAULT_RULES, buildGuardianTool, parseWorkspaceGuardianConfig, isGuardianForceDisabled, } from './guardian.js';
|
|
29
30
|
// ── Config ─────────────────────────────────────────────────────────
|
|
30
31
|
const WORKSPACE_URL = process.env.AEROSTACK_WORKSPACE_URL;
|
|
31
32
|
const TOKEN = process.env.AEROSTACK_TOKEN;
|
|
@@ -36,6 +37,9 @@ function parsePositiveInt(val, fallback, min) {
|
|
|
36
37
|
const APPROVAL_POLL_INTERVAL_MS = parsePositiveInt(process.env.AEROSTACK_APPROVAL_POLL_MS, 3000, 500);
|
|
37
38
|
const APPROVAL_TIMEOUT_MS = parsePositiveInt(process.env.AEROSTACK_APPROVAL_TIMEOUT_MS, 300000, 5000);
|
|
38
39
|
const REQUEST_TIMEOUT_MS = parsePositiveInt(process.env.AEROSTACK_REQUEST_TIMEOUT_MS, 30000, 1000);
|
|
40
|
+
// ── Local Guardian (resolved after workspace init) ───────────────
|
|
41
|
+
const GUARDIAN_FORCE_DISABLED = isGuardianForceDisabled();
|
|
42
|
+
let guardianTool = null;
|
|
39
43
|
if (!WORKSPACE_URL) {
|
|
40
44
|
process.stderr.write('ERROR: AEROSTACK_WORKSPACE_URL is required\n');
|
|
41
45
|
process.exit(1);
|
|
@@ -75,7 +79,7 @@ async function rpcCall(method, params) {
|
|
|
75
79
|
headers: {
|
|
76
80
|
'Content-Type': 'application/json',
|
|
77
81
|
'Authorization': `Bearer ${TOKEN}`,
|
|
78
|
-
'User-Agent': 'aerostack-openclaw-bridge/0.
|
|
82
|
+
'User-Agent': 'aerostack-openclaw-bridge/0.12.0',
|
|
79
83
|
'X-Agent-Id': 'openclaw',
|
|
80
84
|
},
|
|
81
85
|
body: JSON.stringify(body),
|
|
@@ -118,15 +122,14 @@ function parseSSEResponse(text, requestId) {
|
|
|
118
122
|
// ── Handle tools/call with approval retry ──────────────────────────
|
|
119
123
|
async function callToolWithApproval(name, args) {
|
|
120
124
|
const response = await rpcCall('tools/call', { name, arguments: args });
|
|
121
|
-
//
|
|
125
|
+
// Case 1: Tool gate — server returns -32050 error with approval_id
|
|
122
126
|
if (response.error?.code === -32050) {
|
|
123
127
|
const data = response.error.data;
|
|
124
128
|
const approvalId = data?.approval_id;
|
|
125
129
|
if (!approvalId || !/^[a-zA-Z0-9_-]{4,128}$/.test(approvalId)) {
|
|
126
130
|
return { jsonrpc: '2.0', id: response.id, error: { code: -32603, message: 'Approval required but no approval_id returned' } };
|
|
127
131
|
}
|
|
128
|
-
info('Tool
|
|
129
|
-
// Resolve via WebSocket (primary) or polling (fallback)
|
|
132
|
+
info('Tool gate: waiting for approval', { approvalId, transport: data?.ws_url ? 'ws' : 'poll' });
|
|
130
133
|
const pollUrl = data?.polling_url ?? `${baseUrl}/approval-status/${approvalId}`;
|
|
131
134
|
const result = await resolveApproval({
|
|
132
135
|
approvalId,
|
|
@@ -153,6 +156,37 @@ async function callToolWithApproval(name, args) {
|
|
|
153
156
|
info('Retrying tool call after approval', { approvalId, status: result.status });
|
|
154
157
|
return rpcCall('tools/call', { name, arguments: args });
|
|
155
158
|
}
|
|
159
|
+
// Case 2: Permission gate — request_approval returns success with _meta.approval_id
|
|
160
|
+
const resultObj = response.result;
|
|
161
|
+
const meta = resultObj?._meta;
|
|
162
|
+
if (meta?.approval_id && meta?.status === 'pending') {
|
|
163
|
+
const approvalId = meta.approval_id;
|
|
164
|
+
info('Permission gate: waiting for approval', { approvalId, transport: meta.ws_url ? 'ws' : 'poll' });
|
|
165
|
+
const pollUrl = meta.polling_url ?? `${baseUrl}/approval-status/${approvalId}`;
|
|
166
|
+
const result = await resolveApproval({
|
|
167
|
+
approvalId,
|
|
168
|
+
wsUrl: meta.ws_url,
|
|
169
|
+
pollUrl,
|
|
170
|
+
pollIntervalMs: APPROVAL_POLL_INTERVAL_MS,
|
|
171
|
+
timeoutMs: APPROVAL_TIMEOUT_MS,
|
|
172
|
+
});
|
|
173
|
+
// Return the resolution as a tool result to the LLM
|
|
174
|
+
let message;
|
|
175
|
+
if (result.status === 'approved' || result.status === 'executed') {
|
|
176
|
+
message = `APPROVED — Your request has been approved. You may proceed with the action.`;
|
|
177
|
+
}
|
|
178
|
+
else if (result.status === 'rejected') {
|
|
179
|
+
message = `REJECTED — Your request was denied. Reason: ${result.reviewer_note ?? 'No reason given.'}. Do NOT proceed.`;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
message = `EXPIRED — Your approval request timed out. Submit a new request if needed.`;
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
jsonrpc: '2.0',
|
|
186
|
+
id: response.id,
|
|
187
|
+
result: { content: [{ type: 'text', text: message }] },
|
|
188
|
+
};
|
|
189
|
+
}
|
|
156
190
|
return response;
|
|
157
191
|
}
|
|
158
192
|
// ── MCP Server (stdio) ────────────────────────────────────────────
|
|
@@ -163,7 +197,7 @@ async function ensureInitialized() {
|
|
|
163
197
|
const res = await rpcCall('initialize', {
|
|
164
198
|
protocolVersion: '2024-11-05',
|
|
165
199
|
capabilities: {},
|
|
166
|
-
clientInfo: { name: 'aerostack-openclaw-bridge', version: '0.
|
|
200
|
+
clientInfo: { name: 'aerostack-openclaw-bridge', version: '0.12.0' },
|
|
167
201
|
});
|
|
168
202
|
if (res.result) {
|
|
169
203
|
const r = res.result;
|
|
@@ -171,9 +205,35 @@ async function ensureInitialized() {
|
|
|
171
205
|
protocolVersion: r.protocolVersion ?? '2024-11-05',
|
|
172
206
|
instructions: r.instructions,
|
|
173
207
|
};
|
|
208
|
+
// ── Resolve Local Guardian rules from workspace config ────
|
|
209
|
+
if (!GUARDIAN_FORCE_DISABLED) {
|
|
210
|
+
const wsGuardian = parseWorkspaceGuardianConfig(r);
|
|
211
|
+
let rules;
|
|
212
|
+
if (wsGuardian) {
|
|
213
|
+
// Workspace has custom rules configured in the dashboard
|
|
214
|
+
if (!wsGuardian.enabled) {
|
|
215
|
+
info('Local Guardian: disabled by workspace config');
|
|
216
|
+
guardianTool = null;
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
rules = wsGuardian.rules;
|
|
220
|
+
info('Local Guardian: using workspace rules', {
|
|
221
|
+
count: rules.length,
|
|
222
|
+
categories: rules.map(r => r.category),
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
// No workspace rules — use defaults
|
|
227
|
+
rules = DEFAULT_RULES;
|
|
228
|
+
info('Local Guardian: using default rules (workspace has no custom config)', {
|
|
229
|
+
count: rules.length,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
guardianTool = buildGuardianTool(rules);
|
|
233
|
+
}
|
|
174
234
|
}
|
|
175
235
|
}
|
|
176
|
-
const server = new Server({ name: 'aerostack-openclaw-bridge', version: '0.
|
|
236
|
+
const server = new Server({ name: 'aerostack-openclaw-bridge', version: '0.12.0' }, { capabilities: { tools: {}, resources: {}, prompts: {} } });
|
|
177
237
|
// ── tools/list ─────────────────────────────────────────────────────
|
|
178
238
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
179
239
|
await ensureInitialized();
|
|
@@ -182,12 +242,63 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
182
242
|
throw new Error(res.error.message);
|
|
183
243
|
}
|
|
184
244
|
const result = res.result;
|
|
185
|
-
|
|
245
|
+
const tools = result.tools ?? [];
|
|
246
|
+
// Inject Local Guardian tool — appears alongside workspace tools
|
|
247
|
+
if (guardianTool) {
|
|
248
|
+
tools.push(guardianTool);
|
|
249
|
+
}
|
|
250
|
+
return { tools };
|
|
186
251
|
});
|
|
187
252
|
// ── tools/call ─────────────────────────────────────────────────────
|
|
188
253
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
189
254
|
await ensureInitialized();
|
|
190
255
|
const { name, arguments: args } = request.params;
|
|
256
|
+
// ── Local Guardian interception ───────────────────────────────
|
|
257
|
+
if (name === 'aerostack__local_guardian' && guardianTool) {
|
|
258
|
+
const guardianArgs = (args ?? {});
|
|
259
|
+
if (!guardianArgs.action) {
|
|
260
|
+
return {
|
|
261
|
+
content: [{ type: 'text', text: 'Error: action is required — describe what you are about to do' }],
|
|
262
|
+
isError: true,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
info('Local Guardian: requesting approval', {
|
|
266
|
+
action: guardianArgs.action,
|
|
267
|
+
category: guardianArgs.category,
|
|
268
|
+
});
|
|
269
|
+
// Delegate to the workspace's existing request_approval permission gate
|
|
270
|
+
const approvalArgs = {
|
|
271
|
+
action: `[LOCAL] ${guardianArgs.action}`,
|
|
272
|
+
category: guardianArgs.category ?? 'local_ops',
|
|
273
|
+
details: {
|
|
274
|
+
source: 'local_guardian',
|
|
275
|
+
original_category: guardianArgs.category,
|
|
276
|
+
context: guardianArgs.details,
|
|
277
|
+
},
|
|
278
|
+
risk_level: guardianArgs.risk_level ?? 'medium',
|
|
279
|
+
};
|
|
280
|
+
const res = await callToolWithApproval('aerostack__request_approval', approvalArgs);
|
|
281
|
+
if (res.error) {
|
|
282
|
+
// If workspace has no approval configs, fail open with a clear message
|
|
283
|
+
if (res.error.code === -32601) {
|
|
284
|
+
warn('Local Guardian: no approval rules configured on workspace — allowing action');
|
|
285
|
+
return {
|
|
286
|
+
content: [{
|
|
287
|
+
type: 'text',
|
|
288
|
+
text: 'ALLOWED — No approval rules are configured on this workspace. ' +
|
|
289
|
+
'The workspace owner has not enabled approval gates. You may proceed.',
|
|
290
|
+
}],
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
content: [{ type: 'text', text: `Error: ${res.error.message}` }],
|
|
295
|
+
isError: true,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
const result = res.result;
|
|
299
|
+
return { content: result.content ?? [{ type: 'text', text: JSON.stringify(res.result) }] };
|
|
300
|
+
}
|
|
301
|
+
// ── Normal tool call ──────────────────────────────────────────
|
|
191
302
|
const res = await callToolWithApproval(name, (args ?? {}));
|
|
192
303
|
if (res.error) {
|
|
193
304
|
return {
|
|
@@ -244,6 +355,9 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
|
244
355
|
// ── Start ──────────────────────────────────────────────────────────
|
|
245
356
|
async function main() {
|
|
246
357
|
info('Connecting to workspace', { url: baseUrl });
|
|
358
|
+
if (GUARDIAN_FORCE_DISABLED) {
|
|
359
|
+
info('Local Guardian: force-disabled via AEROSTACK_LOCAL_GUARDIAN env var');
|
|
360
|
+
}
|
|
247
361
|
const transport = new StdioServerTransport();
|
|
248
362
|
await server.connect(transport);
|
|
249
363
|
info('Ready', { url: baseUrl });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|