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.
@@ -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
- if (path.toLowerCase() === root.toLowerCase())
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
  }
@@ -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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"}
@@ -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
- /** The match context `when` conditions evaluate against. */
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. Audit is appended once the final outcome is known, so the
95
- * recorded `outcome` matches what the waterfall settled on.
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. Agentless calls have no
108
- * session to audit; append failures are contained so an audit hiccup can
109
- * never change a permission decision.
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> <json>`
120
- * dry-evaluates the rules against a hypothetical call. Command output
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":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -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
- /** The match context `when` conditions evaluate against. */
171
- matchContext() {
172
- return { platform: process.platform, env: process.env };
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. Audit is appended once the final outcome is known, so the
179
- * recorded `outcome` matches what the waterfall settled on.
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. Agentless calls have no
206
- * session to audit; append failures are contained so an audit hiccup can
207
- * never change a permission decision.
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> <json>`
238
- * dry-evaluates the rules against a hypothetical call. Command output
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
- const verbText = verbRaw ?? '';
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