@melra/policy-core 0.3.0-alpha.4 → 0.3.0-alpha.6
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 +78 -0
- package/dist/index.d.ts +112 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +311 -52
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +224 -1
- package/dist/index.test.js.map +1 -1
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# @melra/policy-core
|
|
2
|
+
|
|
3
|
+
Policy evaluation and scoped approval primitives for
|
|
4
|
+
[MELRA](https://github.com/XAGI-Lab/melra). Decides allow, deny, or confirm for
|
|
5
|
+
a typed operation before any adapter runs, and issues and validates the
|
|
6
|
+
task-scoped approval challenges that gate mutations.
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install @melra/policy-core
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { createDefaultPolicy, evaluatePolicy } from "@melra/policy-core";
|
|
14
|
+
|
|
15
|
+
const policy = createDefaultPolicy(process.cwd());
|
|
16
|
+
const { decision, challenge } = evaluatePolicy(taskId, request, policy);
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
An `allow` runs. A `confirm` returns a `challenge` whose exact phrase must be
|
|
20
|
+
echoed back before execution, bound to the task and to a digest of the operation
|
|
21
|
+
— so a plan cannot be swapped for a different action after approval. A `deny`
|
|
22
|
+
never reaches a runtime.
|
|
23
|
+
|
|
24
|
+
## Defaults worth knowing
|
|
25
|
+
|
|
26
|
+
- A non-empty `constraints` array is denied. Freeform prose is not enforceable,
|
|
27
|
+
so the honest answer is to refuse rather than pretend it was applied.
|
|
28
|
+
- Any non-`read` effect with no `requiredEvidence` is denied. A mutation nobody
|
|
29
|
+
can check is not a mutation worth running.
|
|
30
|
+
- Terminal commands must be allowlisted by basename. Shell interpreters and
|
|
31
|
+
`sudo`/`su` are denied unconditionally. `git` counts as a read only for a small
|
|
32
|
+
read-only subcommand set; `npm`, `npx`, and `pnpm` are high-risk mutations.
|
|
33
|
+
- Browser destinations default to `allowedDomains: ["*"]` with localhost allowed,
|
|
34
|
+
because the allowlist is a narrowing control, not the safety boundary — the
|
|
35
|
+
browser runtime independently blocks private and metadata destinations.
|
|
36
|
+
- `classifyOperation` is the single place effect and risk are decided. An action
|
|
37
|
+
that is not classified there is mis-classified, not unclassified.
|
|
38
|
+
|
|
39
|
+
## Capability grants
|
|
40
|
+
|
|
41
|
+
`policy.capabilities` is authority; everything above is rules. It is empty by
|
|
42
|
+
default and changes nothing when it is. A non-empty list is a closed world,
|
|
43
|
+
checked before any allowlist — because an allowlist describes what a grant
|
|
44
|
+
holder may do, not whether they hold one.
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { createDefaultPolicy, type LocalPolicy } from "@melra/policy-core";
|
|
48
|
+
|
|
49
|
+
const policy: LocalPolicy = {
|
|
50
|
+
...createDefaultPolicy(process.cwd()),
|
|
51
|
+
capabilities: [
|
|
52
|
+
{
|
|
53
|
+
id: "build-writes",
|
|
54
|
+
capability: "file.*",
|
|
55
|
+
effects: ["read", "mutate"],
|
|
56
|
+
target: "*/build/*",
|
|
57
|
+
principal: "agent:ci-runner",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`capability` and `target` are matched against what `classifyOperation` reported,
|
|
64
|
+
with `*` standing for any run of characters. `principal` is matched against
|
|
65
|
+
`request.identity.principal` written `kind:id`; a request that declares no
|
|
66
|
+
identity is `agent:local`. An effect with no matching grant is denied
|
|
67
|
+
`capability_not_granted`, an expired one `capability_expired`, and one issued
|
|
68
|
+
against a superseded `policyVersion` is refused rather than reinterpreted under
|
|
69
|
+
rules it was not written for.
|
|
70
|
+
|
|
71
|
+
`unhinged: true` short-circuits evaluation to `allow` — but only after the
|
|
72
|
+
caller's own `forbiddenEffects` and `constraints` are honoured, because those are
|
|
73
|
+
the caller bounding its own task rather than a guardrail MELRA imposes.
|
|
74
|
+
|
|
75
|
+
Requires Node.js 22 or newer. Full documentation:
|
|
76
|
+
[github.com/XAGI-Lab/melra](https://github.com/XAGI-Lab/melra)
|
|
77
|
+
|
|
78
|
+
Apache-2.0
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,119 @@
|
|
|
1
|
-
import type { ApprovalChallenge, ApprovalResponse, Effect, EvidencePredicate, Operation, PolicyDecision, Risk, TaskRequest } from "@melra/protocol";
|
|
1
|
+
import type { ApprovalChallenge, ApprovalResponse, CapabilityGrant, CapabilityTrait, Effect, EvidencePredicate, Identity, Operation, PolicyDecision, Risk, TaskRequest } from "@melra/protocol";
|
|
2
2
|
export interface LocalPolicy {
|
|
3
3
|
version: string;
|
|
4
4
|
workspaceRoot: string;
|
|
5
5
|
allowedCommands: string[];
|
|
6
6
|
allowedDomains: string[];
|
|
7
7
|
allowLocalhost: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* What to do with a window a page opens by itself.
|
|
10
|
+
*
|
|
11
|
+
* `"block"` closes it and reports it on the action that provoked it, which is
|
|
12
|
+
* the honest default for an unattended agent: a popup nobody asked for is the
|
|
13
|
+
* page deciding what the caller looks at next. `"allow"` keeps it as an
|
|
14
|
+
* addressable tab. Either way it is reported — this governs whether it stays,
|
|
15
|
+
* not whether the caller is told. `assertSafeUrl` still governs where it may
|
|
16
|
+
* load from.
|
|
17
|
+
*/
|
|
18
|
+
popups: "allow" | "block";
|
|
8
19
|
mutations: "deny" | "confirm";
|
|
9
20
|
approvalTtlMs: number;
|
|
10
21
|
maxFileBytes: number;
|
|
22
|
+
/**
|
|
23
|
+
* How long unreachable memory rows are kept before compaction reclaims them,
|
|
24
|
+
* and an optional hard ceiling on live memories per scope.
|
|
25
|
+
*
|
|
26
|
+
* `maxPerScope: 0` means no ceiling, which is the default: evicting a live
|
|
27
|
+
* memory throws away something the caller stored and can still read, so it
|
|
28
|
+
* is opt-in. Expired and superseded rows are reclaimed regardless — no read
|
|
29
|
+
* path can return them.
|
|
30
|
+
*/
|
|
31
|
+
memoryRetention: {
|
|
32
|
+
maxAgeDays: number;
|
|
33
|
+
maxPerScope: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Traits an operation may not carry. Empty by default — the shipped policy
|
|
37
|
+
* still confirms every mutation, so nothing runs unattended, and denying
|
|
38
|
+
* installs or the network outright is a choice only some installs want.
|
|
39
|
+
*
|
|
40
|
+
* `["package-install"]` lets a task run `npm test` but not `npm install`,
|
|
41
|
+
* which `allowedCommands` cannot express because it matches on the basename.
|
|
42
|
+
* `["network"]` refuses anything that reaches another host, browsing
|
|
43
|
+
* included.
|
|
44
|
+
*/
|
|
45
|
+
deniedTraits: CapabilityTrait[];
|
|
46
|
+
/**
|
|
47
|
+
* Bounded authority the operator has issued, matched against the effect and
|
|
48
|
+
* the immediate principal before any allowlist is consulted.
|
|
49
|
+
*
|
|
50
|
+
* Empty by default, which means no capability narrowing: policy behaves as it
|
|
51
|
+
* always has. A non-empty list is a closed world — an effect with no matching
|
|
52
|
+
* grant is denied with `capability_not_granted`. This is how a caller ends up
|
|
53
|
+
* holding authority over one directory rather than over the whole workspace.
|
|
54
|
+
*/
|
|
55
|
+
capabilities: CapabilityGrant[];
|
|
56
|
+
/**
|
|
57
|
+
* Stops a task from re-running an operation whose target keeps failing.
|
|
58
|
+
*
|
|
59
|
+
* A retry inside one task only covers a transient blip; nothing carried the
|
|
60
|
+
* knowledge that the last three tasks against this same file, host, or command
|
|
61
|
+
* all failed, so a workflow would keep spending its budget rediscovering it.
|
|
62
|
+
* After `threshold` consecutive failures against one target, the next task
|
|
63
|
+
* touching it fails immediately with `circuit_open:<target>` until
|
|
64
|
+
* `cooldownMs` has passed; the first task after the cooldown is the trial, and
|
|
65
|
+
* one success clears the count. `threshold: 0` switches it off.
|
|
66
|
+
*/
|
|
67
|
+
circuitBreaker: {
|
|
68
|
+
threshold: number;
|
|
69
|
+
cooldownMs: number;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Switches off every guardrail this policy exists to apply: allowlists,
|
|
73
|
+
* evidence requirements, approval challenges, and — through the runtimes
|
|
74
|
+
* constructed from this policy — workspace confinement and the browser's
|
|
75
|
+
* private-destination block.
|
|
76
|
+
*
|
|
77
|
+
* Off unless the operator asks for it twice, once through `MELRA_UNHINGED=1`
|
|
78
|
+
* or `--unhinged` and once by accepting the banner the CLI prints. Nothing
|
|
79
|
+
* derives it from another setting.
|
|
80
|
+
*/
|
|
81
|
+
unhinged: boolean;
|
|
11
82
|
}
|
|
12
83
|
export interface PolicyEvaluation {
|
|
13
84
|
decision: PolicyDecision;
|
|
14
85
|
challenge?: ApprovalChallenge;
|
|
15
86
|
}
|
|
16
87
|
export declare function normalizeCommandName(command: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* What an operation does beyond changing local state, named so a policy can
|
|
90
|
+
* refuse it.
|
|
91
|
+
*
|
|
92
|
+
* `effect` answers "does this write" and `risk` answers "how badly could it
|
|
93
|
+
* go", but neither distinguishes `npm test` from `npm install left-pad`, and
|
|
94
|
+
* `allowedCommands` matches on the basename so it cannot either. An operator
|
|
95
|
+
* who wants a package manager for its scripts but not for fetching code from
|
|
96
|
+
* a registry had no way to say so. Traits are that missing axis.
|
|
97
|
+
*
|
|
98
|
+
* - `package-install` — resolves and installs third-party code, which is the
|
|
99
|
+
* one terminal action that can add executable content the operator never
|
|
100
|
+
* reviewed.
|
|
101
|
+
* - `network` — reaches a host outside this machine. Browser navigation
|
|
102
|
+
* carries it too, because it is true: `deniedTraits: ["network"]` means no
|
|
103
|
+
* network at all, not "no network except the browser".
|
|
104
|
+
*/
|
|
105
|
+
export type { CapabilityTrait } from "@melra/protocol";
|
|
106
|
+
/**
|
|
107
|
+
* Classify a terminal command by what it does, not just by its name.
|
|
108
|
+
*
|
|
109
|
+
* Exported because the accurate answer is worth having outside policy — the
|
|
110
|
+
* CLI's `policy test` prints it, and it is the only place `npm ls` and `npm
|
|
111
|
+
* install` are told apart.
|
|
112
|
+
*/
|
|
113
|
+
export declare function classifyCommand(command: string, args: readonly string[]): {
|
|
114
|
+
read: boolean;
|
|
115
|
+
traits: CapabilityTrait[];
|
|
116
|
+
};
|
|
17
117
|
export declare function createDefaultPolicy(workspaceRoot: string): LocalPolicy;
|
|
18
118
|
export declare function loadPolicy(path: string | undefined, workspaceRoot: string): Promise<LocalPolicy>;
|
|
19
119
|
export declare function classifyOperation(operation: Operation): {
|
|
@@ -21,6 +121,7 @@ export declare function classifyOperation(operation: Operation): {
|
|
|
21
121
|
risk: Risk;
|
|
22
122
|
capability: string;
|
|
23
123
|
target: string;
|
|
124
|
+
traits: CapabilityTrait[];
|
|
24
125
|
};
|
|
25
126
|
/**
|
|
26
127
|
* Evidence a mutation must satisfy when the caller declared none.
|
|
@@ -38,6 +139,16 @@ export declare function classifyOperation(operation: Operation): {
|
|
|
38
139
|
* unattended.
|
|
39
140
|
*/
|
|
40
141
|
export declare function defaultEvidenceFor(operation: Operation): EvidencePredicate[];
|
|
142
|
+
/**
|
|
143
|
+
* Why the issued capabilities do not cover this effect, or `undefined` if they
|
|
144
|
+
* do. An empty grant list is not a closed world — it means the operator has not
|
|
145
|
+
* issued grants at all, and the rest of policy decides on its own.
|
|
146
|
+
*/
|
|
147
|
+
export declare function capabilityRefusal(classified: {
|
|
148
|
+
effect: Effect;
|
|
149
|
+
capability: string;
|
|
150
|
+
target: string;
|
|
151
|
+
}, identity: Identity, policy: LocalPolicy): string | undefined;
|
|
41
152
|
export declare function evaluatePolicy(taskId: string, request: TaskRequest, policy: LocalPolicy): PolicyEvaluation;
|
|
42
153
|
export declare function digestOperation(taskId: string, operation: Operation): string;
|
|
43
154
|
export declare function validateApproval(challenge: ApprovalChallenge | undefined, response: ApprovalResponse | undefined): {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,IAAI,EACJ,WAAW,EACZ,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { readFile } from "node:fs/promises";
|
|
4
4
|
import { basename, resolve } from "node:path";
|
|
5
5
|
import { createHash, randomUUID } from "node:crypto";
|
|
6
|
+
import { CapabilityGrantSchema, LOCAL_IDENTITY, principalRef, } from "@melra/protocol";
|
|
6
7
|
const READ_ONLY_GIT_ACTIONS = new Set([
|
|
7
8
|
"branch",
|
|
8
9
|
"diff",
|
|
@@ -56,6 +57,171 @@ export function normalizeCommandName(command) {
|
|
|
56
57
|
const suffix = EXECUTABLE_SUFFIXES.find((item) => name.endsWith(item));
|
|
57
58
|
return suffix === undefined ? name : name.slice(0, -suffix.length);
|
|
58
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Subcommands that install, per package manager, and the ones that only read.
|
|
62
|
+
*
|
|
63
|
+
* Anything unlisted falls in between: a mutation, but not an install — `npm
|
|
64
|
+
* run build` writes to the workspace and reaches nothing.
|
|
65
|
+
*/
|
|
66
|
+
const PACKAGE_MANAGERS = {
|
|
67
|
+
npm: {
|
|
68
|
+
install: new Set(["install", "i", "add", "ci", "update", "up", "publish"]),
|
|
69
|
+
read: new Set(["ls", "list", "view", "info", "outdated", "why", "config"]),
|
|
70
|
+
},
|
|
71
|
+
pnpm: {
|
|
72
|
+
install: new Set(["install", "i", "add", "update", "up", "publish", "dlx"]),
|
|
73
|
+
read: new Set(["ls", "list", "view", "info", "outdated", "why", "licenses"]),
|
|
74
|
+
},
|
|
75
|
+
yarn: {
|
|
76
|
+
install: new Set(["install", "add", "up", "upgrade", "publish", "dlx"]),
|
|
77
|
+
read: new Set(["info", "why", "list", "outdated"]),
|
|
78
|
+
},
|
|
79
|
+
pip: {
|
|
80
|
+
install: new Set(["install", "download", "wheel"]),
|
|
81
|
+
read: new Set(["list", "show", "freeze", "check"]),
|
|
82
|
+
},
|
|
83
|
+
pip3: {
|
|
84
|
+
install: new Set(["install", "download", "wheel"]),
|
|
85
|
+
read: new Set(["list", "show", "freeze", "check"]),
|
|
86
|
+
},
|
|
87
|
+
uv: {
|
|
88
|
+
install: new Set(["add", "sync", "install", "pip", "tool", "publish"]),
|
|
89
|
+
read: new Set(["tree", "lock", "version"]),
|
|
90
|
+
},
|
|
91
|
+
cargo: {
|
|
92
|
+
install: new Set(["install", "add", "update", "publish", "fetch"]),
|
|
93
|
+
read: new Set(["tree", "metadata", "search"]),
|
|
94
|
+
},
|
|
95
|
+
gem: {
|
|
96
|
+
install: new Set(["install", "update", "push"]),
|
|
97
|
+
read: new Set(["list", "info", "which"]),
|
|
98
|
+
},
|
|
99
|
+
brew: {
|
|
100
|
+
install: new Set(["install", "upgrade", "reinstall", "tap"]),
|
|
101
|
+
read: new Set(["list", "info", "search", "outdated"]),
|
|
102
|
+
},
|
|
103
|
+
apt: {
|
|
104
|
+
install: new Set(["install", "upgrade", "full-upgrade", "update"]),
|
|
105
|
+
read: new Set(["list", "show", "search", "policy"]),
|
|
106
|
+
},
|
|
107
|
+
"apt-get": {
|
|
108
|
+
install: new Set(["install", "upgrade", "dist-upgrade", "update"]),
|
|
109
|
+
read: new Set(["show", "download"]),
|
|
110
|
+
},
|
|
111
|
+
go: {
|
|
112
|
+
install: new Set(["install", "get", "mod"]),
|
|
113
|
+
read: new Set(["list", "version", "env", "vet"]),
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
/** `npx`/`pnpx` fetch and execute a package by name; there is no read form. */
|
|
117
|
+
const ALWAYS_INSTALLING = new Set(["npx", "pnpx", "uvx", "pipx"]);
|
|
118
|
+
/** Programs whose whole purpose is to talk to another host. */
|
|
119
|
+
const NETWORK_COMMANDS = new Set([
|
|
120
|
+
"curl",
|
|
121
|
+
"wget",
|
|
122
|
+
"scp",
|
|
123
|
+
"sftp",
|
|
124
|
+
"ssh",
|
|
125
|
+
"rsync",
|
|
126
|
+
"nc",
|
|
127
|
+
"ncat",
|
|
128
|
+
"telnet",
|
|
129
|
+
"ftp",
|
|
130
|
+
]);
|
|
131
|
+
/** `git` subcommands that contact a remote. */
|
|
132
|
+
const NETWORK_GIT_ACTIONS = new Set([
|
|
133
|
+
"clone",
|
|
134
|
+
"fetch",
|
|
135
|
+
"pull",
|
|
136
|
+
"push",
|
|
137
|
+
"submodule",
|
|
138
|
+
"ls-remote",
|
|
139
|
+
]);
|
|
140
|
+
/**
|
|
141
|
+
* Flags that take their value as the next argument, so that argument is not
|
|
142
|
+
* the subcommand. `git -c core.pager=cat push` pushes; a naive "first
|
|
143
|
+
* non-flag" scan reads `core.pager=cat` as the subcommand and calls it local.
|
|
144
|
+
*
|
|
145
|
+
* The list is short on purpose: it covers the value-taking flags of the
|
|
146
|
+
* commands this module classifies. An unlisted one costs an unrecognised
|
|
147
|
+
* subcommand, which falls back to `mutate`/`medium` — the cautious answer.
|
|
148
|
+
*/
|
|
149
|
+
const VALUE_TAKING_FLAGS = new Set([
|
|
150
|
+
"-c",
|
|
151
|
+
"-C",
|
|
152
|
+
"--config",
|
|
153
|
+
"--cwd",
|
|
154
|
+
"--dir",
|
|
155
|
+
"--prefix",
|
|
156
|
+
"--workspace",
|
|
157
|
+
"-w",
|
|
158
|
+
"--filter",
|
|
159
|
+
"--registry",
|
|
160
|
+
]);
|
|
161
|
+
function subcommandOf(args) {
|
|
162
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
163
|
+
const arg = args[index];
|
|
164
|
+
if (VALUE_TAKING_FLAGS.has(arg)) {
|
|
165
|
+
index += 1;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
// `--filter=foo` carries its value inline, so nothing is skipped.
|
|
169
|
+
if (arg.startsWith("-"))
|
|
170
|
+
continue;
|
|
171
|
+
return arg.toLowerCase();
|
|
172
|
+
}
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Classify a terminal command by what it does, not just by its name.
|
|
177
|
+
*
|
|
178
|
+
* Exported because the accurate answer is worth having outside policy — the
|
|
179
|
+
* CLI's `policy test` prints it, and it is the only place `npm ls` and `npm
|
|
180
|
+
* install` are told apart.
|
|
181
|
+
*/
|
|
182
|
+
export function classifyCommand(command, args) {
|
|
183
|
+
const name = normalizeCommandName(command);
|
|
184
|
+
const subcommand = subcommandOf(args);
|
|
185
|
+
const traits = new Set();
|
|
186
|
+
if (NETWORK_COMMANDS.has(name))
|
|
187
|
+
traits.add("network");
|
|
188
|
+
if (name === "git" && subcommand !== undefined && NETWORK_GIT_ACTIONS.has(subcommand)) {
|
|
189
|
+
traits.add("network");
|
|
190
|
+
}
|
|
191
|
+
if (ALWAYS_INSTALLING.has(name)) {
|
|
192
|
+
traits.add("package-install");
|
|
193
|
+
traits.add("network");
|
|
194
|
+
}
|
|
195
|
+
const manager = PACKAGE_MANAGERS[name];
|
|
196
|
+
if (manager !== undefined && subcommand !== undefined) {
|
|
197
|
+
if (manager.install.has(subcommand)) {
|
|
198
|
+
traits.add("package-install");
|
|
199
|
+
traits.add("network");
|
|
200
|
+
}
|
|
201
|
+
if (manager.read.has(subcommand)) {
|
|
202
|
+
// A read subcommand of a package manager still queries the registry in
|
|
203
|
+
// the general case, so it keeps `network` while dropping the mutation.
|
|
204
|
+
return { read: true, traits: [...traits, "network"] };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const READ_COMMANDS = new Set([
|
|
208
|
+
"cat",
|
|
209
|
+
"findstr",
|
|
210
|
+
"head",
|
|
211
|
+
"ls",
|
|
212
|
+
"pwd",
|
|
213
|
+
"rg",
|
|
214
|
+
"tail",
|
|
215
|
+
"tasklist",
|
|
216
|
+
"wc",
|
|
217
|
+
"where",
|
|
218
|
+
]);
|
|
219
|
+
const read = READ_COMMANDS.has(name) ||
|
|
220
|
+
(name === "git" &&
|
|
221
|
+
subcommand !== undefined &&
|
|
222
|
+
READ_ONLY_GIT_ACTIONS.has(subcommand));
|
|
223
|
+
return { read, traits: [...traits] };
|
|
224
|
+
}
|
|
59
225
|
export function createDefaultPolicy(workspaceRoot) {
|
|
60
226
|
return {
|
|
61
227
|
version: "1",
|
|
@@ -84,9 +250,15 @@ export function createDefaultPolicy(workspaceRoot) {
|
|
|
84
250
|
],
|
|
85
251
|
allowedDomains: ["*"],
|
|
86
252
|
allowLocalhost: true,
|
|
253
|
+
popups: "block",
|
|
87
254
|
mutations: "confirm",
|
|
88
255
|
approvalTtlMs: 5 * 60_000,
|
|
89
256
|
maxFileBytes: 10 * 1024 * 1024,
|
|
257
|
+
memoryRetention: { maxAgeDays: 30, maxPerScope: 0 },
|
|
258
|
+
deniedTraits: [],
|
|
259
|
+
capabilities: [],
|
|
260
|
+
circuitBreaker: { threshold: 3, cooldownMs: 60_000 },
|
|
261
|
+
unhinged: false,
|
|
90
262
|
};
|
|
91
263
|
}
|
|
92
264
|
export async function loadPolicy(path, workspaceRoot) {
|
|
@@ -100,6 +272,17 @@ export async function loadPolicy(path, workspaceRoot) {
|
|
|
100
272
|
workspaceRoot: resolve(parsed.workspaceRoot ?? workspaceRoot),
|
|
101
273
|
allowedCommands: parsed.allowedCommands ?? defaults.allowedCommands,
|
|
102
274
|
allowedDomains: parsed.allowedDomains ?? defaults.allowedDomains,
|
|
275
|
+
// Spread, not replace: a file naming only `maxPerScope` should not silently
|
|
276
|
+
// drop `maxAgeDays` to `undefined` and make compaction delete everything.
|
|
277
|
+
memoryRetention: { ...defaults.memoryRetention, ...parsed.memoryRetention },
|
|
278
|
+
circuitBreaker: { ...defaults.circuitBreaker, ...parsed.circuitBreaker },
|
|
279
|
+
deniedTraits: parsed.deniedTraits ?? defaults.deniedTraits,
|
|
280
|
+
// Parsed, not spread: a grant is the file claiming authority exists, so a
|
|
281
|
+
// malformed one has to fail loudly rather than land as an object that
|
|
282
|
+
// matches nothing or — worse — everything.
|
|
283
|
+
capabilities: parsed.capabilities === undefined
|
|
284
|
+
? defaults.capabilities
|
|
285
|
+
: CapabilityGrantSchema.array().max(200).parse(parsed.capabilities),
|
|
103
286
|
};
|
|
104
287
|
}
|
|
105
288
|
export function classifyOperation(operation) {
|
|
@@ -112,6 +295,7 @@ export function classifyOperation(operation) {
|
|
|
112
295
|
risk: destructive ? "high" : read ? "low" : "medium",
|
|
113
296
|
capability: `file.${operation.action}`,
|
|
114
297
|
target: operation.path,
|
|
298
|
+
traits: [],
|
|
115
299
|
};
|
|
116
300
|
}
|
|
117
301
|
case "terminal": {
|
|
@@ -121,34 +305,38 @@ export function classifyOperation(operation) {
|
|
|
121
305
|
risk: "low",
|
|
122
306
|
capability: `terminal.${operation.action}`,
|
|
123
307
|
target: `job:${operation.jobId ?? "unknown"}`,
|
|
308
|
+
traits: [],
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
// `send` writes to a running process's stdin. It carries no command of
|
|
312
|
+
// its own, so it cannot be classified by one: whatever the input does is
|
|
313
|
+
// the already-approved job's doing, and answering a prompt is a mutation.
|
|
314
|
+
if (operation.action === "send") {
|
|
315
|
+
return {
|
|
316
|
+
effect: "mutate",
|
|
317
|
+
risk: "medium",
|
|
318
|
+
capability: "terminal.send",
|
|
319
|
+
target: `job:${operation.jobId ?? "unknown"}`,
|
|
320
|
+
traits: [],
|
|
124
321
|
};
|
|
125
322
|
}
|
|
126
323
|
const command = normalizeCommandName(operation.command ?? "");
|
|
127
|
-
const
|
|
128
|
-
command === "git" &&
|
|
129
|
-
operation.args.length > 0 &&
|
|
130
|
-
READ_ONLY_GIT_ACTIONS.has(operation.args[0] ?? "");
|
|
131
|
-
const readCommands = new Set([
|
|
132
|
-
"cat",
|
|
133
|
-
"findstr",
|
|
134
|
-
"head",
|
|
135
|
-
"ls",
|
|
136
|
-
"pwd",
|
|
137
|
-
"rg",
|
|
138
|
-
"tail",
|
|
139
|
-
"tasklist",
|
|
140
|
-
"wc",
|
|
141
|
-
"where",
|
|
142
|
-
]);
|
|
143
|
-
const read = readCommands.has(command) || gitRead;
|
|
144
|
-
const packageMutation = new Set(["npm", "npx", "pnpm"]).has(command);
|
|
324
|
+
const { read, traits } = classifyCommand(operation.command ?? "", operation.args);
|
|
145
325
|
return {
|
|
146
326
|
effect: read ? "read" : "mutate",
|
|
147
|
-
|
|
327
|
+
// Installing third-party code is the high-risk case, not the package
|
|
328
|
+
// manager's name: `npm run build` is an ordinary mutation and `npm ls`
|
|
329
|
+
// is a read, which the old blanket rule called high-risk alongside it.
|
|
330
|
+
risk: traits.includes("package-install")
|
|
331
|
+
? "high"
|
|
332
|
+
: read
|
|
333
|
+
? "low"
|
|
334
|
+
: "medium",
|
|
148
335
|
capability: `terminal.${operation.action}`,
|
|
149
336
|
target: operation.action === "stop"
|
|
150
337
|
? `job:${operation.jobId ?? "unknown"}`
|
|
151
338
|
: `command:${command}`,
|
|
339
|
+
traits,
|
|
152
340
|
};
|
|
153
341
|
}
|
|
154
342
|
case "browser": {
|
|
@@ -185,6 +373,9 @@ export function classifyOperation(operation) {
|
|
|
185
373
|
target.hash = "";
|
|
186
374
|
return target.toString();
|
|
187
375
|
})(),
|
|
376
|
+
// Driving a page is a network act whether or not the caller named a
|
|
377
|
+
// URL: a click can fetch, and a stale tab is still a live connection.
|
|
378
|
+
traits: ["network"],
|
|
188
379
|
};
|
|
189
380
|
}
|
|
190
381
|
case "memory": {
|
|
@@ -195,18 +386,24 @@ export function classifyOperation(operation) {
|
|
|
195
386
|
risk: destructive ? "high" : read ? "low" : "medium",
|
|
196
387
|
capability: `memory.${operation.action}`,
|
|
197
388
|
target: `${operation.scope}:${operation.action}:${operation.id ?? operation.key ?? "*"}`,
|
|
389
|
+
traits: [],
|
|
198
390
|
};
|
|
199
391
|
}
|
|
200
392
|
case "computer": {
|
|
201
393
|
const read = operation.action === "capabilities" ||
|
|
394
|
+
operation.action === "inspect" ||
|
|
202
395
|
operation.action === "screenshot";
|
|
396
|
+
const positional = operation.action === "click" ||
|
|
397
|
+
operation.action === "move" ||
|
|
398
|
+
operation.action === "drag";
|
|
203
399
|
return {
|
|
204
400
|
effect: read ? "read" : "mutate",
|
|
205
401
|
risk: read ? "low" : "high",
|
|
206
402
|
capability: `computer.${operation.action}`,
|
|
207
|
-
target:
|
|
403
|
+
target: positional
|
|
208
404
|
? `${operation.coordinateSpace}:${operation.x ?? "?"},${operation.y ?? "?"}`
|
|
209
405
|
: "active-desktop",
|
|
406
|
+
traits: [],
|
|
210
407
|
};
|
|
211
408
|
}
|
|
212
409
|
case "system":
|
|
@@ -215,6 +412,7 @@ export function classifyOperation(operation) {
|
|
|
215
412
|
risk: "low",
|
|
216
413
|
capability: "system.info",
|
|
217
414
|
target: "local-system",
|
|
415
|
+
traits: [],
|
|
218
416
|
};
|
|
219
417
|
}
|
|
220
418
|
}
|
|
@@ -272,21 +470,29 @@ export function defaultEvidenceFor(operation) {
|
|
|
272
470
|
// These adapters report an explicit `success` flag; hold the task to it
|
|
273
471
|
// rather than letting a silent no-op pass as a completed action.
|
|
274
472
|
return [{ type: "result_equals", path: "success", value: true }];
|
|
473
|
+
case "terminal":
|
|
474
|
+
// `run`/`start` say nothing about what the command should leave behind,
|
|
475
|
+
// so there is no honest post-condition. `send` does: the runtime reports
|
|
476
|
+
// whether the bytes reached a job that was still running and accepting
|
|
477
|
+
// input, and a write to a dead or non-interactive job throws instead.
|
|
478
|
+
return operation.action === "send"
|
|
479
|
+
? [{ type: "result_equals", path: "sent", value: true }]
|
|
480
|
+
: [];
|
|
275
481
|
default:
|
|
276
482
|
return [];
|
|
277
483
|
}
|
|
278
484
|
}
|
|
279
|
-
function deny(effect, risk, reason, version) {
|
|
280
|
-
return { outcome: "deny", effect, risk, reason, policyVersion: version };
|
|
281
|
-
}
|
|
282
485
|
function isCommandAllowed(operation, policy) {
|
|
283
486
|
if (operation.kind !== "terminal")
|
|
284
487
|
return true;
|
|
285
488
|
if (operation.action === "status" || operation.action === "output") {
|
|
286
489
|
return operation.jobId !== undefined;
|
|
287
490
|
}
|
|
288
|
-
|
|
491
|
+
// `stop` and `send` act on a job the allowlist already cleared when it
|
|
492
|
+
// started, so the job id is the whole gate — there is no command to match.
|
|
493
|
+
if (operation.action === "stop" || operation.action === "send") {
|
|
289
494
|
return operation.jobId !== undefined;
|
|
495
|
+
}
|
|
290
496
|
if (operation.command === undefined)
|
|
291
497
|
return false;
|
|
292
498
|
const command = normalizeCommandName(operation.command);
|
|
@@ -309,60 +515,113 @@ function domainAllowed(operation, policy) {
|
|
|
309
515
|
host === domain.toLowerCase() ||
|
|
310
516
|
host.endsWith(`.${domain.toLowerCase()}`));
|
|
311
517
|
}
|
|
518
|
+
/**
|
|
519
|
+
* `*` stands for any run of characters; everything else is literal. Enough for
|
|
520
|
+
* `file.*` and `/repo/build/*`, and small enough that a policy author can
|
|
521
|
+
* predict what it matches.
|
|
522
|
+
*/
|
|
523
|
+
function patternMatches(pattern, value) {
|
|
524
|
+
if (pattern === "*")
|
|
525
|
+
return true;
|
|
526
|
+
const escaped = pattern
|
|
527
|
+
.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
|
|
528
|
+
.replaceAll("\\*", ".*");
|
|
529
|
+
return new RegExp(`^${escaped}$`).test(value);
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Why the issued capabilities do not cover this effect, or `undefined` if they
|
|
533
|
+
* do. An empty grant list is not a closed world — it means the operator has not
|
|
534
|
+
* issued grants at all, and the rest of policy decides on its own.
|
|
535
|
+
*/
|
|
536
|
+
export function capabilityRefusal(classified, identity, policy) {
|
|
537
|
+
if (policy.capabilities.length === 0)
|
|
538
|
+
return undefined;
|
|
539
|
+
const holder = principalRef(identity.principal);
|
|
540
|
+
const matching = policy.capabilities.filter((grant) => patternMatches(grant.capability, classified.capability) &&
|
|
541
|
+
grant.effects.includes(classified.effect) &&
|
|
542
|
+
patternMatches(grant.target, classified.target) &&
|
|
543
|
+
patternMatches(grant.principal, holder));
|
|
544
|
+
if (matching.length === 0) {
|
|
545
|
+
return `capability_not_granted:${classified.capability}`;
|
|
546
|
+
}
|
|
547
|
+
const usable = matching.filter((grant) => (grant.validUntil === undefined ||
|
|
548
|
+
Date.parse(grant.validUntil) > Date.now()) &&
|
|
549
|
+
(grant.policyVersion === undefined ||
|
|
550
|
+
grant.policyVersion === policy.version));
|
|
551
|
+
if (usable.length > 0)
|
|
552
|
+
return undefined;
|
|
553
|
+
// Every candidate matched the effect and was refused for a reason the holder
|
|
554
|
+
// can act on, so name it rather than reporting a missing grant.
|
|
555
|
+
const stale = matching.find((grant) => grant.policyVersion !== policy.version);
|
|
556
|
+
return stale?.policyVersion !== undefined
|
|
557
|
+
? `capability_policy_version_mismatch:${stale.id}`
|
|
558
|
+
: `capability_expired:${matching[0]?.id ?? classified.capability}`;
|
|
559
|
+
}
|
|
312
560
|
export function evaluatePolicy(taskId, request, policy) {
|
|
313
561
|
const classified = classifyOperation(request.operation);
|
|
562
|
+
// Every decision reports the same classification it was made from, including
|
|
563
|
+
// the traits, so an approver reading a `confirm` sees that the command
|
|
564
|
+
// installs packages and reaches a registry before echoing the phrase back.
|
|
565
|
+
const decide = (outcome, reason, risk = classified.risk) => ({
|
|
566
|
+
outcome,
|
|
567
|
+
effect: classified.effect,
|
|
568
|
+
risk,
|
|
569
|
+
reason,
|
|
570
|
+
policyVersion: policy.version,
|
|
571
|
+
traits: classified.traits,
|
|
572
|
+
});
|
|
314
573
|
if (request.constraints.length > 0) {
|
|
315
574
|
return {
|
|
316
|
-
decision: deny
|
|
575
|
+
decision: decide("deny", "freeform_constraints_not_enforceable"),
|
|
317
576
|
};
|
|
318
577
|
}
|
|
319
578
|
if (request.forbiddenEffects.includes(classified.effect)) {
|
|
320
|
-
return {
|
|
321
|
-
|
|
322
|
-
|
|
579
|
+
return { decision: decide("deny", "effect_forbidden_by_request") };
|
|
580
|
+
}
|
|
581
|
+
// Unhinged mode allows everything the operator did not forbid in this very
|
|
582
|
+
// request. It sits after the `forbiddenEffects` check on purpose: that field
|
|
583
|
+
// is the caller declaring a limit on its own task, not a guardrail MELRA
|
|
584
|
+
// imposes, and a caller that asked for no destructive effects should still get
|
|
585
|
+
// none. Everything below — allowlists, evidence, approval — is MELRA's own
|
|
586
|
+
// judgement, and unhinged mode is the operator saying they do not want it.
|
|
587
|
+
if (policy.unhinged) {
|
|
588
|
+
return { decision: decide("allow", "unhinged_mode_no_guardrails") };
|
|
589
|
+
}
|
|
590
|
+
// Authority before rules: a caller that was never granted this effect is
|
|
591
|
+
// refused without consulting the allowlists, which describe what the grant
|
|
592
|
+
// holder may do, not whether they hold one.
|
|
593
|
+
const ungranted = capabilityRefusal(classified, request.identity ?? LOCAL_IDENTITY, policy);
|
|
594
|
+
if (ungranted !== undefined) {
|
|
595
|
+
return { decision: decide("deny", ungranted, "critical") };
|
|
596
|
+
}
|
|
597
|
+
const deniedTrait = classified.traits.find((trait) => policy.deniedTraits.includes(trait));
|
|
598
|
+
if (deniedTrait !== undefined) {
|
|
599
|
+
return { decision: decide("deny", `trait_denied:${deniedTrait}`) };
|
|
323
600
|
}
|
|
324
601
|
if (!isCommandAllowed(request.operation, policy)) {
|
|
325
602
|
return {
|
|
326
|
-
decision:
|
|
603
|
+
decision: decide("deny", "command_not_allowlisted", "critical"),
|
|
327
604
|
};
|
|
328
605
|
}
|
|
329
606
|
if (!domainAllowed(request.operation, policy)) {
|
|
330
607
|
return {
|
|
331
|
-
decision:
|
|
608
|
+
decision: decide("deny", "browser_domain_not_allowed", "high"),
|
|
332
609
|
};
|
|
333
610
|
}
|
|
334
611
|
if (classified.effect !== "read" && request.requiredEvidence.length === 0) {
|
|
335
|
-
return {
|
|
336
|
-
decision: deny(classified.effect, classified.risk, "mutation_requires_evidence", policy.version),
|
|
337
|
-
};
|
|
612
|
+
return { decision: decide("deny", "mutation_requires_evidence") };
|
|
338
613
|
}
|
|
339
614
|
if (classified.effect === "read") {
|
|
340
|
-
return {
|
|
341
|
-
decision: {
|
|
342
|
-
outcome: "allow",
|
|
343
|
-
effect: classified.effect,
|
|
344
|
-
risk: classified.risk,
|
|
345
|
-
reason: "read_only_operation",
|
|
346
|
-
policyVersion: policy.version,
|
|
347
|
-
},
|
|
348
|
-
};
|
|
615
|
+
return { decision: decide("allow", "read_only_operation") };
|
|
349
616
|
}
|
|
350
617
|
if (policy.mutations === "deny") {
|
|
351
|
-
return {
|
|
352
|
-
decision: deny(classified.effect, classified.risk, "mutations_disabled", policy.version),
|
|
353
|
-
};
|
|
618
|
+
return { decision: decide("deny", "mutations_disabled") };
|
|
354
619
|
}
|
|
355
620
|
const digest = digestOperation(taskId, request.operation);
|
|
356
621
|
const approvalId = randomUUID();
|
|
357
622
|
const phrase = `APPROVE ${digest.slice(0, 12)}`;
|
|
358
623
|
return {
|
|
359
|
-
decision:
|
|
360
|
-
outcome: "confirm",
|
|
361
|
-
effect: classified.effect,
|
|
362
|
-
risk: classified.risk,
|
|
363
|
-
reason: "explicit_approval_required",
|
|
364
|
-
policyVersion: policy.version,
|
|
365
|
-
},
|
|
624
|
+
decision: decide("confirm", "explicit_approval_required"),
|
|
366
625
|
challenge: {
|
|
367
626
|
approvalId,
|
|
368
627
|
taskId,
|
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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"}
|
package/dist/index.test.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
import { describe, expect, it } from "vitest";
|
|
4
4
|
import { TaskRequestSchema } from "@melra/protocol";
|
|
5
|
-
import { createDefaultPolicy, defaultEvidenceFor, evaluatePolicy, validateApproval, } from "./index.js";
|
|
5
|
+
import { classifyCommand, classifyOperation, createDefaultPolicy, defaultEvidenceFor, evaluatePolicy, validateApproval, } from "./index.js";
|
|
6
6
|
const root = "/tmp/melra-policy-test";
|
|
7
7
|
describe("local policy", () => {
|
|
8
8
|
it("allows a read-only file operation", () => {
|
|
@@ -162,6 +162,8 @@ describe("default evidence", () => {
|
|
|
162
162
|
action: "run",
|
|
163
163
|
command: "npm",
|
|
164
164
|
args: ["run", "build"],
|
|
165
|
+
interactive: false,
|
|
166
|
+
appendNewline: true,
|
|
165
167
|
timeoutMs: 30_000,
|
|
166
168
|
maxOutputChars: 100_000,
|
|
167
169
|
})).toEqual([]);
|
|
@@ -256,4 +258,225 @@ describe("Windows command spellings", () => {
|
|
|
256
258
|
expect(plan("npm.cmd", ["install"]).risk).toBe("high");
|
|
257
259
|
});
|
|
258
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
|
+
});
|
|
259
482
|
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melra/policy-core",
|
|
3
|
-
"version": "0.3.0-alpha.
|
|
3
|
+
"version": "0.3.0-alpha.6",
|
|
4
4
|
"description": "Policy evaluation and scoped approval primitives for MELRA.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"dist"
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@melra/protocol": "0.3.0-alpha.
|
|
24
|
+
"@melra/protocol": "0.3.0-alpha.6"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "tsc -p tsconfig.json",
|