@dungle-scrubs/tallow 0.8.24 → 0.8.25

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/dist/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type RuntimePathProvider } from "./runtime-path-provider.js";
2
2
  export declare const APP_NAME = "tallow";
3
- export declare const TALLOW_VERSION = "0.8.24";
3
+ export declare const TALLOW_VERSION = "0.8.25";
4
4
  export declare const CONFIG_DIR = ".tallow";
5
5
  /** ~/.tallow (or override from ~/.config/tallow-work-dirs) — all user config, sessions, auth, extensions */
6
6
  export declare const TALLOW_HOME: string;
package/dist/config.js CHANGED
@@ -6,7 +6,7 @@ import { fileURLToPath } from "node:url";
6
6
  import { createRuntimePathProvider } from "./runtime-path-provider.js";
7
7
  // ─── Identity ────────────────────────────────────────────────────────────────
8
8
  export const APP_NAME = "tallow";
9
- export const TALLOW_VERSION = "0.8.24"; // x-release-please-version
9
+ export const TALLOW_VERSION = "0.8.25"; // x-release-please-version
10
10
  export const CONFIG_DIR = ".tallow";
11
11
  // ─── Paths ───────────────────────────────────────────────────────────────────
12
12
  /** ~/.tallow (or override from ~/.config/tallow-work-dirs) — all user config, sessions, auth, extensions */
@@ -0,0 +1,113 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from "bun:test";
2
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { resolveSharedSkillsDirsFromSettings } from "../index.js";
6
+
7
+ /**
8
+ * Create a temporary directory for test fixtures.
9
+ *
10
+ * @returns Path to the newly created temp directory
11
+ */
12
+ function createTmpDir(): string {
13
+ return mkdtempSync(join(tmpdir(), "skill-cmds-shared-"));
14
+ }
15
+
16
+ /**
17
+ * Write a settings.json file with the given content.
18
+ *
19
+ * @param dir - Directory to write settings.json into
20
+ * @param settings - Settings object to serialize
21
+ * @returns Path to the written settings.json
22
+ */
23
+ function writeSettings(dir: string, settings: Record<string, unknown>): string {
24
+ const path = join(dir, "settings.json");
25
+ writeFileSync(path, JSON.stringify(settings, null, 2));
26
+ return path;
27
+ }
28
+
29
+ describe("resolveSharedSkillsDirsFromSettings", () => {
30
+ let tmp: string;
31
+
32
+ beforeEach(() => {
33
+ tmp = createTmpDir();
34
+ });
35
+
36
+ afterEach(() => {
37
+ rmSync(tmp, { recursive: true, force: true });
38
+ });
39
+
40
+ it("returns empty array when settings file does not exist", () => {
41
+ expect(resolveSharedSkillsDirsFromSettings(join(tmp, "nope.json"))).toEqual([]);
42
+ });
43
+
44
+ it("returns empty array when settings file is invalid JSON", () => {
45
+ const path = join(tmp, "settings.json");
46
+ writeFileSync(path, "not json {{");
47
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
48
+ });
49
+
50
+ it("returns empty array when sharedSkillsDirs is missing", () => {
51
+ const path = writeSettings(tmp, { theme: "nord" });
52
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
53
+ });
54
+
55
+ it("returns empty array when sharedSkillsDirs is not an array", () => {
56
+ const path = writeSettings(tmp, { sharedSkillsDirs: "/some/path" });
57
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
58
+ });
59
+
60
+ it("resolves absolute paths that exist as directories", () => {
61
+ const skillsDir = join(tmp, "my-skills");
62
+ mkdirSync(skillsDir);
63
+ const path = writeSettings(tmp, { sharedSkillsDirs: [skillsDir] });
64
+
65
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([skillsDir]);
66
+ });
67
+
68
+ it("skips non-existent directories silently", () => {
69
+ const path = writeSettings(tmp, {
70
+ sharedSkillsDirs: [join(tmp, "does-not-exist")],
71
+ });
72
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
73
+ });
74
+
75
+ it("skips paths that are files, not directories", () => {
76
+ const filePath = join(tmp, "not-a-dir");
77
+ writeFileSync(filePath, "hello");
78
+ const path = writeSettings(tmp, { sharedSkillsDirs: [filePath] });
79
+
80
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
81
+ });
82
+
83
+ it("rejects relative paths", () => {
84
+ const path = writeSettings(tmp, {
85
+ sharedSkillsDirs: ["relative/path", "./also-relative", "no-slash"],
86
+ });
87
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
88
+ });
89
+
90
+ it("rejects non-string and empty entries", () => {
91
+ const path = writeSettings(tmp, {
92
+ sharedSkillsDirs: [42, null, "", " ", true],
93
+ });
94
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
95
+ });
96
+
97
+ it("handles mixed valid and invalid entries", () => {
98
+ const validDir = join(tmp, "valid");
99
+ mkdirSync(validDir);
100
+ const path = writeSettings(tmp, {
101
+ sharedSkillsDirs: [validDir, "relative", join(tmp, "nonexistent"), 42],
102
+ });
103
+
104
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([validDir]);
105
+ });
106
+
107
+ it("expands tilde paths (skips when dir does not exist)", () => {
108
+ const path = writeSettings(tmp, {
109
+ sharedSkillsDirs: ["~/.nonexistent-skills-test-dir-99999"],
110
+ });
111
+ expect(resolveSharedSkillsDirsFromSettings(path)).toEqual([]);
112
+ });
113
+ });
@@ -125,24 +125,81 @@ function disableBuiltinSkillCommands(): void {
125
125
  }
