Files
paseo/plugin-examples/lifecycle-logger/index.server.ts
T
paseo-bot[bot]andilteoood 5375f43a05 feat(plugins): expose agent closed lifecycle event (#5971)
* feat(plugins): expose agent closed lifecycle event

Emit the event when a live agent reaches its closed state so plugins can release agent-scoped resources. Keep archive and close notifications distinct.

Co-authored-by: ilteoood <6383527+ilteoood@users.noreply.github.com>

* fix(plugins): finish close hooks during daemon shutdown

Wait briefly for pending lifecycle events before stopping plugins so agent close hooks can release their resources during shutdown.

Co-authored-by: ilteoood <6383527+ilteoood@users.noreply.github.com>

---------

Co-authored-by: paseo-bot[bot] <266920839+paseo-bot[bot]@users.noreply.github.com>
Co-authored-by: ilteoood <6383527+ilteoood@users.noreply.github.com>
2026-10-03 11:36:19 +01:00

58 lines
1.4 KiB
TypeScript

import type { PluginServerContext } from "@getpaseo/plugin/server";
import { logHook } from "./server/log";
export default function contribute(server: PluginServerContext) {
server.before("workspace.create", ({ request }) => {
logHook("before workspace.create", { request });
return request;
});
server.on("workspace.created", (event) => {
logHook("workspace.created", event);
});
server.on("workspace.archived", (event) => {
logHook("workspace.archived", event);
});
server.before("agent.create", ({ request }) => {
logHook("before agent.create", { request });
return request;
});
server.before("agent.session_open", ({ request }) => {
logHook("before agent.session_open", { request });
return request;
});
server.on("agent.created", (event) => {
logHook("agent.created", event);
});
server.on("agent.closed", (event) => {
logHook("agent.closed", event);
});
server.on("agent.turn_started", (event) => {
logHook("agent.turn_started", event);
});
server.on("agent.turn_ended", (event) => {
logHook("agent.turn_ended", event);
});
server.on("agent.permission_requested", (event) => {
logHook("agent.permission_requested", event);
});
server.on("agent.permission_resolved", (event) => {
logHook("agent.permission_resolved", event);
});
server.on("agent.archived", (event) => {
logHook("agent.archived", event);
});
return () => {};
}