@beeos-ai/device-agent 0.9.10 → 0.9.11

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 (84) hide show
  1. package/dist/adapters/agentcore-inner-loop.d.ts +3 -4
  2. package/dist/adapters/agentcore-inner-loop.js +3 -4
  3. package/dist/adapters/agentcore-inner-loop.js.map +1 -1
  4. package/dist/adapters/agentcore-orchestrator.d.ts +36 -0
  5. package/dist/adapters/agentcore-orchestrator.js +203 -0
  6. package/dist/adapters/agentcore-orchestrator.js.map +1 -0
  7. package/dist/adapters/agentcore-runner.d.ts +3 -3
  8. package/dist/adapters/agentcore-runner.js +3 -3
  9. package/dist/adapters/app-guide.d.ts +16 -0
  10. package/dist/adapters/app-guide.js +101 -0
  11. package/dist/adapters/app-guide.js.map +1 -0
  12. package/dist/adapters/orchestrator-agent-prompt.d.ts +7 -0
  13. package/dist/adapters/orchestrator-agent-prompt.js +59 -0
  14. package/dist/adapters/orchestrator-agent-prompt.js.map +1 -0
  15. package/dist/adapters/vlm-inner-loop.d.ts +6 -0
  16. package/dist/adapters/vlm-inner-loop.js +3 -0
  17. package/dist/adapters/vlm-inner-loop.js.map +1 -1
  18. package/dist/agent-runtime/core.js +1 -1
  19. package/dist/agent-runtime/core.js.map +1 -1
  20. package/dist/agent-runtime/shortcuts/types.d.ts +2 -3
  21. package/dist/agent-runtime/shortcuts/types.js +2 -3
  22. package/dist/agent-runtime/shortcuts/types.js.map +1 -1
  23. package/dist/api.d.ts +1 -1
  24. package/dist/api.js +1 -1
  25. package/dist/bootstrap.d.ts +4 -4
  26. package/dist/bootstrap.js +47 -61
  27. package/dist/bootstrap.js.map +1 -1
  28. package/dist/config/loader.d.ts +2 -2
  29. package/dist/config/loader.js +2 -2
  30. package/dist/config/loader.js.map +1 -1
  31. package/dist/config/schema.d.ts +1 -1
  32. package/dist/config/schema.js +4 -5
  33. package/dist/config/schema.js.map +1 -1
  34. package/dist/device/apps.js +1 -1
  35. package/dist/device/apps.js.map +1 -1
  36. package/dist/fleet/domain/events.d.ts +22 -1
  37. package/dist/fleet/domain/fsm.d.ts +23 -1
  38. package/dist/fleet/domain/fsm.js +29 -0
  39. package/dist/fleet/domain/fsm.js.map +1 -1
  40. package/dist/fleet/supervisor.d.ts +13 -0
  41. package/dist/fleet/supervisor.js +90 -0
  42. package/dist/fleet/supervisor.js.map +1 -1
  43. package/dist/grounding/grounder.d.ts +1 -1
  44. package/dist/inbound/cli/main.d.ts +1 -1
  45. package/dist/inbound/cli/main.js +4 -4
  46. package/dist/inbound/cli/main.js.map +1 -1
  47. package/dist/inbound/cli/run-command.d.ts +6 -0
  48. package/dist/inbound/cli/run-command.js +94 -0
  49. package/dist/inbound/cli/run-command.js.map +1 -1
  50. package/dist/index.d.ts +2 -4
  51. package/dist/index.js +1 -2
  52. package/dist/index.js.map +1 -1
  53. package/dist/model/adapters/general.d.ts +11 -0
  54. package/dist/model/adapters/general.js +249 -0
  55. package/dist/model/adapters/general.js.map +1 -0
  56. package/dist/model/adapters/index.d.ts +1 -0
  57. package/dist/model/adapters/index.js +1 -0
  58. package/dist/model/adapters/index.js.map +1 -1
  59. package/dist/ports/agent-core.d.ts +6 -5
  60. package/dist/shortcuts/types.d.ts +3 -6
  61. package/dist/shortcuts/types.js +1 -2
  62. package/dist/shortcuts/types.js.map +1 -1
  63. package/package.json +2 -5
  64. package/.pi/extensions/android-tools.ts +0 -291
  65. package/.pi/skills/.gitkeep +0 -0
  66. package/.pi/skills/ground-mobile-fallback/SKILL.md +0 -50
  67. package/dist/adapters/agentcore-pi.d.ts +0 -237
  68. package/dist/adapters/agentcore-pi.js +0 -512
  69. package/dist/adapters/agentcore-pi.js.map +0 -1
  70. package/dist/chat.d.ts +0 -16
  71. package/dist/chat.js +0 -185
  72. package/dist/chat.js.map +0 -1
  73. package/dist/debug/dump-system-prompt.d.ts +0 -1
  74. package/dist/debug/dump-system-prompt.js +0 -34
  75. package/dist/debug/dump-system-prompt.js.map +0 -1
  76. package/dist/orchestrator-system-prompt.d.ts +0 -32
  77. package/dist/orchestrator-system-prompt.js +0 -197
  78. package/dist/orchestrator-system-prompt.js.map +0 -1
  79. package/dist/pi-context.d.ts +0 -132
  80. package/dist/pi-context.js +0 -62
  81. package/dist/pi-context.js.map +0 -1
  82. package/dist/pi-local-skills.d.ts +0 -17
  83. package/dist/pi-local-skills.js +0 -24
  84. package/dist/pi-local-skills.js.map +0 -1
