Skip to content

Commit a11e5cf

Browse files
committed
feat(acp-ai-provider): Add session initialization and mode management methods
1 parent 0a2e4ea commit a11e5cf

File tree

3 files changed

+39
-6
lines changed

3 files changed

+39
-6
lines changed

packages/acp-ai-provider/README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,8 @@ const provider = createACPProvider({
152152
persistSession: true,
153153
});
154154

155-
const model = provider.languageModel();
156-
157155
// Initialize and get available options
158-
const session = await model.initSession();
156+
const session = await provider.initSession();
159157

160158
// Check available modes (e.g., "ask", "code", "architect")
161159
console.log(session.modes?.availableModes);
@@ -164,10 +162,13 @@ console.log(session.modes?.availableModes);
164162
console.log(session.models?.availableModels);
165163

166164
// Select a mode before prompting
167-
await model.setMode("code");
165+
await provider.setMode("code");
168166

169167
// Now use the model
170-
const result = await generateText({ model, prompt: "..." });
168+
const result = await generateText({
169+
model: provider.languageModel(),
170+
prompt: "...",
171+
});
171172
```
172173

173174
## FAQ

packages/acp-ai-provider/deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mcpc/acp-ai-provider",
3-
"version": "0.1.23",
3+
"version": "0.1.24",
44
"repository": {
55
"type": "git",
66
"url": "git+https://github.com/mcpc-tech/mcpc.git"

packages/acp-ai-provider/src/provider.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import { ACPLanguageModel } from "./language-model.ts";
66
import type { ACPProviderSettings } from "./types.ts";
77
import type { tool } from "ai";
8+
import type { NewSessionResponse } from "@agentclientprotocol/sdk";
89

910
/**
1011
* ACP Provider - implements AI SDK provider pattern
@@ -54,6 +55,37 @@ export class ACPProvider {
5455
return this.model?.getSessionId() ?? null;
5556
}
5657

58+
/**
59+
* Initializes the session and returns session info (models, modes, meta).
60+
* Call this before prompting to discover available options.
61+
*/
62+
initSession(): Promise<NewSessionResponse> {
63+
if (!this.model) {
64+
this.languageModel();
65+
}
66+
return this.model!.initSession();
67+
}
68+
69+
/**
70+
* Sets the session mode (e.g., "ask", "plan").
71+
*/
72+
setMode(modeId: string): Promise<void> {
73+
if (!this.model) {
74+
throw new Error("No model initialized. Call languageModel() first.");
75+
}
76+
return this.model.setMode(modeId);
77+
}
78+
79+
/**
80+
* Sets the session model.
81+
*/
82+
setModel(modelId: string): Promise<void> {
83+
if (!this.model) {
84+
throw new Error("No model initialized. Call languageModel() first.");
85+
}
86+
return this.model.setModel(modelId);
87+
}
88+
5789
/**
5890
* Forces cleanup of the connection and session.
5991
* Call this when you're done with the provider instance, especially when using `persistSession`.

0 commit comments

Comments
 (0)