@astrosheep/keiyaku 4.6.1 → 4.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { createAgentSessionFromServices, createAgentSessionServices, createBashToolDefinition, getAgentDir, SessionManager } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import type { ProviderExecution } from "../../provider-recipe.js";
|
|
3
3
|
import { type ProviderAdapter } from "../../provider.js";
|
|
4
4
|
export type PiSdk = Readonly<{
|
|
5
|
-
|
|
5
|
+
createAgentSessionFromServices: typeof createAgentSessionFromServices;
|
|
6
|
+
createAgentSessionServices: typeof createAgentSessionServices;
|
|
6
7
|
createBashToolDefinition: typeof createBashToolDefinition;
|
|
7
|
-
DefaultResourceLoader: typeof DefaultResourceLoader;
|
|
8
8
|
getAgentDir: typeof getAgentDir;
|
|
9
|
-
ModelRuntime: typeof ModelRuntime;
|
|
10
9
|
SessionManager: typeof SessionManager;
|
|
11
10
|
}>;
|
|
12
11
|
export declare function createPiProvider(execution?: ProviderExecution, load?: () => Promise<PiSdk>): ProviderAdapter;
|
|
@@ -21,26 +21,14 @@ function admitPiOptions(options) {
|
|
|
21
21
|
options: Object.freeze({ ...options }),
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
function piCreateOptions(sdk, input, services) {
|
|
25
25
|
let model;
|
|
26
|
-
let modelRuntime;
|
|
27
26
|
if (input.options.model !== undefined) {
|
|
28
27
|
const slash = input.options.model.indexOf("/");
|
|
29
|
-
|
|
30
|
-
model = modelRuntime.getModel(input.options.model.slice(0, slash), input.options.model.slice(slash + 1));
|
|
28
|
+
model = services.modelRuntime.getModel(input.options.model.slice(0, slash), input.options.model.slice(slash + 1));
|
|
31
29
|
if (model === undefined)
|
|
32
30
|
throw new Error(`Pi model '${input.options.model}' is unavailable`);
|
|
33
31
|
}
|
|
34
|
-
const resourceLoader = input.options.systemPrompt === undefined
|
|
35
|
-
? undefined
|
|
36
|
-
: new sdk.DefaultResourceLoader({
|
|
37
|
-
cwd: input.cwd,
|
|
38
|
-
agentDir: sdk.getAgentDir(),
|
|
39
|
-
...(input.options.systemPromptMode === "append"
|
|
40
|
-
? { appendSystemPromptOverride: (base) => [...base, input.options.systemPrompt] }
|
|
41
|
-
: { systemPromptOverride: () => input.options.systemPrompt }),
|
|
42
|
-
});
|
|
43
|
-
await resourceLoader?.reload();
|
|
44
32
|
const sessionManager = input.session.kind === "fresh"
|
|
45
33
|
? sdk.SessionManager.create(input.cwd)
|
|
46
34
|
: "sessionFile" in input.session.coordinate
|
|
@@ -59,22 +47,39 @@ async function piCreateOptions(sdk, input) {
|
|
|
59
47
|
}),
|
|
60
48
|
];
|
|
61
49
|
return {
|
|
62
|
-
|
|
50
|
+
services,
|
|
63
51
|
sessionManager,
|
|
64
|
-
...(model === undefined
|
|
65
|
-
...(resourceLoader === undefined ? {} : { resourceLoader }),
|
|
52
|
+
...(model === undefined ? {} : { model }),
|
|
66
53
|
...(input.options.effort === undefined ? {} : { thinkingLevel: input.options.effort }),
|
|
67
54
|
...(customTools === undefined ? {} : { customTools }),
|
|
68
55
|
};
|
|
69
56
|
}
|
|
70
57
|
async function createPiSession(sdk, execution, input) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
58
|
+
if (execution.config !== undefined) {
|
|
59
|
+
throw new TypeError("Pi provider config cannot be consumed by native CreateAgentSessionOptions");
|
|
60
|
+
}
|
|
61
|
+
const services = await sdk.createAgentSessionServices({
|
|
62
|
+
cwd: input.cwd,
|
|
63
|
+
agentDir: sdk.getAgentDir(),
|
|
64
|
+
modelRuntimeSignal: input.signal,
|
|
65
|
+
...(input.options.systemPrompt === undefined
|
|
66
|
+
? {}
|
|
67
|
+
: {
|
|
68
|
+
resourceLoaderOptions: input.options.systemPromptMode === "append"
|
|
69
|
+
? { appendSystemPromptOverride: (base) => [...base, input.options.systemPrompt] }
|
|
70
|
+
: { systemPromptOverride: () => input.options.systemPrompt },
|
|
71
|
+
}),
|
|
76
72
|
});
|
|
77
|
-
|
|
73
|
+
try {
|
|
74
|
+
input.signal?.throwIfAborted();
|
|
75
|
+
return await sdk.createAgentSessionFromServices(piCreateOptions(sdk, input, services));
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
// Before a session owns the extension runtime, failed selection/setup must
|
|
79
|
+
// retire registrations and event-bus subscriptions loaded by the services.
|
|
80
|
+
services.resourceLoader.getExtensions().runtime.invalidate();
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
78
83
|
}
|
|
79
84
|
async function runPiPrompt(native, input, events, state, settle) {
|
|
80
85
|
try {
|
|
@@ -273,11 +278,10 @@ async function forkPi(sdk, input) {
|
|
|
273
278
|
async function loadPiSdk() {
|
|
274
279
|
const sdk = await import("@earendil-works/pi-coding-agent");
|
|
275
280
|
return {
|
|
276
|
-
|
|
281
|
+
createAgentSessionFromServices: sdk.createAgentSessionFromServices,
|
|
282
|
+
createAgentSessionServices: sdk.createAgentSessionServices,
|
|
277
283
|
createBashToolDefinition: sdk.createBashToolDefinition,
|
|
278
|
-
DefaultResourceLoader: sdk.DefaultResourceLoader,
|
|
279
284
|
getAgentDir: sdk.getAgentDir,
|
|
280
|
-
ModelRuntime: sdk.ModelRuntime,
|
|
281
285
|
SessionManager: sdk.SessionManager,
|
|
282
286
|
};
|
|
283
287
|
}
|