@agimon-ai/doompi-runner 0.0.1-alpha.43 → 0.0.1-alpha.45
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 +19 -19
- package/web/index.ts +13 -6
- package/web/runnersStore.ts +11 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/doompi-runner",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.45",
|
|
4
4
|
"description": "Supervised shell execution, background process control, and run logs for Pi coding agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -321,22 +321,22 @@
|
|
|
321
321
|
"@deepseek-ai/cordis": "4.0.1",
|
|
322
322
|
"@rmux/sdk": "0.6.5",
|
|
323
323
|
"@xterm/headless": "6.0.0",
|
|
324
|
-
"hono": "4.13.
|
|
325
|
-
"typebox": "1.3.
|
|
326
|
-
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.
|
|
327
|
-
"@agimon-ai/doompi-
|
|
328
|
-
"@agimon-ai/doompi-ui": "0.0.1-alpha.
|
|
329
|
-
"@agimon-ai/doompi-web-
|
|
330
|
-
"@agimon-ai/doompi-
|
|
331
|
-
"@agimon-ai/doompi-web-security": "0.0.1-alpha.
|
|
324
|
+
"hono": "4.13.5",
|
|
325
|
+
"typebox": "1.3.19",
|
|
326
|
+
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.44",
|
|
327
|
+
"@agimon-ai/doompi-web-components": "0.0.1-alpha.5",
|
|
328
|
+
"@agimon-ai/doompi-ui": "0.0.1-alpha.45",
|
|
329
|
+
"@agimon-ai/doompi-web-contracts": "0.0.1-alpha.8",
|
|
330
|
+
"@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.44",
|
|
331
|
+
"@agimon-ai/doompi-web-security": "0.0.1-alpha.6"
|
|
332
332
|
},
|
|
333
333
|
"devDependencies": {
|
|
334
334
|
"@earendil-works/pi-coding-agent": "0.84.4",
|
|
335
335
|
"@earendil-works/pi-tui": "0.84.4",
|
|
336
336
|
"@tanstack/react-store": "0.11.1",
|
|
337
337
|
"@tanstack/store": "0.11.1",
|
|
338
|
-
"@types/node": "26.
|
|
339
|
-
"@types/react": "19.2.
|
|
338
|
+
"@types/node": "26.4.0",
|
|
339
|
+
"@types/react": "19.2.18",
|
|
340
340
|
"@vitest/coverage-v8": "4.1.11",
|
|
341
341
|
"react": "19.2.8",
|
|
342
342
|
"tsdown": "0.22.14",
|
|
@@ -356,14 +356,14 @@
|
|
|
356
356
|
}
|
|
357
357
|
},
|
|
358
358
|
"optionalDependencies": {
|
|
359
|
-
"@agimon-ai/doompi-runner-rmux-darwin-
|
|
360
|
-
"@agimon-ai/doompi-runner-rmux-darwin-
|
|
361
|
-
"@agimon-ai/doompi-runner-rmux-linux-arm64": "0.0.1-alpha.
|
|
362
|
-
"@agimon-ai/doompi-runner-rmux-linux-x64": "0.0.1-alpha.
|
|
363
|
-
"@agimon-ai/doompi-runner-rtk-darwin-x64": "0.0.1-alpha.
|
|
364
|
-
"@agimon-ai/doompi-runner-rtk-linux-arm64": "0.0.1-alpha.
|
|
365
|
-
"@agimon-ai/doompi-runner-rtk-linux-x64": "0.0.1-alpha.
|
|
366
|
-
"@agimon-ai/doompi-runner-rtk-darwin-arm64": "0.0.1-alpha.
|
|
359
|
+
"@agimon-ai/doompi-runner-rmux-darwin-arm64": "0.0.1-alpha.44",
|
|
360
|
+
"@agimon-ai/doompi-runner-rmux-darwin-x64": "0.0.1-alpha.44",
|
|
361
|
+
"@agimon-ai/doompi-runner-rmux-linux-arm64": "0.0.1-alpha.44",
|
|
362
|
+
"@agimon-ai/doompi-runner-rmux-linux-x64": "0.0.1-alpha.44",
|
|
363
|
+
"@agimon-ai/doompi-runner-rtk-darwin-x64": "0.0.1-alpha.44",
|
|
364
|
+
"@agimon-ai/doompi-runner-rtk-linux-arm64": "0.0.1-alpha.44",
|
|
365
|
+
"@agimon-ai/doompi-runner-rtk-linux-x64": "0.0.1-alpha.44",
|
|
366
|
+
"@agimon-ai/doompi-runner-rtk-darwin-arm64": "0.0.1-alpha.44"
|
|
367
367
|
},
|
|
368
368
|
"engines": {
|
|
369
369
|
"node": ">=22.19.0"
|
package/web/index.ts
CHANGED
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import { defineWebPlugin } from '@agimon-ai/doompi-web-contracts';
|
|
2
2
|
import { BashToolMessage } from './BashToolMessage.tsx';
|
|
3
3
|
import { RunnersActivitySection } from './RunnersActivitySection.tsx';
|
|
4
|
-
import { runnerRunsChannel } from './runnersStore.ts';
|
|
4
|
+
import { runnerActivitySource, runnerRunsChannel } from './runnersStore.ts';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* This package's cockpit presence. The
|
|
8
|
-
*
|
|
9
|
-
* the
|
|
10
|
-
* the 'runner_runs' hub channel, with a stop control per running one.
|
|
7
|
+
* This package's cockpit presence. The runner channel is authoritative for the
|
|
8
|
+
* dock as well as its section, so a dropped footer projection cannot hide work
|
|
9
|
+
* the hub is already reporting.
|
|
11
10
|
*/
|
|
12
11
|
export const webPlugin = defineWebPlugin({
|
|
13
12
|
id: 'runner',
|
|
14
13
|
channels: [runnerRunsChannel],
|
|
15
|
-
activityGroups: [
|
|
14
|
+
activityGroups: [
|
|
15
|
+
{
|
|
16
|
+
name: 'runners',
|
|
17
|
+
keys: 'r l',
|
|
18
|
+
statusKey: 'doom-runner-runners',
|
|
19
|
+
activeSource: runnerActivitySource,
|
|
20
|
+
order: 20,
|
|
21
|
+
},
|
|
22
|
+
],
|
|
16
23
|
// Same name as the group: the dock renders this inside it, in place of the
|
|
17
24
|
// footer's one-line count.
|
|
18
25
|
activitySections: [{ id: 'runners', component: RunnersActivitySection }],
|
package/web/runnersStore.ts
CHANGED
|
@@ -14,6 +14,17 @@ export interface RunnersSession {
|
|
|
14
14
|
|
|
15
15
|
export const runners = defineSessionStore<RunnersSession>({ runs: [], stopRequested: [] });
|
|
16
16
|
|
|
17
|
+
/** The runner channel keeps the dock's busy state aligned with its rendered run list. */
|
|
18
|
+
export const runnerActivitySource = {
|
|
19
|
+
subscribe(listener: () => void) {
|
|
20
|
+
const subscription = runners.store.subscribe(listener);
|
|
21
|
+
return () => subscription.unsubscribe();
|
|
22
|
+
},
|
|
23
|
+
isActive(sessionId: string | null) {
|
|
24
|
+
return runners.select(runners.store.state, sessionId).runs.some((run) => run.state === 'running');
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
|
|
17
28
|
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
18
29
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
19
30
|
}
|