@@ -6,10 +6,9 @@
6
6
  * that it can be plugged into the `IAgentCore` slot.
7
7
  *
8
8
  * Selected by `--legacy-inner` / `BEEOS_LEGACY_INNER=true`. Useful when
9
- * the pi-coding-agent two-layer adapter isn't available (offline, custom
10
- * model with no orchestrator support, …) — the agent still works as an
11
- * end-to-end VLM controller, just without an outer text LLM picking
12
- * between tools.
9
+ * the two-layer orchestrator isn't desired (offline, custom model with no
10
+ * orchestrator support, …) — the agent still works as an end-to-end VLM
11
+ * controller, just without an outer text LLM picking between tools.
13
12
  *
14
13
  * The adapter:
15
14
  * - re-emits each VlmStep both as `onStep` (legacy compat) and as a
@@ -6,10 +6,9 @@
6
6
  * that it can be plugged into the `IAgentCore` slot.
7
7
  *
8
8
  * Selected by `--legacy-inner` / `BEEOS_LEGACY_INNER=true`. Useful when
9
- * the pi-coding-agent two-layer adapter isn't available (offline, custom
10
- * model with no orchestrator support, …) — the agent still works as an
11
- * end-to-end VLM controller, just without an outer text LLM picking
12
- * between tools.
9
+ * the two-layer orchestrator isn't desired (offline, custom model with no
10
+ * orchestrator support, …) — the agent still works as an end-to-end VLM
11
+ * controller, just without an outer text LLM picking between tools.
13
12
  *
14
13
  * The adapter:
15
14
  * - re-emits each VlmStep both as `onStep` (legacy compat) and as a