126
126
  }
127
127
 
128
+ /**
129
+ * Resolve shared skill directories from global settings.
130
+ *
131
+ * Reads `sharedSkillsDirs`, tilde-expands each entry, and validates
132
+ * that it exists and is a directory. Mirrors the logic in `sdk.ts`
133
+ * so slash-command registration sees the same skills as the system prompt.
134
+ *
135
+ * @param settingsPath - Path to global settings.json
136
+ * @returns Array of validated, resolved directory paths
137
+ */
138
+ export function resolveSharedSkillsDirsFromSettings(settingsPath: string): string[] {
139
+ if (!fs.existsSync(settingsPath)) return [];
140
+ let settings: Record<string, unknown>;
141
+ try {
142
+ settings = JSON.parse(fs.readFileSync(settingsPath, "utf-8"));
143
+ } catch {
144
+ return [];
145
+ }
146
+ const raw = settings.sharedSkillsDirs;
147
+ if (!Array.isArray(raw)) return [];
148
+
149
+ const home = process.env.HOME ?? process.env.USERPROFILE ?? "~";
150
+ const resolved: string[] = [];
151
+
152
+ for (const entry of raw) {
153
+ if (typeof entry !== "string" || !entry.trim()) continue;
154
+ const trimmed = entry.trim();
155
+ let expanded: string;
156
+ if (trimmed === "~") {
157
+ expanded = home;
158
+ } else if (trimmed.startsWith("~/")) {
159
+ expanded = join(home, trimmed.slice(2));
160
+ } else if (trimmed.startsWith("/")) {
161
+ expanded = trimmed;
162
+ } else {
163
+ continue;
164
+ }
165
+ try {
166
+ const stats = fs.statSync(expanded);
167
+ if (stats.isDirectory()) resolved.push(expanded);
168
+ } catch {
169
+ // statSync failed — skip this entry
170
+ }
171
+ }
172
+ return resolved;
173
+ }
174
+
128
175
  export default function (pi: ExtensionAPI) {
129
176
  disableBuiltinSkillCommands();
130
177
 
178
+ const agentDir =
179
+ process.env.PI_CODING_AGENT_DIR ??
180
+ join(process.env.HOME ?? process.env.USERPROFILE ?? "~", ".tallow");
181
+ const settingsPath = join(agentDir, "settings.json");
182
+
183
+ // Shared skill directories from global settings (e.g. ~/dev/skills)
184
+ const sharedSkillsDirs = resolveSharedSkillsDirsFromSettings(settingsPath);
185
+
131
186
  // Include .claude/skills/ directories for Claude Code compatibility
132
- const claudeSkillPaths: string[] = [];
187
+ const extraSkillPaths: string[] = [...sharedSkillsDirs];
133
188
  const userClaudeSkills = join(
134
189
  process.env.HOME ?? process.env.USERPROFILE ?? "~",
135
190
  ".claude",
136
191
  "skills"
137
192
  );
138
193
  const projectClaudeSkills = join(process.cwd(), ".claude", "skills");
139
- if (fs.existsSync(userClaudeSkills)) claudeSkillPaths.push(userClaudeSkills);
194
+ if (fs.existsSync(userClaudeSkills)) extraSkillPaths.push(userClaudeSkills);
140
195
  if (isProjectTrusted(process.cwd()) && fs.existsSync(projectClaudeSkills)) {
141
- claudeSkillPaths.push(projectClaudeSkills);
196
+ extraSkillPaths.push(projectClaudeSkills);
142
197
  }
143
198
 
144
- // Load skills synchronously during extension init for autocomplete to work
145
- const { skills } = loadSkills({ skillPaths: claudeSkillPaths });
199
+ // Load skills synchronously during extension init for autocomplete to work.
200
+ // includeDefaults: true picks up ~/.tallow/skills/ and ./skills/ (project).
201
+ // extraSkillPaths adds shared dirs + Claude bridge paths.
202
+ const { skills } = loadSkills({ agentDir, skillPaths: extraSkillPaths });
146
203
 
147
204
  for (const skill of skills) {
148
205
  // Validate name before registration — invalid names produce broken commands
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
@@ -483,6 +483,38 @@ function matchesModifyOtherKeys(data, expectedKeycode, expectedModifier) {
483
483
  const actualMod = modValue - 1;
484
484
  return keycode === expectedKeycode && actualMod === expectedModifier;
485
485
  }
486
+ /**
487
+ * Detect Windows Terminal by session environment variable.
488
+ * Excludes SSH sessions where WT_SESSION may leak from the host.
489
+ *
490
+ * @returns true when running directly inside Windows Terminal
491
+ */
492
+ function isWindowsTerminalSession() {
493
+ return (Boolean(process.env.WT_SESSION) &&
494
+ !process.env.SSH_CONNECTION &&
495
+ !process.env.SSH_CLIENT &&
496
+ !process.env.SSH_TTY);
497
+ }
498
+ /**
499
+ * Raw 0x08 (BS) is ambiguous in legacy terminals.
500
+ *
501
+ * - Windows Terminal uses it for Ctrl+Backspace.
502
+ * - Some legacy terminals and tmux setups send it for plain Backspace.
503
+ *
504
+ * Prefer explicit Kitty / CSI-u / modifyOtherKeys sequences whenever they are
505
+ * available. Fall back to a Windows Terminal heuristic only for raw BS bytes.
506
+ *
507
+ * @param data - Raw terminal input byte
508
+ * @param expectedModifier - Modifier bitmask to match against
509
+ * @returns true if the data matches backspace with the given modifier
510
+ */
511
+ function matchesRawBackspace(data, expectedModifier) {
512
+ if (data === "\x7f")
513
+ return expectedModifier === 0;
514
+ if (data !== "\x08")
515
+ return false;
516
+ return isWindowsTerminalSession() ? expectedModifier === MODIFIERS.ctrl : expectedModifier === 0;
517
+ }
486
518
  // =============================================================================
487
519
  // Generic Key Matching
488
520
  // =============================================================================
@@ -556,7 +588,9 @@ export function matchesKey(data, keyId) {
556
588
  case "esc":
557
589
  if (modifier !== 0)
558
590
  return false;
559
- return data === "\x1b" || matchesKittySequence(data, CODEPOINTS.escape, 0);
591
+ return (data === "\x1b" ||
592
+ matchesKittySequence(data, CODEPOINTS.escape, 0) ||
593
+ matchesModifyOtherKeys(data, CODEPOINTS.escape, 0));
560
594
  case "space":
561
595
  if (!_kittyProtocolActive) {
562
596
  if (ctrl && !alt && !shift && data === "\x00") {
@@ -567,9 +601,12 @@ export function matchesKey(data, keyId) {
567
601
  }
568
602
  }
569
603
  if (modifier === 0) {
570
- return data === " " || matchesKittySequence(data, CODEPOINTS.space, 0);
604
+ return (data === " " ||
605
+ matchesKittySequence(data, CODEPOINTS.space, 0) ||
606
+ matchesModifyOtherKeys(data, CODEPOINTS.space, 0));
571
607
  }
572
- return matchesKittySequence(data, CODEPOINTS.space, modifier);
608
+ return (matchesKittySequence(data, CODEPOINTS.space, modifier) ||
609
+ matchesModifyOtherKeys(data, CODEPOINTS.space, modifier));
573
610
  case "tab":
574
611
  if (shift && !ctrl && !alt) {
575
612
  return data === "\x1b[Z" || matchesKittySequence(data, CODEPOINTS.tab, MODIFIERS.shift);
@@ -629,12 +666,25 @@ export function matchesKey(data, keyId) {
629
666
  if (data === "\x1b\x7f" || data === "\x1b\b") {
630
667
  return true;
631
668
  }
632
- return matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.alt);
669
+ return (matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.alt) ||
670
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, MODIFIERS.alt));
671
+ }
672
+ if (ctrl && !alt && !shift) {
673
+ // Legacy raw 0x08 is ambiguous: it can be Ctrl+Backspace on Windows
674
+ // Terminal or plain Backspace on other terminals, while also
675
+ // overlapping with Ctrl+H.
676
+ if (matchesRawBackspace(data, MODIFIERS.ctrl))
677
+ return true;
678
+ return (matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.ctrl) ||
679
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, MODIFIERS.ctrl));
633
680
  }
