@beeos-ai/device-agent 0.12.6 → 0.13.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 (140) hide show
  1. package/dist/agent-runtime/adapters/base.d.ts +2 -0
  2. package/dist/agent-runtime/adapters/base.js +1 -0
  3. package/dist/agent-runtime/adapters/base.js.map +1 -1
  4. package/dist/agent-runtime/adapters/openai.js +32 -16
  5. package/dist/agent-runtime/adapters/openai.js.map +1 -1
  6. package/dist/agent-runtime/advanced/app-card.d.ts +23 -0
  7. package/dist/agent-runtime/advanced/app-card.js +99 -0
  8. package/dist/agent-runtime/advanced/app-card.js.map +1 -0
  9. package/dist/agent-runtime/advanced/knowledge.d.ts +15 -0
  10. package/dist/agent-runtime/advanced/knowledge.js +85 -0
  11. package/dist/agent-runtime/advanced/knowledge.js.map +1 -0
  12. package/dist/agent-runtime/advanced/subgoal-verifier.d.ts +37 -0
  13. package/dist/agent-runtime/advanced/subgoal-verifier.js +190 -0
  14. package/dist/agent-runtime/advanced/subgoal-verifier.js.map +1 -0
  15. package/dist/agent-runtime/advanced/task-state.d.ts +20 -0
  16. package/dist/agent-runtime/advanced/task-state.js +60 -0
  17. package/dist/agent-runtime/advanced/task-state.js.map +1 -0
  18. package/dist/agent-runtime/agent-runner.d.ts +16 -27
  19. package/dist/agent-runtime/agent-runner.js +19 -132
  20. package/dist/agent-runtime/agent-runner.js.map +1 -1
  21. package/dist/agent-runtime/core.d.ts +8 -0
  22. package/dist/agent-runtime/core.js +1 -0
  23. package/dist/agent-runtime/core.js.map +1 -1
  24. package/dist/agent-runtime/execution-mode.d.ts +28 -0
  25. package/dist/agent-runtime/execution-mode.js +51 -0
  26. package/dist/agent-runtime/execution-mode.js.map +1 -0
  27. package/dist/agent-runtime/factory.d.ts +6 -4
  28. package/dist/agent-runtime/factory.js +4 -4
  29. package/dist/agent-runtime/factory.js.map +1 -1
  30. package/dist/agent-runtime/index.d.ts +9 -2
  31. package/dist/agent-runtime/index.js +7 -0
  32. package/dist/agent-runtime/index.js.map +1 -1
  33. package/dist/agent-runtime/models/base.d.ts +2 -0
  34. package/dist/agent-runtime/models/client.d.ts +1 -0
  35. package/dist/agent-runtime/models/client.js +83 -1
  36. package/dist/agent-runtime/models/client.js.map +1 -1
  37. package/dist/agent-runtime/models/runtime-registry.d.ts +28 -0
  38. package/dist/agent-runtime/models/runtime-registry.js +59 -0
  39. package/dist/agent-runtime/models/runtime-registry.js.map +1 -0
  40. package/dist/agent-runtime/models/vlm/autoglm.js +14 -9
  41. package/dist/agent-runtime/models/vlm/autoglm.js.map +1 -1
  42. package/dist/agent-runtime/models/vlm/base.d.ts +8 -1
  43. package/dist/agent-runtime/models/vlm/base.js +30 -10
  44. package/dist/agent-runtime/models/vlm/base.js.map +1 -1
  45. package/dist/agent-runtime/models/vlm/general.d.ts +7 -1
  46. package/dist/agent-runtime/models/vlm/general.js +43 -9
  47. package/dist/agent-runtime/models/vlm/general.js.map +1 -1
  48. package/dist/agent-runtime/models/vlm/guiowl.js +4 -13
  49. package/dist/agent-runtime/models/vlm/guiowl.js.map +1 -1
  50. package/dist/agent-runtime/models/vlm/maiui.js +4 -6
  51. package/dist/agent-runtime/models/vlm/maiui.js.map +1 -1
  52. package/dist/agent-runtime/models/vlm/qwenvl.js +4 -6
  53. package/dist/agent-runtime/models/vlm/qwenvl.js.map +1 -1
  54. package/dist/agent-runtime/models/vlm/shared/tool-call.d.ts +1 -1
  55. package/dist/agent-runtime/models/vlm/shared/tool-call.js +66 -15
  56. package/dist/agent-runtime/models/vlm/shared/tool-call.js.map +1 -1
  57. package/dist/agent-runtime/modes/hybrid/index.d.ts +29 -13
  58. package/dist/agent-runtime/modes/hybrid/index.js +74 -27
  59. package/dist/agent-runtime/modes/hybrid/index.js.map +1 -1
  60. package/dist/agent-runtime/modes/hybrid/planner/base.d.ts +4 -0
  61. package/dist/agent-runtime/modes/hybrid/planner/base.js.map +1 -1
  62. package/dist/agent-runtime/modes/hybrid/planner/llm-planner.js +2 -0
  63. package/dist/agent-runtime/modes/hybrid/planner/llm-planner.js.map +1 -1
  64. package/dist/agent-runtime/modes/hybrid/planner/noop-planner.d.ts +1 -1
  65. package/dist/agent-runtime/modes/hybrid/planner/noop-planner.js +1 -1
  66. package/dist/agent-runtime/modes/hybrid/planner/prompts.d.ts +2 -0
  67. package/dist/agent-runtime/modes/hybrid/planner/prompts.js +8 -0
  68. package/dist/agent-runtime/modes/hybrid/planner/prompts.js.map +1 -1
  69. package/dist/agent-runtime/modes/orchestrator/index.d.ts +6 -0
  70. package/dist/agent-runtime/modes/orchestrator/index.js +4 -0
  71. package/dist/agent-runtime/modes/orchestrator/index.js.map +1 -1
  72. package/dist/agent-runtime/plan-executor.d.ts +8 -2
  73. package/dist/agent-runtime/plan-executor.js +109 -14
  74. package/dist/agent-runtime/plan-executor.js.map +1 -1
  75. package/dist/agent-runtime/reflectors/policy.d.ts +2 -5
  76. package/dist/agent-runtime/reflectors/policy.js +6 -14
  77. package/dist/agent-runtime/reflectors/policy.js.map +1 -1
  78. package/dist/agent-runtime/reflectors/trajectory-reflector.d.ts +3 -4
  79. package/dist/agent-runtime/reflectors/trajectory-reflector.js +4 -4
  80. package/dist/agent-runtime/reflectors/trajectory-reflector.js.map +1 -1
  81. package/dist/agent-runtime/skills/replay.js +1 -0
  82. package/dist/agent-runtime/skills/replay.js.map +1 -1
  83. package/dist/agent-runtime/vlm.d.ts +2 -3
  84. package/dist/agent-runtime/vlm.js +2 -3
  85. package/dist/agent-runtime/vlm.js.map +1 -1
  86. package/dist/api.js +1 -0
  87. package/dist/api.js.map +1 -1
  88. package/dist/app/agent-host.js +3 -3
  89. package/dist/app/agent-host.js.map +1 -1
  90. package/dist/app/multi-device-host.d.ts +2 -2
  91. package/dist/app/multi-device-host.js +1 -1
  92. package/dist/app/session-manager.d.ts +20 -3
  93. package/dist/app/session-manager.js +33 -4
  94. package/dist/app/session-manager.js.map +1 -1
  95. package/dist/bootstrap.d.ts +2 -8
  96. package/dist/bootstrap.js +75 -97
  97. package/dist/bootstrap.js.map +1 -1
  98. package/dist/config/loader.d.ts +2 -9
  99. package/dist/config/loader.js +30 -31
  100. package/dist/config/loader.js.map +1 -1
  101. package/dist/config/schema.d.ts +3 -27
  102. package/dist/config/schema.js +6 -41
  103. package/dist/config/schema.js.map +1 -1
  104. package/dist/device/apps.js +51 -1
  105. package/dist/device/apps.js.map +1 -1
  106. package/dist/fleet/adapters/process/in-process-manager.d.ts +1 -1
  107. package/dist/fleet/adapters/process/node-process-manager.d.ts +7 -0
  108. package/dist/fleet/adapters/process/node-process-manager.js +29 -8
  109. package/dist/fleet/adapters/process/node-process-manager.js.map +1 -1
  110. package/dist/inbound/acp/handlers/session.d.ts +4 -1
  111. package/dist/inbound/acp/handlers/session.js +20 -5
  112. package/dist/inbound/acp/handlers/session.js.map +1 -1
  113. package/dist/inbound/cli/benchmark-command.d.ts +17 -0
  114. package/dist/inbound/cli/benchmark-command.js +158 -0
  115. package/dist/inbound/cli/benchmark-command.js.map +1 -0
  116. package/dist/inbound/cli/fleet-command.d.ts +12 -1
  117. package/dist/inbound/cli/fleet-command.js +12 -8
  118. package/dist/inbound/cli/fleet-command.js.map +1 -1
  119. package/dist/inbound/cli/main.d.ts +2 -6
  120. package/dist/inbound/cli/main.js +24 -28
  121. package/dist/inbound/cli/main.js.map +1 -1
  122. package/dist/inbound/cli/run-artifacts.d.ts +61 -0
  123. package/dist/inbound/cli/run-artifacts.js +247 -0
  124. package/dist/inbound/cli/run-artifacts.js.map +1 -0
  125. package/dist/inbound/cli/run-command.d.ts +20 -19
  126. package/dist/inbound/cli/run-command.js +150 -155
  127. package/dist/inbound/cli/run-command.js.map +1 -1
  128. package/dist/index.d.ts +9 -3
  129. package/dist/index.js +5 -2
  130. package/dist/index.js.map +1 -1
  131. package/dist/plugins/http-debug/early-health.d.ts +11 -0
  132. package/dist/plugins/http-debug/early-health.js +51 -0
  133. package/dist/plugins/http-debug/early-health.js.map +1 -0
  134. package/dist/plugins/http-debug/index.js +2 -0
  135. package/dist/plugins/http-debug/index.js.map +1 -1
  136. package/dist/plugins/message-bus/inbound.js +3 -1
  137. package/dist/plugins/message-bus/inbound.js.map +1 -1
  138. package/dist/ports/agent-core.d.ts +13 -13
  139. package/dist/ports/agent-host.d.ts +4 -1
  140. package/package.json +4 -4
