diff options
| author | Martin Fischer <martin@push-f.com> | 2026-10-07 06:59:42 +0200 |
|---|---|---|
| committer | Martin Fischer <martin@push-f.com> | 2026-10-10 19:33:21 +0200 |
| commit | d51c60c30e7f67e644db0bc5eadea9f0392481ca (patch) | |
| tree | 8fa9d28ba917ef29b3cda89783d85e1024c56918 /user/pi/extensions | |
| parent | 3f729d9e943a243b74bd16de794dd46fdec29922 (diff) | |
feat(workstation): add /doc
Diffstat (limited to 'user/pi/extensions')
| -rw-r--r-- | user/pi/extensions/doc-list.ts | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/user/pi/extensions/doc-list.ts b/user/pi/extensions/doc-list.ts new file mode 100644 index 0000000..5d87352 --- /dev/null +++ b/user/pi/extensions/doc-list.ts @@ -0,0 +1,32 @@ +import { existsSync, readdirSync } from "node:fs"; +import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; + +const docRoot = "/doc"; + +function buildDocList(): string | undefined { + if (!existsSync(docRoot)) { + return undefined; + } + + const entries = readdirSync(docRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory() || entry.isSymbolicLink()) + .map((entry) => entry.name) + .sort((a, b) => a.localeCompare(b)); + + if (entries.length === 0) { + return undefined; + } + + return `/doc/ contains documentation for ${entries.join(", ")}. List files with \`find /doc/$name/\` (mind the trailing slash; don't use -type f).`; +} + +export default function docList(pi: ExtensionAPI) { + pi.on("before_agent_start", (event) => { + const docList = buildDocList(); + if (docList) { + event.systemPromptOptions.sections.documentation = docList; + } else { + delete event.systemPromptOptions.sections.documentation; + } + }); +} |
