@wernerbisschoff/pi-gatekeeper 0.1.1 → 0.1.3

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.
@@ -71,6 +71,8 @@
71
71
  "basename *",
72
72
  "env",
73
73
  "env *",
74
+ "grep",
75
+ "grep *",
74
76
  "printenv",
75
77
  "printenv *",
76
78
  "ps",
@@ -51,6 +51,24 @@ export type PermissionDecision = {
51
51
  decision: "allow" | "ask" | "deny";
52
52
  reason: string;
53
53
  };
54
+ /**
55
+ * Outcome of prompting for a compound (multi-segment) command. Maps each segment to its
56
+ * scoped decision and records whether the Allow All Once shortcut was triggered.
57
+ * Used as the return type of {@link promptForCompoundCommand} (FLOW-12 Step 3).
58
+ *
59
+ * Flow references:
60
+ * - FLOW-12 Step 3 ("CompoundDecision as return type of promptForCompoundCommand")
61
+ * - FLOW-08 Step 3 (scope-based persistence routing from scope field)
62
+ */
63
+ export type CompoundDecision = {
64
+ segments: Array<{
65
+ segment: string;
66
+ decision: "allow" | "deny";
67
+ scope: "ephemeral" | "session" | "persist";
68
+ pattern?: string;
69
+ }>;
70
+ allowAllOnceUsed: boolean;
71
+ };
54
72
  /** ─── Sensitive Path Guard (compile-time, not user-configurable) ─── */
55
73
  /**
56
74
  * Compile-time regex pattern + human-readable label for a sensitive path category.
@@ -235,17 +253,23 @@ export declare const PERMISSION_STATUS_KEY = "perm";
235
253
  * TUI footer labels keyed by PermissionLevel. Specific emoji + label pairs are
236
254
  * documented in AC-010-01 / AC-010-02
237
255
  * (`specs/001-pi-gatekeeper/issues/001-foundation-packaging.md:33`):
238
- * - `low` → `🟢 LOW` (green circle = restricted/safe)
239
- * - `medium` → `🟡 MEDIUM` (yellow circle = balanced)
240
- * - `high` → `🟠 HIGH` (orange circle = permissive/warning)
256
+ * - `low` → `LOW` (restricted/safe)
257
+ * - `medium` → `MEDIUM` (balanced)
258
+ * - `high` → `HIGH` (permissive)
241
259
  * The status key (`PERMISSION_STATUS_KEY`) is reserved by `architecture.md:157` — no other extension
242
260
  * may write to it (otherwise the level indicator could be shadowed on the TUI footer).
243
261
  */
262
+ /**
263
+ * Plain-text level labels used by {@link updateStatus} to build the
264
+ * TUI footer indicator. The labels are intentionally simple — the
265
+ * `/perm` hint is appended at render time so the indicator is
266
+ * self-documenting without coloured circles.
267
+ */
244
268
  export declare const MODE_LABELS: Record<PermissionLevel, string>;
245
269
  /**
246
270
  * Render the active permission level into the TUI footer via `ctx.ui.setStatus(...)` using the
247
271
  * reserved `PERMISSION_STATUS_KEY`. The custom footer extension (`footer.ts`) reads the
248
- * `~/.pi/agent/perm-mode` file directly and overlays the circle indicator (🟢/🟡/🟠) in the
272
+ * `~/.pi/agent/perm-mode` file directly and overlays the level indicator in the
249
273
  * bottom powerline bar — so the `setStatus` call here serves as the fallback for built-in
250
274
  * footer mode and as a data source for any extension that reads status keys directly.
251
275
  *
@@ -521,34 +545,80 @@ export declare function isEnvAssignment(segment: string): boolean;
521
545
  */
522
546
  export declare function stripLeadingEnvAssignments(command: string): string;
