@beeos-ai/device-agent 0.7.1 → 0.8.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 (68) hide show
  1. package/dist/agent-runtime/skills/sqlite-store.d.ts +60 -0
  2. package/dist/agent-runtime/skills/sqlite-store.js +234 -0
  3. package/dist/agent-runtime/skills/sqlite-store.js.map +1 -0
  4. package/dist/app/in-flight-turn.d.ts +39 -0
  5. package/dist/app/in-flight-turn.js.map +1 -1
  6. package/dist/app/jsonl-store.js +20 -7
  7. package/dist/app/jsonl-store.js.map +1 -1
  8. package/dist/app/plugin-commands/screenshot-command.d.ts +11 -10
  9. package/dist/app/plugin-commands/screenshot-command.js +19 -18
  10. package/dist/app/plugin-commands/screenshot-command.js.map +1 -1
  11. package/dist/app/plugin-commands/types.d.ts +50 -11
  12. package/dist/app/plugin-commands/types.js +5 -2
  13. package/dist/app/plugin-commands/types.js.map +1 -1
  14. package/dist/app/session-manager.d.ts +20 -11
  15. package/dist/app/session-manager.js +83 -14
  16. package/dist/app/session-manager.js.map +1 -1
  17. package/dist/bootstrap.js +11 -0
  18. package/dist/bootstrap.js.map +1 -1
  19. package/dist/config/loader.d.ts +4 -0
  20. package/dist/config/loader.js +18 -2
  21. package/dist/config/loader.js.map +1 -1
  22. package/dist/config/schema.d.ts +5 -0
  23. package/dist/config/schema.js +42 -0
  24. package/dist/config/schema.js.map +1 -1
  25. package/dist/inbound/cli/main.js +12 -0
  26. package/dist/inbound/cli/main.js.map +1 -1
  27. package/dist/messaging/token-provider.d.ts +43 -0
  28. package/dist/messaging/token-provider.js +65 -0
  29. package/dist/messaging/token-provider.js.map +1 -0
  30. package/dist/plugins/acp/index.js +1 -1
  31. package/dist/plugins/acp/index.js.map +1 -1
  32. package/dist/plugins/message-bus/busy-reply.d.ts +39 -0
  33. package/dist/plugins/message-bus/busy-reply.js +30 -0
  34. package/dist/plugins/message-bus/busy-reply.js.map +1 -0
  35. package/dist/plugins/message-bus/inbound.d.ts +55 -0
  36. package/dist/plugins/message-bus/inbound.js +123 -0
  37. package/dist/plugins/message-bus/inbound.js.map +1 -0
  38. package/dist/plugins/message-bus/index.d.ts +147 -0
  39. package/dist/plugins/message-bus/index.js +392 -0
  40. package/dist/plugins/message-bus/index.js.map +1 -0
  41. package/dist/plugins/message-bus/outbound.d.ts +43 -0
  42. package/dist/plugins/message-bus/outbound.js +149 -0
  43. package/dist/plugins/message-bus/outbound.js.map +1 -0
  44. package/dist/plugins/message-bus/turn-context.d.ts +57 -0
  45. package/dist/plugins/message-bus/turn-context.js +53 -0
  46. package/dist/plugins/message-bus/turn-context.js.map +1 -0
  47. package/dist/test-lan-autoglm.d.ts +7 -0
  48. package/dist/test-lan-autoglm.js +46 -0
  49. package/dist/test-lan-autoglm.js.map +1 -0
  50. package/dist/test-mem-breakdown.d.ts +1 -0
  51. package/dist/test-mem-breakdown.js +103 -0
  52. package/dist/test-mem-breakdown.js.map +1 -0
  53. package/dist/test-mem.d.ts +1 -0
  54. package/dist/test-mem.js +60 -0
  55. package/dist/test-mem.js.map +1 -0
  56. package/dist/test-mobile-use.d.ts +1 -0
  57. package/dist/test-mobile-use.js +18 -0
  58. package/dist/test-mobile-use.js.map +1 -0
  59. package/dist/test-screenshot-loop.d.ts +1 -0
  60. package/dist/test-screenshot-loop.js +43 -0
  61. package/dist/test-screenshot-loop.js.map +1 -0
  62. package/dist/test-screenshot.d.ts +1 -0
  63. package/dist/test-screenshot.js +10 -0
  64. package/dist/test-screenshot.js.map +1 -0
  65. package/dist/test-ui-xml-dump.d.ts +15 -0
  66. package/dist/test-ui-xml-dump.js +49 -0
  67. package/dist/test-ui-xml-dump.js.map +1 -0
  68. package/package.json +2 -1
