@wernerbisschoff/pi-gatekeeper 0.1.4 → 0.1.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.
@@ -53,8 +53,7 @@ export type PermissionDecision = {
53
53
  };
54
54
  /**
55
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).
56
+ * scoped decision. Used as the return type of {@link promptForCompoundCommand} (FLOW-12 Step 3).
58
57
  *
59
58
  * Flow references:
60
59
  * - FLOW-12 Step 3 ("CompoundDecision as return type of promptForCompoundCommand")
@@ -64,10 +63,20 @@ export type CompoundDecision = {
64
63
  segments: Array<{
65
64
  segment: string;
66
65
  decision: "allow" | "deny";
67
- scope: "ephemeral" | "session" | "persist";
66
+ scope: "ephemeral" | "session" | "always" | "persist";
68
67
  pattern?: string;
69
68
  }>;
70
- allowAllOnceUsed: boolean;
69
+ /**
70
+ * True when the user dismissed the prompt (Escape, focus loss, TUI
71
+ * auto-dismiss) without choosing any option. Distinct from "every segment
72
+ * was explicitly denied" — `finalizeCompoundGateResult` uses this flag to
73
+ * emit "Blocked: Prompt dismissed" instead of the misleading
74
+ * "Blocked: All segments denied" message. Always `false` for headless
75
+ * short-circuit, empty segments, prompt throw, and normal completion
76
+ * paths; only `true` when `ctx.ui.select` resolves with `undefined`
77
+ * mid-iteration.
78
+ */
79
+ cancelled: boolean;
71
80
  };
72
81
  /** ─── Sensitive Path Guard (compile-time, not user-configurable) ─── */
73
82
  /**
@@ -499,7 +508,10 @@ export declare function splitShellSegments(cmd: string): ShellSegment[];
499
508
  * candidate is a pure file-system path rather than a compound command fragment. Used by
500
509
  * {@link getAllowListEntries} to drop `/tmp/out` / `~/notes.md`-style entries from the prompt
501
510
  * preview and the on-disk allowlist so a developer cannot accidentally approve only the file
502
- * portion of `cat /tmp/output.txt`.
511
+ * portion of `cat /tmp/output.txt`. Composed of (a) the `isBarePath` predicate used by
512
+ * {@link isFilePath} for the bare-prefix case and (b) the {@link isFileOnlySegment} check
513
+ * applied to the trimmed entry to also drop single-token relative paths and known-extension
514
+ * filenames that survive the multiline split.
503
515
  *
504
516
  * Order of checks matters: the empty-string short-circuit returns `false` BEFORE the regex
505
517
  * matches, so an empty entry never collides with the `/^[/~].*$/` anchor; the leading-`/` or
@@ -509,6 +521,34 @@ export declare function splitShellSegments(cmd: string): ShellSegment[];
509
521
  * Source anchor: `architecture.md:152-163`, `data-model.md:177-228`.
510
522
  */
511
523
  export declare function isBarePath(entry: string): boolean;
524
+ /**
525
+ * Broader file-path detector than {@link isBarePath}. Catches:
526
+ * - Bare absolute / home-relative paths (`/tmp/x`, `~/x`) — delegated to {@link isBarePath}
527
+ * - Relative paths with separators (`build/config.json`, `src/index.ts`)
528
+ * - Standalone filenames with a known script/data extension (`script.sh`, `config.json`,
529
+ * `foo.txt`)
530
+ *
531
+ * Used by {@link isFileOnlySegment} (single-token filter) and by {@link extractCommandStem}
532
+ * to stop stripping a command's file-argument tail. The empty-string short-circuit matches
533
+ * {@link isBarePath}'s ordering so the two predicates compose cleanly.
534
+ */
535
+ export declare function isFilePath(entry: string): boolean;
536
+ /**
537
+ * True when `entry` is a "file-only" segment — after stripping leading env-var assignments,
538
+ * the segment is a SINGLE file-path token with no command word and no shell-operator
539
+ * punctuation (e.g., `script.sh`, `./run.sh`, `build/config.json`). Used by
540
+ * {@link getAllowListEntries} and {@link appendStemsToAllowList} to drop segments that point
541
+ * at a file rather than execute a command, so a multi-line input like
542
+ * echo hello
543
+ * script.sh
544
+ * does not produce an allowlist entry for `script.sh` (the user has to invoke the file
545
+ * explicitly via `bash script.sh` or `./script.sh` to land it in the allow list).
546
+ *
547
+ * Multi-token segments (`rm foo.sh`, `cat /tmp/x`) are NOT file-only — the first word is a
548
+ * command, the rest are arguments. The BARE_PATH_METACHAR_RE scan filters out shell-operator
549
+ * fragments and multi-word entries in one pass.
550
+ */
551
+ export declare function isFileOnlySegment(entry: string): boolean;
512
552
  /**
513
553
  * Returns `true` when `segment` looks like a leading shell environment-variable assignment
514
554
  * (`VAR=value`). Identifiers must start with `[a-zA-Z_]` and contain `[a-zA-Z0-9_]*` before
@@ -646,29 +686,6 @@ export declare function sessionAllow(command: string): void;
646
686
  * {@link setCurrentMode}.
647
687
  */
648
688
  export declare function isSessionAllowed(command: string): boolean;
