@braintrust/pi-extension 0.2.0 → 0.3.0
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.
- package/package.json +8 -9
- package/src/index.integration.test.ts +17 -8
- package/src/index.ts +11 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@braintrust/pi-extension",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Braintrust extension for pi. Includes automatic tracing for pi sessions, turns, LLM calls, and tool executions to Braintrust.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"braintrust",
|
|
@@ -24,17 +24,16 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"braintrust": "^3.
|
|
27
|
+
"braintrust": "^3.8.0",
|
|
28
28
|
"valibot": "^1.3.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@mariozechner/pi-ai": "^0.
|
|
32
|
-
"@mariozechner/pi-coding-agent": "^0.
|
|
33
|
-
"@types/node": "^25.
|
|
34
|
-
"tsx": "^4.21.0",
|
|
31
|
+
"@mariozechner/pi-ai": "^0.66.1",
|
|
32
|
+
"@mariozechner/pi-coding-agent": "^0.66.1",
|
|
33
|
+
"@types/node": "^25.6.0",
|
|
35
34
|
"typescript": "^6.0.2",
|
|
36
|
-
"vite-plus": "^0.1.
|
|
37
|
-
"vitest": "^4.1.
|
|
35
|
+
"vite-plus": "^0.1.16",
|
|
36
|
+
"vitest": "^4.1.4"
|
|
38
37
|
},
|
|
39
38
|
"peerDependencies": {
|
|
40
39
|
"@mariozechner/pi-coding-agent": "*"
|
|
@@ -66,6 +65,6 @@
|
|
|
66
65
|
"test:integration": "vitest run src/index.integration.test.ts",
|
|
67
66
|
"test:watch": "vitest",
|
|
68
67
|
"typecheck": "vp check",
|
|
69
|
-
"smoke": "
|
|
68
|
+
"smoke": "vp exec node -e \"import('./src/index.ts')\""
|
|
70
69
|
}
|
|
71
70
|
}
|
|
@@ -433,6 +433,9 @@ async function createHarness(options?: {
|
|
|
433
433
|
return { agentDir, cwd, session, stateDir };
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
+
// TODO: Remove this legacy fallback once our supported pi compatibility window no
|
|
437
|
+
// longer includes pi <0.65.0, which introduced the session runtime API and the
|
|
438
|
+
// session_start-only post-transition model.
|
|
436
439
|
const resourceLoader = new DefaultResourceLoader({
|
|
437
440
|
cwd,
|
|
438
441
|
agentDir,
|
|
@@ -447,26 +450,32 @@ async function createHarness(options?: {
|
|
|
447
450
|
resourceLoader,
|
|
448
451
|
sessionManager,
|
|
449
452
|
});
|
|
453
|
+
const legacyRuntimeSession = legacySession as typeof legacySession & {
|
|
454
|
+
newSession(): Promise<boolean>;
|
|
455
|
+
switchSession(sessionPath: string): Promise<boolean>;
|
|
456
|
+
fork(entryId: string): Promise<{ cancelled: boolean; selectedText?: string }>;
|
|
457
|
+
sessionManager: SessionManager;
|
|
458
|
+
};
|
|
450
459
|
|
|
451
460
|
const session: TestSessionController = {
|
|
452
|
-
prompt: (text) =>
|
|
453
|
-
newSession: () =>
|
|
454
|
-
switchSession: (sessionPath) =>
|
|
461
|
+
prompt: (text) => legacyRuntimeSession.prompt(text),
|
|
462
|
+
newSession: () => legacyRuntimeSession.newSession(),
|
|
463
|
+
switchSession: (sessionPath) => legacyRuntimeSession.switchSession(sessionPath),
|
|
455
464
|
fork: async (entryId) => {
|
|
456
|
-
const result = await
|
|
465
|
+
const result = await legacyRuntimeSession.fork(entryId);
|
|
457
466
|
return {
|
|
458
467
|
cancelled: result.cancelled,
|
|
459
|
-
selectedText: result.selectedText,
|
|
468
|
+
selectedText: result.selectedText ?? "",
|
|
460
469
|
};
|
|
461
470
|
},
|
|
462
471
|
dispose: async () => {
|
|
463
|
-
|
|
472
|
+
legacyRuntimeSession.dispose();
|
|
464
473
|
},
|
|
465
474
|
get sessionFile() {
|
|
466
|
-
return
|
|
475
|
+
return legacyRuntimeSession.sessionFile;
|
|
467
476
|
},
|
|
468
477
|
get sessionManager() {
|
|
469
|
-
return
|
|
478
|
+
return legacyRuntimeSession.sessionManager;
|
|
470
479
|
},
|
|
471
480
|
};
|
|
472
481
|
|
package/src/index.ts
CHANGED
|
@@ -622,12 +622,21 @@ export default function braintrustPiExtension(pi: ExtensionAPI): void {
|
|
|
622
622
|
});
|
|
623
623
|
});
|
|
624
624
|
|
|
625
|
-
|
|
625
|
+
// TODO: Remove these legacy transition listeners once our compatibility window
|
|
626
|
+
// no longer includes pi <0.65.0.
|
|
627
|
+
const legacyPi = pi as ExtensionAPI & {
|
|
628
|
+
on(
|
|
629
|
+
event: "session_switch" | "session_fork",
|
|
630
|
+
handler: (event: unknown, ctx: ExtensionContext) => Promise<void> | void,
|
|
631
|
+
): void;
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
legacyPi.on("session_switch", async (event, ctx) => {
|
|
626
635
|
refreshTracingUi(ctx);
|
|
627
636
|
await rolloverSession(ctx, "session_switch", getPreviousSessionFile(event));
|
|
628
637
|
});
|
|
629
638
|
|
|
630
|
-
|
|
639
|
+
legacyPi.on("session_fork", async (event, ctx) => {
|
|
631
640
|
refreshTracingUi(ctx);
|
|
632
641
|
await rolloverSession(ctx, "session_fork", getPreviousSessionFile(event));
|
|
633
642
|
});
|