mirror of
https://github.com/bendtherules/ask262.git
synced 2026-08-18 13:21:55 +00:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
/**
|
|
* OpenCode custom tool: ask262_get_section_content
|
|
* Retrieves full content from a specific ECMAScript spec section.
|
|
*/
|
|
|
|
import { tool } from "@opencode-ai/plugin";
|
|
import * as lancedbSdk from "@lancedb/lancedb";
|
|
import { createGetSectionContentTool } from "../../src/agent-tools";
|
|
|
|
export default tool({
|
|
description:
|
|
"Retrieves all text chunks from a specific ECMAScript specification section by section ID. " +
|
|
"Supports recursive fetching - if a section has children, it will fetch all descendants. " +
|
|
"Use this to get complete spec text when you know the section ID (e.g., 'sec-if-statement').",
|
|
args: {
|
|
sectionId: tool.schema
|
|
.string()
|
|
.describe(
|
|
"The section ID (e.g., 'sec-if-statement', 'sec-array-prototype-map') to fetch content for",
|
|
),
|
|
},
|
|
async execute(args, context) {
|
|
const { sectionId } = args;
|
|
const { worktree } = context;
|
|
|
|
// Connect to LanceDB
|
|
const storageDir = `${worktree}/storage`;
|
|
const db = await lancedbSdk.connect(storageDir);
|
|
const table = await db.openTable("spec_vectors");
|
|
|
|
// Create and execute tool
|
|
const contentTool = createGetSectionContentTool(table);
|
|
const result = await contentTool.func({ sectionId });
|
|
|
|
return result;
|
|
},
|
|
});
|