649
- /**
650
- * Set the Allow All Once flag. After this call, the next
651
- * {@link consumeAllowAllOnce} returns `true` and clears the flag.
652
- * Exported so the TSK-009-03 lifecycle tests can drive it directly
653
- * without going through {@link promptForCompoundCommand}.
654
- */
655
- export declare function setAllowAllOnce(): void;
656
- /**
657
- * Consume (read-and-clear) the Allow All Once flag. Returns `true`
658
- * exactly once when the flag was set by a prior {@link setAllowAllOnce}
659
- * call; subsequent calls return `false` until the flag is re-set.
660
- * This one-shot semantics mirrors the existing {@link isEphemeralAllowed}
661
- * pattern.
662
- */
663
- export declare function consumeAllowAllOnce(): boolean;
664
- /**
665
- * Unconditionally clear the Allow All Once flag. Idempotent — calling
666
- * when the flag is already `false` is a no-op. Primed as the test-teardown
667
- * seam (per-test `beforeEach` in the FLOW-12 lifecycle describe); intended
668
- * for cleanup after compound command execution resolves (FLOW-12 Step 8 —
669
- * integration pending).
670
- */
671
- export declare function resetAllowAllOnce(): void;
672
689
  /**
673
690
  * Persist command stems from "ask" segments to the current level's allow list.
674
691
  * Each stem is written in two forms — bare (`"git diff"`) and wildcard (`"git diff *"`)
@@ -681,19 +698,38 @@ export declare function resetAllowAllOnce(): void;
681
698
  * glued-wildcard forms (`"git*"`) so future programmatic callers (FLOW-12's
682
699
  * `promptForCompoundCommand`) cannot seed `perm-rules.json` with an over-broad
683
700
  * pattern that would match `gitlog` / `git-fetch`. Empty input is a no-op (no write).
701
+ *
702
+ * Scope parameter:
703
+ * - `"session"` — in-memory only; adds each stem to {@link sessionAllowList} so it
704
+ * survives the rest of the session without ever touching disk. No file-only
705
+ * filtering or pattern expansion (matches the existing `sessionAllow` contract).
706
+ * - `"always"` (default) — persist to `perm-rules.json` per the original contract.
684
707
  */
685
- export declare function appendStemsToAllowList(stems: readonly string[], ctx: ExtensionContext): void;
708
+ export declare function appendStemsToAllowList(stems: readonly string[], ctx: ExtensionContext, scope?: "session" | "always"): void;
686
709
  /**
687
710
  * Segment-by-segment interactive prompt for compound commands (FLOW-12).
688
711
  *
689
- * For each "ask" segment, computes positional wildcard candidates via
690
- * {@link unfoldPositionalCandidates}, presents them in a `ctx.ui.select()`
691
- * dialog with Allow All Once / This Session / Always / Deny options, and
692
- * returns a {@link CompoundDecision} mapping each segment to its scoped result.
693
- *
694
- * The Allow All Once option short-circuits remaining segments without prompting
695
- * and sets the Allow All Once flag so {@link runPermissionGate} can skip
696
- * re-prompting for subsequent segments of the same compound execution.
712
+ * For each "ask" segment, computes the command stem (and parent stem for
713
+ * multi-word commands), presents them in a `ctx.ui.select()` dialog with
714
+ * a per-segment menu (Allow "{stem}" once, Allow "{stem}" this session,
715
+ * Allow "{stem}" always, Deny "{stem}"; multi-word segments also expose
716
+ * parent-stem session/always variants), and returns a {@link CompoundDecision}
717
+ * mapping each segment to its scoped result.
718
+ *
719
+ * After applying a per-segment decision, the function short-circuits when
720
+ * the user commits to a session or always scope (remaining segments are
721
+ * auto-allowed through that scope without further prompting); "once" and
722
+ * "deny" continue iterating so each segment is decided individually.
723
+ *
724
+ * **Classifier-aware pre-pass** (FLOW-12 Step 2 enhancement): segments
725
+ * whose per-segment classifier verdict is `allow` (e.g. cascade-matched
726
+ * `git diff *` for a `cd /repo; git diff HEAD` chain) are recorded as
727
+ * `decision: "allow"` in the result WITHOUT prompting — the cascade rule
728
+ * already gates them, so re-prompting wastes UI cycles and trains the user
729
+ * to deny out of habit. Per-segment `deny` is unreachable here because
730
+ * `runPermissionGate` routes denies through `classifyCommand`'s combined
731
+ * precedence before reaching this prompt (the compound branch only fires
732
+ * when combined decision is `ask`).
697
733
  *
698
734
  * Headless short-circuit (FLOW-11): when `ctx.hasUI === false`, returns an empty
699
735
  * `CompoundDecision` immediately without calling `ctx.ui.select` — the caller
@@ -703,7 +739,6 @@ export declare function appendStemsToAllowList(stems: readonly string[], ctx: Ex
703
739
  *
704
740
  * Flow references:
705
741
  * - FLOW-12 Step 3 ("segment-by-segment prompt loop")
706
- * - FLOW-12 Step 8 ("Allow All Once flag lifecycle")
707
742
  * - FLOW-08 Step 3 ("scope-based persistence routing")
708
743
  */
709
744
  export declare function promptForCompoundCommand(segments: string[], ctx: ExtensionContext): Promise<CompoundDecision>;
@@ -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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"}