634
681
  if (modifier === 0) {
635
- return (data === "\x7f" || data === "\x08" || matchesKittySequence(data, CODEPOINTS.backspace, 0));
682
+ return (matchesRawBackspace(data, 0) ||
683
+ matchesKittySequence(data, CODEPOINTS.backspace, 0) ||
684
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, 0));
636
685
  }
637
- return matchesKittySequence(data, CODEPOINTS.backspace, modifier);
686
+ return (matchesKittySequence(data, CODEPOINTS.backspace, modifier) ||
687
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, modifier));
638
688
  case "insert":
639
689
  if (modifier === 0) {
640
690
  return (matchesLegacySequence(data, LEGACY_KEY_SEQUENCES.insert) ||
@@ -914,8 +964,10 @@ export function parseKey(data) {
914
964
  return "ctrl+space";
915
965
  if (data === " ")
916
966
  return "space";
917
- if (data === "\x7f" || data === "\x08")
967
+ if (data === "\x7f")
918
968
  return "backspace";
969
+ if (data === "\x08")
970
+ return isWindowsTerminalSession() ? "ctrl+backspace" : "backspace";
919
971
  if (data === "\x1b[Z")
920
972
  return "shift+tab";
921
973
  if (!_kittyProtocolActive && data === "\x1b\r")
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mariozechner/pi-tui",
3
- "version": "0.58.4",
3
+ "version": "0.60.0",
4
4
  "private": true,
5
5
  "description": "Tallow's TUI fork — customizable loader, rounded borders, which-key overlay",
6
6
  "type": "module",
@@ -675,6 +675,40 @@ function matchesModifyOtherKeys(
675
675
  return keycode === expectedKeycode && actualMod === expectedModifier;
676
676
  }
677
677
 
678
+ /**
679
+ * Detect Windows Terminal by session environment variable.
680
+ * Excludes SSH sessions where WT_SESSION may leak from the host.
681
+ *
682
+ * @returns true when running directly inside Windows Terminal
683
+ */
684
+ function isWindowsTerminalSession(): boolean {
685
+ return (
686
+ Boolean(process.env.WT_SESSION) &&
687
+ !process.env.SSH_CONNECTION &&
688
+ !process.env.SSH_CLIENT &&
689
+ !process.env.SSH_TTY
690
+ );
691
+ }
692
+
693
+ /**
694
+ * Raw 0x08 (BS) is ambiguous in legacy terminals.
695
+ *
696
+ * - Windows Terminal uses it for Ctrl+Backspace.
697
+ * - Some legacy terminals and tmux setups send it for plain Backspace.
698
+ *
699
+ * Prefer explicit Kitty / CSI-u / modifyOtherKeys sequences whenever they are
700
+ * available. Fall back to a Windows Terminal heuristic only for raw BS bytes.
701
+ *
702
+ * @param data - Raw terminal input byte
703
+ * @param expectedModifier - Modifier bitmask to match against
704
+ * @returns true if the data matches backspace with the given modifier
705
+ */
706
+ function matchesRawBackspace(data: string, expectedModifier: number): boolean {
707
+ if (data === "\x7f") return expectedModifier === 0;
708
+ if (data !== "\x08") return false;
709
+ return isWindowsTerminalSession() ? expectedModifier === MODIFIERS.ctrl : expectedModifier === 0;
710
+ }
711
+
678
712
  // =============================================================================
679
713
  // Generic Key Matching
680
714
  // =============================================================================
@@ -751,7 +785,11 @@ export function matchesKey(data: string, keyId: KeyId): boolean {
751
785
  case "escape":
752
786
  case "esc":
753
787
  if (modifier !== 0) return false;
754
- return data === "\x1b" || matchesKittySequence(data, CODEPOINTS.escape, 0);
788
+ return (
789
+ data === "\x1b" ||
790
+ matchesKittySequence(data, CODEPOINTS.escape, 0) ||
791
+ matchesModifyOtherKeys(data, CODEPOINTS.escape, 0)
792
+ );
755
793
 
756
794
  case "space":
757
795
  if (!_kittyProtocolActive) {
@@ -763,9 +801,16 @@ export function matchesKey(data: string, keyId: KeyId): boolean {
763
801
  }
764
802
  }
765
803
  if (modifier === 0) {
766
- return data === " " || matchesKittySequence(data, CODEPOINTS.space, 0);
804
+ return (
805
+ data === " " ||
806
+ matchesKittySequence(data, CODEPOINTS.space, 0) ||
807
+ matchesModifyOtherKeys(data, CODEPOINTS.space, 0)
808
+ );
767
809
  }
768
- return matchesKittySequence(data, CODEPOINTS.space, modifier);
810
+ return (
811
+ matchesKittySequence(data, CODEPOINTS.space, modifier) ||
812
+ matchesModifyOtherKeys(data, CODEPOINTS.space, modifier)
813
+ );
769
814
 
770
815
  case "tab":
771
816
  if (shift && !ctrl && !alt) {
@@ -836,14 +881,32 @@ export function matchesKey(data: string, keyId: KeyId): boolean {
836
881
  if (data === "\x1b\x7f" || data === "\x1b\b") {
837
882
  return true;
838
883
  }
839
- return matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.alt);
884
+ return (
885
+ matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.alt) ||
886
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, MODIFIERS.alt)
887
+ );
888
+ }
889
+ if (ctrl && !alt && !shift) {
890
+ // Legacy raw 0x08 is ambiguous: it can be Ctrl+Backspace on Windows
891
+ // Terminal or plain Backspace on other terminals, while also
892
+ // overlapping with Ctrl+H.
893
+ if (matchesRawBackspace(data, MODIFIERS.ctrl)) return true;
894
+ return (
895
+ matchesKittySequence(data, CODEPOINTS.backspace, MODIFIERS.ctrl) ||
896
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, MODIFIERS.ctrl)
897
+ );
840
898
  }
841
899
  if (modifier === 0) {
842
900
  return (
843
- data === "\x7f" || data === "\x08" || matchesKittySequence(data, CODEPOINTS.backspace, 0)
901
+ matchesRawBackspace(data, 0) ||
902
+ matchesKittySequence(data, CODEPOINTS.backspace, 0) ||
903
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, 0)
844
904
  );
845
905
  }
