Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions packages/provider-pi/src/server/adapter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1069,10 +1069,7 @@ describe("PiAdapterV2", () => {
message: "Ordering barrier",
});
yield* takeEvent(
(event) =>
event.type === "turn_item.updated" &&
event.turnItem.type === "dynamic_tool" &&
event.turnItem.toolName === "notify",
(event) => event.type === "turn_item.updated" && event.turnItem.type === "system_notice",
);
assert.equal(runtime.providerSession.status, "running");
fake.queueState({ isStreaming: true });
Expand Down Expand Up @@ -2368,9 +2365,17 @@ describe("PiAdapterV2", () => {
type: "extension_ui_request",
id: "ui-cmd",
method: "notify",
message: "done",
message: "/op:status done\n\nTask: alpha",
notifyType: "info",
});
const notice = yield* takeEvent(
(event) => event.type === "turn_item.updated" && event.turnItem.type === "system_notice",
);
assert.isTrue(
notice.type === "turn_item.updated" &&
notice.turnItem.type === "system_notice" &&
notice.turnItem.message === "/op:status done\n\nTask: alpha",
);
yield* fake.emit({ type: "response", command: "prompt", success: true });
// The adapter probes get_state (auto-acked idle by the fake), then
// settles the turn as completed.
Expand Down
12 changes: 4 additions & 8 deletions packages/provider-pi/src/server/adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
* Extension UI: Pi extensions raise dialogs through `extension_ui_request`.
* Dialog methods become v2 runtime requests (`confirm` → approval_request,
* `select`/`input`/`editor` → user_input_request); answers travel back as
* `extension_ui_response`. `notify` becomes a completed activity item.
* `extension_ui_response`. `notify` becomes a system notice.
* Terminal-only decoration such as status, widget, title, and editor-text
* updates has no matching T3 surface and is ignored.
*/
Expand Down Expand Up @@ -1219,13 +1219,9 @@ export const makePiAdapterV2 = Effect.fn("makePiAdapterV2")(function* (
...baseItemFields(turn, nativeItemId, emittedAt, emittedAt),
status: "completed",
completedAt: emittedAt,
title: "notify",
type: "dynamic_tool",
toolName: "notify",
input: {
message,
notifyType: recordString(event, "notifyType") ?? "info",
},
title: message,
type: "system_notice",
message,
},
});
return;
Expand Down
Loading