mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 11:02:17 +00:00
commit
52211fa3d2
188 changed files with 64 additions and 27581 deletions
|
|
@ -7,17 +7,8 @@ Extensions can register custom model providers via `pi.registerProvider()`. This
|
|||
- **OAuth/SSO** - Add authentication flows for enterprise providers
|
||||
- **Custom APIs** - Implement streaming for non-standard LLM APIs
|
||||
|
||||
## Example Extensions
|
||||
|
||||
See these complete provider examples:
|
||||
|
||||
- [`examples/extensions/custom-provider-anthropic/`](../examples/extensions/custom-provider-anthropic/)
|
||||
- [`examples/extensions/custom-provider-gitlab-duo/`](../examples/extensions/custom-provider-gitlab-duo/)
|
||||
- [`examples/extensions/custom-provider-qwen-cli/`](../examples/extensions/custom-provider-qwen-cli/)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Example Extensions](#example-extensions)
|
||||
- [Quick Reference](#quick-reference)
|
||||
- [Override Existing Provider](#override-existing-provider)
|
||||
- [Register New Provider](#register-new-provider)
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ Or set `GOOGLE_APPLICATION_CREDENTIALS` to a service account key file.
|
|||
|
||||
**Via models.json:** Add Ollama, LM Studio, vLLM, or any provider that speaks a supported API (OpenAI Completions, OpenAI Responses, Anthropic Messages, Google Generative AI). See [models.md](models.md).
|
||||
|
||||
**Via extensions:** For providers that need custom API implementations or OAuth flows, create an extension. See [custom-provider.md](custom-provider.md) and [examples/extensions/custom-provider-gitlab-duo](../examples/extensions/custom-provider-gitlab-duo/).
|
||||
**Via extensions:** For providers that need custom API implementations or OAuth flows, create an extension. See [custom-provider.md](custom-provider.md).
|
||||
|
||||
## Resolution Order
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ The SDK provides programmatic access to pi's agent capabilities. Use it to embed
|
|||
- Build custom tools that spawn sub-agents
|
||||
- Test agent behavior programmatically
|
||||
|
||||
See [examples/sdk/](../examples/sdk/) for working examples from minimal to full control.
|
||||
See the sections below for end-to-end SDK patterns and the exported APIs you can compose.
|
||||
|
||||
## Quick Start
|
||||
|
||||
|
|
@ -319,8 +319,6 @@ If no model is provided:
|
|||
2. Uses default from settings
|
||||
3. Falls back to first available model
|
||||
|
||||
> See [examples/sdk/02-custom-model.ts](../examples/sdk/02-custom-model.ts)
|
||||
|
||||
### API Keys and OAuth
|
||||
|
||||
API key resolution priority (handled by AuthStorage):
|
||||
|
|
@ -359,8 +357,6 @@ const { session } = await createAgentSession({
|
|||
const simpleRegistry = new ModelRegistry(authStorage);
|
||||
```
|
||||
|
||||
> See [examples/sdk/09-api-keys-and-oauth.ts](../examples/sdk/09-api-keys-and-oauth.ts)
|
||||
|
||||
### System Prompt
|
||||
|
||||
Use a `ResourceLoader` to override the system prompt:
|
||||
|
|
@ -376,8 +372,6 @@ await loader.reload();
|
|||
const { session } = await createAgentSession({ resourceLoader: loader });
|
||||
```
|
||||
|
||||
> See [examples/sdk/03-custom-prompt.ts](../examples/sdk/03-custom-prompt.ts)
|
||||
|
||||
### Tools
|
||||
|
||||
```typescript
|
||||
|
|
@ -438,8 +432,6 @@ const { session } = await createAgentSession({
|
|||
**When you must use factories:**
|
||||
- When you specify both `cwd` (different from `process.cwd()`) AND `tools`
|
||||
|
||||
> See [examples/sdk/05-tools.ts](../examples/sdk/05-tools.ts)
|
||||
|
||||
### Custom Tools
|
||||
|
||||
```typescript
|
||||
|
|
@ -468,8 +460,6 @@ const { session } = await createAgentSession({
|
|||
|
||||
Custom tools passed via `customTools` are combined with extension-registered tools. Extensions loaded by the ResourceLoader can also register tools via `pi.registerTool()`.
|
||||
|
||||
> See [examples/sdk/05-tools.ts](../examples/sdk/05-tools.ts)
|
||||
|
||||
### Extensions
|
||||
|
||||
Extensions are loaded by the `ResourceLoader`. `DefaultResourceLoader` discovers extensions from `~/.pi/agent/extensions/`, `.pi/extensions/`, and settings.json extension sources.
|
||||
|
|
@ -508,8 +498,6 @@ await loader.reload();
|
|||
eventBus.on("my-extension:status", (data) => console.log(data));
|
||||
```
|
||||
|
||||
> See [examples/sdk/06-extensions.ts](../examples/sdk/06-extensions.ts) and [docs/extensions.md](extensions.md)
|
||||
|
||||
### Skills
|
||||
|
||||
```typescript
|
||||
|
|
@ -538,8 +526,6 @@ await loader.reload();
|
|||
const { session } = await createAgentSession({ resourceLoader: loader });
|
||||
```
|
||||
|
||||
> See [examples/sdk/04-skills.ts](../examples/sdk/04-skills.ts)
|
||||
|
||||
### Context Files
|
||||
|
||||
```typescript
|
||||
|
|
@ -558,8 +544,6 @@ await loader.reload();
|
|||
const { session } = await createAgentSession({ resourceLoader: loader });
|
||||
```
|
||||
|
||||
> See [examples/sdk/07-context-files.ts](../examples/sdk/07-context-files.ts)
|
||||
|
||||
### Slash Commands
|
||||
|
||||
```typescript
|
||||
|
|
@ -587,8 +571,6 @@ await loader.reload();
|
|||
const { session } = await createAgentSession({ resourceLoader: loader });
|
||||
```
|
||||
|
||||
> See [examples/sdk/08-prompt-templates.ts](../examples/sdk/08-prompt-templates.ts)
|
||||
|
||||
### Session Management
|
||||
|
||||
Sessions use a tree structure with `id`/`parentId` linking, enabling in-place branching.
|
||||
|
|
@ -660,8 +642,6 @@ sm.branchWithSummary(id, "Summary..."); // Branch with context summary
|
|||
sm.createBranchedSession(leafId); // Extract path to new file
|
||||
```
|
||||
|
||||
> See [examples/sdk/11-sessions.ts](../examples/sdk/11-sessions.ts) and [docs/session.md](session.md)
|
||||
|
||||
### Settings Management
|
||||
|
||||
```typescript
|
||||
|
|
@ -711,8 +691,6 @@ Project overrides global. Nested objects merge keys. Setters modify global setti
|
|||
- Call `await settingsManager.flush()` when you need a durability boundary (for example, before process exit or before asserting file contents in tests).
|
||||
- `SettingsManager` does not print settings I/O errors. Use `settingsManager.drainErrors()` and report them in your app layer.
|
||||
|
||||
> See [examples/sdk/10-settings.ts](../examples/sdk/10-settings.ts)
|
||||
|
||||
## ResourceLoader
|
||||
|
||||
Use `DefaultResourceLoader` to discover extensions, skills, prompts, themes, and context files.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue