aboutsummaryrefslogtreecommitdiff
path: root/user/pi/extensions
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2026-10-07 06:59:42 +0200
committerMartin Fischer <martin@push-f.com>2026-10-10 19:33:21 +0200
commitd51c60c30e7f67e644db0bc5eadea9f0392481ca (patch)
tree8fa9d28ba917ef29b3cda89783d85e1024c56918 /user/pi/extensions
parent3f729d9e943a243b74bd16de794dd46fdec29922 (diff)
feat(workstation): add /doc
Diffstat (limited to 'user/pi/extensions')
-rw-r--r--user/pi/extensions/doc-list.ts32
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;
+ }
+ });
+}