846
- return matchesKittySequence(data, CODEPOINTS.backspace, modifier);
906
+ return (
907
+ matchesKittySequence(data, CODEPOINTS.backspace, modifier) ||
908
+ matchesModifyOtherKeys(data, CODEPOINTS.backspace, modifier)
909
+ );
847
910
 
848
911
  case "insert":
849
912
  if (modifier === 0) {
@@ -1147,7 +1210,8 @@ export function parseKey(data: string): string | undefined {
1147
1210
  return "enter";
1148
1211
  if (data === "\x00") return "ctrl+space";
1149
1212
  if (data === " ") return "space";
1150
- if (data === "\x7f" || data === "\x08") return "backspace";
1213
+ if (data === "\x7f") return "backspace";
1214
+ if (data === "\x08") return isWindowsTerminalSession() ? "ctrl+backspace" : "backspace";
1151
1215
  if (data === "\x1b[Z") return "shift+tab";
1152
1216
  if (!_kittyProtocolActive && data === "\x1b\r") return "alt+enter";
1153
1217
  if (!_kittyProtocolActive && data === "\x1b ") return "alt+space";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dungle-scrubs/tallow",
3
- "version": "0.8.24",
3
+ "version": "0.8.25",
4
4
  "description": "An opinionated coding agent. Built on pi.",
5
5
  "piConfig": {
6
6
  "name": "tallow",
@@ -75,7 +75,7 @@
75
75
  "@clack/prompts": "^1.1.0",
76
76
  "@dungle-scrubs/synapse": "0.1.6",
77
77
  "@mariozechner/pi-coding-agent": "^0.58.4",
78
- "@mariozechner/pi-tui": "workspace:*",
78
+ "@mariozechner/pi-tui": "^0.60.0",
79
79
  "@opentelemetry/api": "^1.9.0",
80
80
  "@sinclair/typebox": "0.34.48",
81
81
  "ai": "^6.0.116",
@@ -1,272 +0,0 @@
1
- import { describe, expect, it } from "bun:test";
2
- import type { ExtensionContext } from "@mariozechner/pi-coding-agent";
3
- import { ExtensionHarness } from "../../test-utils/extension-harness.js";
4
- import planModeExtension from "../plan-mode-tool/index.js";
5
-
6
- const PLAN_TEXT = [
7
- "Plan:",
8
- "1. Inspect tool failure paths in plan execution",
9
- "2. Verify fallback behavior for blocked operations",
10
- "3. Finalize recovery guidance for remaining step",
11
- ].join("\n");
12
-
13
- interface ContextOptions {
14
- readonly confirmResponse?: boolean;
15
- readonly editorResponse?: string;
16
- readonly hasUI: boolean;
17
- readonly selectResponse?: string;
18
- }
19
-
20
- /**
21
- * Create a minimal extension context with configurable UI responses.
22
- *
23
- * @param options - Context and UI response options
24
- * @returns Extension context for direct event firing
25
- */
26
- function createContext(options: ContextOptions): ExtensionContext {
27
- const theme = {
28
- bg(_token: string, value: string) {
29
- return value;
30
- },
31
- fg(_token: string, value: string) {
32
- return value;
33
- },
34
- strikethrough(value: string) {
35
- return value;
36
- },
37
- };
38
-
39
- return {
40
- abort: () => {},
41
- compact: () => {},
42
- cwd: process.cwd(),
43
- getContextUsage: () => undefined,
44
- getSystemPrompt: () => "",
45
- hasPendingMessages: () => false,
46
- hasUI: options.hasUI,
47
- isIdle: () => true,
48
- model: undefined,
49
- modelRegistry: {
50
- getApiKeyForProvider: async () => undefined,
51
- } as never,
52
- sessionManager: {
53
- appendEntry: () => {},
54
- getEntries: () => [],
55
- } as never,
56
- shutdown: () => {},
57
- ui: {
58
- async confirm() {
59
- return options.confirmResponse ?? false;
60
- },
61
- async custom() {
62
- return undefined as never;
63
- },
64
- async editor() {
65
- return options.editorResponse;
66
- },
67
- async input() {
68
- return undefined;
69
- },
70
- notify() {},
71
- pasteToEditor() {},
72
- async select() {
73
- return options.selectResponse;
74
- },
75
- setEditorComponent() {},
76
- setEditorText() {},
77
- setFooter() {},
78
- setHeader() {},
79
- setStatus() {},
80
- setTitle() {},
81
- setToolsExpanded() {},
82
- setWidget() {},
83
- setWorkingMessage() {},
84
- get theme() {
85
- return theme as ExtensionContext["ui"]["theme"];
86
- },
87
- getAllThemes() {
88
- return [];
89
- },
90
- getEditorText() {
91
- return "";
92
- },
93
- getTheme() {
94
- return undefined;
95
- },
96
- getToolsExpanded() {
97
- return false;
98
- },
99
- setTheme() {
100
- return { error: "Test stub", success: false };
101
- },
102
- } as ExtensionContext["ui"],
103
- };
104
- }
105
-
106
- /**
107
- * Build an assistant message payload with a single text block.
108
- *
109
- * @param text - Assistant text content
110
- * @returns Assistant message payload
111
- */
112
- function assistantMessage(text: string): {
113
- readonly content: readonly [{ readonly text: string; readonly type: "text" }];
114
- readonly role: "assistant";
115
- } {
116
- return {
117
- content: [{ text, type: "text" }],
118
- role: "assistant",
119
- };
120
- }
121
-
122
- /**
123
- * Initialize plan execution mode with a 3-step plan and tracking enabled.
124
- *
125
- * @param harness - Extension harness with plan-mode extension loaded
126
- * @returns Promise that resolves once execution mode is active
127
- */
128
- async function initializeExecutionMode(harness: ExtensionHarness): Promise<void> {
129
- harness.setFlag("plan", true);
130
- await harness.fireEvent(
131
- "session_start",
132
- { type: "session_start" },
133
- createContext({ hasUI: true })
134
- );
135
- await harness.fireEvent(
136
- "agent_end",
137
- { messages: [assistantMessage(PLAN_TEXT)] },
138
- createContext({
139
- hasUI: true,
140
- selectResponse: "Execute the plan (track progress)",
141
- })
142
- );
143
- }
144
-
145
- /**
146
- * Fire a failed tool_result event using the documented test payload shape.
147
- *
148
- * @param harness - Extension harness instance
149
- * @param ctx - Extension context for the event
150
- * @returns Promise that resolves after handlers run
151
- */
152
- async function fireFailedToolResult(
153
- harness: ExtensionHarness,
154
- ctx: ExtensionContext
155
- ): Promise<void> {
156
- await harness.fireEvent(
157
- "tool_result",
158
- {
159
- content: [{ text: "blocked", type: "text" }],
160
- input: { command: "echo blocked" },
161
- isError: true,
162
- toolCallId: "tool-call-1",
163
- toolName: "bash",
164
- },
165
- ctx
166
- );
167
- }
168
-
169
- /**
170
- * Fire a turn_end event that marks a plan step as complete.
171
- *
172
- * @param harness - Extension harness instance
173
- * @param step - Step number to mark done
174
- * @returns Promise that resolves after handlers run
175
- */
176
- async function fireDoneStep(harness: ExtensionHarness, step: number): Promise<void> {
177
- await harness.fireEvent(
178
- "turn_end",
179
- { message: assistantMessage(`[DONE:${step}]`) },
180
- createContext({ hasUI: true })
181
- );
182
- }
183
-
184
- describe("Plan rejection feedback", () => {
185
- it("ignores tool_result during execution when hasUI is false", async () => {
186
- const harness = ExtensionHarness.create();
187
- await harness.loadExtension(planModeExtension);
188
- await initializeExecutionMode(harness);
189
-
190
- await fireFailedToolResult(harness, createContext({ hasUI: false }));
191
-
192
- expect(harness.sentUserMessages).toHaveLength(0);
193
- });
194
-
195
- it("sends steer guidance with Step 1 prefix when user confirms and provides guidance", async () => {
196
- const harness = ExtensionHarness.create();
197
- await harness.loadExtension(planModeExtension);
198
- await initializeExecutionMode(harness);
199
-
200
- await fireFailedToolResult(
201
- harness,
202
- createContext({
203
- confirmResponse: true,
204
- editorResponse: "Use a narrower inspection command and continue.",
205
- hasUI: true,
206
- })
207
- );
208
-
209
- expect(harness.sentUserMessages).toHaveLength(1);
210
- const [message] = harness.sentUserMessages;
211
- if (!message || typeof message.content !== "string") {
212
- throw new Error("Expected one string user message");
213
- }
214
- expect(message.content.startsWith("[PLAN GUIDANCE — Step 1:")).toBe(true);
215
- expect(message.options?.deliverAs).toBe("steer");
216
- });
217
-
218
- it("does not send guidance when user declines confirmation", async () => {
219
- const harness = ExtensionHarness.create();
220
- await harness.loadExtension(planModeExtension);
221
- await initializeExecutionMode(harness);
222
-
223
- await fireFailedToolResult(
224
- harness,
225
- createContext({
226
- confirmResponse: false,
227
- hasUI: true,
228
- })
229
- );
230
-
231
- expect(harness.sentUserMessages).toHaveLength(0);
232
- });
233
-
234
- it("advances tracked step guidance to Step 3 and stops after all steps complete", async () => {
235
- const harness = ExtensionHarness.create();
236
- await harness.loadExtension(planModeExtension);
237
- await initializeExecutionMode(harness);
238
-
239
- await fireDoneStep(harness, 1);
240
- await fireDoneStep(harness, 2);
241
-
242
- await fireFailedToolResult(
243
- harness,
244
- createContext({
245
- confirmResponse: true,
246
- editorResponse: "Focus on the final verification sequence.",
247
- hasUI: true,
248
- })
249
- );
250
-
251
- expect(harness.sentUserMessages).toHaveLength(1);
252
- const [stepThreeGuidance] = harness.sentUserMessages;
253
- if (!stepThreeGuidance || typeof stepThreeGuidance.content !== "string") {
254
- throw new Error("Expected one string user message");
255
- }
256
- expect(stepThreeGuidance.content.startsWith("[PLAN GUIDANCE — Step 3:")).toBe(true);
257
- expect(stepThreeGuidance.options?.deliverAs).toBe("steer");
258
-
259
- await fireDoneStep(harness, 3);
260
-
261
- await fireFailedToolResult(
262
- harness,
263
- createContext({
264
- confirmResponse: true,
265
- editorResponse: "This should not be sent after completion.",
266
- hasUI: true,
267
- })
268
- );
269
-
270
- expect(harness.sentUserMessages).toHaveLength(1);
271
- });
272
- });