@melra/policy-core 0.3.0-alpha.10
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/LICENSE +202 -0
- package/README.md +78 -0
- package/dist/index.d.ts +160 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +671 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +482 -0
- package/dist/index.test.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
// Copyright 2026 XAGI Labs Private Limited
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { TaskRequestSchema } from "@melra/protocol";
|
|
5
|
+
import { classifyCommand, classifyOperation, createDefaultPolicy, defaultEvidenceFor, evaluatePolicy, validateApproval, } from "./index.js";
|
|
6
|
+
const root = "/tmp/melra-policy-test";
|
|
7
|
+
describe("local policy", () => {
|
|
8
|
+
it("allows a read-only file operation", () => {
|
|
9
|
+
const request = TaskRequestSchema.parse({
|
|
10
|
+
goal: "Read the changelog",
|
|
11
|
+
operation: { kind: "file", action: "read", path: "CHANGELOG.md" },
|
|
12
|
+
});
|
|
13
|
+
const result = evaluatePolicy("4c5a0130-71a5-4c48-b22d-c7901f12688f", request, createDefaultPolicy(root));
|
|
14
|
+
expect(result.decision.outcome).toBe("allow");
|
|
15
|
+
expect(result.challenge).toBeUndefined();
|
|
16
|
+
});
|
|
17
|
+
it("requires evidence and approval for mutation", () => {
|
|
18
|
+
const missingEvidence = TaskRequestSchema.parse({
|
|
19
|
+
goal: "Write a file",
|
|
20
|
+
operation: {
|
|
21
|
+
kind: "file",
|
|
22
|
+
action: "write",
|
|
23
|
+
path: "result.txt",
|
|
24
|
+
content: "verified",
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
expect(evaluatePolicy("b47dded2-4e20-4d96-a993-fdf6b0034664", missingEvidence, createDefaultPolicy(root)).decision.reason).toBe("mutation_requires_evidence");
|
|
28
|
+
const request = TaskRequestSchema.parse({
|
|
29
|
+
...missingEvidence,
|
|
30
|
+
requiredEvidence: [{ type: "file_exists", path: "result.txt" }],
|
|
31
|
+
});
|
|
32
|
+
const result = evaluatePolicy("b47dded2-4e20-4d96-a993-fdf6b0034664", request, createDefaultPolicy(root));
|
|
33
|
+
expect(result.decision.outcome).toBe("confirm");
|
|
34
|
+
expect(result.challenge?.phrase).toMatch(/^APPROVE [a-f0-9]{12}$/);
|
|
35
|
+
});
|
|
36
|
+
it("denies shells even if added to the allowlist", () => {
|
|
37
|
+
const request = TaskRequestSchema.parse({
|
|
38
|
+
goal: "Run an unrestricted shell",
|
|
39
|
+
operation: {
|
|
40
|
+
kind: "terminal",
|
|
41
|
+
action: "run",
|
|
42
|
+
command: "bash",
|
|
43
|
+
args: ["-lc", "echo unsafe"],
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const policy = createDefaultPolicy(root);
|
|
47
|
+
policy.allowedCommands.push("bash");
|
|
48
|
+
expect(evaluatePolicy("71942756-af2a-407d-806e-73d7bb4fe5d0", request, policy).decision.reason).toBe("command_not_allowlisted");
|
|
49
|
+
});
|
|
50
|
+
it("allows computer inspection but gates input behind evidence and approval", () => {
|
|
51
|
+
const inspect = TaskRequestSchema.parse({
|
|
52
|
+
goal: "Inspect local computer-use support",
|
|
53
|
+
operation: { kind: "computer", action: "capabilities" },
|
|
54
|
+
});
|
|
55
|
+
expect(evaluatePolicy("c4e05bc0-c809-4ba3-a2a4-69102cdcf688", inspect, createDefaultPolicy(root)).decision.outcome).toBe("allow");
|
|
56
|
+
const click = TaskRequestSchema.parse({
|
|
57
|
+
goal: "Click a verified desktop target",
|
|
58
|
+
operation: {
|
|
59
|
+
kind: "computer",
|
|
60
|
+
action: "click",
|
|
61
|
+
coordinateSpace: "normalized",
|
|
62
|
+
x: 0.5,
|
|
63
|
+
y: 0.5,
|
|
64
|
+
},
|
|
65
|
+
requiredEvidence: [
|
|
66
|
+
{ type: "result_equals", path: "success", value: true },
|
|
67
|
+
],
|
|
68
|
+
});
|
|
69
|
+
const decision = evaluatePolicy("1aa2432a-a584-4b3f-b256-9ac3a6887630", click, createDefaultPolicy(root));
|
|
70
|
+
expect(decision.decision.outcome).toBe("confirm");
|
|
71
|
+
expect(decision.decision.risk).toBe("high");
|
|
72
|
+
});
|
|
73
|
+
it("validates the scoped approval phrase", () => {
|
|
74
|
+
const request = TaskRequestSchema.parse({
|
|
75
|
+
goal: "Store a memory",
|
|
76
|
+
operation: {
|
|
77
|
+
kind: "memory",
|
|
78
|
+
action: "put",
|
|
79
|
+
scope: "workspace",
|
|
80
|
+
key: "project",
|
|
81
|
+
value: "MELRA",
|
|
82
|
+
},
|
|
83
|
+
requiredEvidence: [
|
|
84
|
+
{ type: "result_equals", path: "stored", value: true },
|
|
85
|
+
],
|
|
86
|
+
});
|
|
87
|
+
const result = evaluatePolicy("db65d7da-9d59-46a7-86f7-aa1bd205382c", request, createDefaultPolicy(root));
|
|
88
|
+
const challenge = result.challenge;
|
|
89
|
+
expect(challenge).toBeDefined();
|
|
90
|
+
expect(validateApproval(challenge, {
|
|
91
|
+
approvalId: challenge.approvalId,
|
|
92
|
+
phrase: challenge.phrase,
|
|
93
|
+
})).toEqual({ ok: true });
|
|
94
|
+
});
|
|
95
|
+
it("never silently ignores caller constraints or forbidden effects", () => {
|
|
96
|
+
const constrained = TaskRequestSchema.parse({
|
|
97
|
+
goal: "Read with an unenforceable natural-language constraint",
|
|
98
|
+
operation: { kind: "file", action: "read", path: "README.md" },
|
|
99
|
+
constraints: ["only if the file is recent"],
|
|
100
|
+
});
|
|
101
|
+
expect(evaluatePolicy("ae8e57dd-e9f7-4821-82d7-ce50dc896008", constrained, createDefaultPolicy(root)).decision.reason).toBe("freeform_constraints_not_enforceable");
|
|
102
|
+
const forbidden = TaskRequestSchema.parse({
|
|
103
|
+
goal: "Do not permit a mutation",
|
|
104
|
+
operation: {
|
|
105
|
+
kind: "file",
|
|
106
|
+
action: "write",
|
|
107
|
+
path: "result.txt",
|
|
108
|
+
content: "blocked",
|
|
109
|
+
},
|
|
110
|
+
forbiddenEffects: ["mutate"],
|
|
111
|
+
requiredEvidence: [{ type: "file_exists", path: "result.txt" }],
|
|
112
|
+
});
|
|
113
|
+
expect(evaluatePolicy("e299a821-8dbf-4784-8ecf-f79d6812cc64", forbidden, createDefaultPolicy(root)).decision.reason).toBe("effect_forbidden_by_request");
|
|
114
|
+
});
|
|
115
|
+
it("allows a browser navigation with the shipped defaults", () => {
|
|
116
|
+
// Regression: allowedDomains defaulted to [] and denied every navigation
|
|
117
|
+
// out of the box, which is what made browser use unusable on a fresh install.
|
|
118
|
+
const request = TaskRequestSchema.parse({
|
|
119
|
+
goal: "Open a docs page",
|
|
120
|
+
operation: {
|
|
121
|
+
kind: "browser",
|
|
122
|
+
action: "navigate",
|
|
123
|
+
url: "https://example.com/docs",
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
expect(evaluatePolicy("0f9e6d2a-3c41-4b8e-9a77-1d5b8c2e4f60", request, createDefaultPolicy(root)).decision.outcome).toBe("allow");
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe("default evidence", () => {
|
|
130
|
+
it("derives the obvious post-condition per file action", () => {
|
|
131
|
+
expect(defaultEvidenceFor({
|
|
132
|
+
kind: "file",
|
|
133
|
+
action: "write",
|
|
134
|
+
path: "out.txt",
|
|
135
|
+
encoding: "utf8",
|
|
136
|
+
recursive: false,
|
|
137
|
+
})).toEqual([{ type: "file_exists", path: "out.txt" }]);
|
|
138
|
+
expect(defaultEvidenceFor({
|
|
139
|
+
kind: "file",
|
|
140
|
+
action: "delete",
|
|
141
|
+
path: "out.txt",
|
|
142
|
+
encoding: "utf8",
|
|
143
|
+
recursive: false,
|
|
144
|
+
})).toEqual([{ type: "file_absent", path: "out.txt" }]);
|
|
145
|
+
expect(defaultEvidenceFor({
|
|
146
|
+
kind: "file",
|
|
147
|
+
action: "move",
|
|
148
|
+
path: "a.txt",
|
|
149
|
+
destination: "b.txt",
|
|
150
|
+
encoding: "utf8",
|
|
151
|
+
recursive: false,
|
|
152
|
+
})).toEqual([
|
|
153
|
+
{ type: "file_absent", path: "a.txt" },
|
|
154
|
+
{ type: "file_exists", path: "b.txt" },
|
|
155
|
+
]);
|
|
156
|
+
});
|
|
157
|
+
it("derives nothing for a terminal run, so it still denies", () => {
|
|
158
|
+
// The request says nothing about what the command should leave behind, so
|
|
159
|
+
// there is no honest post-condition to synthesize.
|
|
160
|
+
expect(defaultEvidenceFor({
|
|
161
|
+
kind: "terminal",
|
|
162
|
+
action: "run",
|
|
163
|
+
command: "npm",
|
|
164
|
+
args: ["run", "build"],
|
|
165
|
+
interactive: false,
|
|
166
|
+
appendNewline: true,
|
|
167
|
+
timeoutMs: 30_000,
|
|
168
|
+
maxOutputChars: 100_000,
|
|
169
|
+
})).toEqual([]);
|
|
170
|
+
});
|
|
171
|
+
it("derives nothing for a read, which already has a fallback", () => {
|
|
172
|
+
expect(defaultEvidenceFor({
|
|
173
|
+
kind: "file",
|
|
174
|
+
action: "read",
|
|
175
|
+
path: "a.txt",
|
|
176
|
+
encoding: "utf8",
|
|
177
|
+
recursive: false,
|
|
178
|
+
})).toEqual([]);
|
|
179
|
+
});
|
|
180
|
+
it("matches the field each memory action actually reports", () => {
|
|
181
|
+
expect(defaultEvidenceFor({
|
|
182
|
+
kind: "memory",
|
|
183
|
+
action: "put",
|
|
184
|
+
scope: "workspace",
|
|
185
|
+
key: "k",
|
|
186
|
+
value: "v",
|
|
187
|
+
confidence: 1,
|
|
188
|
+
tags: [],
|
|
189
|
+
includeSuperseded: false,
|
|
190
|
+
limit: 20,
|
|
191
|
+
})).toEqual([{ type: "result_equals", path: "stored", value: true }]);
|
|
192
|
+
// `clear` reports a count, not a boolean, so nothing is derivable.
|
|
193
|
+
expect(defaultEvidenceFor({
|
|
194
|
+
kind: "memory",
|
|
195
|
+
action: "clear",
|
|
196
|
+
scope: "workspace",
|
|
197
|
+
confidence: 1,
|
|
198
|
+
tags: [],
|
|
199
|
+
includeSuperseded: false,
|
|
200
|
+
limit: 20,
|
|
201
|
+
})).toEqual([]);
|
|
202
|
+
});
|
|
203
|
+
it("holds a browser mutation to the flag the runtime actually reports", () => {
|
|
204
|
+
// This predicate is only honest because `BrowserRuntime.execute` stamps
|
|
205
|
+
// `success: true` on every result. It did not, so a click with no declared
|
|
206
|
+
// evidence executed, mutated the page, and then verified as `partial`
|
|
207
|
+
// because the derived predicate read a key nobody wrote.
|
|
208
|
+
expect(defaultEvidenceFor({
|
|
209
|
+
kind: "browser",
|
|
210
|
+
action: "click",
|
|
211
|
+
target: { selector: "#go" },
|
|
212
|
+
fullPage: false,
|
|
213
|
+
timeoutMs: 30_000,
|
|
214
|
+
settleQuietMs: 180,
|
|
215
|
+
settleTimeoutMs: 1_500,
|
|
216
|
+
maxChars: 20_000,
|
|
217
|
+
delayMs: 0,
|
|
218
|
+
clearFirst: true,
|
|
219
|
+
pixels: 600,
|
|
220
|
+
})).toEqual([{ type: "result_equals", path: "success", value: true }]);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe("Windows command spellings", () => {
|
|
224
|
+
const plan = (command, args = []) => evaluatePolicy("00000000-0000-4000-8000-000000000000", TaskRequestSchema.parse({
|
|
225
|
+
goal: "Run an allowlisted program",
|
|
226
|
+
operation: { kind: "terminal", action: "run", command, args },
|
|
227
|
+
requiredEvidence: [{ type: "exit_code", value: 0 }],
|
|
228
|
+
}), createDefaultPolicy(root)).decision;
|
|
229
|
+
it("accepts the extension-qualified spelling Windows actually runs", () => {
|
|
230
|
+
// The deadlock this closes: `npm` passed policy but is a `.cmd` shim that
|
|
231
|
+
// cannot be spawned, while `npm.cmd` could be spawned but was denied — so on
|
|
232
|
+
// Windows no spelling of an allowlisted command worked at all.
|
|
233
|
+
expect(plan("npm").reason).not.toBe("command_not_allowlisted");
|
|
234
|
+
expect(plan("npm.cmd").reason).not.toBe("command_not_allowlisted");
|
|
235
|
+
expect(plan("C:\\Program Files\\nodejs\\npm.cmd").reason).not.toBe("command_not_allowlisted");
|
|
236
|
+
});
|
|
237
|
+
it("still denies a shell however it is spelled", () => {
|
|
238
|
+
// Normalisation must apply to the deny list too, or stripping the extension
|
|
239
|
+
// would have turned it into a bypass.
|
|
240
|
+
for (const command of [
|
|
241
|
+
"powershell",
|
|
242
|
+
"powershell.exe",
|
|
243
|
+
"PowerShell.EXE",
|
|
244
|
+
"C:\\Windows\\System32\\cmd.exe",
|
|
245
|
+
"pwsh.exe",
|
|
246
|
+
"/bin/bash",
|
|
247
|
+
]) {
|
|
248
|
+
expect(plan(command).reason).toBe("command_not_allowlisted");
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
it("does not strip a suffix that is merely part of the name", () => {
|
|
252
|
+
// `python3.11` ends in a dot-segment but not an executable suffix.
|
|
253
|
+
expect(plan("python3.11").reason).toBe("command_not_allowlisted");
|
|
254
|
+
});
|
|
255
|
+
it("classifies a Windows-spelled read command without demanding approval", () => {
|
|
256
|
+
expect(plan("git.exe", ["status"]).effect).toBe("read");
|
|
257
|
+
expect(plan("git.exe", ["push"]).effect).toBe("mutate");
|
|
258
|
+
expect(plan("npm.cmd", ["install"]).risk).toBe("high");
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
describe("interactive terminal input", () => {
|
|
262
|
+
const send = (jobId) => evaluatePolicy("00000000-0000-4000-8000-000000000000", TaskRequestSchema.parse({
|
|
263
|
+
goal: "Answer a prompt",
|
|
264
|
+
operation: {
|
|
265
|
+
kind: "terminal",
|
|
266
|
+
action: "send",
|
|
267
|
+
...(jobId === undefined ? {} : { jobId }),
|
|
268
|
+
input: "y",
|
|
269
|
+
},
|
|
270
|
+
// What `defaultEvidenceFor` supplies on the controller's path; spelled
|
|
271
|
+
// out here because `evaluatePolicy` does not derive it.
|
|
272
|
+
requiredEvidence: [{ type: "result_equals", path: "sent", value: true }],
|
|
273
|
+
}), createDefaultPolicy(root));
|
|
274
|
+
it("gates on the job id, since the command was allowlisted at start", () => {
|
|
275
|
+
// `send` carries no command, so the allowlist has nothing to match. Falling
|
|
276
|
+
// through to the command branch would deny every prompt answer outright.
|
|
277
|
+
expect(send().decision.reason).toBe("command_not_allowlisted");
|
|
278
|
+
const decision = send("d1a4c4de-1b0e-4e17-9f4d-2f5c9b6a71e2").decision;
|
|
279
|
+
expect(decision.outcome).toBe("confirm");
|
|
280
|
+
expect(decision.effect).toBe("mutate");
|
|
281
|
+
});
|
|
282
|
+
it("derives the post-condition the runtime actually reports", () => {
|
|
283
|
+
// Without this, a `send` with no declared evidence is denied for missing
|
|
284
|
+
// evidence and interactive commands are unusable through the default path.
|
|
285
|
+
expect(defaultEvidenceFor({
|
|
286
|
+
kind: "terminal",
|
|
287
|
+
action: "send",
|
|
288
|
+
jobId: "d1a4c4de-1b0e-4e17-9f4d-2f5c9b6a71e2",
|
|
289
|
+
input: "y",
|
|
290
|
+
interactive: false,
|
|
291
|
+
appendNewline: true,
|
|
292
|
+
timeoutMs: 30_000,
|
|
293
|
+
maxOutputChars: 100_000,
|
|
294
|
+
})).toEqual([{ type: "result_equals", path: "sent", value: true }]);
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
describe("unhinged mode", () => {
|
|
298
|
+
const unhinged = { ...createDefaultPolicy(root), unhinged: true };
|
|
299
|
+
const plan = (request, policy = unhinged) => evaluatePolicy("00000000-0000-4000-8000-000000000000", TaskRequestSchema.parse(request), policy);
|
|
300
|
+
it("is off unless something explicitly turns it on", () => {
|
|
301
|
+
expect(createDefaultPolicy(root).unhinged).toBe(false);
|
|
302
|
+
});
|
|
303
|
+
it("allows a shell, an unlisted command, and evidence-free destruction", () => {
|
|
304
|
+
for (const operation of [
|
|
305
|
+
{ kind: "terminal", action: "run", command: "bash", args: ["-c", "id"] },
|
|
306
|
+
{ kind: "terminal", action: "run", command: "curl", args: ["example.com"] },
|
|
307
|
+
{ kind: "file", action: "delete", path: "everything" },
|
|
308
|
+
]) {
|
|
309
|
+
const result = plan({ goal: "Do it anyway", operation });
|
|
310
|
+
expect(result.decision.outcome).toBe("allow");
|
|
311
|
+
expect(result.decision.reason).toBe("unhinged_mode_no_guardrails");
|
|
312
|
+
// No challenge means no approval step: nothing to echo back, nothing to
|
|
313
|
+
// expire. That is the whole point of the mode and the whole danger of it.
|
|
314
|
+
expect(result.challenge).toBeUndefined();
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
it("reports the real effect and risk rather than flattening them", () => {
|
|
318
|
+
// Allowing everything is not the same as pretending everything is harmless:
|
|
319
|
+
// the receipt still has to say a destructive operation was destructive.
|
|
320
|
+
const result = plan({
|
|
321
|
+
goal: "Delete it",
|
|
322
|
+
operation: { kind: "file", action: "delete", path: "everything" },
|
|
323
|
+
});
|
|
324
|
+
expect(result.decision.effect).toBe("destructive");
|
|
325
|
+
expect(result.decision.risk).toBe("high");
|
|
326
|
+
});
|
|
327
|
+
it("still honours limits the caller declared on its own request", () => {
|
|
328
|
+
// `forbiddenEffects` and `constraints` are the caller bounding its own task,
|
|
329
|
+
// not MELRA imposing a guardrail, so unhinged mode does not overrule them.
|
|
330
|
+
expect(plan({
|
|
331
|
+
goal: "Delete it",
|
|
332
|
+
operation: { kind: "file", action: "delete", path: "everything" },
|
|
333
|
+
forbiddenEffects: ["destructive"],
|
|
334
|
+
}).decision.reason).toBe("effect_forbidden_by_request");
|
|
335
|
+
expect(plan({
|
|
336
|
+
goal: "Delete it",
|
|
337
|
+
operation: { kind: "file", action: "delete", path: "everything" },
|
|
338
|
+
constraints: ["be careful"],
|
|
339
|
+
}).decision.reason).toBe("freeform_constraints_not_enforceable");
|
|
340
|
+
});
|
|
341
|
+
it("changes nothing for a policy that did not ask for it", () => {
|
|
342
|
+
expect(plan({
|
|
343
|
+
goal: "Run a shell",
|
|
344
|
+
operation: { kind: "terminal", action: "run", command: "bash" },
|
|
345
|
+
requiredEvidence: [{ type: "exit_code", value: 0 }],
|
|
346
|
+
}, createDefaultPolicy(root)).decision.reason).toBe("command_not_allowlisted");
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
describe("capability traits", () => {
|
|
350
|
+
const terminal = (command, args = []) => classifyOperation({
|
|
351
|
+
kind: "terminal",
|
|
352
|
+
action: "run",
|
|
353
|
+
command,
|
|
354
|
+
args,
|
|
355
|
+
env: {},
|
|
356
|
+
timeoutMs: 30_000,
|
|
357
|
+
maxOutputChars: 10_000,
|
|
358
|
+
});
|
|
359
|
+
it("tells a package manager's subcommands apart", () => {
|
|
360
|
+
// The old rule was the command's name alone, so all three of these were
|
|
361
|
+
// high-risk mutations — including the one that only reads.
|
|
362
|
+
expect(terminal("npm", ["ls"]).effect).toBe("read");
|
|
363
|
+
expect(terminal("npm", ["run", "build"])).toMatchObject({
|
|
364
|
+
effect: "mutate",
|
|
365
|
+
risk: "medium",
|
|
366
|
+
traits: [],
|
|
367
|
+
});
|
|
368
|
+
expect(terminal("npm", ["install", "left-pad"])).toMatchObject({
|
|
369
|
+
effect: "mutate",
|
|
370
|
+
risk: "high",
|
|
371
|
+
traits: ["package-install", "network"],
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
it("reads past flags to find the subcommand", () => {
|
|
375
|
+
expect(classifyCommand("npm", ["--silent", "install"]).traits).toContain("package-install");
|
|
376
|
+
expect(classifyCommand("git", ["-c", "core.pager=cat", "push"])).toEqual({
|
|
377
|
+
read: false,
|
|
378
|
+
traits: ["network"],
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
it("marks commands that reach another host", () => {
|
|
382
|
+
expect(classifyCommand("curl", ["https://example.com"]).traits).toEqual([
|
|
383
|
+
"network",
|
|
384
|
+
]);
|
|
385
|
+
expect(classifyCommand("git", ["status"])).toEqual({
|
|
386
|
+
read: true,
|
|
387
|
+
traits: [],
|
|
388
|
+
});
|
|
389
|
+
expect(classifyCommand("npx", ["cowsay"]).traits).toEqual([
|
|
390
|
+
"package-install",
|
|
391
|
+
"network",
|
|
392
|
+
]);
|
|
393
|
+
// Browsing is a network act too, so denying `network` denies it as well.
|
|
394
|
+
expect(classifyOperation({
|
|
395
|
+
kind: "browser",
|
|
396
|
+
action: "navigate",
|
|
397
|
+
url: "https://example.com",
|
|
398
|
+
}).traits).toEqual(["network"]);
|
|
399
|
+
});
|
|
400
|
+
it("refuses a denied trait before the allowlist is consulted", () => {
|
|
401
|
+
const policy = createDefaultPolicy(root);
|
|
402
|
+
policy.deniedTraits = ["package-install"];
|
|
403
|
+
const run = (args) => evaluatePolicy("4c5a0130-71a5-4c48-b22d-c7901f12688f", TaskRequestSchema.parse({
|
|
404
|
+
goal: "Use npm",
|
|
405
|
+
operation: { kind: "terminal", action: "run", command: "npm", args },
|
|
406
|
+
requiredEvidence: [{ type: "exit_code", value: 0 }],
|
|
407
|
+
}), policy).decision;
|
|
408
|
+
// `allowedCommands` matches on the basename, so it cannot express this.
|
|
409
|
+
expect(run(["install", "left-pad"])).toMatchObject({
|
|
410
|
+
outcome: "deny",
|
|
411
|
+
reason: "trait_denied:package-install",
|
|
412
|
+
});
|
|
413
|
+
expect(run(["run", "test"]).outcome).toBe("confirm");
|
|
414
|
+
});
|
|
415
|
+
it("allows a denied trait when there are no guardrails at all", () => {
|
|
416
|
+
const policy = { ...createDefaultPolicy(root), unhinged: true };
|
|
417
|
+
policy.deniedTraits = ["network"];
|
|
418
|
+
expect(evaluatePolicy("4c5a0130-71a5-4c48-b22d-c7901f12688f", TaskRequestSchema.parse({
|
|
419
|
+
goal: "Fetch a page",
|
|
420
|
+
operation: { kind: "browser", action: "navigate", url: "https://example.com" },
|
|
421
|
+
}), policy).decision.reason).toBe("unhinged_mode_no_guardrails");
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
describe("capability grants", () => {
|
|
425
|
+
const taskId = "4c5a0130-71a5-4c48-b22d-c7901f12688f";
|
|
426
|
+
const identity = {
|
|
427
|
+
principal: { kind: "agent", id: "claude-code" },
|
|
428
|
+
onBehalfOf: [
|
|
429
|
+
{ kind: "organization", id: "acme" },
|
|
430
|
+
{ kind: "human", id: "dheeraj" },
|
|
431
|
+
],
|
|
432
|
+
};
|
|
433
|
+
const read = (extra = {}) => TaskRequestSchema.parse({
|
|
434
|
+
goal: "Read the changelog",
|
|
435
|
+
operation: { kind: "file", action: "read", path: "CHANGELOG.md" },
|
|
436
|
+
...extra,
|
|
437
|
+
});
|
|
438
|
+
const grant = (overrides = {}) => ({
|
|
439
|
+
id: "g1",
|
|
440
|
+
capability: "file.*",
|
|
441
|
+
effects: ["read"],
|
|
442
|
+
target: "*",
|
|
443
|
+
principal: "agent:claude-code",
|
|
444
|
+
...overrides,
|
|
445
|
+
});
|
|
446
|
+
const decide = (request, capabilities) => evaluatePolicy(taskId, request, {
|
|
447
|
+
...createDefaultPolicy(root),
|
|
448
|
+
capabilities: capabilities,
|
|
449
|
+
}).decision;
|
|
450
|
+
it("leaves policy alone when no grants are issued", () => {
|
|
451
|
+
expect(decide(read({ identity }), []).outcome).toBe("allow");
|
|
452
|
+
});
|
|
453
|
+
it("denies an effect no grant covers", () => {
|
|
454
|
+
expect(decide(read({ identity }), [grant({ capability: "browser.*" })])).toMatchObject({
|
|
455
|
+
outcome: "deny",
|
|
456
|
+
reason: "capability_not_granted:file.read",
|
|
457
|
+
});
|
|
458
|
+
});
|
|
459
|
+
it("matches the capability, effect, target, and holder", () => {
|
|
460
|
+
expect(decide(read({ identity }), [grant()]).outcome).toBe("allow");
|
|
461
|
+
// Same grant, different holder.
|
|
462
|
+
expect(decide(read({ identity }), [grant({ principal: "agent:other" })]).reason).toBe("capability_not_granted:file.read");
|
|
463
|
+
// Same holder, target outside the grant.
|
|
464
|
+
expect(decide(read({ identity }), [grant({ target: "/elsewhere/*" })]).reason).toBe("capability_not_granted:file.read");
|
|
465
|
+
});
|
|
466
|
+
it("refuses a grant that has expired or names another policy version", () => {
|
|
467
|
+
expect(decide(read({ identity }), [grant({ validUntil: "2020-01-01T00:00:00.000Z" })])).toMatchObject({ outcome: "deny", reason: "capability_expired:g1" });
|
|
468
|
+
expect(decide(read({ identity }), [grant({ policyVersion: "99" })]).reason).toBe("capability_policy_version_mismatch:g1");
|
|
469
|
+
});
|
|
470
|
+
it("falls back to the local principal when the caller declares none", () => {
|
|
471
|
+
expect(decide(read(), [grant({ principal: "agent:local" })]).outcome).toBe("allow");
|
|
472
|
+
expect(decide(read(), [grant()]).reason).toBe("capability_not_granted:file.read");
|
|
473
|
+
});
|
|
474
|
+
it("grants nothing when there are no guardrails at all", () => {
|
|
475
|
+
expect(evaluatePolicy(taskId, read({ identity }), {
|
|
476
|
+
...createDefaultPolicy(root),
|
|
477
|
+
unhinged: true,
|
|
478
|
+
capabilities: [grant({ capability: "browser.*" })],
|
|
479
|
+
}).decision.reason).toBe("unhinged_mode_no_guardrails");
|
|
480
|
+
});
|
|
481
|
+
});
|
|
482
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@melra/policy-core",
|
|
3
|
+
"version": "0.3.0-alpha.10",
|
|
4
|
+
"description": "Policy evaluation and scoped approval primitives for MELRA.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/XAGI-Lab/melra.git",
|
|
9
|
+
"directory": "packages/policy-core"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/XAGI-Lab/melra#readme",
|
|
12
|
+
"bugs": "https://github.com/XAGI-Lab/melra/issues",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@melra/protocol": "0.3.0-alpha.10"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsc -p tsconfig.json",
|
|
28
|
+
"clean": "rm -rf dist",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
31
|
+
}
|
|
32
|
+
}
|