@henryqw/pi-herdr-rename 0.3.0 → 0.3.1

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.
@@ -6,6 +6,7 @@ import {
6
6
  type ExtensionAPI,
7
7
  type ExtensionContext,
8
8
  } from "@earendil-works/pi-coding-agent";
9
+ import { createHerdrClient } from "@henryqw/pi-herdr";
9
10
 
10
11
  const WIDGET_KEY = "pi-herdr-rename";
11
12
  const WIDGET_RESULT_MS = 2_000;
@@ -134,15 +135,9 @@ async function generateTitle(text: string, ctx: ExtensionContext, signal: AbortS
134
135
  return title;
135
136
  }
136
137
 
137
- async function herdr(pi: ExtensionAPI, args: string[], signal: AbortSignal): Promise<string> {
138
- const result = await pi.exec("herdr", args, { signal });
139
- if (result.code !== 0 || result.killed) {
140
- throw new Error(`Herdr ${args[0]} failed: ${result.stderr.trim() || `exit code ${result.code}`}`);
141
- }
142
- return result.stdout;
143
- }
144
-
145
138
  export default function herdrRenameExtension(pi: ExtensionAPI): void {
139
+ const herdr = createHerdrClient<{ signal: AbortSignal }>((command, args, options) =>
140
+ pi.exec(command, [...args], options));
146
141
  let latestUserText: string | undefined;
147
142
  let automaticStarted = false;
148
143
  let sequence = 0;
@@ -158,21 +153,19 @@ export default function herdrRenameExtension(pi: ExtensionAPI): void {
158
153
  if (!paneId) return;
159
154
 
160
155
  if (!isCurrent(request, controller)) return;
161
- await herdr(pi, ["pane", "rename", paneId, title], controller.signal);
156
+ await herdr.run(["pane", "rename", paneId, title], { signal: controller.signal });
162
157
  if (!isCurrent(request, controller)) return;
163
158
 
164
- const paneResponse: unknown = JSON.parse(
165
- await herdr(pi, ["pane", "get", paneId], controller.signal),
166
- );
159
+ const paneResponse: unknown = await herdr.json(["pane", "get", paneId], { signal: controller.signal });
167
160
  const tabId = (paneResponse as { result?: { pane?: { tab_id?: unknown } } }).result?.pane?.tab_id;
168
161
  if (typeof tabId !== "string" || !tabId) throw new Error("Herdr pane response omitted tab_id.");
169
162
  if (!isCurrent(request, controller)) return;
170
163
 
171
- const tabResponse: unknown = JSON.parse(await herdr(pi, ["tab", "get", tabId], controller.signal));
164
+ const tabResponse: unknown = await herdr.json(["tab", "get", tabId], { signal: controller.signal });
172
165
  const paneCount = (tabResponse as { result?: { tab?: { pane_count?: unknown } } }).result?.tab?.pane_count;
173
166
  if (typeof paneCount !== "number") throw new Error("Herdr tab response omitted pane_count.");
174
167
  if (paneCount === 1 && isCurrent(request, controller)) {
175
- await herdr(pi, ["tab", "rename", tabId, title], controller.signal);
168
+ await herdr.run(["tab", "rename", tabId, title], { signal: controller.signal });
176
169
  }
177
170
  };
178
171
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@henryqw/pi-herdr-rename",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Generate short Pi chat titles and rename the current Herdr location.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -42,5 +42,8 @@
42
42
  "extensions": [
43
43
  "./extensions"
44
44
  ]
45
+ },
46
+ "dependencies": {
47
+ "@henryqw/pi-herdr": "^0.1.0"
45
48
  }
46
49
  }