@praxis.guard/auditor-cli 0.0.17 → 0.0.18
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 +5 -1
- package/dist/approval/argv-fingerprint.d.ts +2 -0
- package/dist/approval/argv-fingerprint.d.ts.map +1 -0
- package/dist/approval/argv-fingerprint.js +2 -0
- package/dist/approval/argv-fingerprint.js.map +1 -0
- package/dist/approval/client.d.ts +34 -0
- package/dist/approval/client.d.ts.map +1 -0
- package/dist/approval/client.js +116 -0
- package/dist/approval/client.js.map +1 -0
- package/dist/approval/grant.d.ts +4 -0
- package/dist/approval/grant.d.ts.map +1 -0
- package/dist/approval/grant.js +46 -0
- package/dist/approval/grant.js.map +1 -0
- package/dist/approval/mcp-flow.d.ts +36 -0
- package/dist/approval/mcp-flow.d.ts.map +1 -0
- package/dist/approval/mcp-flow.js +100 -0
- package/dist/approval/mcp-flow.js.map +1 -0
- package/dist/approval/redeem.d.ts +19 -0
- package/dist/approval/redeem.d.ts.map +1 -0
- package/dist/approval/redeem.js +50 -0
- package/dist/approval/redeem.js.map +1 -0
- package/dist/approval/types.d.ts +42 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +2 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/bridge/shell-approval-bridge.d.ts +1 -1
- package/dist/bridge/shell-approval-bridge.d.ts.map +1 -1
- package/dist/bridge/shell-approval-bridge.js +1 -1
- package/dist/bridge/shell-approval-bridge.js.map +1 -1
- package/dist/cli/approvals.d.ts +2 -0
- package/dist/cli/approvals.d.ts.map +1 -0
- package/dist/cli/approvals.js +78 -0
- package/dist/cli/approvals.js.map +1 -0
- package/dist/cli/cursor-config.d.ts +5 -0
- package/dist/cli/cursor-config.d.ts.map +1 -1
- package/dist/cli/cursor-config.js +118 -13
- package/dist/cli/cursor-config.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +19 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/setup-doctor.d.ts.map +1 -1
- package/dist/cli/setup-doctor.js +57 -7
- package/dist/cli/setup-doctor.js.map +1 -1
- package/dist/hooks/run-before-shell.d.ts.map +1 -1
- package/dist/hooks/run-before-shell.js +6 -2
- package/dist/hooks/run-before-shell.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +207 -142
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp/server.js
CHANGED
|
@@ -5,13 +5,20 @@ import { v4 as uuidv4 } from "uuid";
|
|
|
5
5
|
import { loadPoliciesV1, readPoliciesV1Revision } from "../policy/index.js";
|
|
6
6
|
import { resolveGuardToken } from "../cli/credentials.js";
|
|
7
7
|
import { getInstallId } from "../cli/install-id.js";
|
|
8
|
-
import {
|
|
8
|
+
import { resolveMutateApproval } from "../approval/mcp-flow.js";
|
|
9
9
|
import { evaluateMcpProposal, evaluateShellProposal, parseCommandToArgv, } from "../shell/evaluate.js";
|
|
10
10
|
import { sendGuardEvent } from "../telemetry/guard-events.js";
|
|
11
11
|
import { resolveGuardAuditStatus } from "./guard-audit-status.js";
|
|
12
12
|
import { AUDITOR_CLI_VERSION } from "../runtime/version.js";
|
|
13
|
+
import { prodFunctionUrl } from "../cli/function-url.js";
|
|
13
14
|
const GuardModeSchema = z.enum(["shadow", "enforce"]);
|
|
14
15
|
const ProposalKindSchema = z.enum(["shell", "mcp"]);
|
|
16
|
+
const ApprovalContextSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
request_id: z.string().nullable().optional(),
|
|
19
|
+
grant: z.string().nullable().optional(),
|
|
20
|
+
})
|
|
21
|
+
.optional();
|
|
15
22
|
const GuardInputSchema = z.object({
|
|
16
23
|
mode: GuardModeSchema,
|
|
17
24
|
proposal: z.object({
|
|
@@ -28,7 +35,8 @@ const GuardInputSchema = z.object({
|
|
|
28
35
|
agent_id: z.string().optional(),
|
|
29
36
|
user_id: z.string().optional(),
|
|
30
37
|
environment: z.string().optional(),
|
|
31
|
-
approval:
|
|
38
|
+
approval: ApprovalContextSchema,
|
|
39
|
+
wait_ms: z.number().int().nonnegative().optional(),
|
|
32
40
|
})
|
|
33
41
|
.optional(),
|
|
34
42
|
});
|
|
@@ -39,19 +47,6 @@ function tierToDecision(tier) {
|
|
|
39
47
|
return "require_approval";
|
|
40
48
|
return "block";
|
|
41
49
|
}
|
|
42
|
-
function argvFingerprint(argv) {
|
|
43
|
-
return JSON.stringify(argv);
|
|
44
|
-
}
|
|
45
|
-
/** One-time tokens from prior `require_approval` (same Node process). Not persisted. */
|
|
46
|
-
const pendingApprovalByToken = new Map();
|
|
47
|
-
function pruneExpiredApprovals() {
|
|
48
|
-
const now = Date.now();
|
|
49
|
-
for (const [token, row] of pendingApprovalByToken) {
|
|
50
|
-
if (now > row.expiresAt)
|
|
51
|
-
pendingApprovalByToken.delete(token);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
import { prodFunctionUrl } from "../cli/function-url.js";
|
|
55
50
|
const DEFAULT_HEARTBEAT_URL = prodFunctionUrl("guardHeartbeat");
|
|
56
51
|
const HEARTBEAT_BASE_INTERVAL_MS = 5 * 60 * 1000;
|
|
57
52
|
const HEARTBEAT_MAX_INTERVAL_MS = 30 * 60 * 1000;
|
|
@@ -109,149 +104,219 @@ async function sendGuardHeartbeat() {
|
|
|
109
104
|
process.stderr.write(`[auditor:mcp] heartbeat error: ${msg}\n`);
|
|
110
105
|
}
|
|
111
106
|
}
|
|
112
|
-
function
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
107
|
+
async function evaluateGuard(input, policyState) {
|
|
108
|
+
const startedAt = performance.now();
|
|
109
|
+
const event_id = uuidv4();
|
|
110
|
+
resetHeartbeatIdle();
|
|
111
|
+
const argv = input.proposal.raw_command
|
|
112
|
+
? parseCommandToArgv(input.proposal.raw_command)
|
|
113
|
+
: input.proposal.argv;
|
|
114
|
+
const { skipped, evaluation } = input.proposal.kind === "shell"
|
|
115
|
+
? evaluateShellProposal(policyState.policy, argv)
|
|
116
|
+
: evaluateMcpProposal(policyState.policy, argv);
|
|
117
|
+
const tier = evaluation.tier;
|
|
118
|
+
const reasons = [...evaluation.reasons];
|
|
119
|
+
let decision;
|
|
120
|
+
let approvalBlock = {
|
|
121
|
+
required: false,
|
|
122
|
+
request_id: null,
|
|
123
|
+
expires_at: null,
|
|
124
|
+
open_url: null,
|
|
125
|
+
instructions: null,
|
|
126
|
+
redeemed: false,
|
|
127
|
+
approved_by: null,
|
|
128
|
+
};
|
|
129
|
+
let approvalRequestId = null;
|
|
130
|
+
if (skipped) {
|
|
131
|
+
decision = "allow";
|
|
132
|
+
}
|
|
133
|
+
else if (tier === "DESTRUCTIVE") {
|
|
134
|
+
decision = "block";
|
|
135
|
+
approvalBlock.instructions =
|
|
136
|
+
"DESTRUCTIVE actions cannot be approved via guard. Escalate outside the agent loop.";
|
|
137
|
+
}
|
|
138
|
+
else if (tier === "READ") {
|
|
139
|
+
decision = "allow";
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const hasToken = Boolean(resolveGuardToken());
|
|
143
|
+
if (!hasToken) {
|
|
144
|
+
decision = "require_approval";
|
|
145
|
+
approvalBlock = {
|
|
146
|
+
required: true,
|
|
147
|
+
request_id: null,
|
|
148
|
+
expires_at: null,
|
|
149
|
+
open_url: null,
|
|
150
|
+
instructions: "MUTATE requires human approval. Run `auditor login` (or set PRAXIS_GUARD_TOKEN), then call guard again.",
|
|
151
|
+
redeemed: false,
|
|
152
|
+
approved_by: null,
|
|
153
|
+
};
|
|
154
|
+
reasons.push({
|
|
155
|
+
code: "approval_backend_unavailable",
|
|
156
|
+
message: "No guard token; cannot create approval request.",
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const outcome = await resolveMutateApproval({
|
|
161
|
+
argv,
|
|
162
|
+
proposalKind: input.proposal.kind,
|
|
163
|
+
cwd: input.proposal.cwd,
|
|
164
|
+
rawDisplay: input.proposal.raw_command ?? argv.join(" "),
|
|
165
|
+
eventId: event_id,
|
|
166
|
+
policyRevision: policyState.policyRevision,
|
|
167
|
+
reasons,
|
|
168
|
+
sessionId: input.context?.session_id ?? null,
|
|
169
|
+
environment: input.context?.environment ?? null,
|
|
170
|
+
approval: input.context?.approval ?? null,
|
|
171
|
+
waitMs: input.context?.wait_ms ?? null,
|
|
172
|
+
});
|
|
173
|
+
if (outcome.kind === "allow") {
|
|
174
|
+
decision = "allow";
|
|
175
|
+
approvalRequestId = outcome.request_id;
|
|
176
|
+
approvalBlock = {
|
|
177
|
+
required: false,
|
|
178
|
+
request_id: outcome.request_id,
|
|
179
|
+
expires_at: null,
|
|
180
|
+
open_url: null,
|
|
181
|
+
instructions: "Approval redeemed; shell/MCP bridge recorded when applicable.",
|
|
182
|
+
redeemed: outcome.redeemed,
|
|
183
|
+
approved_by: outcome.approved_by,
|
|
184
|
+
};
|
|
185
|
+
if (outcome.bridgeRecorded) {
|
|
186
|
+
reasons.push({
|
|
187
|
+
code: "shell_bridge_recorded",
|
|
188
|
+
message: "Recorded one-shot approval bridge for hooks (same argv within TTL).",
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
reasons.push({
|
|
193
|
+
code: "shell_bridge_record_failed",
|
|
194
|
+
message: "Grant redeemed but bridge file was not written.",
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else if (outcome.kind === "require_approval") {
|
|
199
|
+
decision = "require_approval";
|
|
200
|
+
approvalRequestId = outcome.request_id;
|
|
201
|
+
approvalBlock = {
|
|
202
|
+
required: true,
|
|
203
|
+
request_id: outcome.request_id,
|
|
204
|
+
expires_at: outcome.expires_at,
|
|
205
|
+
open_url: outcome.open_url,
|
|
206
|
+
instructions: "Human must approve in the Praxis app (or dev: `auditor approvals approve <id>`). Re-call guard with context.approval.request_id, or use guard_wait.",
|
|
207
|
+
redeemed: false,
|
|
208
|
+
approved_by: null,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
decision = "require_approval";
|
|
213
|
+
approvalBlock = {
|
|
214
|
+
required: true,
|
|
215
|
+
request_id: input.context?.approval?.request_id ?? null,
|
|
216
|
+
expires_at: null,
|
|
217
|
+
open_url: null,
|
|
218
|
+
instructions: `Approval backend error: ${outcome.message}. Hooks will deny MUTATE until resolved.`,
|
|
219
|
+
redeemed: false,
|
|
220
|
+
approved_by: null,
|
|
221
|
+
};
|
|
222
|
+
reasons.push({
|
|
223
|
+
code: "approval_backend_unavailable",
|
|
224
|
+
message: outcome.message,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
120
228
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
229
|
+
const response = {
|
|
230
|
+
decision,
|
|
231
|
+
skipped,
|
|
232
|
+
tier,
|
|
233
|
+
risk_score: skipped ? 0 : tier === "READ" ? 0 : tier === "MUTATE" ? 60 : 95,
|
|
234
|
+
reasons,
|
|
235
|
+
shadow: {
|
|
236
|
+
decision,
|
|
237
|
+
tier,
|
|
238
|
+
reasons: [],
|
|
239
|
+
},
|
|
240
|
+
approval: approvalBlock,
|
|
241
|
+
audit: {
|
|
242
|
+
event_id,
|
|
243
|
+
timestamp: new Date().toISOString(),
|
|
244
|
+
latency_ms: performance.now() - startedAt,
|
|
245
|
+
},
|
|
246
|
+
execution: {
|
|
247
|
+
attempted: false,
|
|
248
|
+
result: null,
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
const firstReason = reasons.find((r) => typeof r?.message === "string")?.message ??
|
|
252
|
+
reasons.find((r) => typeof r?.code === "string")?.code ??
|
|
253
|
+
null;
|
|
254
|
+
const actionVerb = argv[1] ?? null;
|
|
255
|
+
const actionResource = argv.length > 2 ? argv.slice(2).join(" ") : null;
|
|
256
|
+
const status = resolveGuardAuditStatus({ skipped, decision });
|
|
257
|
+
void sendGuardEvent({
|
|
258
|
+
ts: new Date().toISOString(),
|
|
259
|
+
status,
|
|
260
|
+
skipped,
|
|
261
|
+
...(skipped
|
|
262
|
+
? {
|
|
263
|
+
skip_reason: input.proposal.kind === "shell" ? "ungoverned_shell_tool" : "mcp_policy_unmatched",
|
|
264
|
+
}
|
|
265
|
+
: {}),
|
|
266
|
+
tool: "auditor-mcp",
|
|
267
|
+
command_path: argv[0] ?? null,
|
|
268
|
+
verb: actionVerb,
|
|
269
|
+
resource: actionResource,
|
|
270
|
+
reason: firstReason,
|
|
271
|
+
cmd: argv.join(" "),
|
|
272
|
+
tier,
|
|
273
|
+
decision,
|
|
274
|
+
latency_ms: performance.now() - startedAt,
|
|
275
|
+
event_id,
|
|
276
|
+
installId: getInstallId(),
|
|
277
|
+
kind: input.proposal.kind,
|
|
278
|
+
...(policyState.policyRevision !== null
|
|
279
|
+
? { policy_revision: policyState.policyRevision }
|
|
280
|
+
: {}),
|
|
281
|
+
...(approvalRequestId ? { approval_request_id: approvalRequestId } : {}),
|
|
282
|
+
});
|
|
283
|
+
return { response, startedAt };
|
|
125
284
|
}
|
|
126
285
|
/** Start the Praxis `guard` MCP server on stdio (blocks until disconnect). */
|
|
127
286
|
export async function runMcpStdioServer() {
|
|
128
|
-
const
|
|
129
|
-
|
|
287
|
+
const policyState = {
|
|
288
|
+
policy: await loadPoliciesV1(),
|
|
289
|
+
policyRevision: await readPoliciesV1Revision(),
|
|
290
|
+
};
|
|
130
291
|
await sendGuardHeartbeat();
|
|
131
292
|
scheduleNextHeartbeat();
|
|
132
293
|
const server = new McpServer({
|
|
133
294
|
name: "praxis-guard",
|
|
134
295
|
version: AUDITOR_CLI_VERSION,
|
|
135
296
|
});
|
|
297
|
+
const runTool = async (input) => {
|
|
298
|
+
const { response } = await evaluateGuard(input, policyState);
|
|
299
|
+
return {
|
|
300
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
|
|
301
|
+
};
|
|
302
|
+
};
|
|
136
303
|
server.registerTool("guard", {
|
|
137
304
|
description: "Policy gatekeeper for agent actions. Evaluates a proposal argv against policies.v1.json; returns allow/block/require_approval with reasons.",
|
|
138
305
|
inputSchema: GuardInputSchema,
|
|
306
|
+
}, runTool);
|
|
307
|
+
server.registerTool("guard_wait", {
|
|
308
|
+
description: "Poll until a MUTATE approval request is approved, redeem grant, and record the shell/MCP bridge. Set context.wait_ms (e.g. 120000) and context.approval.request_id.",
|
|
309
|
+
inputSchema: GuardInputSchema,
|
|
139
310
|
}, async (input) => {
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
: input.proposal.argv;
|
|
147
|
-
const { skipped, evaluation } = input.proposal.kind === "shell"
|
|
148
|
-
? evaluateShellProposal(policy, argv)
|
|
149
|
-
: evaluateMcpProposal(policy, argv);
|
|
150
|
-
const tier = evaluation.tier;
|
|
151
|
-
const reasons = [...evaluation.reasons];
|
|
152
|
-
const fingerprint = argvFingerprint(argv);
|
|
153
|
-
const submittedToken = input.context?.approval?.token ?? null;
|
|
154
|
-
const redeemed = !skipped && tryRedeemApprovalToken(submittedToken, fingerprint, tier);
|
|
155
|
-
if (redeemed) {
|
|
156
|
-
reasons.push({
|
|
157
|
-
code: "approval_redeemed",
|
|
158
|
-
message: "context.approval.token matched a pending approval for this argv; allowing once.",
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
let decision;
|
|
162
|
-
if (skipped || redeemed)
|
|
163
|
-
decision = "allow";
|
|
164
|
-
else if (tier === "DESTRUCTIVE")
|
|
165
|
-
decision = "block";
|
|
166
|
-
else
|
|
167
|
-
decision = tierToDecision(tier);
|
|
168
|
-
const issueToken = decision === "require_approval";
|
|
169
|
-
const newToken = issueToken ? `apr_${event_id}` : null;
|
|
170
|
-
if (issueToken && newToken) {
|
|
171
|
-
pendingApprovalByToken.set(newToken, {
|
|
172
|
-
fingerprint,
|
|
173
|
-
expiresAt: Date.now() + 10 * 60 * 1000,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
const response = {
|
|
177
|
-
decision,
|
|
178
|
-
skipped,
|
|
179
|
-
tier,
|
|
180
|
-
risk_score: skipped ? 0 : tier === "READ" ? 0 : tier === "MUTATE" ? 60 : 95,
|
|
181
|
-
reasons,
|
|
182
|
-
shadow: {
|
|
183
|
-
decision,
|
|
184
|
-
tier,
|
|
185
|
-
reasons: [],
|
|
186
|
-
},
|
|
187
|
-
approval: {
|
|
188
|
-
required: decision === "require_approval",
|
|
189
|
-
token: newToken,
|
|
190
|
-
expires_at: issueToken ? new Date(Date.now() + 10 * 60 * 1000).toISOString() : null,
|
|
191
|
-
instructions: decision === "require_approval"
|
|
192
|
-
? "Re-run the same proposal with context.approval.token set to the token value above (MUTATE only; DESTRUCTIVE cannot be approved this way)."
|
|
193
|
-
: redeemed
|
|
194
|
-
? "Token consumed; this argv is cleared for one execution."
|
|
195
|
-
: null,
|
|
196
|
-
},
|
|
197
|
-
audit: {
|
|
198
|
-
event_id,
|
|
199
|
-
timestamp: new Date().toISOString(),
|
|
200
|
-
latency_ms: performance.now() - startedAt,
|
|
201
|
-
},
|
|
202
|
-
execution: {
|
|
203
|
-
attempted: false,
|
|
204
|
-
result: null,
|
|
311
|
+
const waitMs = input.context?.wait_ms ?? 120_000;
|
|
312
|
+
const withWait = {
|
|
313
|
+
...input,
|
|
314
|
+
context: {
|
|
315
|
+
...input.context,
|
|
316
|
+
wait_ms: waitMs,
|
|
205
317
|
},
|
|
206
318
|
};
|
|
207
|
-
|
|
208
|
-
reasons.find((r) => typeof r?.code === "string")?.code ??
|
|
209
|
-
null;
|
|
210
|
-
const actionVerb = argv[1] ?? null;
|
|
211
|
-
const actionResource = argv.length > 2 ? argv.slice(2).join(" ") : null;
|
|
212
|
-
const status = resolveGuardAuditStatus({ skipped, decision });
|
|
213
|
-
void sendGuardEvent({
|
|
214
|
-
ts: new Date().toISOString(),
|
|
215
|
-
status,
|
|
216
|
-
skipped,
|
|
217
|
-
...(skipped
|
|
218
|
-
? {
|
|
219
|
-
skip_reason: input.proposal.kind === "shell" ? "ungoverned_shell_tool" : "mcp_policy_unmatched",
|
|
220
|
-
}
|
|
221
|
-
: {}),
|
|
222
|
-
tool: "auditor-mcp",
|
|
223
|
-
command_path: argv[0] ?? null,
|
|
224
|
-
verb: actionVerb,
|
|
225
|
-
resource: actionResource,
|
|
226
|
-
reason: firstReason,
|
|
227
|
-
cmd: argv.join(" "),
|
|
228
|
-
tier,
|
|
229
|
-
decision,
|
|
230
|
-
latency_ms: performance.now() - startedAt,
|
|
231
|
-
event_id,
|
|
232
|
-
installId: getInstallId(),
|
|
233
|
-
kind: input.proposal.kind,
|
|
234
|
-
...(policyRevision !== null ? { policy_revision: policyRevision } : {}),
|
|
235
|
-
});
|
|
236
|
-
if (input.proposal.kind === "shell" &&
|
|
237
|
-
shouldRecordShellBridge({ decision, skipped, tier })) {
|
|
238
|
-
try {
|
|
239
|
-
await recordShellApprovalBridge(argv, { cwd: input.proposal.cwd });
|
|
240
|
-
reasons.push({
|
|
241
|
-
code: "shell_bridge_recorded",
|
|
242
|
-
message: "Recorded one-shot shell approval bridge for beforeShellExecution (same argv within TTL).",
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
catch {
|
|
246
|
-
reasons.push({
|
|
247
|
-
code: "shell_bridge_record_failed",
|
|
248
|
-
message: "Could not write shell approval bridge file; hook may still deny MUTATE.",
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
return {
|
|
253
|
-
content: [{ type: "text", text: JSON.stringify(response, null, 2) }],
|
|
254
|
-
};
|
|
319
|
+
return runTool(withWait);
|
|
255
320
|
});
|
|
256
321
|
const transport = new StdioServerTransport();
|
|
257
322
|
await server.connect(transport);
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAa,MAAM,oBAAoB,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|