@@ -111,6 +111,8 @@ export interface Prediction {
111
111
  usage: ModelUsage;
112
112
  /** Raw provider response (model output / tool-call payload). For debug. */
113
113
  rawResponse: string;
114
+ /** Exact request messages sent to the model, retained only for optional tracing. */
115
+ modelInput?: unknown;
114
116
  }
115
117
  /**
116
118
  * Optional hooks an adapter may call during a long inference (streaming
@@ -24,6 +24,7 @@ export function makePrediction(action, init = {}) {
24
24
  confidence: init.confidence ?? action.confidence ?? 0.5,
25
25
  usage: init.usage ?? { inputTokens: 0, outputTokens: 0 },
26
26
  rawResponse: init.rawResponse ?? "",
27
+ ...(init.modelInput !== undefined ? { modelInput: init.modelInput } : {}),
27
28
  };
28
29
  }
29
30
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAqKH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAA4C,EAAE;IAE9C,OAAO;QACL,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG;QACvD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;QACxD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAuKH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,OAA4C,EAAE;IAE9C,OAAO;QACL,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG;QACvD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;QACxD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC;AACJ,CAAC"}
@@ -16,6 +16,7 @@ import { makeAction } from "@beeos-ai/device-common";
16
16
  import { OpenAIClient } from "../models/client.js";
17
17
  import { compressForVlm } from "../models/image/compress.js";
18
18
  import { DataUrlTransport } from "../models/image/transport.js";
19
+ import { invalidModelOutput } from "../models/vlm/base.js";
19
20
  import { getFriendlyAppName } from "../../device/apps.js";
20
21
  import { getLogger } from "../../logger/index.js";
21
22
  import { makeScreenInfo } from "../../types.js";
@@ -66,11 +67,15 @@ export class OpenAIAdapter {
66
67
  if (history.length === 0 || history.length < this.lastStepIdx) {
67
68
  // New run started — clear adapter-internal context.
68
69
  this.context = [];
70
+ this.client.reset?.();
69
71
  }
70
72
  this.lastStepIdx = history.length;
71
73
  const isFirst = history.length === 0;
72
74
  const screenInfo = await observationToScreenInfo(observation, this.imageTransport);
73
75
  this.context = this.client.buildMessages(observation.task, screenInfo, this.context, isFirst, this.lang);
76
+ // Preserve the exact request before updateContext mutates the rolling
77
+ // conversation. Artifact writers externalize inline images to step files.
78
+ const modelInput = structuredClone(this.context);
74
79
  if (process.env.DEBUG_MESSAGES) {
75
80
  const sanitized = this.context.map((m) => ({
76
81
  role: m.role,
@@ -116,15 +121,16 @@ export class OpenAIAdapter {
116
121
  try {
117
122
  parsed = this.client.parseResponse(response.rawContent);
118
123
  }
119
- catch {
120
- parsed = {
121
- actionType: "wait",
122
- params: { duration_seconds: 2 },
123
- thinking: response.thinking,
124
- coordSystem: "0-1000",
125
- shouldFinish: false,
126
- finishMessage: null,
127
- };
124
+ catch (e) {
125
+ const error = e;
126
+ getLogger().warn({
127
+ component: "vlm-predict",
128
+ stage: "parse",
129
+ code: error.code,
130
+ message: error.message,
131
+ durationMs,
132
+ }, "vlm.parse.failed");
133
+ throw e;
128
134
  }
129
135
  this.context = this.client.updateContext(this.context, response, parsed);
130
136
  const action = parsedToAction(parsed);
@@ -133,6 +139,7 @@ export class OpenAIAdapter {
133
139
  confidence: 0.5,
134
140
  usage: { inputTokens: 0, outputTokens: 0, durationMs },
135
141
  rawResponse: response.rawContent,
142
+ modelInput,
136
143
  });
137
144
  }
138
145
  async close() {
@@ -203,6 +210,16 @@ export function parsedToAction(parsed) {
203
210
  case "press_home":
204
211
  case "home":
205
212
  return makeAction("home", { payload: { ...meta }, rationale });
213
+ case "press_key":
214
+ case "key":
215
+ return makeAction("key", {
216
+ payload: {
217
+ ...meta,
218
+ keycode: stringParam(parsed.params, "key", undefined) ??
219
+ stringParam(parsed.params, "keycode", ""),
220
+ },
221
+ rationale,
222
+ });
206
223
  case "wait":
207
224
  return makeAction("wait", {
208
225
  payload: { ...meta, durationSeconds: numParam(parsed.params, "duration_seconds", 2) },
@@ -237,16 +254,15 @@ export function parsedToAction(parsed) {
237
254
  x: numParam(parsed.params, "x", 500),
238
255
  y: numParam(parsed.params, "y", 500),
239
256
  },
240
- payload: { ...meta, direction: stringParam(parsed.params, "direction", "down") },
257
+ payload: {
258
+ ...meta,
259
+ direction: stringParam(parsed.params, "direction", "down"),
260
+ amount: numParam(parsed.params, "amount", 1),
261
+ },
241
262
  rationale,
242
263
  });
243
264
  default:
244
- // Unknown verb — fall back to a wait so the loop keeps making progress
245
- // instead of throwing on adapter quirks.
246
- return makeAction("wait", {
247
- payload: { ...meta, durationSeconds: 1 },
248
- rationale: `unknown legacy actionType=${parsed.actionType}`,
249
- });
265
+ return invalidModelOutput("legacy-action", `unsupported action type: ${parsed.actionType}`);
250
266
  }
251
267
  }
252
268
  function numParam(p, key, fallback) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/agent-runtime/adapters/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface AppCard {
2
+ id: string;
3
+ displayName: string;
4
+ packageName: string;
5
+ aliases: readonly string[];
6
+ capabilities: readonly string[];
7
+ anchors: readonly string[];
8
+ blockers: readonly string[];
9
+ successSignals: readonly string[];
10
+ recovery: readonly string[];
11
+ safety: readonly string[];
12
+ }
13
+ export interface AppCardMatch {
14
+ card: AppCard;
15
+ matchedAlias: string;
16
+ }
17
+ export declare function matchAppCard(task: string): AppCardMatch | undefined;
18
+ export declare function inferTargetApp(task: string): {
19
+ displayName: string;
20
+ packageName: string;
21
+ } | undefined;
22
+ export declare function renderAppCard(card: AppCard): string;
23
+ export declare function listAppCards(): readonly AppCard[];
@@ -0,0 +1,99 @@
1
+ import { APP_PACKAGES } from "../../device/apps.js";
2
+ const CARDS = [
3
+ {
4
+ id: "douyin",
5
+ displayName: "抖音",
6
+ packageName: "com.ss.android.ugc.aweme",
7
+ aliases: ["抖音", "Douyin"],
8
+ capabilities: ["搜索用户、视频和商品", "浏览短视频", "发布图片或视频"],
9
+ anchors: ["首页顶部搜索入口", "搜索结果页的综合/用户/视频分类", "底部中央发布按钮"],
10
+ blockers: ["青少年模式提示", "隐私或通知弹窗", "登录要求", "网络加载骨架屏"],
11
+ successSignals: ["搜索框显示目标关键词且结果列表已加载", "目标页面标题或内容与任务一致"],
12
+ recovery: ["确认当前前台应用确实是抖音", "关闭遮挡弹窗后重新观察", "搜索无结果时清空输入再提交一次"],
13
+ safety: ["发布、关注、点赞、评论、支付前必须确认任务明确要求该动作"],
14
+ },
15
+ {
16
+ id: "xiaohongshu",
17
+ displayName: "小红书",
18
+ packageName: "com.xingin.xhs",
19
+ aliases: ["小红书", "XiaoHongShu", "RED"],
20
+ capabilities: ["搜索笔记、用户和商品", "浏览笔记", "发布笔记或视频"],
21
+ anchors: ["首页顶部搜索框", "搜索结果页分类标签", "底部中央发布按钮"],
22
+ blockers: ["登录弹窗", "兴趣选择页", "通知或权限弹窗", "内容加载失败"],
23
+ successSignals: ["搜索框保留目标关键词并出现相关结果", "目标笔记或用户页已打开"],
24
+ recovery: ["返回发现页后重新进入搜索", "关闭弹窗并等待页面稳定", "输入后显式触发键盘搜索或页面搜索按钮"],
25
+ safety: ["发布、点赞、收藏、关注、私信前确认用户意图"],
26
+ },
27
+ {
28
+ id: "wechat",
29
+ displayName: "微信",
30
+ packageName: "com.tencent.mm",
31
+ aliases: ["微信", "WeChat"],
32
+ capabilities: ["聊天和联系人搜索", "朋友圈", "扫一扫和小程序"],
33
+ anchors: ["底部微信/通讯录/发现/我标签", "顶部搜索入口", "发现页朋友圈入口"],
34
+ blockers: ["登录或安全验证", "通讯录权限提示", "小程序加载页", "键盘遮挡"],
35
+ successSignals: ["目标聊天、联系人、朋友圈或小程序页面可见", "要求发送的内容出现在会话中"],
36
+ recovery: ["使用返回键回到微信主标签页", "从顶部搜索重新定位目标", "等待小程序或网页加载完成"],
37
+ safety: ["发送消息、转账、删除、发布朋友圈前确认任务明确要求"],
38
+ },
39
+ {
40
+ id: "settings",
41
+ displayName: "设置",
42
+ packageName: "com.android.settings",
43
+ aliases: ["设置", "系统设置", "手机设置", "Settings"],
44
+ capabilities: ["查看和修改系统配置", "应用、网络、显示、声音和权限管理"],
45
+ anchors: ["设置首页搜索框", "设置分类列表", "页面标题和返回按钮"],
46
+ blockers: ["OEM 页面名称差异", "二次确认对话框", "管理员或密码验证"],
47
+ successSignals: ["目标设置页标题可见", "目标开关或选项呈现期望状态"],
48
+ recovery: ["优先使用设置内搜索", "回到设置首页再从分类进入", "OEM 名称不一致时按语义匹配"],
49
+ safety: ["恢复出厂、清除数据、卸载、重置网络和安全凭据属于高风险操作"],
50
+ },
51
+ {
52
+ id: "browser",
53
+ displayName: "浏览器",
54
+ packageName: "com.android.chrome",
55
+ aliases: ["浏览器", "Chrome", "谷歌浏览器"],
56
+ capabilities: ["网页搜索和浏览", "打开链接", "下载文件"],
57
+ anchors: ["地址栏或搜索框", "标签页按钮", "网页加载进度和页面标题"],
58
+ blockers: ["首次使用引导", "默认浏览器提示", "Cookie 或权限弹窗", "网络错误页"],
59
+ successSignals: ["地址栏或页面内容与目标查询一致", "目标网页标题和关键内容已加载"],
60
+ recovery: ["聚焦地址栏后全选旧内容", "网络失败时等待并刷新一次", "关闭遮挡网页内容的弹窗"],
61
+ safety: ["下载、登录、提交表单和支付前确认任务范围"],
62
+ },
63
+ ];
64
+ export function matchAppCard(task) {
65
+ const normalized = task.trim().toLowerCase();
66
+ if (!normalized)
67
+ return undefined;
68
+ for (const card of CARDS) {
69
+ const aliases = [...card.aliases].sort((a, b) => b.length - a.length);
70
+ const alias = aliases.find((candidate) => normalized.includes(candidate.toLowerCase()));
71
+ if (alias)
72
+ return { card, matchedAlias: alias };
73
+ }
74
+ return undefined;
75
+ }
76
+ export function inferTargetApp(task) {
77
+ const card = matchAppCard(task)?.card;
78
+ if (card)
79
+ return { displayName: card.displayName, packageName: card.packageName };
80
+ const names = Object.keys(APP_PACKAGES).sort((a, b) => b.length - a.length);
81
+ const normalized = task.toLowerCase();
82
+ const name = names.find((candidate) => normalized.includes(candidate.toLowerCase()));
83
+ return name ? { displayName: name, packageName: APP_PACKAGES[name] } : undefined;
84
+ }
85
+ export function renderAppCard(card) {
86
+ return [
87
+ `App Card: ${card.displayName} (${card.packageName})`,
88
+ `Capabilities: ${card.capabilities.join("; ")}`,
89
+ `Stable anchors: ${card.anchors.join("; ")}`,
90
+ `Common blockers: ${card.blockers.join("; ")}`,
91
+ `Success signals: ${card.successSignals.join("; ")}`,
92
+ `Recovery playbook: ${card.recovery.join("; ")}`,
93
+ `Safety constraints: ${card.safety.join("; ")}`,
94
+ ].join("\n");
95
+ }
96
+ export function listAppCards() {
97
+ return CARDS;
98
+ }
99
+ //# sourceMappingURL=app-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-card.js","sourceRoot":"","sources":["../../../src/agent-runtime/advanced/app-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type SkillCacheStore, type SkillMatchOutcome } from "../skills/index.js";
2
+ import { type AppCard } from "./app-card.js";
3
+ export interface AdvancedKnowledge {
4
+ app?: {
5
+ displayName: string;
6
+ packageName: string;
7
+ };
8
+ appCard?: AppCard;
9
+ skillMatch?: SkillMatchOutcome;
10
+ prompt: string;
11
+ }
12
+ export declare function buildAdvancedKnowledge(args: {
13
+ task: string;
14
+ skillStore?: SkillCacheStore;
15
+ }): Promise<AdvancedKnowledge>;
@@ -0,0 +1,85 @@
1
+ import { matchSkill } from "../skills/index.js";
2
+ import { inferTargetApp, matchAppCard, renderAppCard } from "./app-card.js";
3
+ export async function buildAdvancedKnowledge(args) {
4
+ const app = inferTargetApp(args.task);
5
+ const appCard = matchAppCard(args.task)?.card;
6
+ let skillMatch;
7
+ if (app && args.skillStore) {
8
+ try {
9
+ skillMatch = await matchSkill({
10
+ store: args.skillStore,
11
+ appPackage: app.packageName,
12
+ taskSummary: args.task,
13
+ options: { cosineThreshold: 0.72, successRateThreshold: 0.7, topK: 3 },
14
+ });
15
+ }
16
+ catch {
17
+ // Knowledge retrieval is advisory. Storage damage must not block a task.
18
+ }
19
+ }
20
+ const sections = [
21
+ "ADVANCED EXECUTION KNOWLEDGE",
22
+ "Use this as advisory process knowledge. Re-ground every concrete action against the live screen.",
23
+ ];
24
+ if (appCard)
25
+ sections.push(renderAppCard(appCard));
26
+ else if (app)
27
+ sections.push(`Target app: ${app.displayName} (${app.packageName})`);
28
+ const trusted = skillMatch?.best;
29
+ if (trusted && trusted.score >= 0.55) {
30
+ const skill = trusted.skill;
31
+ const total = skill.successCount + skill.failCount;
32
+ const successRate = total === 0 ? 1 : skill.successCount / total;
33
+ sections.push([
34
+ `Related verified trajectory (similarity ${trusted.score.toFixed(2)}, success rate ${successRate.toFixed(2)}):`,
35
+ renderActionIntent(skill.actionSequence),
36
+ "Do not reuse its coordinates. Treat the sequence only as a navigation hint and verify each transition.",
37
+ ].join("\n"));
38
+ }
39
+ sections.push([
40
+ "Advanced policy:",
41
+ "- Plan in user-visible subgoals with an explicit expected outcome for each subgoal.",
42
+ "- Observe after every action; never infer success from dispatch alone.",
43
+ "- Before repeating an action, explain what changed and why a retry is justified.",
44
+ "- Prefer stable text/semantic anchors over coordinates.",
45
+ "- On wrong app, blocked dialog, stale screen, no-op, or loading state, use the recovery playbook then replan.",
46
+ "- Declare completion only when the final user-visible success signal is present.",
47
+ ].join("\n"));
48
+ return { app, appCard, skillMatch, prompt: sections.join("\n\n") };
49
+ }
50
+ function renderActionIntent(actions) {
51
+ return actions
52
+ .slice(0, 16)
53
+ .map((action, index) => `${index + 1}. ${actionIntent(action)}`)
54
+ .join("\n");
55
+ }
56
+ function actionIntent(action) {
57
+ const payload = action.payload ?? {};
58
+ switch (action.type) {
59
+ case "launch_app":
60
+ return `open app ${stringValue(payload.packageOrName) || stringValue(payload.package) || "target"}`;
61
+ case "type":
62
+ return `type ${quote(stringValue(payload.text))}`;
63
+ case "tap":
64
+ case "click":
65
+ return "activate the currently grounded target";
66
+ case "swipe":
67
+ case "scroll":
68
+ return `navigate by ${action.type}`;
69
+ case "back":
70
+ return "go back";
71
+ case "home":
72
+ return "return home";
73
+ case "wait":
74
+ return "wait for UI stabilization";
75
+ default:
76
+ return action.type;
77
+ }
78
+ }
79
+ function stringValue(value) {
80
+ return typeof value === "string" ? value : "";
81
+ }
82
+ function quote(value) {
83
+ return value ? JSON.stringify(value.slice(0, 80)) : "text";
84
+ }
85
+ //# sourceMappingURL=knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/agent-runtime/advanced/knowledge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import OpenAI from "openai";
2
+ import type { Observation } from "@beeos-ai/device-common";
3
+ import type { ModelUsage, StepHistory } from "../adapters/base.js";
4
+ import type { Plan, PlanStep } from "../modes/hybrid/planner/base.js";
5
+ export type SubgoalVerdict = "achieved" | "not_achieved" | "task_complete";
6
+ export interface SubgoalVerification {
7
+ verdict: SubgoalVerdict;
8
+ reason: string;
9
+ guidance?: string;
10
+ usage: ModelUsage;
11
+ }
12
+ export interface SubgoalVerificationContext {
13
+ goal: string;
14
+ plan: Plan;
15
+ step: PlanStep;
16
+ observation?: Observation;
17
+ recentHistory: StepHistory[];
18
+ executorMessage: string;
19
+ advancedKnowledge?: string;
20
+ }
21
+ export interface ISubgoalVerifier {
22
+ verify(ctx: SubgoalVerificationContext, signal?: AbortSignal): Promise<SubgoalVerification>;
23
+ close?(): Promise<void>;
24
+ }
25
+ export interface LLMSubgoalVerifierOptions {
26
+ baseUrl?: string;
27
+ apiKey?: string;
28
+ modelName?: string;
29
+ timeoutMs?: number;
30
+ client?: OpenAI;
31
+ }
32
+ export declare class LLMSubgoalVerifier implements ISubgoalVerifier {
33
+ private readonly client;
34
+ private readonly modelName;
35
+ constructor(opts?: LLMSubgoalVerifierOptions);
36
+ verify(ctx: SubgoalVerificationContext, signal?: AbortSignal): Promise<SubgoalVerification>;
37
+ }
@@ -0,0 +1,190 @@
1
+ import OpenAI from "openai";
2
+ import { normalizeOpenAIBaseUrl } from "../models/openai-base-url.js";
3
+ import { inferTargetApp } from "./app-card.js";
4
+ export class LLMSubgoalVerifier {
5
+ client;
6
+ modelName;
7
+ constructor(opts = {}) {
8
+ this.modelName = opts.modelName ?? process.env.ADVANCED_VERIFIER_MODEL ?? "glm-4-flash";
9
+ this.client = opts.client ?? new OpenAI({
10
+ baseURL: normalizeOpenAIBaseUrl(opts.baseUrl ?? process.env.ADVANCED_VERIFIER_BASE_URL ?? process.env.PLANNER_BASE_URL ?? "https://api.openai.com/v1"),
11
+ apiKey: opts.apiKey ??
12
+ process.env.ADVANCED_VERIFIER_API_KEY ??
13
+ process.env.PLANNER_API_KEY ??
14
+ process.env.GUI_AGENT_API_KEY ??
15
+ "EMPTY",
16
+ timeout: opts.timeoutMs ?? 30_000,
17
+ maxRetries: 1,
18
+ });
19
+ }
20
+ async verify(ctx, signal) {
21
+ const startedAt = Date.now();
22
+ const deterministic = deterministicPostcondition(ctx);
23
+ if (deterministic) {
24
+ return {
25
+ ...deterministic,
26
+ usage: { inputTokens: 0, outputTokens: 0, durationMs: Date.now() - startedAt },
27
+ };
28
+ }
29
+ try {
30
+ const response = await this.client.chat.completions.create({
31
+ model: this.modelName,
32
+ temperature: 0,
33
+ max_tokens: 220,
34
+ response_format: { type: "json_object" },
35
+ messages: [
36
+ { role: "system", content: SYSTEM_PROMPT },
37
+ { role: "user", content: renderVerificationPrompt(ctx) },
38
+ ],
39
+ }, { signal });
40
+ const raw = response.choices[0]?.message?.content ?? "";
41
+ const parsed = parseVerification(raw);
42
+ return {
43
+ ...parsed,
44
+ usage: {
45
+ inputTokens: response.usage?.prompt_tokens ?? 0,
46
+ outputTokens: response.usage?.completion_tokens ?? 0,
47
+ durationMs: Date.now() - startedAt,
48
+ },
49
+ };
50
+ }
51
+ catch (error) {
52
+ // Fail open: Advanced supervision improves reliability but must not make
53
+ // a healthy actor unavailable when the secondary model has an outage.
54
+ return {
55
+ verdict: "achieved",
56
+ reason: `verifier unavailable; accepting actor result: ${errorMessage(error)}`,
57
+ usage: { inputTokens: 0, outputTokens: 0, durationMs: Date.now() - startedAt },
58
+ };
59
+ }
60
+ }
61
+ }
62
+ const SYSTEM_PROMPT = `You supervise a mobile GUI executor. Decide whether the
63
+ CURRENT SUBGOAL is visibly achieved from the latest UI evidence. The executor's
64
+ own success claim is not proof. Be conservative but practical.
65
+
66
+ Return strict JSON:
67
+ {"verdict":"achieved|not_achieved|task_complete","reason":"<=180 chars","guidance":"optional concrete recovery"}
68
+
69
+ Rules:
70
+ - achieved: the expected outcome is supported by current app/UI evidence.
71
+ - not_achieved: wrong app/page, blocking dialog, stale/no-op state, missing
72
+ expected result, or contradictory evidence. Give one concrete recovery hint.
73
+ - task_complete: the root user goal, not merely this subgoal, is visibly done.
74
+ - For the final plan step, check every explicit terminal condition in the root
75
+ goal (for example returning to the home screen), not only the executor text.
76
+ - Do not reject solely because evidence is sparse after a harmless navigation
77
+ action. Do reject irreversible actions that lack a visible success signal.`;
78
+ function renderVerificationPrompt(ctx) {
79
+ const currentApp = typeof ctx.observation?.extra?.currentApp === "string"
80
+ ? ctx.observation.extra.currentApp
81
+ : "unknown";
82
+ const recent = ctx.recentHistory.slice(-6).map((entry) => ({
83
+ step: entry.stepIdx,
84
+ action: entry.action?.type ?? null,
85
+ outcome: entry.actionResult ?? null,
86
+ screen: truncate(entry.observationSummary, 220),
87
+ error: entry.actErrorMessage ?? null,
88
+ }));
89
+ return JSON.stringify({
90
+ rootGoal: ctx.goal,
91
+ currentSubgoal: ctx.step.description,
92
+ expectedOutcome: ctx.step.expectedOutcome ?? "unspecified",
93
+ currentApp,
94
+ uiDump: truncate(ctx.observation?.uiDump ?? "", 5000),
95
+ executorMessage: truncate(ctx.executorMessage, 500),
96
+ recentSteps: recent,
97
+ appKnowledge: truncate(ctx.advancedKnowledge ?? "", 2400),
98
+ });
99
+ }
100
+ function parseVerification(raw) {
101
+ try {
102
+ const parsed = JSON.parse(raw);
103
+ const verdict = parsed.verdict;
104
+ if (verdict !== "achieved" && verdict !== "not_achieved" && verdict !== "task_complete") {
105
+ throw new Error("invalid verdict");
106
+ }
107
+ return {
108
+ verdict,
109
+ reason: truncate(typeof parsed.reason === "string" ? parsed.reason : verdict, 180),
110
+ ...(typeof parsed.guidance === "string" && parsed.guidance.trim()
111
+ ? { guidance: truncate(parsed.guidance, 240) }
112
+ : {}),
113
+ };
114
+ }
115
+ catch {
116
+ return { verdict: "achieved", reason: "verifier returned malformed output; accepting actor result" };
117
+ }
118
+ }
119
+ /**
120
+ * Reject post-conditions that can be proved false without asking a model.
121
+ * This prevents a persuasive executor summary from overriding authoritative
122
+ * runtime state. Keep this deliberately narrow: uncertain states still go to
123
+ * the semantic verifier.
124
+ */
125
+ function deterministicPostcondition(ctx) {
126
+ const currentApp = typeof ctx.observation?.extra?.currentApp === "string"
127
+ ? ctx.observation.extra.currentApp.trim()
128
+ : "";
129
+ if (!currentApp)
130
+ return undefined;
131
+ const lastStep = ctx.plan.steps.at(-1);
132
+ const isFinalStep = lastStep?.idx === ctx.step.idx;
133
+ const stepRequirement = `${ctx.step.description} ${ctx.step.expectedOutcome ?? ""}`;
134
+ const rootTerminalRequirement = isFinalStep ? ctx.goal : "";
135
+ const requiresHome = asksForHomeScreen(`${stepRequirement} ${rootTerminalRequirement}`);
136
+ if (requiresHome) {
137
+ if (!isHomeApp(currentApp)) {
138
+ return {
139
+ verdict: "not_achieved",
140
+ reason: `terminal state requires the home screen, but current app is ${currentApp}`,
141
+ guidance: "Press Home, then verify that the launcher is foreground before finishing.",
142
+ };
143
+ }
144
+ return {
145
+ verdict: isFinalStep ? "task_complete" : "achieved",
146
+ reason: `launcher is foreground (${currentApp})`,
147
+ };
148
+ }
149
+ const expectedApp = inferTargetApp(stepRequirement);
150
+ if (expectedApp) {
151
+ if (!isExpectedApp(currentApp, expectedApp)) {
152
+ return {
153
+ verdict: "not_achieved",
154
+ reason: `subgoal expects ${expectedApp.displayName}, but current app is ${currentApp}`,
155
+ guidance: `Open ${expectedApp.displayName} and verify it is foreground before finishing.`,
156
+ };
157
+ }
158
+ if (isAppLaunchOnly(stepRequirement)) {
159
+ return {
160
+ verdict: "achieved",
161
+ reason: `${expectedApp.displayName} is foreground (${currentApp})`,
162
+ };
163
+ }
164
+ }
165
+ return undefined;
166
+ }
167
+ function isAppLaunchOnly(text) {
168
+ const opensApp = /(?:打开|启动|进入)(?:\S{0,12})(?:应用|app)?|\b(?:open|launch|start)\b/i.test(text);
169
+ const hasAdditionalWork = /搜索|输入|读取|说明|点击|返回|发布|发送|关注|点赞|评论|search|type|read|describe|tap|click|return|post|send|follow|like|comment/i.test(text);
170
+ return opensApp && !hasAdditionalWork;
171
+ }
172
+ function asksForHomeScreen(text) {
173
+ return /(?:返回|回到|进入|显示)(?:手机)?(?:桌面|主屏幕)|return\s+to\s+(?:the\s+)?home(?:\s+screen)?|go\s+home/i.test(text);
174
+ }
175
+ function isHomeApp(currentApp) {
176
+ return /(?:^|[./])(?:launcher\d*|home)(?:$|[./])|system\s+home|com\.miui\.home|com\.oppo\.launcher|com\.android\.launcher|com\.google\.android\.apps\.nexuslauncher|com\.sec\.android\.app\.launcher/i.test(currentApp);
177
+ }
178
+ function isExpectedApp(currentApp, expected) {
179
+ const normalized = currentApp.toLocaleLowerCase();
180
+ return [expected.packageName, expected.displayName].some((value) => normalized.includes(value.toLocaleLowerCase()));
181
+ }
182
+ function truncate(value, max) {
183
+ if (value.length <= max)
184
+ return value;
185
+ return `${value.slice(0, max - 1)}…`;
186
+ }
187
+ function errorMessage(error) {
188
+ return error instanceof Error ? error.message : String(error);
189
+ }
190
+ //# sourceMappingURL=subgoal-verifier.js.map