@beeos-ai/device-agent 0.5.0 → 0.6.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.
Files changed (45) hide show
  1. package/.pi/extensions/android-tools.ts +24 -3
  2. package/dist/adapters/identity-file.d.ts +33 -5
  3. package/dist/adapters/identity-file.js +52 -6
  4. package/dist/adapters/identity-file.js.map +1 -1
  5. package/dist/app/in-flight-turn.d.ts +120 -0
  6. package/dist/app/in-flight-turn.js +158 -0
  7. package/dist/app/in-flight-turn.js.map +1 -0
  8. package/dist/app/jsonl-store.d.ts +109 -0
  9. package/dist/app/jsonl-store.js +402 -0
  10. package/dist/app/jsonl-store.js.map +1 -0
  11. package/dist/app/message-store.d.ts +82 -31
  12. package/dist/app/message-store.js +109 -48
  13. package/dist/app/message-store.js.map +1 -1
  14. package/dist/app/session-manager.d.ts +120 -57
  15. package/dist/app/session-manager.js +319 -123
  16. package/dist/app/session-manager.js.map +1 -1
  17. package/dist/config/paths.d.ts +48 -0
  18. package/dist/config/paths.js +59 -0
  19. package/dist/config/paths.js.map +1 -0
  20. package/dist/fleet/adapters/process/node-process-manager.js +97 -17
  21. package/dist/fleet/adapters/process/node-process-manager.js.map +1 -1
  22. package/dist/fleet/adapters/state/beeos-cli-store.d.ts +75 -9
  23. package/dist/fleet/adapters/state/beeos-cli-store.js +201 -17
  24. package/dist/fleet/adapters/state/beeos-cli-store.js.map +1 -1
  25. package/dist/fleet/domain/device.d.ts +9 -0
  26. package/dist/fleet/domain/device.js.map +1 -1
  27. package/dist/fleet/domain/fsm.js +34 -0
  28. package/dist/fleet/domain/fsm.js.map +1 -1
  29. package/dist/fleet/installer/spawn-env.d.ts +3 -0
  30. package/dist/fleet/installer/spawn-env.js +186 -3
  31. package/dist/fleet/installer/spawn-env.js.map +1 -1
  32. package/dist/fleet/state/state-json.d.ts +116 -0
  33. package/dist/fleet/state/state-json.js +87 -0
  34. package/dist/fleet/state/state-json.js.map +1 -0
  35. package/dist/fleet/supervisor.js +14 -2
  36. package/dist/fleet/supervisor.js.map +1 -1
  37. package/dist/inbound/acp/handlers/initialize.d.ts +8 -0
  38. package/dist/inbound/acp/handlers/initialize.js +9 -1
  39. package/dist/inbound/acp/handlers/initialize.js.map +1 -1
  40. package/dist/inbound/acp/handlers/session.d.ts +0 -1
  41. package/dist/orchestrator-system-prompt.js +2 -2
  42. package/dist/plugins/acp/index.d.ts +18 -1
  43. package/dist/plugins/acp/index.js +49 -3
  44. package/dist/plugins/acp/index.js.map +1 -1
  45. package/package.json +1 -1