523
547
  /**
524
- * Compute the list of entries that "Allow Always" will persist for `command`, in the
525
- * AC-008-01-mandated order: **first non-bare segment, then full trimmed command, then remaining
526
- * non-bare segments in parser order**. Bare-path entries are filtered by
527
- * {@link isBarePath} so `/tmp/out` / `~/notes.md`-style tokens do not escape as standalone
528
- * allowlist entries. Duplicates are removed with an order-preserving Set-then-spread pass so the
529
- * "full + segments" formula collapses to a single entry when the full command equals the first
530
- * segment (e.g. `echo hello` `["echo hello"]`).
531
- *
532
- * **Ordering contract** (PRD AC-008-01 verbatim — pinned by `test/allowlist.test.ts`):
533
- * - `getAllowListEntries("npm install express && npm test")`
534
- * → `["npm install express", "npm install express && npm test", "npm test"]`
535
- * - `getAllowListEntries("a && b && c")` → `["a", "a && b && c", "b", "c"]`
536
- * - `getAllowListEntries("cat /tmp/output.txt")` → `["cat /tmp/output.txt"]`
537
- * (bare path inside the segment survives; the bare path as a standalone entry is filtered)
538
- * - `getAllowListEntries("echo hello")` → `["echo hello"]` (single segment, no dedup)
539
- * - `getAllowListEntries("npm test && npm test")` → `["npm test", "npm test && npm test"]`
540
- * (first-occurrence-wins dedup; duplicate segment removed, full compound preserved)
541
- *
542
- * Contract anchors:
543
- * - `data-model.md:177-228` (FR-008: allowlist entry computation)
544
- * - PRD AC-008-01 / AC-008-02 / AC-008-03 (`["npm install express", "npm install express && npm test", "npm test"]`)
545
- * - `architecture.md:152-163` (prompt preview ordering)
546
- *
547
- * Pure data transformation — no I/O, no `ExtensionContext`, no `os.homedir()` access. The
548
- * empty-input early-return keeps dedup logic clean and matches PRD's "empty command → empty array"
549
- * exception strategy.
548
+ * Compute allowlist entries for a command returns the FULL parsed segments
549
+ * (not command stems). These entries are used by:
550
+ * - `promptForPermission` for the "Will allow" preview (which further filters
551
+ * to show only the "ask" segments' command stems)
552
+ * - `appendStemsToAllowList` for persistence (each entry is already a command stem
553
+ * extracted by the caller this function does NOT do the stem extraction)
554
+ * - "allow-session" and "allow-once" for session/ephemeral caching of the
555
+ * full resolved command
556
+ *
557
+ * Returns full segments so the caller can decide how to display/persist them.
550
558
  */
551
559
  export declare function getAllowListEntries(command: string): string[];