@@ -1 +1 @@
1
- {"version":3,"file":"agentcore-inner-loop.js","sourceRoot":"","sources":["../../src/adapters/agentcore-inner-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAE1C,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAyB;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEzC,gEAAgE;gBAChE,0DAA0D;gBAC1D,iEAAiE;gBACjE,mDAAmD;gBACnD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC/B,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvC,MAAM,KAAK,GAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC3E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAkB;wBACzB,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,IAAI;wBACJ,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;wBAC3B,OAAO,EAAE,KAAK;qBACf,CAAC;oBACF,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,KAAa;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,YAAY,CAAC,CAAmB;IACvC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAA+C,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"agentcore-inner-loop.js","sourceRoot":"","sources":["../../src/adapters/agentcore-inner-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;IAAG,CAAC;IAE1C,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAyB;QACjC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEzC,gEAAgE;gBAChE,0DAA0D;gBAC1D,iEAAiE;gBACjE,mDAAmD;gBACnD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC/B,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvC,MAAM,KAAK,GAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;oBAC3E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAkB;wBACzB,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,IAAI;wBACJ,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;wBAC3B,OAAO,EAAE,KAAK;qBACf,CAAC;oBACF,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,KAAa;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,SAAS,YAAY,CAAC,CAAmB;IACvC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAA+C,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * OrchestratorAgent — OpenAI tool-calling outer loop + mobile_use inner loop.
3
+ *
4
+ * Two-layer architecture, no pi-coding-agent dependency:
5
+ * outer: plain OpenAI chat completions with tools[]
6
+ * inner: the existing AgentRunner (ReAct / Plan-Act) called via mobileUseRunner
7
+ *
8
+ * Loop is single-turn by design: the outer LLM may call get_app_guide
9
+ * any number of times, then calls mobile_use once → loop exits immediately
10
+ * regardless of success or failure.
11
+ *
12
+ * Tools exposed to the outer LLM:
13
+ * - get_app_guide(app, action?) → static UI path hints
14
+ * - mobile_use(task) → calls mobileUseRunner, returns text
15
+ */
16
+ import type { AgentCoreRunCallbacks, AgentCoreRunOptions, AgentCoreRunResult, IAgentCore } from "../ports/agent-core.js";
17
+ export interface OrchestratorOuterConfig {
18
+ apiKey?: string;
19
+ baseUrl?: string;
20
+ model?: string;
21
+ }
22
+ export interface OrchestratorAgentOptions {
23
+ outer: OrchestratorOuterConfig;
24
+ /** Runs the inner ReAct loop and returns the final text. */
25
+ mobileUseRunner: (task: string, maxSteps: number, signal?: AbortSignal, callbacks?: AgentCoreRunCallbacks) => Promise<string>;
26
+ }
27
+ export declare class OrchestratorAgent implements IAgentCore {
28
+ private readonly client;
29
+ private _model;
30
+ private readonly mobileUseRunner;
31
+ constructor(opts: OrchestratorAgentOptions);
32
+ get modelName(): string;
33
+ get providerName(): string;
34
+ setModel(_provider: string, model: string): Promise<void>;
35
+ run(opts: AgentCoreRunOptions): Promise<AgentCoreRunResult>;
36
+ }
@@ -0,0 +1,203 @@
1
+ /**
2
+ * OrchestratorAgent — OpenAI tool-calling outer loop + mobile_use inner loop.
3
+ *
4
+ * Two-layer architecture, no pi-coding-agent dependency:
5
+ * outer: plain OpenAI chat completions with tools[]
6
+ * inner: the existing AgentRunner (ReAct / Plan-Act) called via mobileUseRunner
7
+ *
8
+ * Loop is single-turn by design: the outer LLM may call get_app_guide
9
+ * any number of times, then calls mobile_use once → loop exits immediately
10
+ * regardless of success or failure.
11
+ *
12
+ * Tools exposed to the outer LLM:
13
+ * - get_app_guide(app, action?) → static UI path hints
14
+ * - mobile_use(task) → calls mobileUseRunner, returns text
15
+ */
16
+ import OpenAI from "openai";
17
+ import { getAppGuide, SUPPORTED_APPS } from "./app-guide.js";
18
+ import { ORCHESTRATOR_AGENT_SYSTEM_PROMPT } from "./orchestrator-agent-prompt.js";
19
+ /** Fixed inner-VLM step budget. The outer LLM does not control this. */
20
+ const MOBILE_USE_MAX_STEPS = 30;
21
+ // ── Tool definitions ─────────────────────────────────────────────────────────
22
+ const TOOLS = [
23
+ {
24
+ type: "function",
25
+ function: {
26
+ name: "get_app_guide",
27
+ description: "Get UI step-by-step instructions for a social media app. " +
28
+ "Call this before mobile_use to get the exact tap/swipe path for an action. " +
29
+ `Supported apps: ${SUPPORTED_APPS.join(", ")}. ` +
30
+ "Leave action empty to get a capability summary.",
31
+ parameters: {
32
+ type: "object",
33
+ properties: {
34
+ app: {
35
+ type: "string",
36
+ description: `App name. One of: ${SUPPORTED_APPS.join(", ")}`,
37
+ },
38
+ action: {
39
+ type: "string",
40
+ enum: ["post", ""],
41
+ description: 'Action type. Use "post" for publish/upload flows. Omit for capability summary.',
42
+ },
43
+ },
44
+ required: ["app"],
45
+ },
46
+ },
47
+ },
48
+ {
49
+ type: "function",
50
+ function: {
51
+ name: "mobile_use",
52
+ description: "Drive the connected Android phone with a natural-language task. " +
53
+ "A VLM runs its own screenshot→reason→act loop until it finishes. " +
54
+ "Pass a full, concrete instruction. Call this at most once per user request — " +
55
+ "the loop exits immediately after this call regardless of success or failure.",
56
+ parameters: {
57
+ type: "object",
58
+ properties: {
59
+ task: {
60
+ type: "string",
61
+ description: "Full natural-language instruction in Chinese or English.",
62
+ },
63
+ },
64
+ required: ["task"],
65
+ },
66
+ },
67
+ },
68
+ ];
69
+ // ── OrchestratorAgent ────────────────────────────────────────────────────────
70
+ export class OrchestratorAgent {
71
+ client;
72
+ _model;
73
+ mobileUseRunner;
74
+ constructor(opts) {
75
+ this._model = opts.outer.model ?? "gpt-4o";
76
+ this.mobileUseRunner = opts.mobileUseRunner;
77
+ this.client = new OpenAI({
78
+ apiKey: opts.outer.apiKey ?? process.env.OUTER_API_KEY ?? process.env.GUI_AGENT_API_KEY ?? "EMPTY",
79
+ baseURL: opts.outer.baseUrl ?? process.env.OUTER_BASE_URL ?? "https://api.openai.com/v1",
80
+ timeout: 120_000,
81
+ maxRetries: 2,
82
+ });
83
+ }
84
+ get modelName() {
85
+ return this._model;
86
+ }
87
+ get providerName() {
88
+ return "orchestrator";
89
+ }
90
+ async setModel(_provider, model) {
91
+ this._model = model;
92
+ }
93
+ async run(opts) {
94
+ const { task, abortSignal, onText, onTool, onError } = opts;
95
+ const messages = [
96
+ { role: "system", content: ORCHESTRATOR_AGENT_SYSTEM_PROMPT },
97
+ { role: "user", content: task },
98
+ ];
99
+ let mobileUseCalled = false;
100
+ let finalMessage = "";
101
+ try {
102
+ // Outer loop: keep calling the LLM until mobile_use is dispatched or
103
+ // the model emits a plain text reply (no tool calls).
104
+ while (!mobileUseCalled) {
105
+ if (abortSignal?.aborted)
106
+ break;
107
+ const response = await this.client.chat.completions.create({
108
+ model: this._model,
109
+ messages,
110
+ tools: TOOLS,
111
+ tool_choice: "auto",
112
+ }, { signal: abortSignal });
113
+ const choice = response.choices[0];
114
+ if (!choice)
115
+ break;
116
+ const msg = choice.message;
117
+ messages.push(msg);
118
+ // Plain text reply — no tools called, we're done.
119
+ if (!msg.tool_calls || msg.tool_calls.length === 0) {
120
+ finalMessage = msg.content ?? "";
121
+ onText?.(finalMessage);
122
+ break;
123
+ }
124
+ // Process each tool call in sequence.
125
+ const toolResults = [];
126
+ for (const call of msg.tool_calls) {
127
+ const fn = call.function.name;
128
+ let args = {};
129
+ try {
130
+ args = JSON.parse(call.function.arguments || "{}");
131
+ }
132
+ catch {
133
+ // malformed JSON — treat as empty args
134
+ }
135
+ onTool?.({
136
+ id: call.id,
137
+ name: fn,
138
+ args,
139
+ status: "start",
140
+ });
141
+ let resultText;
142
+ if (fn === "get_app_guide") {
143
+ resultText = getAppGuide(String(args.app ?? ""), args.action ? String(args.action) : undefined);
144
+ onTool?.({ id: call.id, name: fn, args, status: "end", result: resultText });
145
+ }
146
+ else if (fn === "mobile_use") {
147
+ mobileUseCalled = true;
148
+ const innerTask = String(args.task ?? task);
149
+ const innerMax = MOBILE_USE_MAX_STEPS;
150
+ try {
151
+ resultText = await this.mobileUseRunner(innerTask, innerMax, abortSignal, {
152
+ onTool: opts.onTool,
153
+ onStep: opts.onStep,
154
+ onError: opts.onError,
155
+ });
156
+ }
157
+ catch (e) {
158
+ resultText = `mobile_use 执行出错: ${e.message}`;
159
+ onError?.({
160
+ code: "mobile_use_error",
161
+ message: e.message,
162
+ fatal: false,
163
+ });
164
+ }
165
+ onTool?.({ id: call.id, name: fn, args, status: "end", result: resultText });
166
+ }
167
+ else {
168
+ resultText = `Unknown tool: ${fn}`;
169
+ onTool?.({ id: call.id, name: fn, args, status: "end", isError: true, result: resultText });
170
+ }
171
+ toolResults.push({
172
+ role: "tool",
173
+ tool_call_id: call.id,
174
+ content: resultText,
175
+ });
176
+ }
177
+ messages.push(...toolResults);
178
+ // After mobile_use fired, do one final LLM call for the summary reply.
179
+ if (mobileUseCalled) {
180
+ if (abortSignal?.aborted)
181
+ break;
182
+ const summaryResp = await this.client.chat.completions.create({
183
+ model: this._model,
184
+ messages,
185
+ tools: TOOLS,
186
+ tool_choice: "none",
187
+ }, { signal: abortSignal });
188
+ finalMessage = summaryResp.choices[0]?.message?.content ?? "";
189
+ onText?.(finalMessage);
190
+ break;
191
+ }
192
+ }
193
+ }
194
+ catch (e) {
195
+ if (e.name === "AbortError") {
196
+ return { finalMessage: "", steps: 0, cancelled: true };
197
+ }
198
+ throw e;
199
+ }
200
+ return { finalMessage, steps: mobileUseCalled ? 1 : 0, cancelled: false };
201
+ }
202
+ }
203
+ //# sourceMappingURL=agentcore-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentcore-orchestrator.js","sourceRoot":"","sources":["../../src/adapters/agentcore-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,10 @@
6
6
  * `SessionManager` keep working without protocol changes.
7
7
  *
8
8
  * This is the **default** core path as of v0.3.0. The two opt-in
9
- * decorators retained from earlier versions are:
9
+ * decorators are:
10
10
  * - `--legacy-inner` → `InnerLoopAgent` (single-layer fallback)
11
- * - (default off) → `PiOrchestratorAgent` (outer LLM + inner
12
- * mobile_use VLM, two-layer)
11
+ * - `--orchestrator` → `OrchestratorAgent` (outer tool-calling LLM
12
+ * + inner mobile_use VLM, two-layer)
13
13
  *
14
14
  * The runner picks the strategy according to the user-tunable
15
15
  * Plan-Act options:
@@ -6,10 +6,10 @@
6
6
  * `SessionManager` keep working without protocol changes.
7
7
  *
8
8
  * This is the **default** core path as of v0.3.0. The two opt-in
9
- * decorators retained from earlier versions are:
9
+ * decorators are:
10
10
  * - `--legacy-inner` → `InnerLoopAgent` (single-layer fallback)
11
- * - (default off) → `PiOrchestratorAgent` (outer LLM + inner
12
- * mobile_use VLM, two-layer)
11
+ * - `--orchestrator` → `OrchestratorAgent` (outer tool-calling LLM
12
+ * + inner mobile_use VLM, two-layer)
13
13
  *
14
14
  * The runner picks the strategy according to the user-tunable
15
15
  * Plan-Act options:
@@ -0,0 +1,16 @@
1
+ /**
2
+ * App-specific UI guides for the OrchestratorAgent.
3
+ *
4
+ * get_app_guide(app, action?) returns a ready-to-paste task description
5
+ * that the outer LLM splices into its mobile_use call. Stateless — no IO.
6
+ *
7
+ * action="post" → step-by-step publishing guide
8
+ * action omitted → one-paragraph capability summary
9
+ */
10
+ export type SupportedApp = "抖音" | "小红书" | "微信" | "微博" | "bilibili";
11
+ export declare const SUPPORTED_APPS: SupportedApp[];
12
+ /**
13
+ * Returns a guide string for the given app and optional action.
14
+ * action="post" → step list; action omitted → summary paragraph.
15
+ */
16
+ export declare function getAppGuide(app: string, action?: string): string;
@@ -0,0 +1,101 @@
1
+ /**
2
+ * App-specific UI guides for the OrchestratorAgent.
3
+ *
4
+ * get_app_guide(app, action?) returns a ready-to-paste task description
5
+ * that the outer LLM splices into its mobile_use call. Stateless — no IO.
6
+ *
7
+ * action="post" → step-by-step publishing guide
8
+ * action omitted → one-paragraph capability summary
9
+ */
10
+ export const SUPPORTED_APPS = ["抖音", "小红书", "微信", "微博", "bilibili"];
11
+ const GUIDES = {
12
+ 抖音: {
13
+ summary: "抖音是短视频平台。支持从相册发布视频、拍摄新视频。发布入口在底部中央「+」按钮。",
14
+ post: `在抖音发布视频,步骤如下:
15
+ 1. 打开抖音 App,等待首页加载完成。
16
+ 2. 点击底部中间的「+」发布按钮。
17
+ 3. 如出现权限弹窗(相册/相机/麦克风),选择「允许」。
18
+ 4. 进入拍摄页面后,点击右下角「相册」切换到本地文件。
19
+ 5. 在相册页面选择第一个视频(最新上传的文件始终排在最前面)。
20
+ 6. 点击「下一步」。
21
+ 7. 等待视频预览/编辑页面加载,不做任何剪辑,直接点击「下一步」。
22
+ 8. 进入发布编辑页面,如需标题可输入,保持默认发布设置。
23
+ 9. 点击「发布」。
24
+ 10. 等待出现发布成功提示或自动跳转首页,任务完成。
25
+ 11. 如出现「保存草稿」「继续发布」「确认发布」弹窗,选择继续/确认发布。`,
26
+ },
27
+ 小红书: {
28
+ summary: "小红书是图文/视频种草平台。支持发布笔记(图片+文字)和视频。发布入口在底部中央「+」。",
29
+ post: `在小红书发布笔记,步骤如下:
30
+ 1. 打开小红书 App,等待首页加载完成。
31
+ 2. 点击底部中间的「+」按钮。
32
+ 3. 如出现权限弹窗,选择「允许」。
33
+ 4. 选择「发布笔记」或直接进入图片/视频选择页。
34
+ 5. 在相册中点击第一张图片或第一个视频(最新文件在最前面)。
35
+ 6. 点击「下一步」。
36
+ 7. 进入编辑页,可添加滤镜或保持原样,点击「下一步」。
37
+ 8. 在发布页填写标题和正文(可留空或输入指定文案),添加话题标签(可选)。
38
+ 9. 点击右上角「发布」。
39
+ 10. 等待出现发布成功提示或跳转至个人主页,任务完成。`,
40
+ },
41
+ 微信: {
42
+ summary: "微信支持发布朋友圈(图文/视频)和文字动态。入口:「发现」→「朋友圈」→右上角相机图标。",
43
+ post: `在微信朋友圈发布内容,步骤如下:
44
+ 1. 打开微信 App,点击底部「发现」Tab。
45
+ 2. 点击「朋友圈」。
46
+ 3. 点击右上角相机图标(长按可发纯文字)。
47
+ 4. 如出现权限弹窗,选择「允许」。
48
+ 5. 在相册中点击第一张图片或视频(最新文件在最前面)。
49
+ 6. 点击「完成」。
50
+ 7. 在输入框中填写文字(可留空)。
51
+ 8. 点击「发表」。
52
+ 9. 等待返回朋友圈列表并看到刚发布的内容,任务完成。`,
53
+ },
54
+ 微博: {
55
+ summary: "微博是开放社交平台。支持发布图文、视频微博。发布入口在底部中央「+」或右上角「写微博」。",
56
+ post: `在微博发布内容,步骤如下:
57
+ 1. 打开微博 App,等待首页加载完成。
58
+ 2. 点击底部中间的「+」或右上角「写微博」按钮。
59
+ 3. 如出现权限弹窗,选择「允许」。
60
+ 4. 在编辑框中输入文字(可留空)。
61
+ 5. 点击编辑区下方的「图片」或「视频」图标,进入相册。
62
+ 6. 在相册中点击第一张图片或视频(最新文件在最前面)。
63
+ 7. 点击「确定」或「下一步」。
64
+ 8. 回到编辑页,检查内容后点击「发送」。
65
+ 9. 等待出现发布成功提示或跳转至微博详情页,任务完成。`,
66
+ },
67
+ bilibili: {
68
+ summary: "B站是视频平台。支持投稿视频。发布入口在顶部「投稿」或底部「+」。审核后才会公开可见。",
69
+ post: `在 B站(bilibili)投稿视频,步骤如下:
70
+ 1. 打开 B站 App,等待首页加载完成。
71
+ 2. 点击底部中间的「+」或顶部「投稿」按钮。
72
+ 3. 选择「上传视频」。
73
+ 4. 如出现权限弹窗,选择「允许」。
74
+ 5. 在相册中点击第一个视频(最新文件在最前面)。
75
+ 6. 等待视频上传/处理完成。
76
+ 7. 填写视频标题(必填,可输入「测试视频」)。
77
+ 8. 选择分区(如「生活」→「日常」)。
78
+ 9. 保持默认设置,点击「立即投稿」。
79
+ 10. 等待出现投稿成功提示,任务完成(视频会进入审核队列)。`,
80
+ },
81
+ };
82
+ /**
83
+ * Returns a guide string for the given app and optional action.
84
+ * action="post" → step list; action omitted → summary paragraph.
85
+ */
86
+ export function getAppGuide(app, action) {
87
+ const key = app.trim();
88
+ const guide = GUIDES[key];
89
+ if (!guide) {
90
+ return (`不支持的 App「${app}」。当前支持:${SUPPORTED_APPS.join("、")}。` +
91
+ `请直接使用 mobile_use 完成任务。`);
92
+ }
93
+ if (!action || action.trim() === "") {
94
+ return `【${key}】${guide.summary}`;
95
+ }
96
+ if (action.trim() === "post") {
97
+ return guide.post;
98
+ }
99
+ return `【${key}】暂无「${action}」的详细指南。${guide.summary}`;
100
+ }
101
+ //# sourceMappingURL=app-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-guide.js","sourceRoot":"","sources":["../../src/adapters/app-guide.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,cAAc,GAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAOpF,MAAM,MAAM,GAAmC;IAC7C,EAAE,EAAE;QACF,OAAO,EACL,0CAA0C;QAC5C,IAAI,EAAE;;;;;;;;;;;uCAW6B;KACpC;IAED,GAAG,EAAE;QACH,OAAO,EACL,8CAA8C;QAChD,IAAI,EAAE;;;;;;;;;;6BAUmB;KAC1B;IAED,EAAE,EAAE;QACF,OAAO,EACL,8CAA8C;QAChD,IAAI,EAAE;;;;;;;;;4BASkB;KACzB;IAED,EAAE,EAAE;QACF,OAAO,EACL,8CAA8C;QAChD,IAAI,EAAE;;;;;;;;;6BASmB;KAC1B;IAED,QAAQ,EAAE;QACR,OAAO,EACL,6CAA6C;QAC/C,IAAI,EAAE;;;;;;;;;;gCAUsB;KAC7B;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,MAAe;IACtD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAkB,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CACL,YAAY,GAAG,UAAU,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YACpD,wBAAwB,CACzB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,GAAG,OAAO,MAAM,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * System prompt for the `OrchestratorAgent` (OpenAI tool-calling mode).
3
+ *
4
+ * Governs the plain tool-calling outer LLM that drives `get_app_guide` +
5
+ * `mobile_use`.
6
+ */
7
+ export declare const ORCHESTRATOR_AGENT_SYSTEM_PROMPT: string;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * System prompt for the `OrchestratorAgent` (OpenAI tool-calling mode).
3
+ *
4
+ * Governs the plain tool-calling outer LLM that drives `get_app_guide` +
5
+ * `mobile_use`.
6
+ */
7
+ import { SUPPORTED_APPS } from "./app-guide.js";
8
+ export const ORCHESTRATOR_AGENT_SYSTEM_PROMPT = `\
9
+ 你是 Android 手机自动化编排 Agent。
10
+
11
+ ## 工具使用规则
12
+
13
+ 1. 若任务涉及社媒 App(${SUPPORTED_APPS.join("、")}),先调用 get_app_guide 获取 UI 路径,再构造 mobile_use 的 task。
14
+ 2. mobile_use 只能调用一次。调用后立刻结束,不再调用任何工具。
15
+ 3. 禁止使用 bash / shell / exec 等工具直接运行 adb 命令。所有设备操作只能通过 mobile_use 完成。
16
+ 4. get_app_guide 可多次调用(例如先查 App 能力概览再查 post 步骤),但 mobile_use 只能调用一次。
17
+
18
+ ## mobile_use 的 task 参数格式(强制)
19
+
20
+ 调用 mobile_use 时,task 参数必须包含以下两部分:
21
+
22
+ **第一部分:任务总览**(一句话概括目标,例如:「在 B站 搜索张雪峰并给第一个视频点赞」)
23
+
24
+ **第二部分:具体步骤**(编号列表,步骤数量 20–30 条)
25
+ - 步骤粒度:每步对应一个原子 UI 操作或一次判断(「打开 App」「点击搜索框」「输入文字」「等待加载」「点击第一个视频」「点击点赞按钮」等)
26
+ - 不能过细(不拆分手势细节),不能过粗(不把多个操作合并成一步)
27
+ - 必须覆盖:启动 / 进入目标页面 → 核心操作 → 确认完成 → 异常处理(弹窗 / 权限 / 加载失败)
28
+
29
+ 示例格式:
30
+ \`\`\`
31
+ 任务总览:在 B站 搜索张雪峰并给第一个视频点赞
32
+
33
+ 具体步骤:
34
+ 1. 打开 B站 App,等待首页加载完成。
35
+ 2. 如出现启动广告,点击「跳过」。
36
+ 3. 点击顶部搜索图标(放大镜)。
37
+ 4. 在搜索框中输入「张雪峰」。
38
+ 5. 点击键盘上的「搜索」或「确认」按钮。
39
+ 6. 等待搜索结果页面加载完成。
40
+ 7. 如有筛选栏,保持默认(综合排序)。
41
+ 8. 找到搜索结果列表中的第一个视频。
42
+ 9. 点击第一个视频,进入视频播放页。
43
+ 10. 等待视频播放页加载完成。
44
+ 11. 如出现弹窗(会员购买、青少年模式等),关闭弹窗。
45
+ 12. 找到视频下方的点赞按钮(拇指向上图标)。
46
+ 13. 点击点赞按钮。
47
+ 14. 确认点赞按钮已高亮 / 变色,表示点赞成功。
48
+ 15. 如点击后无反应,等待 1–2 秒后重试一次。
49
+ 16. 记录当前状态(点赞是否成功)。
50
+ 17. 如需登录才能点赞,停止并说明无法完成。
51
+ 18. 任务完成,不做其他操作。
52
+ 19. 如页面跳转到意外位置,按返回键回到视频页面。
53
+ 20. 最终确认:点赞图标处于激活状态,任务结束。
54
+ \`\`\`
55
+
56
+ ## 任务结束
57
+
58
+ mobile_use 执行完毕后,用一两句话向用户汇报结果。`;
59
+ //# sourceMappingURL=orchestrator-agent-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator-agent-prompt.js","sourceRoot":"","sources":["../../src/adapters/orchestrator-agent-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;iBAK/B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA6CV,CAAC"}
@@ -26,6 +26,12 @@ export interface InnerLoopVlmOptions {
26
26
  maxSteps?: number;
27
27
  lang?: "cn" | "en";
28
28
  verbose?: boolean;
29
+ /**
30
+ * Explicit adapter/provider tag (`autoglm`, `qwenvl`, `general`, …).
31
+ * Overrides auto-detection from the model name. Maps to `mobileUse.provider`
32
+ * in the fleet config.
33
+ */
34
+ adapter?: string;
29
35
  /**
30
36
  * Caller can pre-construct a ModelClient for fully custom config; otherwise
31
37
  * we instantiate a default OpenAIClient with adapter auto-detection.
@@ -40,11 +40,14 @@ export class InnerLoopVlm {
40
40
  };
41
41
  this.baseUrl = opts.baseUrl;
42
42
  this.apiKey = opts.apiKey;
43
+ const explicitAdapter = (opts.adapter ?? "").trim() || undefined;
43
44
  this.client = opts.modelClient ?? new OpenAIClient({
44
45
  modelName: opts.modelName,
45
46
  baseUrl: opts.baseUrl,
46
47
  apiKey: opts.apiKey,
48
+ adapter: explicitAdapter,
47
49
  });
50
+ this.provider = explicitAdapter ?? "";
48
51
  this.agent = new Agent(this.client, this.inner, this.cfg);
49
52
  }
50
53
  get modelName() {
@@ -1 +1 @@
1
- {"version":3,"file":"vlm-inner-loop.js","sourceRoot":"","sources":["../../src/adapters/vlm-inner-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vlm-inner-loop.js","sourceRoot":"","sources":["../../src/adapters/vlm-inner-loop.ts"],"names":[],"mappings":"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"}
@@ -324,7 +324,7 @@ export class AgentLoop {
324
324
  return this.finish("call_for_user", step, finalText, usage, lastError);
325
325
  }
326
326
  // Phase-1: surfacing the event is enough — wait-for-user is
327
- // implemented by the orchestrator layer (PiOrchestratorAgent).
327
+ // implemented by the orchestrator layer (OrchestratorAgent).
328
328
  return this.finish("call_for_user", step, finalText, usage, lastError);
329
329
  }
330
330
  const t0 = Date.now();