@omercnet/paseo-agent-monitor 2.0.0 → 3.0.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/OVERVIEW.md +1 -1
- package/README.md +6 -5
- package/client/directory-observation.ts +5 -2
- package/client/monitor-data.ts +7 -3
- package/client/monitor.ts +1 -1
- package/package.json +6 -6
- package/paseo-plugin.json +1 -1
package/OVERVIEW.md
CHANGED
|
@@ -4,4 +4,4 @@ Settings control grouping, sort order, density, which details each row shows, an
|
|
|
4
4
|
|
|
5
5
|
It reads agent, workspace and project lists through the selected host's existing connection and opens no connection of its own. The one action it performs is archiving, either a single agent or all closed agents. It cannot interrupt a running turn.
|
|
6
6
|
|
|
7
|
-
Requires Paseo ^0.
|
|
7
|
+
Requires Paseo ^0.12.0.
|
package/README.md
CHANGED
|
@@ -66,18 +66,19 @@ agent whose workspace is beyond the paged workspace list still lands under its r
|
|
|
66
66
|
refresh from agent, workspace, and project subscription deltas, debounced 750ms, with a 30s
|
|
67
67
|
backstop refetch. The screen, the sidebar row, and its popover share that query, subscription set,
|
|
68
68
|
and backstop; on web and desktop, refreshes pause while the window is hidden and catch up when it returns. The plugin
|
|
69
|
-
borrows the selected host's connection; it opens no socket of its own.
|
|
69
|
+
borrows the selected host's connection; it opens no socket of its own. Agents and workspaces in
|
|
70
|
+
background workspaces are included.
|
|
70
71
|
|
|
71
72
|
## Limits
|
|
72
73
|
|
|
73
74
|
Interrupting a turn is not part of `PaseoApi`, so archive is the only lifecycle action here.
|
|
74
75
|
|
|
75
|
-
The sidebar popover lists agents but cannot open them: Paseo 0.
|
|
76
|
+
The sidebar popover lists agents but cannot open them: Paseo 0.12 gives popovers no navigation.
|
|
76
77
|
Open the monitor and select the agent there.
|
|
77
78
|
|
|
78
79
|
## Install
|
|
79
80
|
|
|
80
|
-
Requires Paseo `^0.
|
|
81
|
+
Requires Paseo `^0.12.0`, whose background workspaces the monitor lists. Development uses the 0.12 SDK line from the workspace catalog.
|
|
81
82
|
|
|
82
83
|
Install the published package on the daemon host:
|
|
83
84
|
|
|
@@ -99,8 +100,8 @@ bun run typecheck
|
|
|
99
100
|
Release Please maintains the version, changelog, component tag, and GitHub release from
|
|
100
101
|
Conventional Commits in the monorepo.
|
|
101
102
|
|
|
102
|
-
The project supports Paseo `^0.
|
|
103
|
-
`@getpaseo/protocol`, and `@getpaseo/cli` to the 0.
|
|
103
|
+
The project supports Paseo `^0.12.0` and pins `@getpaseo/plugin`, `@getpaseo/client`,
|
|
104
|
+
`@getpaseo/protocol`, and `@getpaseo/cli` to the 0.12 SDK line through the workspace catalog. Renovate groups `@getpaseo/*`
|
|
104
105
|
updates so the SDKs move together.
|
|
105
106
|
|
|
106
107
|
React `19.1` and React Native `0.81` intentionally match the versions supplied by Paseo.
|
|
@@ -59,7 +59,7 @@ export function observeDirectoryInvalidation(paseo: PaseoApi, invalidate: () =>
|
|
|
59
59
|
let stopped = false;
|
|
60
60
|
|
|
61
61
|
const attachAgents = async () => {
|
|
62
|
-
const { subscription } = await paseo.agents.list({ subscribe: {} });
|
|
62
|
+
const { subscription } = await paseo.agents.list({ subscribe: {}, includeBackground: true });
|
|
63
63
|
if (stopped) {
|
|
64
64
|
await subscription.release().catch((error: unknown) => {
|
|
65
65
|
console.error("Agent Monitor agent observation cleanup failed", error);
|
|
@@ -74,7 +74,10 @@ export function observeDirectoryInvalidation(paseo: PaseoApi, invalidate: () =>
|
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
const attachWorkspaces = async () => {
|
|
77
|
-
const { subscription } = await paseo.workspaces.list({
|
|
77
|
+
const { subscription } = await paseo.workspaces.list({
|
|
78
|
+
subscribe: {},
|
|
79
|
+
includeBackground: true,
|
|
80
|
+
});
|
|
78
81
|
if (stopped) {
|
|
79
82
|
await subscription.release().catch((error: unknown) => {
|
|
80
83
|
console.error("Agent Monitor workspace observation cleanup failed", error);
|
package/client/monitor-data.ts
CHANGED
|
@@ -27,12 +27,15 @@ export type MonitorData = {
|
|
|
27
27
|
truncated: boolean;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
async function loadAgents(
|
|
30
|
+
export async function loadAgents(
|
|
31
|
+
paseo: PaseoApi,
|
|
32
|
+
): Promise<{ entries: AgentEntry[]; truncated: boolean }> {
|
|
31
33
|
const entries: AgentEntry[] = [];
|
|
32
34
|
let cursor: string | undefined;
|
|
33
35
|
for (let page = 0; page < MAX_PAGES; page += 1) {
|
|
34
36
|
const result = await paseo.agents.list({
|
|
35
|
-
|
|
37
|
+
includeBackground: true,
|
|
38
|
+
sort: [{ key: "created_at", direction: "desc" }],
|
|
36
39
|
page: { limit: PAGE_LIMIT, ...(cursor ? { cursor } : {}) },
|
|
37
40
|
});
|
|
38
41
|
entries.push(...result.entries);
|
|
@@ -42,11 +45,12 @@ async function loadAgents(paseo: PaseoApi): Promise<{ entries: AgentEntry[]; tru
|
|
|
42
45
|
return { entries, truncated: true };
|
|
43
46
|
}
|
|
44
47
|
|
|
45
|
-
async function loadWorkspaces(paseo: PaseoApi): Promise<PaseoWorkspace[]> {
|
|
48
|
+
export async function loadWorkspaces(paseo: PaseoApi): Promise<PaseoWorkspace[]> {
|
|
46
49
|
const workspaces: PaseoWorkspace[] = [];
|
|
47
50
|
let cursor: string | undefined;
|
|
48
51
|
for (let page = 0; page < MAX_PAGES; page += 1) {
|
|
49
52
|
const result = await paseo.workspaces.list({
|
|
53
|
+
includeBackground: true,
|
|
50
54
|
page: { limit: PAGE_LIMIT, ...(cursor ? { cursor } : {}) },
|
|
51
55
|
});
|
|
52
56
|
workspaces.push(...result.entries);
|
package/client/monitor.ts
CHANGED
|
@@ -64,7 +64,7 @@ export type Roster =
|
|
|
64
64
|
|
|
65
65
|
export const PARENT_AGENT_ID_LABEL = "paseo.parent-agent-id";
|
|
66
66
|
|
|
67
|
-
/** Prefers the first-class snapshot field;
|
|
67
|
+
/** Prefers the first-class snapshot field; falls back to the parent label when it is empty. */
|
|
68
68
|
export function parentAgentId(agent: AgentSnapshot): string | null {
|
|
69
69
|
const firstClass = "parentAgentId" in agent ? agent.parentAgentId : null;
|
|
70
70
|
if (typeof firstClass === "string" && firstClass.trim()) return firstClass.trim();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omercnet/paseo-agent-monitor",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A Paseo plugin that provides a host-wide agent triage roster.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
|
-
"packageManager": "bun@1.4.
|
|
19
|
+
"packageManager": "bun@1.4.3",
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=24"
|
|
22
22
|
},
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@biomejs/biome": "^2.5.10",
|
|
49
|
-
"@getpaseo/cli": "0.
|
|
50
|
-
"@getpaseo/client": "0.
|
|
51
|
-
"@getpaseo/plugin": "0.
|
|
52
|
-
"@getpaseo/protocol": "0.
|
|
49
|
+
"@getpaseo/cli": "0.12.0",
|
|
50
|
+
"@getpaseo/client": "0.12.0",
|
|
51
|
+
"@getpaseo/plugin": "0.12.0",
|
|
52
|
+
"@getpaseo/protocol": "0.12.0",
|
|
53
53
|
"@tanstack/react-query": "^5.102.3",
|
|
54
54
|
"@types/node": "^24.10.1",
|
|
55
55
|
"@types/react": "^19.2.18",
|
package/paseo-plugin.json
CHANGED