@xynogen/pix-9router 0.3.5 → 0.3.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.
- package/package.json +1 -1
- package/src/fetch.ts +1 -0
- package/src/format.test.ts +16 -0
- package/src/search.ts +1 -0
- package/src/transcribe.test.ts +8 -3
- package/src/transcribe.ts +1 -0
package/package.json
CHANGED
package/src/fetch.ts
CHANGED
|
@@ -264,6 +264,7 @@ export default function registerFetch(pi: ExtensionAPI): void {
|
|
|
264
264
|
pi.registerTool({
|
|
265
265
|
name: "fetch",
|
|
266
266
|
label: "Fetch",
|
|
267
|
+
renderShell: "self",
|
|
267
268
|
description: "Fetch a web page as markdown, text, or raw HTML via exa. Returns page content.",
|
|
268
269
|
promptSnippet:
|
|
269
270
|
"fetch(url, format, max_characters?) — format: 'markdown', 'text', or 'html'. Read page content via exa.",
|
package/src/format.test.ts
CHANGED
|
@@ -282,6 +282,17 @@ const renderTheme = {
|
|
|
282
282
|
bold: (text: string) => `*${text}*`,
|
|
283
283
|
} as never;
|
|
284
284
|
|
|
285
|
+
function captureRegisteredTool(register: (pi: never) => void): Record<string, unknown> {
|
|
286
|
+
let tool: Record<string, unknown> | undefined;
|
|
287
|
+
register({
|
|
288
|
+
registerTool(value: Record<string, unknown>) {
|
|
289
|
+
tool = value;
|
|
290
|
+
},
|
|
291
|
+
} as never);
|
|
292
|
+
if (!tool) throw new Error("tool was not registered");
|
|
293
|
+
return tool;
|
|
294
|
+
}
|
|
295
|
+
|
|
285
296
|
function renderRegisteredResult(
|
|
286
297
|
register: (pi: never) => void,
|
|
287
298
|
result: Record<string, unknown>,
|
|
@@ -313,6 +324,11 @@ function renderRegisteredResult(
|
|
|
313
324
|
}
|
|
314
325
|
|
|
315
326
|
describe("fetch and search compact renderers", () => {
|
|
327
|
+
it("use the self-rendered shell so status marks have no leading box padding", () => {
|
|
328
|
+
expect(captureRegisteredTool(registerFetch).renderShell).toBe("self");
|
|
329
|
+
expect(captureRegisteredTool(registerSearch).renderShell).toBe("self");
|
|
330
|
+
});
|
|
331
|
+
|
|
316
332
|
it("renders fallback and failure rows from metadata", () => {
|
|
317
333
|
const fetchRow = renderRegisteredResult(registerFetch, {
|
|
318
334
|
content: [{ type: "text", text: "fallback body" }],
|
package/src/search.ts
CHANGED
|
@@ -293,6 +293,7 @@ export default function registerSearch(pi: ExtensionAPI): void {
|
|
|
293
293
|
pi.registerTool({
|
|
294
294
|
name: "search",
|
|
295
295
|
label: "Search",
|
|
296
|
+
renderShell: "self",
|
|
296
297
|
description: "Web or news search via exa. Returns title, url, and snippet for each result.",
|
|
297
298
|
promptSnippet:
|
|
298
299
|
"search(query, search_type, max_results?) — search_type: 'web' or 'news'. Defaults to 5 results, max 10.",
|
package/src/transcribe.test.ts
CHANGED
|
@@ -416,9 +416,9 @@ const theme = {
|
|
|
416
416
|
} as never;
|
|
417
417
|
|
|
418
418
|
function captureTranscribeRenderer() {
|
|
419
|
-
let tool: Record<string,
|
|
419
|
+
let tool: Record<string, unknown> | undefined;
|
|
420
420
|
registerTranscribe({
|
|
421
|
-
registerTool(value: Record<string,
|
|
421
|
+
registerTool(value: Record<string, unknown>) {
|
|
422
422
|
tool = value;
|
|
423
423
|
},
|
|
424
424
|
} as never);
|
|
@@ -440,7 +440,8 @@ function renderTranscribe(
|
|
|
440
440
|
invalidate: () => {},
|
|
441
441
|
};
|
|
442
442
|
const tool = captureTranscribeRenderer();
|
|
443
|
-
tool.renderResult
|
|
443
|
+
const renderResult = tool.renderResult as ((...args: never[]) => unknown) | undefined;
|
|
444
|
+
renderResult?.(result as never, { expanded, isPartial: false } as never, theme, {
|
|
444
445
|
lastComponent: component,
|
|
445
446
|
isError,
|
|
446
447
|
state: { collapsed: true },
|
|
@@ -451,6 +452,10 @@ function renderTranscribe(
|
|
|
451
452
|
}
|
|
452
453
|
|
|
453
454
|
describe("transcribe compact renderer", () => {
|
|
455
|
+
it("uses the self-rendered shell so the status mark has no leading box padding", () => {
|
|
456
|
+
expect(captureTranscribeRenderer().renderShell).toBe("self");
|
|
457
|
+
});
|
|
458
|
+
|
|
454
459
|
it("summarizes inline and written transcripts", () => {
|
|
455
460
|
const inline = renderTranscribe({
|
|
456
461
|
content: [{ type: "text", text: "full transcript" }],
|
package/src/transcribe.ts
CHANGED
|
@@ -358,6 +358,7 @@ export default function registerTranscribe(pi: ExtensionAPI): void {
|
|
|
358
358
|
pi.registerTool({
|
|
359
359
|
name: "transcribe",
|
|
360
360
|
label: "Transcribe",
|
|
361
|
+
renderShell: "self",
|
|
361
362
|
description:
|
|
362
363
|
"Convert speech to text. Transcribes an audio file using the 9Router audio transcription API (Deepgram Nova 3). Optionally writes the full text to a file on disk.",
|
|
363
364
|
promptSnippet:
|