560
+ /**
561
+ * Compute the list of positional wildcard candidates for a single shell segment. Used by
562
+ * FLOW-12's segment-by-segment prompt (TSK-009-04) to build `<candidate> * This Session` and
563
+ * `<candidate> * Always` options from the segment's executable token chain.
564
+ *
565
+ * Pipeline:
566
+ * 1. {@link stripLeadingEnvAssignments} — drop transient `VAR=val` prefixes so they do not
567
+ * leak into the candidate list.
568
+ * 2. {@link splitShellWords} — tokenize on whitespace, respecting single/double quotes so
569
+ * `"hello world"` is one token, not two.
570
+ * 3. {@link stripRedirectsFromTokens} — drop redirect operators (`>`, `>>`, `<`, `<<`,
571
+ * `2>`, `2>&1`, …) and their targets so `pnpm exec biome check test/ 2>&1` produces the
572
+ * same candidates as `pnpm exec biome check test/`.
573
+ * 4. Prefix-depth unfolding — emit one candidate per prefix depth `k`:
574
+ * `<tokens[0..k).join(" ") + " *">`. The wildcard is always on the LAST emitted token,
575
+ * never between tokens.
576
+ *
577
+ * Contract (pinned by `test/prompt.test.ts` FLOW-12 sub-describe):
578
+ * - `unfoldPositionalCandidates("pnpm exec biome check test/")` →
579
+ * `["pnpm *", "pnpm exec *", "pnpm exec biome *", "pnpm exec biome check *", "pnpm exec biome check test/ *"]`
580
+ * - `unfoldPositionalCandidates("pnpm exec biome check test/ 2>&1")` → identical to above
581
+ * (the `2>&1` redirect contributes nothing).
582
+ * - `unfoldPositionalCandidates("> /dev/null")` → `[]` (bare redirect consumes its target).
583
+ * - `unfoldPositionalCandidates("NODE_ENV=test pnpm test")` → `["pnpm *", "pnpm test *"]`
584
+ * (env-var prefix stripped, then unfolded).
585
+ * - `unfoldPositionalCandidates("head")` → `["head *"]` (single-word segment).
586
+ * - `unfoldPositionalCandidates("")` → `[]` (empty / whitespace-only inputs never throw).
587
+ *
588
+ * Pure function — no I/O, no side effects, no module-level state. O(n) over the segment's
589
+ * character count.
590
+ *
591
+ * Source anchor: AC-ADHOC-012-01 / AC-ADHOC-012-02 (positional wildcard unfolding).
592
+ */
593
+ export declare function unfoldPositionalCandidates(segment: string): string[];
594
+ /**
595
+ * Validate that every `*` wildcard in `pattern` is preceded by either a whitespace character or
596
+ * the start of the pattern. Used by FLOW-12 as the write-time guard inside
597
+ * {@link appendStemsToAllowList} (defense-in-depth) and by the ingest-time check on any
598
+ * programmatically-built wildcard before it lands in `perm-rules.json`.
599
+ *
600
+ * Rule (Issue 009 Hard Inclusion #2, AC-ADHOC-012-04):
601
+ * - Every `*` in `pattern` MUST be at position 0 OR immediately preceded by whitespace
602
+ * (` `, `\t`, or `\n`).
603
+ * - Patterns without a `*` are vacuously valid.
604
+ *
605
+ * Why: a pattern like `git*` (no space before the wildcard) compiles to the regex
606
+ * `^git.*$`, which matches `gitlog`, `git-fetch`, and any other input that merely STARTS
607
+ * with `git`. The full-token-boundary rule prevents this class of accidental over-match
608
+ * — `git *` is the correct pattern for "git followed by anything" and matches only inputs
609
+ * where `git` is its own whitespace-delimited token.
610
+ *
611
+ * Pure predicate — single linear scan, O(n) over `pattern.length`. Sub-microsecond per call.
612
+ *
613
+ * Contract (pinned by `test/prompt.test.ts` FLOW-12 sub-describe):
614
+ * - `validateFullTokenBoundary("git *")` → `true`
615
+ * - `validateFullTokenBoundary("git*")` → `false`
616
+ * - `validateFullTokenBoundary("*")` → `true` (position 0)
617
+ * - `validateFullTokenBoundary("git diff *")` → `true`
618
+ * - `validateFullTokenBoundary("npm install express")` → `true` (no `*`, vacuously valid)
619
+ * - `validateFullTokenBoundary("")` → `true` (vacuously valid)
620
+ */
621
+ export declare function validateFullTokenBoundary(pattern: string): boolean;
552
622
  /**
553
623
  * Add `command` to the in-memory ephemeral allow set so the next evaluation that matches the
554
624
  * command returns `{ allow: true }` without consulting the classifier or showing a prompt. Consumed
@@ -578,6 +648,67 @@ export declare function sessionAllow(command: string): void;
578
648
  * {@link setCurrentMode}.
579
649
  */
580
650
  export declare function isSessionAllowed(command: string): boolean;
