@beeos-ai/device-agent 0.7.2 → 0.9.1
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/dist/app/fixed-session-id.d.ts +19 -0
- package/dist/app/fixed-session-id.js +26 -0
- package/dist/app/fixed-session-id.js.map +1 -0
- package/dist/app/jsonl-session-sweeper.d.ts +90 -0
- package/dist/app/jsonl-session-sweeper.js +162 -0
- package/dist/app/jsonl-session-sweeper.js.map +1 -0
- package/dist/app/jsonl-store.d.ts +10 -0
- package/dist/app/jsonl-store.js +10 -4
- package/dist/app/jsonl-store.js.map +1 -1
- package/dist/app/session-manager.d.ts +135 -1
- package/dist/app/session-manager.js +195 -12
- package/dist/app/session-manager.js.map +1 -1
- package/dist/bootstrap.js +157 -2
- package/dist/bootstrap.js.map +1 -1
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.js +20 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +7 -0
- package/dist/config/schema.js +82 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/fleet/domain/device.d.ts +17 -0
- package/dist/fleet/domain/device.js +1 -0
- package/dist/fleet/domain/device.js.map +1 -1
- package/dist/fleet/domain/fsm.d.ts +30 -1
- package/dist/fleet/domain/fsm.js +100 -4
- package/dist/fleet/domain/fsm.js.map +1 -1
- package/dist/fleet/supervisor.js +38 -18
- package/dist/fleet/supervisor.js.map +1 -1
- package/dist/inbound/cli/main.js +12 -0
- package/dist/inbound/cli/main.js.map +1 -1
- package/dist/messaging/token-provider.d.ts +43 -0
- package/dist/messaging/token-provider.js +65 -0
- package/dist/messaging/token-provider.js.map +1 -0
- package/dist/plugins/acp/index.d.ts +27 -30
- package/dist/plugins/acp/index.js +44 -137
- package/dist/plugins/acp/index.js.map +1 -1
- package/dist/plugins/message-bus/busy-reply.d.ts +39 -0
- package/dist/plugins/message-bus/busy-reply.js +30 -0
- package/dist/plugins/message-bus/busy-reply.js.map +1 -0
- package/dist/plugins/message-bus/cancel.d.ts +48 -0
- package/dist/plugins/message-bus/cancel.js +66 -0
- package/dist/plugins/message-bus/cancel.js.map +1 -0
- package/dist/plugins/message-bus/inbound.d.ts +71 -0
- package/dist/plugins/message-bus/inbound.js +180 -0
- package/dist/plugins/message-bus/inbound.js.map +1 -0
- package/dist/plugins/message-bus/index.d.ts +146 -0
- package/dist/plugins/message-bus/index.js +382 -0
- package/dist/plugins/message-bus/index.js.map +1 -0
- package/dist/plugins/message-bus/ms-channel-notifier.d.ts +101 -0
- package/dist/plugins/message-bus/ms-channel-notifier.js +181 -0
- package/dist/plugins/message-bus/ms-channel-notifier.js.map +1 -0
- package/dist/plugins/message-bus/ms-inflight-tracker.d.ts +36 -0
- package/dist/plugins/message-bus/ms-inflight-tracker.js +42 -0
- package/dist/plugins/message-bus/ms-inflight-tracker.js.map +1 -0
- package/dist/ports/plugin.d.ts +12 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ms-channel-notifier.js","sourceRoot":"","sources":["../../../src/plugins/message-bus/ms-channel-notifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny single-entry tracker for the IN-FLIGHT MS-originated turn.
|
|
3
|
+
*
|
|
4
|
+
* v0.9.0 — replaces the v0.8.0 `TurnContextRegister`, which carried
|
|
5
|
+
* far more state because the outbound listener needed to look up the
|
|
6
|
+
* channelId / sessionKey / inboundMessageId per AgentEvent. With
|
|
7
|
+
* `MsChannelNotifier` owning the wire mapping per-sid, the tracker
|
|
8
|
+
* only needs to answer ONE question: "given a `chat_cancel.target_
|
|
9
|
+
* message_id`, which sid (if any) is currently running?".
|
|
10
|
+
*
|
|
11
|
+
* The tracker is single-entry by design — `SessionManager.currentTask`
|
|
12
|
+
* already enforces "at most one in-flight turn" at the SessionManager
|
|
13
|
+
* level, so the plugin layer can't legitimately have two MS turns
|
|
14
|
+
* active at once.
|
|
15
|
+
*/
|
|
16
|
+
export interface MsInflightEntry {
|
|
17
|
+
/** Original inbound `chat_message.message_id`. */
|
|
18
|
+
messageId: string;
|
|
19
|
+
/** Centrifugo channel `ch:{channelId}` the reply will be published on. */
|
|
20
|
+
channelId: string;
|
|
21
|
+
/** Per-channel sid bound on `SessionManager` (== `extractChatPrompt.sessionKey`). */
|
|
22
|
+
sid: string;
|
|
23
|
+
/** Wall-clock timestamp the turn was claimed (ms). For diagnostics. */
|
|
24
|
+
startedAt: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class MsInflightTracker {
|
|
27
|
+
private current;
|
|
28
|
+
set(entry: Omit<MsInflightEntry, "startedAt">): MsInflightEntry;
|
|
29
|
+
/** Idempotent — clearing twice or with a wrong id is a no-op. */
|
|
30
|
+
clear(messageId: string): void;
|
|
31
|
+
/** Force-clear (used during plugin stop / disconnect). */
|
|
32
|
+
reset(): void;
|
|
33
|
+
findByInboundMessageId(messageId: string): MsInflightEntry | null;
|
|
34
|
+
/** Visible for tests / logs. */
|
|
35
|
+
peek(): MsInflightEntry | null;
|
|
36
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny single-entry tracker for the IN-FLIGHT MS-originated turn.
|
|
3
|
+
*
|
|
4
|
+
* v0.9.0 — replaces the v0.8.0 `TurnContextRegister`, which carried
|
|
5
|
+
* far more state because the outbound listener needed to look up the
|
|
6
|
+
* channelId / sessionKey / inboundMessageId per AgentEvent. With
|
|
7
|
+
* `MsChannelNotifier` owning the wire mapping per-sid, the tracker
|
|
8
|
+
* only needs to answer ONE question: "given a `chat_cancel.target_
|
|
9
|
+
* message_id`, which sid (if any) is currently running?".
|
|
10
|
+
*
|
|
11
|
+
* The tracker is single-entry by design — `SessionManager.currentTask`
|
|
12
|
+
* already enforces "at most one in-flight turn" at the SessionManager
|
|
13
|
+
* level, so the plugin layer can't legitimately have two MS turns
|
|
14
|
+
* active at once.
|
|
15
|
+
*/
|
|
16
|
+
export class MsInflightTracker {
|
|
17
|
+
current = null;
|
|
18
|
+
set(entry) {
|
|
19
|
+
this.current = { ...entry, startedAt: Date.now() };
|
|
20
|
+
return this.current;
|
|
21
|
+
}
|
|
22
|
+
/** Idempotent — clearing twice or with a wrong id is a no-op. */
|
|
23
|
+
clear(messageId) {
|
|
24
|
+
if (this.current && this.current.messageId === messageId) {
|
|
25
|
+
this.current = null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Force-clear (used during plugin stop / disconnect). */
|
|
29
|
+
reset() {
|
|
30
|
+
this.current = null;
|
|
31
|
+
}
|
|
32
|
+
findByInboundMessageId(messageId) {
|
|
33
|
+
return this.current && this.current.messageId === messageId
|
|
34
|
+
? this.current
|
|
35
|
+
: null;
|
|
36
|
+
}
|
|
37
|
+
/** Visible for tests / logs. */
|
|
38
|
+
peek() {
|
|
39
|
+
return this.current;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ms-inflight-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ms-inflight-tracker.js","sourceRoot":"","sources":["../../../src/plugins/message-bus/ms-inflight-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,MAAM,OAAO,iBAAiB;IACpB,OAAO,GAA2B,IAAI,CAAC;IAE/C,GAAG,CAAC,KAAyC;QAC3C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,SAAiB;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,sBAAsB,CAAC,SAAiB;QACtC,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS;YACzD,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,gCAAgC;IAChC,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
|
package/dist/ports/plugin.d.ts
CHANGED
|
@@ -33,11 +33,23 @@
|
|
|
33
33
|
*/
|
|
34
34
|
import type { Logger } from "pino";
|
|
35
35
|
import type { Config } from "../config/schema.js";
|
|
36
|
+
import type { SessionManager } from "../app/session-manager.js";
|
|
36
37
|
import type { AgentHost } from "./agent-host.js";
|
|
37
38
|
export interface PluginContext {
|
|
38
39
|
host: AgentHost;
|
|
39
40
|
config: Config;
|
|
40
41
|
log: Logger;
|
|
42
|
+
/**
|
|
43
|
+
* v0.9.0 — bootstrap-owned `SessionManager` shared across plugins.
|
|
44
|
+
*
|
|
45
|
+
* AcpPlugin uses it via the operator's fixed sid; MessageBusPlugin
|
|
46
|
+
* uses `findOrCreateSession(sessionKey)` + `bindNotifier` to route
|
|
47
|
+
* per-channel turns. Plugins MUST NOT construct their own
|
|
48
|
+
* SessionManager — single instance per process is the invariant
|
|
49
|
+
* that lets the in-flight gate (Layer 3) protect the physical
|
|
50
|
+
* device.
|
|
51
|
+
*/
|
|
52
|
+
sessionManager: SessionManager;
|
|
41
53
|
}
|
|
42
54
|
export interface AgentPlugin {
|
|
43
55
|
/** Unique, stable plugin name (used for logging / disable filters). */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beeos-ai/device-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "BeeOS device-agent — Android/desktop AI control agent (TypeScript) speaking ACP over Bridge WebSocket. Connects to a sibling device-mcp-server process for device control.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@beeos-ai/beeos-types": "^1.0.0",
|
|
55
55
|
"@beeos-ai/bridge-client": "^0.1.1",
|
|
56
|
+
"@beeos-ai/message-sdk": "^0.1.0",
|
|
56
57
|
"@fastify/cors": "^11.2.0",
|
|
57
58
|
"@fastify/multipart": "^10.0.0",
|
|
58
59
|
"@mariozechner/pi-coding-agent": "0.70.2",
|