@@ -0,0 +1,60 @@
1
+ /**
2
+ * agent-runtime/skills/sqlite-store — SQLite-backed
3
+ * {@link SkillCacheStore}.
4
+ *
5
+ * Phase 3.1 of the [device-agent reflector upgrade plan](../../../../../../.cursor/plans/device-agent-reflector-skills_d5599350.plan.md).
6
+ *
7
+ * Schema (kept verbatim with the plan):
8
+ * ```sql
9
+ * CREATE TABLE skills (
10
+ * id TEXT PRIMARY KEY,
11
+ * app_package TEXT NOT NULL,
12
+ * task_summary TEXT NOT NULL,
13
+ * task_embedding BLOB,
14
+ * action_sequence_json TEXT NOT NULL,
15
+ * success_count INTEGER NOT NULL DEFAULT 1,
16
+ * fail_count INTEGER NOT NULL DEFAULT 0,
17
+ * last_used_at INTEGER NOT NULL,
18
+ * created_at INTEGER NOT NULL
19
+ * );
20
+ * CREATE INDEX idx_skills_app ON skills(app_package);
21
+ * ```
22
+ *
23
+ * Default DB path: `~/.beeos/device-agent/skills.sqlite`. Containerised
24
+ * deployments mount `/var/lib/beeos/device-agent` and override
25
+ * `SKILL_CACHE_PATH` accordingly.
26
+ *
27
+ * Search is implemented as a full scan over the matching app rows —
28
+ * the cache is intentionally small (<10k rows / device), so a brute
29
+ * cosine pass is cheaper than maintaining an ANN index. If profile
30
+ * data shows that's wrong we can plug in `sqlite-vss` / `pgvector`
31
+ * later behind the same {@link SkillCacheStore} interface.
32
+ */
33
+ import type { Database as DB } from "better-sqlite3";
34
+ import type { NewSkillInput, Skill, SkillCacheStore, SkillMatch } from "./types.js";
35
+ export interface SQLiteSkillCacheStoreOptions {
36
+ /** Override the default DB path. Use ":memory:" for ephemeral tests. */
37
+ path?: string;
38
+ /** Pre-built better-sqlite3 Database (used by tests). */
39
+ db?: DB;
40
+ /** Skip auto-mkdir on the parent dir (when path is :memory:). */
41
+ noMkdir?: boolean;
42
+ }
43
+ export declare function defaultSkillCachePath(): string;
44
+ export declare class SQLiteSkillCacheStore implements SkillCacheStore {
45
+ private readonly db;
46
+ private readonly stmts;
47
+ private closed;
48
+ constructor(opts?: SQLiteSkillCacheStoreOptions);
49
+ insert(input: NewSkillInput): Skill;
50
+ get(id: string): Skill | undefined;
51
+ listByApp(appPackage: string, limit?: number): Skill[];
52
+ listAll(limit?: number): Skill[];
53
+ search(appPackage: string, query: Float32Array, k: number): SkillMatch[];
54
+ recordSuccess(id: string, now?: number): void;
55
+ recordFailure(id: string, now?: number): void;
56
+ delete(id: string): boolean;
57
+ clear(): void;
58
+ close(): void;
59
+ private applyMigrations;
60
+ }
@@ -0,0 +1,234 @@
1
+ /**
2
+ * agent-runtime/skills/sqlite-store — SQLite-backed
3
+ * {@link SkillCacheStore}.
4
+ *
5
+ * Phase 3.1 of the [device-agent reflector upgrade plan](../../../../../../.cursor/plans/device-agent-reflector-skills_d5599350.plan.md).
6
+ *
7
+ * Schema (kept verbatim with the plan):
8
+ * ```sql
9
+ * CREATE TABLE skills (
10
+ * id TEXT PRIMARY KEY,
11
+ * app_package TEXT NOT NULL,
12
+ * task_summary TEXT NOT NULL,
13
+ * task_embedding BLOB,
14
+ * action_sequence_json TEXT NOT NULL,
15
+ * success_count INTEGER NOT NULL DEFAULT 1,
16
+ * fail_count INTEGER NOT NULL DEFAULT 0,
17
+ * last_used_at INTEGER NOT NULL,
18
+ * created_at INTEGER NOT NULL
19
+ * );
20
+ * CREATE INDEX idx_skills_app ON skills(app_package);
21
+ * ```
22
+ *
23
+ * Default DB path: `~/.beeos/device-agent/skills.sqlite`. Containerised
24
+ * deployments mount `/var/lib/beeos/device-agent` and override
25
+ * `SKILL_CACHE_PATH` accordingly.
26
+ *
27
+ * Search is implemented as a full scan over the matching app rows —
28
+ * the cache is intentionally small (<10k rows / device), so a brute
29
+ * cosine pass is cheaper than maintaining an ANN index. If profile
30
+ * data shows that's wrong we can plug in `sqlite-vss` / `pgvector`
31
+ * later behind the same {@link SkillCacheStore} interface.
32
+ */
33
+ import { mkdirSync } from "node:fs";
34
+ import path from "node:path";
35
+ import { homedir } from "node:os";
36
+ import { randomUUID } from "node:crypto";
37
+ import Database from "better-sqlite3";
38
+ import { bufferToEmbedding, cosine, embeddingToBuffer, } from "./embedding.js";
39
+ const SCHEMA_VERSION = 1;
40
+ const SCHEMA_SQL = `
41
+ PRAGMA journal_mode=WAL;
42
+ PRAGMA synchronous=NORMAL;
43
+ PRAGMA foreign_keys=ON;
44
+
45
+ CREATE TABLE IF NOT EXISTS skills (
46
+ id TEXT PRIMARY KEY,
47
+ app_package TEXT NOT NULL,
48
+ task_summary TEXT NOT NULL,
49
+ task_embedding BLOB,
50
+ action_sequence_json TEXT NOT NULL,
51
+ success_count INTEGER NOT NULL DEFAULT 1,
52
+ fail_count INTEGER NOT NULL DEFAULT 0,
53
+ last_used_at INTEGER NOT NULL,
54
+ created_at INTEGER NOT NULL
55
+ );
56
+ CREATE INDEX IF NOT EXISTS idx_skills_app ON skills(app_package);
57
+
58
+ CREATE TABLE IF NOT EXISTS skill_meta (
59
+ key TEXT PRIMARY KEY,
60
+ value TEXT NOT NULL
61
+ );
62
+ `;
63
+ export function defaultSkillCachePath() {
64
+ const env = process.env.SKILL_CACHE_PATH;
65
+ if (env && env.length > 0)
66
+ return env;
67
+ return path.join(homedir(), ".beeos", "device-agent", "skills.sqlite");
68
+ }
69
+ export class SQLiteSkillCacheStore {
70
+ db;
71
+ stmts;
72
+ closed = false;
73
+ constructor(opts = {}) {
74
+ const dbPath = opts.path ?? defaultSkillCachePath();
75
+ if (opts.db) {
76
+ this.db = opts.db;
77
+ }
78
+ else {
79
+ if (!opts.noMkdir && dbPath !== ":memory:") {
80
+ mkdirSync(path.dirname(dbPath), { recursive: true });
81
+ }
82
+ this.db = new Database(dbPath);
83
+ }
84
+ this.db.exec(SCHEMA_SQL);
85
+ this.applyMigrations();
86
+ this.stmts = prepareStatements(this.db);
87
+ }
88
+ insert(input) {
89
+ if (this.closed)
90
+ throw new Error("SQLiteSkillCacheStore: handle closed");
91
+ const now = Date.now();
92
+ const id = randomUUID();
93
+ this.stmts.insert.run({
94
+ id,
95
+ app: input.appPackage,
96
+ summary: input.taskSummary,
97
+ embed: input.taskEmbedding ? embeddingToBuffer(input.taskEmbedding) : null,
98
+ seq: serialiseSequence(input.actionSequence),
99
+ now,
100
+ });
101
+ return {
102
+ id,
103
+ appPackage: input.appPackage,
104
+ taskSummary: input.taskSummary,
105
+ taskEmbedding: input.taskEmbedding ? new Float32Array(input.taskEmbedding) : undefined,
106
+ actionSequence: input.actionSequence,
107
+ successCount: 1,
108
+ failCount: 0,
109
+ lastUsedAt: now,
110
+ createdAt: now,
111
+ };
112
+ }
113
+ get(id) {
114
+ const row = this.stmts.getById.get({ id });
115
+ return row ? rowToSkill(row) : undefined;
116
+ }
117
+ listByApp(appPackage, limit = 50) {
118
+ const rows = this.stmts.listByApp.all({ app: appPackage, limit });
119
+ return rows.map(rowToSkill);
120
+ }
121
+ listAll(limit = 200) {
122
+ const rows = this.stmts.listAll.all({ limit });
123
+ return rows.map(rowToSkill);
124
+ }
125
+ search(appPackage, query, k) {
126
+ const rows = this.stmts.searchByApp.all({ app: appPackage });
127
+ const matches = [];
128
+ for (const row of rows) {
129
+ if (!row.task_embedding)
130
+ continue;
131
+ const v = bufferToEmbedding(row.task_embedding);
132
+ if (v.length !== query.length)
133
+ continue;
134
+ const score = cosine(query, v);
135
+ matches.push({ skill: rowToSkill(row), score });
136
+ }
137
+ matches.sort((a, b) => b.score - a.score);
138
+ return matches.slice(0, Math.max(0, k));
139
+ }
140
+ recordSuccess(id, now = Date.now()) {
141
+ this.stmts.success.run({ id, now });
142
+ }
143
+ recordFailure(id, now = Date.now()) {
144
+ this.stmts.failure.run({ id, now });
145
+ }
146
+ delete(id) {
147
+ const res = this.stmts.delete.run({ id });
148
+ return res.changes > 0;
149
+ }
150
+ clear() {
151
+ this.db.exec("DELETE FROM skills;");
152
+ }
153
+ close() {
154
+ if (this.closed)
155
+ return;
156
+ this.closed = true;
157
+ try {
158
+ this.db.close();
159
+ }
160
+ catch {
161
+ /* swallow — close is best-effort */
162
+ }
163
+ }
164
+ applyMigrations() {
165
+ const row = this.db
166
+ .prepare("SELECT value FROM skill_meta WHERE key = 'schema_version'")
167
+ .get();
168
+ if (!row) {
169
+ this.db
170
+ .prepare("INSERT INTO skill_meta(key, value) VALUES('schema_version', ?)")
171
+ .run(String(SCHEMA_VERSION));
172
+ return;
173
+ }
174
+ // Future migrations would diff `row.value` against SCHEMA_VERSION here.
175
+ }
176
+ }
177
+ function prepareStatements(db) {
178
+ return {
179
+ insert: db.prepare(`INSERT INTO skills (
180
+ id, app_package, task_summary, task_embedding,
181
+ action_sequence_json, success_count, fail_count, last_used_at, created_at
182
+ ) VALUES (
183
+ @id, @app, @summary, @embed,
184
+ @seq, 1, 0, @now, @now
185
+ );`),
186
+ getById: db.prepare(`SELECT * FROM skills WHERE id = @id`),
187
+ listByApp: db.prepare(`SELECT * FROM skills
188
+ WHERE app_package = @app
189
+ ORDER BY last_used_at DESC
190
+ LIMIT @limit`),
191
+ listAll: db.prepare(`SELECT * FROM skills
192
+ ORDER BY last_used_at DESC
193
+ LIMIT @limit`),
194
+ searchByApp: db.prepare(`SELECT * FROM skills WHERE app_package = @app`),
195
+ success: db.prepare(`UPDATE skills SET success_count = success_count + 1,
196
+ last_used_at = @now
197
+ WHERE id = @id`),
198
+ failure: db.prepare(`UPDATE skills SET fail_count = fail_count + 1,
199
+ last_used_at = @now
200
+ WHERE id = @id`),
201
+ delete: db.prepare(`DELETE FROM skills WHERE id = @id`),
202
+ };
203
+ }
204
+ function serialiseSequence(seq) {
205
+ return JSON.stringify(seq);
206
+ }
207
+ function deserialiseSequence(raw) {
208
+ if (!raw)
209
+ return [];
210
+ try {
211
+ const v = JSON.parse(raw);
212
+ if (Array.isArray(v)) {
213
+ return v;
214
+ }
215
+ return [];
216
+ }
217
+ catch {
218
+ return [];
219
+ }
220
+ }
221
+ function rowToSkill(row) {
222
+ return {
223
+ id: row.id,
224
+ appPackage: row.app_package,
225
+ taskSummary: row.task_summary,
226
+ taskEmbedding: row.task_embedding ? bufferToEmbedding(row.task_embedding) : undefined,
227
+ actionSequence: deserialiseSequence(row.action_sequence_json),
228
+ successCount: row.success_count,
229
+ failCount: row.fail_count,
230
+ lastUsedAt: row.last_used_at,
231
+ createdAt: row.created_at,
232
+ };
233
+ }
234
+ //# sourceMappingURL=sqlite-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../../src/agent-runtime/skills/sqlite-store.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,22 @@ export interface PersistedToolCall {
48
48
  startedAt: number;