651
+ /**
652
+ * Set the Allow All Once flag. After this call, the next
653
+ * {@link consumeAllowAllOnce} returns `true` and clears the flag.
654
+ * Exported so the TSK-009-03 lifecycle tests can drive it directly
655
+ * without going through {@link promptForCompoundCommand}.
656
+ */
657
+ export declare function setAllowAllOnce(): void;
658
+ /**
659
+ * Consume (read-and-clear) the Allow All Once flag. Returns `true`
660
+ * exactly once when the flag was set by a prior {@link setAllowAllOnce}
661
+ * call; subsequent calls return `false` until the flag is re-set.
662
+ * This one-shot semantics mirrors the existing {@link isEphemeralAllowed}
663
+ * pattern.
664
+ */
665
+ export declare function consumeAllowAllOnce(): boolean;
666
+ /**
667
+ * Unconditionally clear the Allow All Once flag. Idempotent — calling
668
+ * when the flag is already `false` is a no-op. Primed as the test-teardown
669
+ * seam (per-test `beforeEach` in the FLOW-12 lifecycle describe); intended
670
+ * for cleanup after compound command execution resolves (FLOW-12 Step 8 —
671
+ * integration pending).
672
+ */
673
+ export declare function resetAllowAllOnce(): void;
674
+ /**
675
+ * Persist command stems from "ask" segments to the current level's allow list.
676
+ * Each stem is written in two forms — bare (`"git diff"`) and wildcard (`"git diff *"`)
677
+ * — matching the default-rules convention without being overly broad (`"git *"`
678
+ * would allow all subcommands). Dedup via {@link appendUnique} so re-clicking
679
+ * "Allow Always" on the same compound does NOT duplicate entries.
680
+ *
681
+ * Defense-in-depth (Issue 009 §Hard Inclusion #2, AC-ADHOC-012-04): each candidate
682
+ * is filtered through {@link validateFullTokenBoundary}, silently dropping
683
+ * glued-wildcard forms (`"git*"`) so future programmatic callers (FLOW-12's
684
+ * `promptForCompoundCommand`) cannot seed `perm-rules.json` with an over-broad
685
+ * pattern that would match `gitlog` / `git-fetch`. Empty input is a no-op (no write).
686
+ */
687
+ export declare function appendStemsToAllowList(stems: readonly string[], ctx: ExtensionContext): void;
688
+ /**
689
+ * Segment-by-segment interactive prompt for compound commands (FLOW-12).
690
+ *
691
+ * For each "ask" segment, computes positional wildcard candidates via
692
+ * {@link unfoldPositionalCandidates}, presents them in a `ctx.ui.select()`
693
+ * dialog with Allow All Once / This Session / Always / Deny options, and
694
+ * returns a {@link CompoundDecision} mapping each segment to its scoped result.
695
+ *
696
+ * The Allow All Once option short-circuits remaining segments without prompting
697
+ * and sets the Allow All Once flag so {@link runPermissionGate} can skip
698
+ * re-prompting for subsequent segments of the same compound execution.
699
+ *
700
+ * Headless short-circuit (FLOW-11): when `ctx.hasUI === false`, returns an empty
701
+ * `CompoundDecision` immediately without calling `ctx.ui.select` — the caller
702
+ * should treat this as a deny per the existing headless auto-deny contract.
703
+ * Similarly, when `ctx.ui.select` is not a function (UI is absent at runtime),
704
+ * returns an empty result conservatively.
705
+ *
706
+ * Flow references:
707
+ * - FLOW-12 Step 3 ("segment-by-segment prompt loop")
708
+ * - FLOW-12 Step 8 ("Allow All Once flag lifecycle")
709
+ * - FLOW-08 Step 3 ("scope-based persistence routing")
710
+ */
711
+ export declare function promptForCompoundCommand(segments: string[], ctx: ExtensionContext): Promise<CompoundDecision>;
581
712
  /**
582
713
  * Four-branch permission gate — the user-visible keystone for FLOW-07 (interactive prompt),
583
714
  * FLOW-08 (scope: ephemeral / persist-allow / persist-deny), and FLOW-11 (headless auto-deny).
@@ -1 +1 @@
1
- {"version":3,"file":"gatekeeper.d.ts","sourceRoot":"","sources":["../src/gatekeeper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gatekeeper.d.ts","sourceRoot":"","sources":["../src/gatekeeper.ts"],"names":[],"mappings":"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"}