@@ -92,7 +92,7 @@ ${HEURISTICS_CN}
92
92
  **\`mobile_use\`**
93
93
  - 指令写完整、写具体:界面原文、应用名、需要输入的文字(注明"原样输入、不改写")。
94
94
  - 单次调用完成一个连贯子任务;跨 App 的长流程可拆成多次顺序调用。
95
- - 用 \`max_steps\` 控制步数:**每次调用必须在工具参数里显式传入**(Schema 必填);简单操作 5–10,复杂流程 20–30。
95
+ - 用 \`max_steps\` 控制步数:**每次调用必须在工具参数里显式传入**(Schema 必填);简单操作 15–25,复杂流程 30–50。
96
96
  - 失败后先分析原因(设备状态、参数、当前界面),不要用相同参数盲目重试。
97
97
 
98
98
  **\`ground\` / \`ui_xml\`**
@@ -174,7 +174,7 @@ ${HEURISTICS_EN}
174
174
  **\`mobile_use\`**
175
175
  - Write instructions in full: exact on-screen labels, app names, verbatim text to type (note "paste verbatim, no paraphrase").
176
176
  - One call = one coherent subtask; split cross-app flows into sequential calls.
177
- - \`max_steps\` is **required on every call** (tool schema); use 5–10 for simple actions, 20–30 for complex flows.
177
+ - \`max_steps\` is **required on every call** (tool schema); use 15–25 for simple actions, 30–50 for complex flows.
178
178
  - On failure: diagnose first (device state, args, current screen). Do not retry with the same call.
179
179
 
180
180
  **\`ground\` / \`ui_xml\`**
@@ -5,11 +5,21 @@
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
  */
@@ -31,6 +41,12 @@ export interface AcpPluginOptions {
31
41
  };
32
42
  /** Optional pre-built transport (used by tests for mock injection). */
33
43
  transportOverride?: IBridgeTransport;
44
+ /**
45
+ * Override the sessions directory. Tests pin this to a tmp dir; in
46
+ * production the default `${BEEOS_HOME ?? ~/.beeos}/device-agent/sessions`
47
+ * resolves via `getDeviceAgentSessionsDir()`.
48
+ */
49
+ sessionsDirOverride?: string;
34
50
  }
35
51
  export declare class AcpPlugin implements AgentPlugin {
36
52
  private readonly opts;
@@ -38,6 +54,7 @@ export declare class AcpPlugin implements AgentPlugin {
38
54
  private ctx?;
39
55
  private transport;
40
56
  private sessions;
57
+ private store;
41
58
  private unbind;
42
59
  constructor(opts: AcpPluginOptions);
43
60
  init(ctx: PluginContext): Promise<void>;
@@ -5,17 +5,29 @@
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 { MessageStore } from "../../app/message-store.js";
28
+ import { JsonlMessageStore } from "../../app/jsonl-store.js";
18
29
  import { SessionManager } from "../../app/session-manager.js";
30
+ import { getDeviceAgentSessionsDir } from "../../config/paths.js";
19
31
  import { AcpDeviceHandlers } from "../../inbound/acp/handlers/device.js";
20
32
  import { AcpSessionHandlers } from "../../inbound/acp/handlers/session.js";
21
33
  import { AcpRouter, bindRouterToTransport } from "../../inbound/acp/router.js";
@@ -26,6 +38,7 @@ export class AcpPlugin {
26
38
  ctx;
27
39
  transport = null;
28
40
  sessions = null;
41
+ store = null;
29
42
  unbind = null;
30
43
  constructor(opts) {
31
44
  this.opts = opts;
@@ -51,12 +64,20 @@ export class AcpPlugin {
51
64
  transport.on("connected", () => log.info("acp: bridge connected"));
52
65
  transport.on("disconnected", (reason) => log.warn({ reason }, "acp: bridge disconnected"));
53
66
  transport.on("error", (err) => log.error({ err: err.message }, "acp: bridge transport error"));
67
+ const fixedSessionId = deriveFixedSessionId(this.opts.keypair.publicKey);
68
+ const sessionsDir = this.opts.sessionsDirOverride ?? getDeviceAgentSessionsDir();
69
+ const messageStore = await JsonlMessageStore.open({
70
+ sessionsDir,
71
+ preloadSids: [fixedSessionId],
72
+ logger: { warn: (...args) => log.warn(...args) },
73
+ });
74
+ log.info({ fixedSessionId, sessionsDir }, "acp: jsonl store ready");
54
75
  const notifier = new TransportSessionNotifier(transport);
55
- const messageStore = new MessageStore();
56
76
  const sessions = new SessionManager({
57
77
  host,
58
78
  messageStore,
59
79
  notifier,
80
+ fixedSessionId,
60
81
  // `Config.sessionTimeoutMs` is the single source of truth for idle GC.
61
82
  // 0 disables the threshold check (effectively keeps sessions forever
62
83
  // until `maxSessions` LRU eviction kicks in) — it's surfaced in the
@@ -84,6 +105,7 @@ export class AcpPlugin {
84
105
  });
85
106
  this.transport = transport;
86
107
  this.sessions = sessions;
108
+ this.store = messageStore;
87
109
  this.unbind = bindRouterToTransport(router, transport);
88
110
  }
89
111
  async start() {
@@ -105,7 +127,31 @@ export class AcpPlugin {
105
127
  }
106
128
  this.unbind = null;
107
129
  }
130
+ if (this.store) {
131
+ try {
132
+ await this.store.close();
133
+ }
134
+ catch (e) {
135
+ // Best-effort flush — log but don't block shutdown on a stale stream.
136
+ this.ctx?.log.warn({ err: e.message }, "acp: jsonl store close failed");
137
+ }
138
+ this.store = null;
139
+ }
108
140
  this.transport = null;
109
141
  }
110
142
  }
143
+ /**
144
+ * Compute the per-device fixed sid.
145
+ *
146
+ * Format: `device:<first16HexOfSha256(publicKey)>`. 16 hex chars give
147
+ * 64 bits of entropy — far more than enough to avoid collisions
148
+ * across the BeeOS device fleet, while keeping the sid short enough
149
+ * to use as a filename / log correlation tag without truncation.
150
+ */
151
+ function deriveFixedSessionId(publicKey) {
152
+ if (!publicKey || publicKey.length === 0)
153
+ return "device:standalone";
154
+ const hex = sha256Fingerprint(publicKey);
155
+ return `device:${hex.slice(0, 16)}`;
156
+ }
111
157
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/acp/index.ts"],"names":[],"mappings":"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"}
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.5.0",
3
+ "version": "0.6.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",