feat(coding-agent): add InlineExtension type for named inline extension factories (#6267)
* feat(coding-agent): add InlineExtension type for named inline extension factories * test(coding-agent): update utilities and add regression test for InlineExtension
This commit is contained in:
@@ -604,6 +604,27 @@ const { session } = await createAgentSession({ resourceLoader: loader });
|
||||
|
||||
Extensions can register tools, subscribe to events, add commands, and more. See [extensions.md](extensions.md) for the full API.
|
||||
|
||||
**Named inline extensions:** By default, inline factories display as `<inline:1>`, `<inline:2>`, etc. in the startup Extensions list. To show a descriptive name instead, wrap the factory:
|
||||
|
||||
```typescript
|
||||
import type { InlineExtension } from "@earendil-works/pi-coding-agent";
|
||||
|
||||
const myProvider: InlineExtension = {
|
||||
name: "my-provider",
|
||||
factory: (pi) => {
|
||||
pi.on("agent_start", () => {
|
||||
console.log("[my-provider] Agent starting");
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
const loader = new DefaultResourceLoader({
|
||||
extensionFactories: [myProvider],
|
||||
});
|
||||
```
|
||||
|
||||
This displays as `<inline:my-provider>` instead of `<inline:1>`. Bare factory functions are still accepted for backward compatibility.
|
||||
|
||||
**Event Bus:** Extensions can communicate via `pi.events`. Pass a shared `eventBus` to `DefaultResourceLoader` if you need to emit or listen from outside:
|
||||
|
||||
```typescript
|
||||
@@ -1161,6 +1182,7 @@ createGrepTool, createFindTool, createLsTool
|
||||
type CreateAgentSessionOptions
|
||||
type CreateAgentSessionResult
|
||||
type ExtensionFactory
|
||||
type InlineExtension
|
||||
type ExtensionAPI
|
||||
type ToolDefinition
|
||||
type Skill
|
||||
|
||||
Reference in New Issue
Block a user