Add ExtensionAPI methods, preset example, and TUI documentation improvements

- ExtensionAPI: setModel(), getThinkingLevel(), setThinkingLevel() methods
- New preset.ts example with plan/implement presets for model/thinking/tools switching
- Export all UI components from pi-coding-agent for extension use
- docs/tui.md: Common Patterns section with copy-paste code for SelectList, BorderedLoader, SettingsList, setStatus, setWidget, setFooter
- docs/tui.md: Key Rules section for extension UI development
- docs/extensions.md: Exhaustive example links for all ExtensionAPI methods and events
- System prompt now references docs/tui.md for TUI development

Fixes #509, relates to #347
This commit is contained in:
Mario Zechner 2026-01-06 23:24:23 +01:00
parent c35a18b2b3
commit 59d8b7948c
14 changed files with 850 additions and 13 deletions

View file

@ -88,6 +88,9 @@ describe.skipIf(!API_KEY)("Compaction extensions", () => {
setGetActiveToolsHandler: () => {},
setGetAllToolsHandler: () => {},
setSetActiveToolsHandler: () => {},
setSetModelHandler: () => {},
setGetThinkingLevelHandler: () => {},
setSetThinkingLevelHandler: () => {},
setFlagValue: () => {},
};
}
@ -117,6 +120,9 @@ describe.skipIf(!API_KEY)("Compaction extensions", () => {
getActiveToolsHandler: () => [],
getAllToolsHandler: () => [],
setActiveToolsHandler: () => {},
setModelHandler: async () => false,
getThinkingLevelHandler: () => "off",
setThinkingLevelHandler: () => {},
uiContext: {
select: async () => undefined,
confirm: async () => false,
@ -292,6 +298,9 @@ describe.skipIf(!API_KEY)("Compaction extensions", () => {
setGetActiveToolsHandler: () => {},
setGetAllToolsHandler: () => {},
setSetActiveToolsHandler: () => {},
setSetModelHandler: () => {},
setGetThinkingLevelHandler: () => {},
setSetThinkingLevelHandler: () => {},
setFlagValue: () => {},
};
@ -348,6 +357,9 @@ describe.skipIf(!API_KEY)("Compaction extensions", () => {
setGetActiveToolsHandler: () => {},
setGetAllToolsHandler: () => {},
setSetActiveToolsHandler: () => {},
setSetModelHandler: () => {},
setGetThinkingLevelHandler: () => {},
setSetThinkingLevelHandler: () => {},
setFlagValue: () => {},
};
@ -386,6 +398,9 @@ describe.skipIf(!API_KEY)("Compaction extensions", () => {
setGetActiveToolsHandler: () => {},
setGetAllToolsHandler: () => {},
setSetActiveToolsHandler: () => {},
setSetModelHandler: () => {},
setGetThinkingLevelHandler: () => {},
setSetThinkingLevelHandler: () => {},
setFlagValue: () => {},
};