dsh-permission-rules 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.es.md +8 -4
- package/README.hi.md +8 -4
- package/README.md +8 -4
- package/README.pt.md +8 -4
- package/README.zh.md +8 -4
- package/docs/rules-format.en.md +4 -1
- package/docs/rules-format.md +4 -1
- package/docs/rules-format.schema.json +5 -0
- package/lib/index.js +269 -79
- package/lib/types/config.d.ts +12 -2
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/config.js +26 -2
- package/lib/types/config.js.map +1 -1
- package/lib/types/events.d.ts +14 -1
- package/lib/types/events.d.ts.map +1 -1
- package/lib/types/events.js +5 -0
- package/lib/types/events.js.map +1 -1
- package/lib/types/index.d.ts +8 -6
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +8 -6
- package/lib/types/index.js.map +1 -1
- package/lib/types/prose.d.ts +9 -2
- package/lib/types/prose.d.ts.map +1 -1
- package/lib/types/prose.js +40 -20
- package/lib/types/prose.js.map +1 -1
- package/lib/types/rules.d.ts +17 -0
- package/lib/types/rules.d.ts.map +1 -1
- package/lib/types/rules.js +29 -5
- package/lib/types/rules.js.map +1 -1
- package/lib/types/runtime.d.ts +38 -10
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/runtime.js +165 -41
- package/lib/types/runtime.js.map +1 -1
- package/package.json +103 -103
- package/src/config.ts +36 -2
- package/src/events.ts +14 -1
- package/src/index.ts +8 -6
- package/src/prose.ts +49 -22
- package/src/rules.ts +43 -5
- package/src/runtime.ts +154 -38
package/lib/types/rules.js
CHANGED
|
@@ -95,6 +95,7 @@ export function compileRulesChain(entries, options) {
|
|
|
95
95
|
/** Compile one parsed rule into its hot-path form. */
|
|
96
96
|
function compileRule(entry, index, sourceIndex, options) {
|
|
97
97
|
const tools = entry.match.tools.map(pattern => compileToolPattern(pattern, options.maxGlobStars));
|
|
98
|
+
const agents = entry.match.agents.map(pattern => compileToolPattern(pattern, options.maxGlobStars));
|
|
98
99
|
const params = new Map();
|
|
99
100
|
for (const [key, patterns] of Object.entries(entry.match.params)) {
|
|
100
101
|
params.set(key, compileParamPatterns(key, patterns, options));
|
|
@@ -113,6 +114,7 @@ function compileRule(entry, index, sourceIndex, options) {
|
|
|
113
114
|
...(entry.description !== undefined ? { description: entry.description } : {}),
|
|
114
115
|
tags: entry.tags,
|
|
115
116
|
tools,
|
|
117
|
+
agents,
|
|
116
118
|
params,
|
|
117
119
|
paths,
|
|
118
120
|
absent: entry.match.absent,
|
|
@@ -139,6 +141,8 @@ export function matchRules(ruleset, toolName, args, cwd, context = {}) {
|
|
|
139
141
|
continue;
|
|
140
142
|
if (!matchTools(rule, toolName))
|
|
141
143
|
continue;
|
|
144
|
+
if (!matchAgents(rule, context))
|
|
145
|
+
continue;
|
|
142
146
|
if (!matchWhen(rule, context))
|
|
143
147
|
continue;
|
|
144
148
|
if (rule.params.size > 0 && (argRecord === undefined || !matchParams(rule, argRecord)))
|
|
@@ -176,7 +180,7 @@ export function findUnreachableRules(ruleset) {
|
|
|
176
180
|
}
|
|
177
181
|
/** Whether every match dimension of one rule is empty. */
|
|
178
182
|
function isCatchAll(rule) {
|
|
179
|
-
return rule.tools.length === 0 && rule.params.size === 0 && rule.paths.length === 0 && rule.absent.length === 0 && rule.when === undefined;
|
|
183
|
+
return rule.tools.length === 0 && rule.agents.length === 0 && rule.params.size === 0 && rule.paths.length === 0 && rule.absent.length === 0 && rule.when === undefined;
|
|
180
184
|
}
|
|
181
185
|
/**
|
|
182
186
|
* One-line human summary of a compiled rule, for `/rules` output. The
|
|
@@ -190,6 +194,8 @@ export function describeRule(rule, tokens) {
|
|
|
190
194
|
const parts = [];
|
|
191
195
|
if (rule.source.match.tools.length > 0)
|
|
192
196
|
parts.push(`${tokens.tools}:${rule.source.match.tools.join(',')}`);
|
|
197
|
+
if (rule.source.match.agents.length > 0)
|
|
198
|
+
parts.push(`${tokens.agents}:${rule.source.match.agents.join(',')}`);
|
|
193
199
|
const params = Object.entries(rule.source.match.params)
|
|
194
200
|
.map(([key, patterns]) => `${key}=${patterns.join('|')}`)
|
|
195
201
|
.join(' ');
|
|
@@ -221,6 +227,20 @@ function matchTools(rule, toolName) {
|
|
|
221
227
|
return true;
|
|
222
228
|
return rule.tools.some(regex => regex.test(toolName));
|
|
223
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Whether a rule's agents dimension selects the caller. Any selector glob
|
|
232
|
+
* matching any identity candidate satisfies the dimension; unknown
|
|
233
|
+
* identity (no agent or no candidates) fails the dimension, so an
|
|
234
|
+
* agent-scoped rule can never fire where the caller cannot be identified.
|
|
235
|
+
*/
|
|
236
|
+
function matchAgents(rule, context) {
|
|
237
|
+
if (rule.agents.length === 0)
|
|
238
|
+
return true;
|
|
239
|
+
const candidates = context.agents;
|
|
240
|
+
if (candidates === undefined || candidates.length === 0)
|
|
241
|
+
return false;
|
|
242
|
+
return rule.agents.some(regex => candidates.some(candidate => regex.test(candidate)));
|
|
243
|
+
}
|
|
224
244
|
/** Whether a rule's params dimension holds: EVERY key present and matching. */
|
|
225
245
|
function matchParams(rule, args) {
|
|
226
246
|
for (const [key, { positive, negative }] of rule.params) {
|
|
@@ -346,14 +366,15 @@ function parseRuleEntry(raw, index) {
|
|
|
346
366
|
/** Validate the `match` block of one rule. */
|
|
347
367
|
function parseMatch(raw, at) {
|
|
348
368
|
if (raw === undefined)
|
|
349
|
-
return { tools: [], params: {}, paths: [], absent: [], when: { env: {}, platform: [] } };
|
|
369
|
+
return { tools: [], agents: [], params: {}, paths: [], absent: [], when: { env: {}, platform: [] } };
|
|
350
370
|
const record = asRecord(raw, `${at}.match`);
|
|
351
|
-
const unknownFields = Object.keys(record).filter(key => key !== 'tools' && key !== 'params' && key !== 'paths' && key !== 'absent' && key !== 'when');
|
|
371
|
+
const unknownFields = Object.keys(record).filter(key => key !== 'tools' && key !== 'agents' && key !== 'params' && key !== 'paths' && key !== 'absent' && key !== 'when');
|
|
352
372
|
if (unknownFields.length > 0) {
|
|
353
|
-
throw new RuleError(`${at}.match: unknown field${unknownFields.length > 1 ? 's' : ''} ${unknownFields.map(k => JSON.stringify(k)).join(', ')} (allowed: tools, params, paths, absent, when)`);
|
|
373
|
+
throw new RuleError(`${at}.match: unknown field${unknownFields.length > 1 ? 's' : ''} ${unknownFields.map(k => JSON.stringify(k)).join(', ')} (allowed: tools, agents, params, paths, absent, when)`);
|
|
354
374
|
}
|
|
355
375
|
return {
|
|
356
376
|
tools: parseStringList(record['tools'], `${at}.match.tools`),
|
|
377
|
+
agents: parseStringList(record['agents'], `${at}.match.agents`),
|
|
357
378
|
params: parseParams(record['params'], `${at}.match.params`),
|
|
358
379
|
paths: parseStringList(record['paths'], `${at}.match.paths`),
|
|
359
380
|
absent: parseStringList(record['absent'], `${at}.match.absent`),
|
|
@@ -554,7 +575,10 @@ function relFromRoot(root, path, rest, rootRest, caseInsensitive) {
|
|
|
554
575
|
const rootRestLower = caseInsensitive ? rootRest.toLowerCase() : rootRest;
|
|
555
576
|
if (rootRestLower.length === 0)
|
|
556
577
|
return rest.slice(1);
|
|
557
|
-
|
|
578
|
+
// A candidate equal to the root itself — modulo case only when the
|
|
579
|
+
// comparison is case-insensitive — is the workspace root, not a relative
|
|
580
|
+
// path inside it, and is dropped explicitly.
|
|
581
|
+
if (path === root || (caseInsensitive && path.toLowerCase() === root.toLowerCase()))
|
|
558
582
|
return '';
|
|
559
583
|
return restLower.startsWith(`${rootRestLower}/`) ? rest.slice(rootRest.length + 1) : '';
|
|
560
584
|
}
|
package/lib/types/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"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"}
|
package/lib/types/runtime.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* `tools/pre-execute` listener that turns a first-match hit into a
|
|
5
5
|
* deny/ask decision (and NEVER short-circuits on allow or passthrough),
|
|
6
6
|
* the `permissionRules/decision` audit event, the `/rules` session command
|
|
7
|
-
* (`list | reload | decisions [n] | test <tool> <json>`), and
|
|
7
|
+
* (`list | reload | decisions [n] | test [flags] <tool> <json>`), and
|
|
8
8
|
* Chokidar-driven reloads. Every registration is an effect.
|
|
9
9
|
* @module dsh-permission-rules/runtime
|
|
10
10
|
*/
|
|
@@ -85,14 +85,23 @@ export declare class PermissionRulesRuntime {
|
|
|
85
85
|
* @param cwd - the workspace root.
|
|
86
86
|
*/
|
|
87
87
|
reload(cwd: string): void;
|
|
88
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* The match context `when`/`agents` conditions evaluate against: host
|
|
90
|
+
* facts plus the caller's agent-identity candidates derived from the
|
|
91
|
+
* session header (`main` for top-level sessions, `subagent` for
|
|
92
|
+
* subagent children, `preset:<name>` when a preset composed the agent).
|
|
93
|
+
* @param exec - the pending call whose caller supplies the identity.
|
|
94
|
+
*/
|
|
89
95
|
private matchContext;
|
|
90
96
|
/**
|
|
91
97
|
* The `tools/pre-execute` listener. A deny/ask hit returns the decision
|
|
92
98
|
* (first match wins, short-circuiting downstream listeners); an allow hit
|
|
93
99
|
* and a passthrough MUST delegate via `next()` so later listeners keep
|
|
94
|
-
* their say.
|
|
95
|
-
*
|
|
100
|
+
* their say. Under `enforce: false` (dry-run) a deny/ask hit also
|
|
101
|
+
* delegates — the record keeps the would-be action with `dryRun: true`
|
|
102
|
+
* and the actual downstream outcome. Audit is appended once the final
|
|
103
|
+
* outcome is known, so the recorded `outcome` matches what the waterfall
|
|
104
|
+
* settled on.
|
|
96
105
|
* @param exec - the pending call (name, parsed arguments, caller agent).
|
|
97
106
|
* @param next - the downstream chain.
|
|
98
107
|
* @returns the pre-execute decision.
|
|
@@ -104,25 +113,44 @@ export declare class PermissionRulesRuntime {
|
|
|
104
113
|
* envelope's `ignorable: true` marker so any harness build can load the
|
|
105
114
|
* log (readers that do not know the type skip the audit record instead of
|
|
106
115
|
* refusing the session). `source` names the matched rule's file, or the
|
|
107
|
-
* nearest effective file on a passthrough
|
|
108
|
-
*
|
|
109
|
-
*
|
|
116
|
+
* nearest effective file on a passthrough; `cwd` names the workspace the
|
|
117
|
+
* rules were resolved for; `dryRun` marks would-be deny/ask hits under
|
|
118
|
+
* `enforce: false`. Agentless calls have no session to audit; append
|
|
119
|
+
* failures are contained so an audit hiccup can never change a
|
|
120
|
+
* permission decision.
|
|
110
121
|
* @param exec - the pending call.
|
|
111
122
|
* @param loaded - the rules in effect.
|
|
112
123
|
* @param hit - the first matching rule, or undefined for passthrough.
|
|
113
124
|
* @param outcome - the final pre-execute decision.
|
|
125
|
+
* @param dryRun - mark the record as a would-be decision (dry-run mode).
|
|
114
126
|
*/
|
|
115
|
-
audit(exec: ToolExecution, loaded: LoadedRules, hit: RuleHit | undefined, outcome: DecisionOutcome): void;
|
|
127
|
+
audit(exec: ToolExecution, loaded: LoadedRules, hit: RuleHit | undefined, outcome: DecisionOutcome, dryRun?: boolean): void;
|
|
116
128
|
/**
|
|
117
129
|
* Execute the `/rules` command: bare `/rules` lists the active rules and
|
|
118
130
|
* their sources; `/rules reload` re-reads the chain; `/rules decisions
|
|
119
|
-
* [n]` shows the session's audit trail; `/rules test <tool>
|
|
120
|
-
* dry-evaluates the rules against a hypothetical call
|
|
131
|
+
* [n]` shows the session's audit trail; `/rules test [flags] <tool>
|
|
132
|
+
* <json>` dry-evaluates the rules against a hypothetical call (flags
|
|
133
|
+
* override the workspace, host env, and agent identity). Command output
|
|
121
134
|
* stays in the UI — nothing here is injected into the model context.
|
|
122
135
|
* @param invocation - the received command invocation.
|
|
123
136
|
* @returns the command result shown to the user.
|
|
124
137
|
*/
|
|
125
138
|
command(invocation: CommandInvocation): CommandResult;
|
|
139
|
+
/**
|
|
140
|
+
* Execute `/rules test` with optional leading flags: `--cwd <dir>`
|
|
141
|
+
* evaluates against that workspace (rule discovery AND path
|
|
142
|
+
* normalization), `--env KEY=VALUE` (repeatable) overrides host env for
|
|
143
|
+
* `when.env` matching, and `--agent <selector>` (repeatable) supplies
|
|
144
|
+
* agent-identity candidates for the `agents` dimension. The JSON
|
|
145
|
+
* argument tail is kept verbatim, so quoted JSON survives unchanged.
|
|
146
|
+
* @param raw - the full raw command input.
|
|
147
|
+
* @param verbRaw - the verb as typed.
|
|
148
|
+
* @param invocation - the received command invocation (session agent).
|
|
149
|
+
* @param sessionCwd - the session's workspace root.
|
|
150
|
+
* @param prose - localized output vocabulary.
|
|
151
|
+
* @returns the dry-evaluation result.
|
|
152
|
+
*/
|
|
153
|
+
private testCommand;
|
|
126
154
|
/** Render the session's `permissionRules/decision` audit trail, newest last. */
|
|
127
155
|
private decisionsCommand;
|
|
128
156
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,EAAkB,eAAe,EAAgB,OAAO,EAAE,MAAM,YAAY,CAAA;AAGxF,OAAO,KAAK,EAA8B,eAAe,EAAE,MAAM,aAAa,CAAA;AAE9E,eAAO,MAAM,IAAI,qBAAqB,CAAA;AAEtC,kDAAkD;AAClD,eAAO,MAAM,MAAM,UAAwB,CAAA;AAE3C,iDAAiD;AACjD,UAAU,WAAW;IACnB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAA;IAClC,iGAAiG;IACjG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAA;CACvB;AAED;;;GAGG;AACH,qBAAa,sBAAsB;IAW/B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc;IAXjC,0FAA0F;IAC1F,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgF;IAEzG,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;gBAGvD,GAAG,EAAE,OAAO,EACpB,MAAM,EAAE,cAAc;IAGjC,sDAAsD;IACtD,OAAO,CAAC,cAAc;IAStB;;;;;;;;OAQG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBrC,8DAA8D;IAC9D,OAAO,CAAC,eAAe;IASvB;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAiB9B;;;;;;;;;OASG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAyBlC;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAezB
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/lib/types/runtime.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* `tools/pre-execute` listener that turns a first-match hit into a
|
|
5
5
|
* deny/ask decision (and NEVER short-circuits on allow or passthrough),
|
|
6
6
|
* the `permissionRules/decision` audit event, the `/rules` session command
|
|
7
|
-
* (`list | reload | decisions [n] | test <tool> <json>`), and
|
|
7
|
+
* (`list | reload | decisions [n] | test [flags] <tool> <json>`), and
|
|
8
8
|
* Chokidar-driven reloads. Every registration is an effect.
|
|
9
9
|
* @module dsh-permission-rules/runtime
|
|
10
10
|
*/
|
|
@@ -167,16 +167,25 @@ export class PermissionRulesRuntime {
|
|
|
167
167
|
this.byCwd.set(cwd, { cwd, sources: this.resolveSources(cwd), compiled: { rules: [], caseInsensitivePaths: this.config.caseInsensitivePaths }, lastError: message, failed: true });
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
/**
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
/**
|
|
171
|
+
* The match context `when`/`agents` conditions evaluate against: host
|
|
172
|
+
* facts plus the caller's agent-identity candidates derived from the
|
|
173
|
+
* session header (`main` for top-level sessions, `subagent` for
|
|
174
|
+
* subagent children, `preset:<name>` when a preset composed the agent).
|
|
175
|
+
* @param exec - the pending call whose caller supplies the identity.
|
|
176
|
+
*/
|
|
177
|
+
matchContext(exec) {
|
|
178
|
+
return { platform: process.platform, env: process.env, agents: agentCandidates(exec?.agent) };
|
|
173
179
|
}
|
|
174
180
|
/**
|
|
175
181
|
* The `tools/pre-execute` listener. A deny/ask hit returns the decision
|
|
176
182
|
* (first match wins, short-circuiting downstream listeners); an allow hit
|
|
177
183
|
* and a passthrough MUST delegate via `next()` so later listeners keep
|
|
178
|
-
* their say.
|
|
179
|
-
*
|
|
184
|
+
* their say. Under `enforce: false` (dry-run) a deny/ask hit also
|
|
185
|
+
* delegates — the record keeps the would-be action with `dryRun: true`
|
|
186
|
+
* and the actual downstream outcome. Audit is appended once the final
|
|
187
|
+
* outcome is known, so the recorded `outcome` matches what the waterfall
|
|
188
|
+
* settled on.
|
|
180
189
|
* @param exec - the pending call (name, parsed arguments, caller agent).
|
|
181
190
|
* @param next - the downstream chain.
|
|
182
191
|
* @returns the pre-execute decision.
|
|
@@ -184,12 +193,18 @@ export class PermissionRulesRuntime {
|
|
|
184
193
|
async preExecute(exec, next) {
|
|
185
194
|
const cwd = exec.agent?.session.header.cwd ?? process.cwd();
|
|
186
195
|
const loaded = this.rulesFor(cwd);
|
|
187
|
-
const hit = matchRules(loaded.compiled, exec.name, exec.arguments, cwd, this.matchContext());
|
|
196
|
+
const hit = matchRules(loaded.compiled, exec.name, exec.arguments, cwd, this.matchContext(exec));
|
|
188
197
|
if (hit === undefined || hit.rule.action === 'allow') {
|
|
189
198
|
const decision = await next();
|
|
190
199
|
this.audit(exec, loaded, hit, decision.kind);
|
|
191
200
|
return decision;
|
|
192
201
|
}
|
|
202
|
+
if (!this.config.enforce) {
|
|
203
|
+
// Dry-run: match the rule, log what it WOULD do, and delegate.
|
|
204
|
+
const decision = await next();
|
|
205
|
+
this.audit(exec, loaded, hit, decision.kind, true);
|
|
206
|
+
return decision;
|
|
207
|
+
}
|
|
193
208
|
const outcome = hit.rule.action;
|
|
194
209
|
this.audit(exec, loaded, hit, outcome);
|
|
195
210
|
if (outcome === 'deny')
|
|
@@ -202,15 +217,18 @@ export class PermissionRulesRuntime {
|
|
|
202
217
|
* envelope's `ignorable: true` marker so any harness build can load the
|
|
203
218
|
* log (readers that do not know the type skip the audit record instead of
|
|
204
219
|
* refusing the session). `source` names the matched rule's file, or the
|
|
205
|
-
* nearest effective file on a passthrough
|
|
206
|
-
*
|
|
207
|
-
*
|
|
220
|
+
* nearest effective file on a passthrough; `cwd` names the workspace the
|
|
221
|
+
* rules were resolved for; `dryRun` marks would-be deny/ask hits under
|
|
222
|
+
* `enforce: false`. Agentless calls have no session to audit; append
|
|
223
|
+
* failures are contained so an audit hiccup can never change a
|
|
224
|
+
* permission decision.
|
|
208
225
|
* @param exec - the pending call.
|
|
209
226
|
* @param loaded - the rules in effect.
|
|
210
227
|
* @param hit - the first matching rule, or undefined for passthrough.
|
|
211
228
|
* @param outcome - the final pre-execute decision.
|
|
229
|
+
* @param dryRun - mark the record as a would-be decision (dry-run mode).
|
|
212
230
|
*/
|
|
213
|
-
audit(exec, loaded, hit, outcome) {
|
|
231
|
+
audit(exec, loaded, hit, outcome, dryRun = false) {
|
|
214
232
|
if (this.config.audit === 'hits' && hit === undefined)
|
|
215
233
|
return;
|
|
216
234
|
const agent = exec.agent;
|
|
@@ -224,7 +242,9 @@ export class PermissionRulesRuntime {
|
|
|
224
242
|
source: hit === undefined ? (loaded.sources[0] ?? '') : (loaded.sources[hit.rule.sourceIndex] ?? ''),
|
|
225
243
|
action: hit === undefined ? 'passthrough' : hit.rule.action,
|
|
226
244
|
outcome,
|
|
245
|
+
cwd: loaded.cwd,
|
|
227
246
|
...hit !== undefined ? { ruleIndex: hit.ruleIndex, reason: hit.rule.reason } : {},
|
|
247
|
+
...dryRun ? { dryRun: true } : {},
|
|
228
248
|
}, { ignorable: true });
|
|
229
249
|
}
|
|
230
250
|
catch (error) {
|
|
@@ -234,8 +254,9 @@ export class PermissionRulesRuntime {
|
|
|
234
254
|
/**
|
|
235
255
|
* Execute the `/rules` command: bare `/rules` lists the active rules and
|
|
236
256
|
* their sources; `/rules reload` re-reads the chain; `/rules decisions
|
|
237
|
-
* [n]` shows the session's audit trail; `/rules test <tool>
|
|
238
|
-
* dry-evaluates the rules against a hypothetical call
|
|
257
|
+
* [n]` shows the session's audit trail; `/rules test [flags] <tool>
|
|
258
|
+
* <json>` dry-evaluates the rules against a hypothetical call (flags
|
|
259
|
+
* override the workspace, host env, and agent identity). Command output
|
|
239
260
|
* stays in the UI — nothing here is injected into the model context.
|
|
240
261
|
* @param invocation - the received command invocation.
|
|
241
262
|
* @returns the command result shown to the user.
|
|
@@ -270,32 +291,7 @@ export class PermissionRulesRuntime {
|
|
|
270
291
|
return this.decisionsCommand(invocation, count, prose);
|
|
271
292
|
}
|
|
272
293
|
if (verb === 'test') {
|
|
273
|
-
|
|
274
|
-
const restLine = raw.length > verbText.length ? raw.slice(verbText.length).trim() : '';
|
|
275
|
-
const match = /^(\S+)\s*(.*)$/s.exec(restLine);
|
|
276
|
-
const tool = match?.[1];
|
|
277
|
-
const jsonText = match?.[2] ?? '';
|
|
278
|
-
if (tool === undefined || tool.length === 0)
|
|
279
|
-
return { kind: 'error', text: prose.testUsage };
|
|
280
|
-
let args;
|
|
281
|
-
try {
|
|
282
|
-
args = jsonText.length > 0 ? JSON.parse(jsonText) : {};
|
|
283
|
-
}
|
|
284
|
-
catch {
|
|
285
|
-
return { kind: 'error', text: prose.testBadJson(jsonText) };
|
|
286
|
-
}
|
|
287
|
-
let loaded;
|
|
288
|
-
try {
|
|
289
|
-
loaded = this.rulesFor(cwd);
|
|
290
|
-
}
|
|
291
|
-
catch (error) {
|
|
292
|
-
return { kind: 'error', text: error instanceof Error ? error.message : String(error) };
|
|
293
|
-
}
|
|
294
|
-
const hit = matchRules(loaded.compiled, tool, args, cwd, this.matchContext());
|
|
295
|
-
return {
|
|
296
|
-
kind: 'success',
|
|
297
|
-
text: hit === undefined ? prose.testNoMatch(tool) : prose.testHit(tool, hit.ruleIndex, hit.rule.action, hit.rule.reason),
|
|
298
|
-
};
|
|
294
|
+
return this.testCommand(raw, verbRaw ?? '', invocation, cwd, prose);
|
|
299
295
|
}
|
|
300
296
|
if (verb !== '')
|
|
301
297
|
return { kind: 'error', text: prose.unknownArg(invocation.rawInput.trim()) };
|
|
@@ -320,9 +316,86 @@ export class PermissionRulesRuntime {
|
|
|
320
316
|
if (loaded.lastError !== undefined) {
|
|
321
317
|
lines.push(prose.lastReloadWarning(loaded.lastError));
|
|
322
318
|
}
|
|
319
|
+
if (!this.config.enforce) {
|
|
320
|
+
lines.push(prose.dryRunNotice);
|
|
321
|
+
}
|
|
323
322
|
lines.push(prose.usage);
|
|
324
323
|
return { kind: 'success', text: lines.join('\n') };
|
|
325
324
|
}
|
|
325
|
+
/**
|
|
326
|
+
* Execute `/rules test` with optional leading flags: `--cwd <dir>`
|
|
327
|
+
* evaluates against that workspace (rule discovery AND path
|
|
328
|
+
* normalization), `--env KEY=VALUE` (repeatable) overrides host env for
|
|
329
|
+
* `when.env` matching, and `--agent <selector>` (repeatable) supplies
|
|
330
|
+
* agent-identity candidates for the `agents` dimension. The JSON
|
|
331
|
+
* argument tail is kept verbatim, so quoted JSON survives unchanged.
|
|
332
|
+
* @param raw - the full raw command input.
|
|
333
|
+
* @param verbRaw - the verb as typed.
|
|
334
|
+
* @param invocation - the received command invocation (session agent).
|
|
335
|
+
* @param sessionCwd - the session's workspace root.
|
|
336
|
+
* @param prose - localized output vocabulary.
|
|
337
|
+
* @returns the dry-evaluation result.
|
|
338
|
+
*/
|
|
339
|
+
testCommand(raw, verbRaw, invocation, sessionCwd, prose) {
|
|
340
|
+
let rest = raw.length > verbRaw.length ? raw.slice(verbRaw.length).trim() : '';
|
|
341
|
+
const envOverrides = {};
|
|
342
|
+
const agentSelectors = [];
|
|
343
|
+
let testCwd;
|
|
344
|
+
let parsed = nextToken(rest);
|
|
345
|
+
while (parsed !== undefined && parsed.token.startsWith('--')) {
|
|
346
|
+
const flag = parsed.token;
|
|
347
|
+
const value = nextToken(parsed.rest);
|
|
348
|
+
if (value === undefined || value.token.startsWith('--')) {
|
|
349
|
+
return { kind: 'error', text: prose.testBadFlag(flag) };
|
|
350
|
+
}
|
|
351
|
+
if (flag === '--cwd') {
|
|
352
|
+
testCwd = isAbsolute(value.token) ? value.token : resolve(sessionCwd, value.token);
|
|
353
|
+
}
|
|
354
|
+
else if (flag === '--env') {
|
|
355
|
+
const equals = value.token.indexOf('=');
|
|
356
|
+
if (equals <= 0)
|
|
357
|
+
return { kind: 'error', text: prose.testBadFlag(`${flag} ${value.token}`) };
|
|
358
|
+
envOverrides[value.token.slice(0, equals)] = value.token.slice(equals + 1);
|
|
359
|
+
}
|
|
360
|
+
else if (flag === '--agent') {
|
|
361
|
+
agentSelectors.push(value.token);
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
return { kind: 'error', text: prose.testUnknownFlag(flag) };
|
|
365
|
+
}
|
|
366
|
+
rest = value.rest;
|
|
367
|
+
parsed = nextToken(rest);
|
|
368
|
+
}
|
|
369
|
+
const tool = parsed?.token;
|
|
370
|
+
const jsonText = parsed === undefined ? '' : parsed.rest.trim();
|
|
371
|
+
if (tool === undefined || tool.length === 0)
|
|
372
|
+
return { kind: 'error', text: prose.testUsage };
|
|
373
|
+
let args;
|
|
374
|
+
try {
|
|
375
|
+
args = jsonText.length > 0 ? JSON.parse(jsonText) : {};
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
return { kind: 'error', text: prose.testBadJson(jsonText) };
|
|
379
|
+
}
|
|
380
|
+
const evalCwd = testCwd ?? sessionCwd;
|
|
381
|
+
let loaded;
|
|
382
|
+
try {
|
|
383
|
+
loaded = this.rulesFor(evalCwd);
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
return { kind: 'error', text: error instanceof Error ? error.message : String(error) };
|
|
387
|
+
}
|
|
388
|
+
const context = {
|
|
389
|
+
platform: process.platform,
|
|
390
|
+
env: Object.keys(envOverrides).length === 0 ? process.env : { ...process.env, ...envOverrides },
|
|
391
|
+
agents: agentSelectors.length > 0 ? agentSelectors : agentCandidates(invocation.agent),
|
|
392
|
+
};
|
|
393
|
+
const hit = matchRules(loaded.compiled, tool, args, evalCwd, context);
|
|
394
|
+
return {
|
|
395
|
+
kind: 'success',
|
|
396
|
+
text: hit === undefined ? prose.testNoMatch(tool) : prose.testHit(tool, hit.ruleIndex, hit.rule.action, hit.rule.reason),
|
|
397
|
+
};
|
|
398
|
+
}
|
|
326
399
|
/** Render the session's `permissionRules/decision` audit trail, newest last. */
|
|
327
400
|
decisionsCommand(invocation, count, prose) {
|
|
328
401
|
const decisions = invocation.agent.session.events.filter(event => event.type === 'permissionRules/decision');
|
|
@@ -332,7 +405,7 @@ export class PermissionRulesRuntime {
|
|
|
332
405
|
const lines = [prose.decisionsHeader(shown.length, decisions.length)];
|
|
333
406
|
for (const event of shown) {
|
|
334
407
|
const data = event.data;
|
|
335
|
-
lines.push(prose.decisionLine(event.seq, data.action, data.toolName, data.ruleIndex, data.reason));
|
|
408
|
+
lines.push(prose.decisionLine(event.seq, data.action, data.toolName, data.ruleIndex, data.reason, data.dryRun === true, data.outcome));
|
|
336
409
|
}
|
|
337
410
|
return { kind: 'success', text: lines.join('\n') };
|
|
338
411
|
}
|
|
@@ -490,8 +563,59 @@ export function apply(ctx, config) {
|
|
|
490
563
|
ctx.commands.register({
|
|
491
564
|
name: 'rules',
|
|
492
565
|
description: 'list, reload, audit, or dry-test the active permission rules for this workspace',
|
|
493
|
-
input: { hint: '[reload | decisions [n] | test <tool> <json-args>]' },
|
|
566
|
+
input: { hint: '[reload | decisions [n] | test [--cwd <dir>] [--env K=V] [--agent <sel>] <tool> <json-args>]' },
|
|
494
567
|
handler: invocation => runtime.command(invocation),
|
|
495
568
|
});
|
|
496
569
|
}
|
|
570
|
+
/**
|
|
571
|
+
* Identity candidates for the `agents` match dimension, derived from the
|
|
572
|
+
* caller agent's session header: `main` for top-level sessions, `subagent`
|
|
573
|
+
* for subagent children (`header.origin === 'subagent'`), and
|
|
574
|
+
* `preset:<name>` when a preset composed the agent. No agent (or an
|
|
575
|
+
* unidentifiable one) yields no candidates, so agent-scoped rules fail
|
|
576
|
+
* closed instead of matching an unknown caller.
|
|
577
|
+
* @param agent - the calling agent, when the call has one.
|
|
578
|
+
* @returns the candidate strings, in a stable order.
|
|
579
|
+
*/
|
|
580
|
+
function agentCandidates(agent) {
|
|
581
|
+
if (agent === undefined)
|
|
582
|
+
return [];
|
|
583
|
+
const header = agent.session.header;
|
|
584
|
+
const candidates = [header.origin === 'subagent' ? 'subagent' : 'main'];
|
|
585
|
+
if (typeof header.agentPreset === 'string' && header.agentPreset.length > 0)
|
|
586
|
+
candidates.push(`preset:${header.agentPreset}`);
|
|
587
|
+
return candidates;
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* Pull the next whitespace-delimited argument from a command tail,
|
|
591
|
+
* honoring single/double quotes (with backslash escapes) so JSON blobs and
|
|
592
|
+
* paths with spaces survive. The remainder is returned verbatim — the JSON
|
|
593
|
+
* argument tail of `/rules test` is never re-tokenized.
|
|
594
|
+
* @param text - the remaining command tail.
|
|
595
|
+
* @returns the token plus the untouched remainder, or undefined when only
|
|
596
|
+
* whitespace remains.
|
|
597
|
+
*/
|
|
598
|
+
function nextToken(text) {
|
|
599
|
+
let i = 0;
|
|
600
|
+
while (i < text.length && /\s/.test(text[i]))
|
|
601
|
+
i += 1;
|
|
602
|
+
if (i >= text.length)
|
|
603
|
+
return undefined;
|
|
604
|
+
const quote = text[i];
|
|
605
|
+
if (quote === '"' || quote === "'") {
|
|
606
|
+
let end = i + 1;
|
|
607
|
+
while (end < text.length && text[end] !== quote) {
|
|
608
|
+
if (text[end] === '\\')
|
|
609
|
+
end += 1;
|
|
610
|
+
end += 1;
|
|
611
|
+
}
|
|
612
|
+
if (end >= text.length)
|
|
613
|
+
return { token: text.slice(i + 1), rest: '' };
|
|
614
|
+
return { token: text.slice(i + 1, end), rest: text.slice(end + 1) };
|
|
615
|
+
}
|
|
616
|
+
let end = i;
|
|
617
|
+
while (end < text.length && !/\s/.test(text[end]))
|
|
618
|
+
end += 1;
|
|
619
|
+
return { token: text.slice(i, end), rest: text.slice(end) };
|
|
620
|
+
}
|
|
497
621
|
//# sourceMappingURL=runtime.js.map
|