@beeos-ai/device-agent 0.5.1 → 0.7.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/.pi/extensions/android-tools.ts +24 -3
- package/dist/adapters/agent-gateway-client.d.ts +25 -0
- package/dist/adapters/agent-gateway-client.js +49 -0
- package/dist/adapters/agent-gateway-client.js.map +1 -1
- package/dist/adapters/user-file-uploader.d.ts +74 -0
- package/dist/adapters/user-file-uploader.js +78 -0
- package/dist/adapters/user-file-uploader.js.map +1 -0
- package/dist/app/in-flight-turn.d.ts +120 -0
- package/dist/app/in-flight-turn.js +158 -0
- package/dist/app/in-flight-turn.js.map +1 -0
- package/dist/app/jsonl-store.d.ts +109 -0
- package/dist/app/jsonl-store.js +402 -0
- package/dist/app/jsonl-store.js.map +1 -0
- package/dist/app/message-store.d.ts +82 -31
- package/dist/app/message-store.js +109 -48
- package/dist/app/message-store.js.map +1 -1
- package/dist/app/plugin-commands/registry.d.ts +41 -0
- package/dist/app/plugin-commands/registry.js +62 -0
- package/dist/app/plugin-commands/registry.js.map +1 -0
- package/dist/app/plugin-commands/screenshot-command.d.ts +32 -0
- package/dist/app/plugin-commands/screenshot-command.js +44 -0
- package/dist/app/plugin-commands/screenshot-command.js.map +1 -0
- package/dist/app/plugin-commands/types.d.ts +63 -0
- package/dist/app/plugin-commands/types.js +26 -0
- package/dist/app/plugin-commands/types.js.map +1 -0
- package/dist/app/screenshot-service.d.ts +68 -0
- package/dist/app/screenshot-service.js +64 -0
- package/dist/app/screenshot-service.js.map +1 -0
- package/dist/app/session-manager.d.ts +150 -55
- package/dist/app/session-manager.js +385 -122
- package/dist/app/session-manager.js.map +1 -1
- package/dist/bootstrap.js +5 -1
- package/dist/bootstrap.js.map +1 -1
- package/dist/config/paths.d.ts +48 -0
- package/dist/config/paths.js +59 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/inbound/acp/handlers/device.d.ts +9 -1
- package/dist/inbound/acp/handlers/device.js +9 -1
- package/dist/inbound/acp/handlers/device.js.map +1 -1
- package/dist/inbound/acp/handlers/initialize.d.ts +17 -5
- package/dist/inbound/acp/handlers/initialize.js +19 -7
- package/dist/inbound/acp/handlers/initialize.js.map +1 -1
- package/dist/inbound/acp/handlers/session.d.ts +0 -1
- package/dist/inbound/acp/handlers/skills.d.ts +24 -2
- package/dist/inbound/acp/handlers/skills.js +31 -2
- package/dist/inbound/acp/handlers/skills.js.map +1 -1
- package/dist/orchestrator-system-prompt.js +2 -2
- package/dist/plugins/acp/index.d.ts +26 -1
- package/dist/plugins/acp/index.js +86 -3
- package/dist/plugins/acp/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,19 +5,36 @@
|
|
|
5
5
|
* Agent Control Protocol (ACP) over a WebSocket transport.
|
|
6
6
|
*
|
|
7
7
|
* Responsibilities:
|
|
8
|
-
* - Construct `SessionManager` (subscribes to host events)
|
|
8
|
+
* - Construct `SessionManager` (subscribes to host events) in
|
|
9
|
+
* fixed-sid single-session mode, with a JSONL-backed store
|
|
10
|
+
* persisting transcripts to
|
|
11
|
+
* `${BEEOS_HOME ?? ~/.beeos}/device-agent/sessions/<sid>.jsonl`.
|
|
9
12
|
* - Wire ACP handlers (`session/*`, `device/*`, `models/list`, `skills/list`).
|
|
10
13
|
* - Open the Bridge WebSocket, bind the router, fan `session/update`
|
|
11
14
|
* notifications back through the transport.
|
|
12
15
|
*
|
|
16
|
+
* Single-session sid derivation:
|
|
17
|
+
*
|
|
18
|
+
* The fixed sid is `device:<first16HexOfSha256(publicKey)>` — a
|
|
19
|
+
* deterministic per-device identifier that survives reconnects and
|
|
20
|
+
* binary upgrades. Standalone mode (no keypair) falls back to
|
|
21
|
+
* `device:standalone` so local CLI testing still gets a stable sid.
|
|
22
|
+
*
|
|
13
23
|
* Disabled when `--standalone` (no remote control plane) or `--no-acp`
|
|
14
24
|
* is passed; in that mode only the http-debug plugin is useful.
|
|
15
25
|
*/
|
|
26
|
+
import { fingerprint as sha256Fingerprint } from "@beeos-ai/bridge-client";
|
|
16
27
|
import { BridgeWsTransport } from "../../adapters/transport-bridge-ws.js";
|
|
17
|
-
import {
|
|
28
|
+
import { AgentGatewayUserFileUploader } from "../../adapters/user-file-uploader.js";
|
|
29
|
+
import { JsonlMessageStore } from "../../app/jsonl-store.js";
|
|
30
|
+
import { PluginCommandRegistry } from "../../app/plugin-commands/registry.js";
|
|
31
|
+
import { ScreenshotCommandHandler } from "../../app/plugin-commands/screenshot-command.js";
|
|
32
|
+
import { ScreenshotService } from "../../app/screenshot-service.js";
|
|
18
33
|
import { SessionManager } from "../../app/session-manager.js";
|
|
34
|
+
import { getDeviceAgentSessionsDir } from "../../config/paths.js";
|
|
19
35
|
import { AcpDeviceHandlers } from "../../inbound/acp/handlers/device.js";
|
|
20
36
|
import { AcpSessionHandlers } from "../../inbound/acp/handlers/session.js";
|
|
37
|
+
import { AcpSkillsHandlers } from "../../inbound/acp/handlers/skills.js";
|
|
21
38
|
import { AcpRouter, bindRouterToTransport } from "../../inbound/acp/router.js";
|
|
22
39
|
import { TransportSessionNotifier } from "../../inbound/acp/notifier.js";
|
|
23
40
|
export class AcpPlugin {
|
|
@@ -26,6 +43,7 @@ export class AcpPlugin {
|
|
|
26
43
|
ctx;
|
|
27
44
|
transport = null;
|
|
28
45
|
sessions = null;
|
|
46
|
+
store = null;
|
|
29
47
|
unbind = null;
|
|
30
48
|
constructor(opts) {
|
|
31
49
|
this.opts = opts;
|
|
@@ -51,12 +69,51 @@ export class AcpPlugin {
|
|
|
51
69
|
transport.on("connected", () => log.info("acp: bridge connected"));
|
|
52
70
|
transport.on("disconnected", (reason) => log.warn({ reason }, "acp: bridge disconnected"));
|
|
53
71
|
transport.on("error", (err) => log.error({ err: err.message }, "acp: bridge transport error"));
|
|
72
|
+
const fixedSessionId = deriveFixedSessionId(this.opts.keypair.publicKey);
|
|
73
|
+
const sessionsDir = this.opts.sessionsDirOverride ?? getDeviceAgentSessionsDir();
|
|
74
|
+
const messageStore = await JsonlMessageStore.open({
|
|
75
|
+
sessionsDir,
|
|
76
|
+
preloadSids: [fixedSessionId],
|
|
77
|
+
logger: { warn: (...args) => log.warn(...args) },
|
|
78
|
+
});
|
|
79
|
+
log.info({ fixedSessionId, sessionsDir }, "acp: jsonl store ready");
|
|
54
80
|
const notifier = new TransportSessionNotifier(transport);
|
|
55
|
-
|
|
81
|
+
// Build the plugin-command registry. Only commands whose dependencies
|
|
82
|
+
// are satisfied get registered — this keeps `skills/list` honest in
|
|
83
|
+
// degraded modes (e.g. local dev without an agent gateway URL still
|
|
84
|
+
// boots, just without `/screenshot`).
|
|
85
|
+
const pluginCommands = new PluginCommandRegistry();
|
|
86
|
+
if (this.opts.agentGatewayUrl) {
|
|
87
|
+
const uploader = new AgentGatewayUserFileUploader({
|
|
88
|
+
agentGatewayUrl: this.opts.agentGatewayUrl,
|
|
89
|
+
identity: {
|
|
90
|
+
publicKey: this.opts.keypair.publicKey,
|
|
91
|
+
privateKey: this.opts.keypair.privateKey,
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
// ScreenshotService takes the live MCP runtime — bind to a single
|
|
95
|
+
// resolved instance per plugin lifetime; on autospawn restart the
|
|
96
|
+
// outer mcpProvider issues a fresh runtime and the next call will
|
|
97
|
+
// observe it transparently (the service captures the runtime at
|
|
98
|
+
// each `captureAndUpload` call, NOT at construction).
|
|
99
|
+
const lazyMcp = {
|
|
100
|
+
screenshot: () => this.opts.mcpProvider().screenshot(),
|
|
101
|
+
uiDump: (o) => this.opts.mcpProvider().uiDump(o),
|
|
102
|
+
act: (a) => this.opts.mcpProvider().act(a),
|
|
103
|
+
};
|
|
104
|
+
const screenshotService = new ScreenshotService(lazyMcp, uploader);
|
|
105
|
+
pluginCommands.register(new ScreenshotCommandHandler(screenshotService, notifier));
|
|
106
|
+
log.info({ commands: pluginCommands.list().map((c) => c.name) }, "acp: plugin commands registered");
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
log.info("acp: agentGatewayUrl unset — skipping `/screenshot` and other upload-dependent plugin commands");
|
|
110
|
+
}
|
|
56
111
|
const sessions = new SessionManager({
|
|
57
112
|
host,
|
|
58
113
|
messageStore,
|
|
59
114
|
notifier,
|
|
115
|
+
fixedSessionId,
|
|
116
|
+
pluginCommands,
|
|
60
117
|
// `Config.sessionTimeoutMs` is the single source of truth for idle GC.
|
|
61
118
|
// 0 disables the threshold check (effectively keeps sessions forever
|
|
62
119
|
// until `maxSessions` LRU eviction kicks in) — it's surfaced in the
|
|
@@ -75,6 +132,7 @@ export class AcpPlugin {
|
|
|
75
132
|
const router = new AcpRouter({
|
|
76
133
|
device: new AcpDeviceHandlers(this.opts.mcpProvider),
|
|
77
134
|
session: new AcpSessionHandlers(sessions),
|
|
135
|
+
skills: new AcpSkillsHandlers(pluginCommands),
|
|
78
136
|
log: ({ method, error }) => {
|
|
79
137
|
if (error)
|
|
80
138
|
log.warn({ method, err: error.message }, "acp handler error");
|
|
@@ -84,6 +142,7 @@ export class AcpPlugin {
|
|
|
84
142
|
});
|
|
85
143
|
this.transport = transport;
|
|
86
144
|
this.sessions = sessions;
|
|
145
|
+
this.store = messageStore;
|
|
87
146
|
this.unbind = bindRouterToTransport(router, transport);
|
|
88
147
|
}
|
|
89
148
|
async start() {
|
|
@@ -105,7 +164,31 @@ export class AcpPlugin {
|
|
|
105
164
|
}
|
|
106
165
|
this.unbind = null;
|
|
107
166
|
}
|
|
167
|
+
if (this.store) {
|
|
168
|
+
try {
|
|
169
|
+
await this.store.close();
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
// Best-effort flush — log but don't block shutdown on a stale stream.
|
|
173
|
+
this.ctx?.log.warn({ err: e.message }, "acp: jsonl store close failed");
|
|
174
|
+
}
|
|
175
|
+
this.store = null;
|
|
176
|
+
}
|
|
108
177
|
this.transport = null;
|
|
109
178
|
}
|
|
110
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Compute the per-device fixed sid.
|
|
182
|
+
*
|
|
183
|
+
* Format: `device:<first16HexOfSha256(publicKey)>`. 16 hex chars give
|
|
184
|
+
* 64 bits of entropy — far more than enough to avoid collisions
|
|
185
|
+
* across the BeeOS device fleet, while keeping the sid short enough
|
|
186
|
+
* to use as a filename / log correlation tag without truncation.
|
|
187
|
+
*/
|
|
188
|
+
function deriveFixedSessionId(publicKey) {
|
|
189
|
+
if (!publicKey || publicKey.length === 0)
|
|
190
|
+
return "device:standalone";
|
|
191
|
+
const hex = sha256Fingerprint(publicKey);
|
|
192
|
+
return `device:${hex.slice(0, 16)}`;
|
|
193
|
+
}
|
|
111
194
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/acp/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/acp/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beeos-ai/device-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
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",
|