49
49
  endedAt?: number;
50
50
  }
51
+ /**
52
+ * Resource attachment carried on a persisted assistant turn — typically
53
+ * a `beeos-file://` URI surfaced as a `resource_link` block.
54
+ *
55
+ * Currently produced by plugin commands (`/screenshot`); the AgentRunner
56
+ * path doesn't populate this field today (it doesn't need to — VLM
57
+ * tool calls model attachments via the tool result shape).
58
+ */
59
+ export interface PersistedAttachment {
60
+ /** beeos-file://{fileId} URI (also valid as ACP `resource_link.uri`). */
61
+ uri: string;
62
+ /** Display name shown in chat UI. */
63
+ name?: string;
64
+ /** MIME type, e.g. `image/png`. */
65
+ mimeType?: string;
66
+ }
51
67
  export interface AssistantTurnRecord {
52
68
  /** Stable `messageId` stamped on every chunk during this turn. */
53
69
  messageId: string;
@@ -65,6 +81,29 @@ export interface AssistantTurnRecord {
65
81
  stopReason: StopReason;
66
82
  /** User-facing error text when the turn terminated abnormally. */
67
83
  error?: string;
84
+ /**
85
+ * Resource attachments emitted on this turn (`resource_link` blocks).
86
+ * Populated by plugin commands; AgentRunner turns leave it undefined.
87
+ * Optional field — old JSONL rows lack it, deserialise to undefined.
88
+ */
89
+ attachments?: PersistedAttachment[];
90
+ /**
91
+ * Origin tag — distinguishes agent-loop turns (LLM-produced) from
92
+ * plugin-command turns (deterministic server handlers).
93
+ *
94
+ * Current device-agent IS stateless (`AgentCoreRunOptions` has no
95
+ * history field) so this marker has no runtime effect today. It's a
96
+ * forward-compat hook: future LLM context builders for chat-style
97
+ * agents will want to filter / weight turns by source — plugin-
98
+ * command turns are typically out-of-band (`/help` text, `/screenshot`
99
+ * images) and SHOULD NOT be replayed into prompts unless explicitly
100
+ * opted in. Mirrors LangChain's AIMessage vs ToolMessage and OpenAI
101
+ * Realtime API's `conversation.item.type` distinction.
102
+ *
103
+ * Optional + defaults to "agent" inference — old JSONL rows without
104
+ * this field are fully backward-compatible.
105
+ */
106
+ source?: "agent" | "plugin_command";
68
107
  }
69
108
  /**
70
109
  * Mutable in-flight buffer. Construct once per turn via
@@ -1 +1 @@
1
- {"version":3,"file":"in-flight-turn.js","sourceRoot":"","sources":["../../src/app/in-flight-turn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"in-flight-turn.js","sourceRoot":"","sources":["../../src/app/in-flight-turn.ts"],"names":[],"mappings":"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"}
@@ -389,13 +389,26 @@ function isPersistedRecord(value) {
389
389
  return typeof r.content === "string";
390
390
  }
391
391
  if (r.type === "assistant_turn") {
392
- return (typeof r.text === "string" &&
393
- typeof r.messageId === "string" &&
394
- typeof r.turnId === "string" &&
395
- typeof r.startedAt === "number" &&
396
- typeof r.completedAt === "number" &&
397
- Array.isArray(r.toolCalls) &&
398
- typeof r.stopReason === "string");
392
+ if (typeof r.text !== "string" ||
393
+ typeof r.messageId !== "string" ||
394
+ typeof r.turnId !== "string" ||
395
+ typeof r.startedAt !== "number" ||
396
+ typeof r.completedAt !== "number" ||
397
+ !Array.isArray(r.toolCalls) ||
398
+ typeof r.stopReason !== "string") {
399
+ return false;
400
+ }
401
+ // Optional fields added in 0.7.2: validate shape if present so a
402
+ // malformed row can't silently leak through to replay.
403
+ if (r.attachments !== undefined && !Array.isArray(r.attachments)) {
404
+ return false;
405
+ }
406
+ if (r.source !== undefined &&
407
+ r.source !== "agent" &&
408
+ r.source !== "plugin_command") {
409
+ return false;
410
+ }
411
+ return true;
399
412
  }
400
413
  return false;
401
414
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-store.js","sourceRoot":"","sources":["../../src/app/jsonl-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonl-store.js","sourceRoot":"","sources":["../../src/app/jsonl-store.ts"],"names":[],"mappings":"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"}
@@ -2,31 +2,32 @@
2
2
  * `/screenshot` plugin command handler.
3
3
  *
4
4
  * Adapter layer between the ACP-unaware `ScreenshotService` and the
5
- * session/notifier surface. Responsibilities are intentionally narrow:
5
+ * SessionManager-owned emit + persist pipeline. Responsibilities are
6
+ * intentionally narrow:
6
7
  *
7
8
  * 1. Drive `ScreenshotService.captureAndUpload()` to stage the
8
9
  * current device frame as a `beeos-file://${fileId}` attachment.
9
- * 2. Translate the resulting `ChatAttachment` into an ACP
10
- * `agent_message_chunk` carrying a `resource_link` block.
11
- * 3. Push that update onto the caller's session via the injected
12
- * `SessionUpdateNotifier`.
10
+ * 2. Return that attachment as part of a `PluginCommandResult` so
11
+ * SessionManager can both live-emit it (with messageId) and
12
+ * persist it on the assistant turn.
13
13
  *
14
14
  * Strict separation-of-concerns boundary:
15
+ * - DOES NOT import any session notifier — emit is SessionManager's
16
+ * job. Without that boundary it's easy for emit to skip messageId
17
+ * / _turnId, which then breaks chat-store's chunk routing.
15
18
  * - DOES NOT touch MCP / `Buffer` / upload internals — those live
16
19
  * entirely inside `ScreenshotService` + `UserFileUploader`.
17
20
  * - Errors propagate up to `SessionManager` which renders them as a
18
21
  * `system_message_chunk` notice (no toast logic here).
19
22
  */
20
23
  import type { ScreenshotService } from "../screenshot-service.js";
21
- import type { SessionUpdateNotifier } from "../session-manager.js";
22
- import type { PluginCommand, PluginCommandContext } from "./types.js";
24
+ import type { PluginCommand, PluginCommandContext, PluginCommandResult } from "./types.js";
23
25
  export declare class ScreenshotCommandHandler implements PluginCommand {
24
26
  private readonly service;
25
- private readonly notifier;
26
27
  readonly name = "screenshot";
27
28
  readonly description = "Take a device screenshot and send it to the chat";
28
29
  readonly emoji = "\uD83D\uDCF8";
29
30
  readonly acceptsArgs = false;
30
- constructor(service: ScreenshotService, notifier: SessionUpdateNotifier);
31
- handle(ctx: PluginCommandContext): Promise<void>;
31
+ constructor(service: ScreenshotService);
32
+ handle(_ctx: PluginCommandContext): Promise<PluginCommandResult>;
32
33
  }
@@ -2,16 +2,19 @@
2
2
  * `/screenshot` plugin command handler.
3
3
  *
4
4
  * Adapter layer between the ACP-unaware `ScreenshotService` and the
5
- * session/notifier surface. Responsibilities are intentionally narrow:
5
+ * SessionManager-owned emit + persist pipeline. Responsibilities are
6
+ * intentionally narrow:
6
7
  *
7
8
  * 1. Drive `ScreenshotService.captureAndUpload()` to stage the
8
9
  * current device frame as a `beeos-file://${fileId}` attachment.
9
- * 2. Translate the resulting `ChatAttachment` into an ACP
10
- * `agent_message_chunk` carrying a `resource_link` block.
11
- * 3. Push that update onto the caller's session via the injected
12
- * `SessionUpdateNotifier`.
10
+ * 2. Return that attachment as part of a `PluginCommandResult` so
11
+ * SessionManager can both live-emit it (with messageId) and
12
+ * persist it on the assistant turn.
13
13
  *
14
14
  * Strict separation-of-concerns boundary:
15
+ * - DOES NOT import any session notifier — emit is SessionManager's
16
+ * job. Without that boundary it's easy for emit to skip messageId
17
+ * / _turnId, which then breaks chat-store's chunk routing.
15
18
  * - DOES NOT touch MCP / `Buffer` / upload internals — those live
16
19
  * entirely inside `ScreenshotService` + `UserFileUploader`.
17
20
  * - Errors propagate up to `SessionManager` which renders them as a
@@ -19,26 +22,24 @@
19
22
  */
20
23
  export class ScreenshotCommandHandler {
21
24
  service;
22
- notifier;
23
25
  name = "screenshot";
24
26
  description = "Take a device screenshot and send it to the chat";
25
27
  emoji = "📸";
26
28
  acceptsArgs = false;
27
- constructor(service, notifier) {
29
+ constructor(service) {
28
30
  this.service = service;
29
- this.notifier = notifier;
30
31
  }
31
- async handle(ctx) {
32
+ async handle(_ctx) {
32
33
  const att = await this.service.captureAndUpload();
33
- this.notifier.send(ctx.sessionId, {
34
- sessionUpdate: "agent_message_chunk",
35
- content: {
36
- type: "resource_link",
37
- uri: att.uri,
38
- name: att.fileName,
39
- mimeType: att.mimeType,
40
- },
41
- });
34
+ return {
35
+ attachments: [
36
+ {
37
+ uri: att.uri,
38
+ name: att.fileName,
39
+ mimeType: att.mimeType,
40
+ },
41
+ ],
42
+ };
42
43
  }
43
44
  }
44
45
  //# sourceMappingURL=screenshot-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshot-command.js","sourceRoot":"","sources":["../../../src/app/plugin-commands/screenshot-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,MAAM,OAAO,wBAAwB;IAOhB;IACA;IAPV,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,kDAAkD,CAAC;IACjE,KAAK,GAAG,IAAI,CAAC;IACb,WAAW,GAAG,KAAK,CAAC;IAE7B,YACmB,OAA0B,EAC1B,QAA+B;QAD/B,YAAO,GAAP,OAAO,CAAmB;QAC1B,aAAQ,GAAR,QAAQ,CAAuB;IAC/C,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,GAAyB;QACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YAChC,aAAa,EAAE,qBAAqB;YACpC,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;aACvB;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"screenshot-command.js","sourceRoot":"","sources":["../../../src/app/plugin-commands/screenshot-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,MAAM,OAAO,wBAAwB;IAMN;IALpB,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,kDAAkD,CAAC;IACjE,KAAK,GAAG,IAAI,CAAC;IACb,WAAW,GAAG,KAAK,CAAC;IAE7B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAE3D,KAAK,CAAC,MAAM,CAAC,IAA0B;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO;YACL,WAAW,EAAE;gBACX;oBACE,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB;aACF;SACF,CAAC;IACJ,CAAC;CACF"}