@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.
- package/dist/adapters/agentcore-inner-loop.d.ts +3 -4
- package/dist/adapters/agentcore-inner-loop.js +3 -4
- package/dist/adapters/agentcore-inner-loop.js.map +1 -1
- package/dist/adapters/agentcore-orchestrator.d.ts +36 -0
- package/dist/adapters/agentcore-orchestrator.js +203 -0
- package/dist/adapters/agentcore-orchestrator.js.map +1 -0
- package/dist/adapters/agentcore-runner.d.ts +3 -3
- package/dist/adapters/agentcore-runner.js +3 -3
- package/dist/adapters/app-guide.d.ts +16 -0
- package/dist/adapters/app-guide.js +101 -0
- package/dist/adapters/app-guide.js.map +1 -0
- package/dist/adapters/orchestrator-agent-prompt.d.ts +7 -0
- package/dist/adapters/orchestrator-agent-prompt.js +59 -0
- package/dist/adapters/orchestrator-agent-prompt.js.map +1 -0
- package/dist/adapters/vlm-inner-loop.d.ts +6 -0
- package/dist/adapters/vlm-inner-loop.js +3 -0
- package/dist/adapters/vlm-inner-loop.js.map +1 -1
- package/dist/agent-runtime/core.js +1 -1
- package/dist/agent-runtime/core.js.map +1 -1
- package/dist/agent-runtime/shortcuts/types.d.ts +2 -3
- package/dist/agent-runtime/shortcuts/types.js +2 -3
- package/dist/agent-runtime/shortcuts/types.js.map +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +1 -1
- package/dist/bootstrap.d.ts +4 -4
- package/dist/bootstrap.js +47 -61
- package/dist/bootstrap.js.map +1 -1
- package/dist/config/loader.d.ts +2 -2
- package/dist/config/loader.js +2 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +1 -1
- package/dist/config/schema.js +4 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/device/apps.js +1 -1
- package/dist/device/apps.js.map +1 -1
- package/dist/fleet/domain/events.d.ts +22 -1
- package/dist/fleet/domain/fsm.d.ts +23 -1
- package/dist/fleet/domain/fsm.js +29 -0
- package/dist/fleet/domain/fsm.js.map +1 -1
- package/dist/fleet/supervisor.d.ts +13 -0
- package/dist/fleet/supervisor.js +90 -0
- package/dist/fleet/supervisor.js.map +1 -1
- package/dist/grounding/grounder.d.ts +1 -1
- package/dist/inbound/cli/main.d.ts +1 -1
- package/dist/inbound/cli/main.js +4 -4
- package/dist/inbound/cli/main.js.map +1 -1
- package/dist/inbound/cli/run-command.d.ts +6 -0
- package/dist/inbound/cli/run-command.js +94 -0
- package/dist/inbound/cli/run-command.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/model/adapters/general.d.ts +11 -0
- package/dist/model/adapters/general.js +249 -0
- package/dist/model/adapters/general.js.map +1 -0
- package/dist/model/adapters/index.d.ts +1 -0
- package/dist/model/adapters/index.js +1 -0
- package/dist/model/adapters/index.js.map +1 -1
- package/dist/ports/agent-core.d.ts +6 -5
- package/dist/shortcuts/types.d.ts +3 -6
- package/dist/shortcuts/types.js +1 -2
- package/dist/shortcuts/types.js.map +1 -1
- package/package.json +2 -5
- package/.pi/extensions/android-tools.ts +0 -291
- package/.pi/skills/.gitkeep +0 -0
- package/.pi/skills/ground-mobile-fallback/SKILL.md +0 -50
- package/dist/adapters/agentcore-pi.d.ts +0 -237
- package/dist/adapters/agentcore-pi.js +0 -512
- package/dist/adapters/agentcore-pi.js.map +0 -1
- package/dist/chat.d.ts +0 -16
- package/dist/chat.js +0 -185
- package/dist/chat.js.map +0 -1
- package/dist/debug/dump-system-prompt.d.ts +0 -1
- package/dist/debug/dump-system-prompt.js +0 -34
- package/dist/debug/dump-system-prompt.js.map +0 -1
- package/dist/orchestrator-system-prompt.d.ts +0 -32
- package/dist/orchestrator-system-prompt.js +0 -197
- package/dist/orchestrator-system-prompt.js.map +0 -1
- package/dist/pi-context.d.ts +0 -132
- package/dist/pi-context.js +0 -62
- package/dist/pi-context.js.map +0 -1
- package/dist/pi-local-skills.d.ts +0 -17
- package/dist/pi-local-skills.js +0 -24
- package/dist/pi-local-skills.js.map +0 -1
|
@@ -1,512 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapter — PiOrchestratorAgent (two-layer outer orchestrator).
|
|
3
|
-
*
|
|
4
|
-
* Wraps `@mariozechner/pi-coding-agent`'s `AgentSession` so it can be
|
|
5
|
-
* plugged into the `IAgentCore` slot. The outer layer is the LLM that
|
|
6
|
-
* pi drives; the inner layer is whatever extensions are loaded from
|
|
7
|
-
* `<projectRoot>/.pi/extensions/` (e.g. `mobile_use`, `ground`,
|
|
8
|
-
* `ui_xml`). The adapter is **transport-agnostic** — it only knows about
|
|
9
|
-
* pi events and `AgentHost` callbacks.
|
|
10
|
-
*
|
|
11
|
-
* Key responsibilities:
|
|
12
|
-
* - Lazy session bootstrap (extension/skill scanning, model resolution)
|
|
13
|
-
* on first `run()` call.
|
|
14
|
-
* - Map pi's session events to `IAgentCore` callbacks:
|
|
15
|
-
* `message_update / text_delta` → `onText`
|
|
16
|
-
* `tool_execution_start/update/end` → `onTool` (start/update/end)
|
|
17
|
-
* `message_end (assistant role)` → captures the final assistant text
|
|
18
|
-
* - Translate `setModel(provider, model)` into pi-ai's `getModel()` and
|
|
19
|
-
* forward to `session.setModel`. Hot-swap is best-effort — when model
|
|
20
|
-
* resolution fails we keep the previous model and surface a warning.
|
|
21
|
-
* - Honor `abortSignal` by calling `session.abort()`.
|
|
22
|
-
* - Map ARouter / OpenRouter / OpenAI / Anthropic / Google base URLs to
|
|
23
|
-
* pi-ai's known provider env vars (e.g. `OPENROUTER_API_KEY`) so
|
|
24
|
-
* callers can pass a single `outer.apiKey` without exporting
|
|
25
|
-
* provider-specific env names.
|
|
26
|
-
*
|
|
27
|
-
* NOT responsibilities:
|
|
28
|
-
* - Loading extensions (caller passes the resourceLoader options).
|
|
29
|
-
* - Setting up the device — pi extensions read device handles from
|
|
30
|
-
* process env / DEVAGENT_HTTP_URL like before.
|
|
31
|
-
*/
|
|
32
|
-
import { formatUiXmlToolOutput } from "../device/ui-xml.js";
|
|
33
|
-
import { setPiExtensionContext, } from "../pi-context.js";
|
|
34
|
-
import { ORCHESTRATOR_SYSTEM_PROMPT } from "../orchestrator-system-prompt.js";
|
|
35
|
-
// ── Adapter ─────────────────────────────────────────────────────────────
|
|
36
|
-
export class PiOrchestratorAgent {
|
|
37
|
-
session = null;
|
|
38
|
-
starting = null;
|
|
39
|
-
outer;
|
|
40
|
-
projectRoot;
|
|
41
|
-
systemPrompt;
|
|
42
|
-
logger;
|
|
43
|
-
createSessionFactory;
|
|
44
|
-
resolveModelFn;
|
|
45
|
-
mcpProvider;
|
|
46
|
-
grounderFactory;
|
|
47
|
-
mobileUseRunner;
|
|
48
|
-
uiXmlRunner;
|
|
49
|
-
shortcutInvoker;
|
|
50
|
-
shortcutResourcesFactory;
|
|
51
|
-
cachedGrounder = null;
|
|
52
|
-
constructor(opts) {
|
|
53
|
-
this.projectRoot = opts.projectRoot;
|
|
54
|
-
this.outer = { ...opts.outer };
|
|
55
|
-
this.systemPrompt = opts.systemPrompt ?? ORCHESTRATOR_SYSTEM_PROMPT;
|
|
56
|
-
this.logger = opts.logger ?? {
|
|
57
|
-
warn: (..._args) => undefined,
|
|
58
|
-
info: (..._args) => undefined,
|
|
59
|
-
debug: (..._args) => undefined,
|
|
60
|
-
};
|
|
61
|
-
this.createSessionFactory = opts.createSession ?? defaultCreateSession;
|
|
62
|
-
this.resolveModelFn = opts.resolveModel ?? defaultResolveModel;
|
|
63
|
-
this.mcpProvider = opts.mcpProvider;
|
|
64
|
-
this.grounderFactory = opts.grounderFactory;
|
|
65
|
-
this.mobileUseRunner = opts.mobileUseRunner;
|
|
66
|
-
this.uiXmlRunner = opts.uiXmlRunner;
|
|
67
|
-
this.shortcutInvoker = opts.shortcutInvoker;
|
|
68
|
-
this.shortcutResourcesFactory = opts.shortcutResourcesFactory;
|
|
69
|
-
applyOuterEnvMapping(this.outer);
|
|
70
|
-
}
|
|
71
|
-
get modelName() {
|
|
72
|
-
return this.outer.model ?? "";
|
|
73
|
-
}
|
|
74
|
-
get providerName() {
|
|
75
|
-
const inferred = this.outer.provider || inferPiProvider(this.outer.baseUrl ?? "");
|
|
76
|
-
return inferred || undefined;
|
|
77
|
-
}
|
|
78
|
-
async run(opts) {
|
|
79
|
-
if (opts.abortSignal?.aborted) {
|
|
80
|
-
return { finalMessage: "", steps: 0, cancelled: true };
|
|
81
|
-
}
|
|
82
|
-
const session = await this.ensureSession();
|
|
83
|
-
let cancelled = false;
|
|
84
|
-
let toolCount = 0;
|
|
85
|
-
let finalText = "";
|
|
86
|
-
let streamingBuf = "";
|
|
87
|
-
const dispatchTool = async (event) => {
|
|
88
|
-
if (opts.onTool)
|
|
89
|
-
await opts.onTool(event);
|
|
90
|
-
};
|
|
91
|
-
const unsubscribe = session.subscribe(async (event) => {
|
|
92
|
-
switch (event.type) {
|
|
93
|
-
case "message_start": {
|
|
94
|
-
const msg = event.message;
|
|
95
|
-
if (msg?.role === "assistant")
|
|
96
|
-
streamingBuf = "";
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
case "message_update": {
|
|
100
|
-
const ev = event.assistantMessageEvent;
|
|
101
|
-
if (ev?.type === "text_delta" && typeof ev.delta === "string") {
|
|
102
|
-
const delta = ev.delta;
|
|
103
|
-
streamingBuf += delta;
|
|
104
|
-
if (opts.onText)
|
|
105
|
-
await opts.onText(delta);
|
|
106
|
-
}
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
case "message_end": {
|
|
110
|
-
const msg = event.message;
|
|
111
|
-
if (msg?.role === "assistant") {
|
|
112
|
-
if (streamingBuf.length > 0)
|
|
113
|
-
finalText = streamingBuf;
|
|
114
|
-
else {
|
|
115
|
-
const fromBlocks = extractAssistantText(msg);
|
|
116
|
-
if (fromBlocks)
|
|
117
|
-
finalText = fromBlocks;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
case "tool_execution_start": {
|
|
123
|
-
toolCount++;
|
|
124
|
-
const e = event;
|
|
125
|
-
await dispatchTool({
|
|
126
|
-
id: String(e.toolCallId ?? `t-${toolCount}`),
|
|
127
|
-
name: String(e.toolName ?? "tool"),
|
|
128
|
-
args: toRecord(e.args),
|
|
129
|
-
status: "start",
|
|
130
|
-
});
|
|
131
|
-
break;
|
|
132
|
-
}
|
|
133
|
-
case "tool_execution_update": {
|
|
134
|
-
const e = event;
|
|
135
|
-
await dispatchTool({
|
|
136
|
-
id: String(e.toolCallId ?? ""),
|
|
137
|
-
name: String(e.toolName ?? "tool"),
|
|
138
|
-
args: toRecord(e.args),
|
|
139
|
-
status: "update",
|
|
140
|
-
result: e.partialResult,
|
|
141
|
-
});
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
case "tool_execution_end": {
|
|
145
|
-
const e = event;
|
|
146
|
-
await dispatchTool({
|
|
147
|
-
id: String(e.toolCallId ?? ""),
|
|
148
|
-
name: String(e.toolName ?? "tool"),
|
|
149
|
-
args: {},
|
|
150
|
-
status: "end",
|
|
151
|
-
result: e.result,
|
|
152
|
-
isError: !!e.isError,
|
|
153
|
-
});
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
default:
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
let abortHandler = null;
|
|
161
|
-
if (opts.abortSignal) {
|
|
162
|
-
abortHandler = () => {
|
|
163
|
-
cancelled = true;
|
|
164
|
-
session.abort().catch(() => undefined);
|
|
165
|
-
};
|
|
166
|
-
opts.abortSignal.addEventListener("abort", abortHandler, { once: true });
|
|
167
|
-
}
|
|
168
|
-
try {
|
|
169
|
-
await session.prompt(opts.task);
|
|
170
|
-
}
|
|
171
|
-
catch (e) {
|
|
172
|
-
if (cancelled) {
|
|
173
|
-
return {
|
|
174
|
-
finalMessage: finalText || streamingBuf,
|
|
175
|
-
steps: toolCount,
|
|
176
|
-
cancelled: true,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
throw e;
|
|
180
|
-
}
|
|
181
|
-
finally {
|
|
182
|
-
if (abortHandler && opts.abortSignal) {
|
|
183
|
-
opts.abortSignal.removeEventListener("abort", abortHandler);
|
|
184
|
-
}
|
|
185
|
-
unsubscribe();
|
|
186
|
-
}
|
|
187
|
-
// Fall back to the accumulated streaming buffer when we never saw a
|
|
188
|
-
// terminal `message_end` for the assistant — this happens when the
|
|
189
|
-
// upstream session aborts mid-stream, when only non-assistant
|
|
190
|
-
// messages emit `message_end`, or when pi closes the stream early.
|
|
191
|
-
const message = finalText || streamingBuf;
|
|
192
|
-
return { finalMessage: message, steps: toolCount, cancelled };
|
|
193
|
-
}
|
|
194
|
-
async setModel(provider, model) {
|
|
195
|
-
if (!model)
|
|
196
|
-
return;
|
|
197
|
-
this.outer = { ...this.outer, provider, model };
|
|
198
|
-
applyOuterEnvMapping(this.outer);
|
|
199
|
-
if (!this.session)
|
|
200
|
-
return;
|
|
201
|
-
const resolved = this.resolveModelFn(provider, model, this.outer.baseUrl ?? "");
|
|
202
|
-
if (!resolved) {
|
|
203
|
-
this.logger.warn?.({ provider, model, baseUrl: this.outer.baseUrl }, "outer model resolution failed — keeping previous model");
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
try {
|
|
207
|
-
await this.session.setModel(resolved);
|
|
208
|
-
}
|
|
209
|
-
catch (e) {
|
|
210
|
-
this.logger.warn?.({ err: e.message, provider, model }, "session.setModel failed");
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
/** Tear down the underlying pi session. Idempotent. */
|
|
214
|
-
async dispose() {
|
|
215
|
-
const s = this.session;
|
|
216
|
-
this.session = null;
|
|
217
|
-
this.starting = null;
|
|
218
|
-
this.cachedGrounder = null;
|
|
219
|
-
setPiExtensionContext(null);
|
|
220
|
-
if (s) {
|
|
221
|
-
try {
|
|
222
|
-
await s.abort();
|
|
223
|
-
}
|
|
224
|
-
catch {
|
|
225
|
-
/* ignore */
|
|
226
|
-
}
|
|
227
|
-
try {
|
|
228
|
-
s.dispose();
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
/* ignore */
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
// ── Internals ─────────────────────────────────────────────────────────
|
|
236
|
-
buildExtensionContext() {
|
|
237
|
-
// The pi extensions hard-fail when their context is missing, but the
|
|
238
|
-
// test seam (`createSession` injected) often doesn't need the
|
|
239
|
-
// context at all. Only install one when the bootstrap layer
|
|
240
|
-
// explicitly handed us an `mcpProvider`.
|
|
241
|
-
if (!this.mcpProvider)
|
|
242
|
-
return null;
|
|
243
|
-
const mcpProvider = this.mcpProvider;
|
|
244
|
-
const grounderFactory = this.grounderFactory;
|
|
245
|
-
const mobileUseRunner = this.mobileUseRunner;
|
|
246
|
-
const uiXmlRunner = this.uiXmlRunner;
|
|
247
|
-
const shortcutInvoker = this.shortcutInvoker;
|
|
248
|
-
const shortcutResourcesFactory = this.shortcutResourcesFactory;
|
|
249
|
-
return {
|
|
250
|
-
getMcpClient: () => mcpProvider(),
|
|
251
|
-
getGrounder: () => {
|
|
252
|
-
if (this.cachedGrounder)
|
|
253
|
-
return this.cachedGrounder;
|
|
254
|
-
if (!grounderFactory) {
|
|
255
|
-
throw new Error("PiOrchestratorAgent: ground tool invoked but no grounderFactory was provided");
|
|
256
|
-
}
|
|
257
|
-
this.cachedGrounder = grounderFactory();
|
|
258
|
-
return this.cachedGrounder;
|
|
259
|
-
},
|
|
260
|
-
runMobileUse: async (task, maxSteps, abortSignal) => {
|
|
261
|
-
if (!mobileUseRunner) {
|
|
262
|
-
throw new Error("PiOrchestratorAgent: mobile_use tool invoked but no mobileUseRunner was provided");
|
|
263
|
-
}
|
|
264
|
-
return mobileUseRunner(task, maxSteps, abortSignal);
|
|
265
|
-
},
|
|
266
|
-
getUiXml: async (query) => {
|
|
267
|
-
if (uiXmlRunner)
|
|
268
|
-
return uiXmlRunner(query);
|
|
269
|
-
// Default: dump the raw UI XML through the MCP runtime and
|
|
270
|
-
// feed it through `formatUiXmlToolOutput` — same shape the
|
|
271
|
-
// legacy `queryUiXml(device.raw, query)` produced on top of
|
|
272
|
-
// the Android driver. Backends that don't support a UI dump
|
|
273
|
-
// surface a clear "not supported" string so the orchestrator
|
|
274
|
-
// can fall back to `ground`.
|
|
275
|
-
const mcp = mcpProvider();
|
|
276
|
-
const dump = await mcp.uiDump({ format: "raw" });
|
|
277
|
-
if (!dump.supported) {
|
|
278
|
-
return "UI XML is not supported on this backend (use `ground` to locate elements)";
|
|
279
|
-
}
|
|
280
|
-
const xml = dump.content ?? "";
|
|
281
|
-
return formatUiXmlToolOutput(xml, query);
|
|
282
|
-
},
|
|
283
|
-
// Shortcut KB — outer-LLM-visible. Throws when not wired so a
|
|
284
|
-
// mis-bootstrapped extension fails loud instead of silently
|
|
285
|
-
// exposing zero shortcuts (which the orchestrator would interpret
|
|
286
|
-
// as "no hybrid action space available", causing it to default to
|
|
287
|
-
// mobile_use + manual GUI navigation).
|
|
288
|
-
getShortcutKB: () => {
|
|
289
|
-
if (!shortcutInvoker) {
|
|
290
|
-
throw new Error("PiOrchestratorAgent: getShortcutKB() invoked but no shortcutInvoker was provided " +
|
|
291
|
-
"(bootstrap must wire `shortcutInvoker: new ShortcutRouter(reg)`).");
|
|
292
|
-
}
|
|
293
|
-
return shortcutInvoker;
|
|
294
|
-
},
|
|
295
|
-
getShortcutResources: () => shortcutResourcesFactory?.(),
|
|
296
|
-
// INTERNAL-ONLY (D9). See pi-context.ts comment block.
|
|
297
|
-
// We keep the implementation simple — go straight through the MCP
|
|
298
|
-
// runtime — because shortcuts are always called from inside a
|
|
299
|
-
// structured `ShortcutContext`, never re-exposed to the LLM.
|
|
300
|
-
runShell: async (command, opts) => {
|
|
301
|
-
const mcp = mcpProvider();
|
|
302
|
-
if (typeof mcp.executeCommand !== "function") {
|
|
303
|
-
throw new Error("PiOrchestratorAgent.runShell: active MCP runtime does not implement executeCommand");
|
|
304
|
-
}
|
|
305
|
-
const tCallOpts = {};
|
|
306
|
-
if (opts?.timeoutMs !== undefined) {
|
|
307
|
-
tCallOpts.timeoutS = Math.ceil(opts.timeoutMs / 1000);
|
|
308
|
-
}
|
|
309
|
-
// The MCP runtime does not currently expose AbortSignal —
|
|
310
|
-
// we can't preempt mid-call. The router's wrapper enforces a
|
|
311
|
-
// ceiling, so the caller's signal is honored end-to-end on
|
|
312
|
-
// the loop boundary even if the in-flight `executeCommand`
|
|
313
|
-
// can't be cancelled mid-stream. (D2 keeps task:start early
|
|
314
|
-
// enough that this is a non-issue for Phase 2.)
|
|
315
|
-
const res = await mcp.executeCommand(command, tCallOpts);
|
|
316
|
-
return res;
|
|
317
|
-
},
|
|
318
|
-
pushFile: async (path, bytes) => {
|
|
319
|
-
const mcp = mcpProvider();
|
|
320
|
-
if (typeof mcp.fileWrite !== "function") {
|
|
321
|
-
throw new Error("PiOrchestratorAgent.pushFile: active MCP runtime does not implement fileWrite");
|
|
322
|
-
}
|
|
323
|
-
await mcp.fileWrite(path, bytes);
|
|
324
|
-
},
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
ensureSession() {
|
|
328
|
-
if (this.session)
|
|
329
|
-
return Promise.resolve(this.session);
|
|
330
|
-
if (this.starting)
|
|
331
|
-
return this.starting;
|
|
332
|
-
const promise = (async () => {
|
|
333
|
-
// Install the extension context BEFORE the resource loader runs:
|
|
334
|
-
// pi calls each extension's `default(api)` during `loader.reload()`,
|
|
335
|
-
// which today only registers tools (no immediate context reads),
|
|
336
|
-
// but we want the singleton ready in case an extension decides to
|
|
337
|
-
// pre-warm a device handle.
|
|
338
|
-
const ctx = this.buildExtensionContext();
|
|
339
|
-
if (ctx)
|
|
340
|
-
setPiExtensionContext(ctx);
|
|
341
|
-
const provider = this.outer.provider || inferPiProvider(this.outer.baseUrl ?? "");
|
|
342
|
-
const model = this.outer.model
|
|
343
|
-
? this.resolveModelFn(provider, this.outer.model, this.outer.baseUrl ?? "")
|
|
344
|
-
: undefined;
|
|
345
|
-
const sess = await this.createSessionFactory({
|
|
346
|
-
projectRoot: this.projectRoot,
|
|
347
|
-
systemPrompt: this.systemPrompt,
|
|
348
|
-
model,
|
|
349
|
-
});
|
|
350
|
-
this.session = sess;
|
|
351
|
-
return sess;
|
|
352
|
-
})();
|
|
353
|
-
this.starting = promise;
|
|
354
|
-
// Clear `starting` after settlement so a subsequent failed run can
|
|
355
|
-
// re-attempt initialisation. On failure, clear the extension context
|
|
356
|
-
// too so a stale context doesn't survive across retries.
|
|
357
|
-
promise.then(() => {
|
|
358
|
-
if (this.starting === promise)
|
|
359
|
-
this.starting = null;
|
|
360
|
-
}, () => {
|
|
361
|
-
if (this.starting === promise)
|
|
362
|
-
this.starting = null;
|
|
363
|
-
setPiExtensionContext(null);
|
|
364
|
-
});
|
|
365
|
-
return promise;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
// ── Helpers ────────────────────────────────────────────────────────────
|
|
369
|
-
/**
|
|
370
|
-
* Map our generic outer config to pi-ai's env-var contract. pi-ai reads
|
|
371
|
-
* provider-specific keys (e.g. `OPENROUTER_API_KEY`) from `process.env`,
|
|
372
|
-
* so we transparently set them when the caller hands us `outer.apiKey`
|
|
373
|
-
* + a recognised baseUrl. Never overwrites a key the caller already set.
|
|
374
|
-
*
|
|
375
|
-
* Recognised hosts:
|
|
376
|
-
* - openrouter.ai / arouter.ai → OPENROUTER_API_KEY
|
|
377
|
-
* - api.openai.com → OPENAI_API_KEY
|
|
378
|
-
* - api.anthropic.com → ANTHROPIC_API_KEY
|
|
379
|
-
* - generativelanguage.googleapis.com → GEMINI_API_KEY
|
|
380
|
-
*/
|
|
381
|
-
export function applyOuterEnvMapping(outer) {
|
|
382
|
-
const key = outer.apiKey;
|
|
383
|
-
if (!key)
|
|
384
|
-
return;
|
|
385
|
-
const provider = (outer.provider || "").toLowerCase();
|
|
386
|
-
const url = (outer.baseUrl ?? "").toLowerCase();
|
|
387
|
-
const candidates = [provider, url];
|
|
388
|
-
const matchesAny = (needles) => candidates.some((c) => needles.some((n) => c.includes(n)));
|
|
389
|
-
if (matchesAny(["openrouter", "arouter.ai"])) {
|
|
390
|
-
if (!process.env.OPENROUTER_API_KEY)
|
|
391
|
-
process.env.OPENROUTER_API_KEY = key;
|
|
392
|
-
}
|
|
393
|
-
else if (matchesAny(["anthropic"])) {
|
|
394
|
-
if (!process.env.ANTHROPIC_API_KEY)
|
|
395
|
-
process.env.ANTHROPIC_API_KEY = key;
|
|
396
|
-
}
|
|
397
|
-
else if (matchesAny(["openai", "api.openai.com"])) {
|
|
398
|
-
if (!process.env.OPENAI_API_KEY)
|
|
399
|
-
process.env.OPENAI_API_KEY = key;
|
|
400
|
-
}
|
|
401
|
-
else if (matchesAny(["gemini", "generativelanguage.googleapis.com", "google"])) {
|
|
402
|
-
if (!process.env.GEMINI_API_KEY)
|
|
403
|
-
process.env.GEMINI_API_KEY = key;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
/** Infer the pi-ai provider tag from a base URL. */
|
|
407
|
-
export function inferPiProvider(baseUrl) {
|
|
408
|
-
const url = (baseUrl ?? "").toLowerCase();
|
|
409
|
-
if (!url)
|
|
410
|
-
return "";
|
|
411
|
-
if (url.includes("openrouter.ai") || url.includes("arouter.ai"))
|
|
412
|
-
return "openrouter";
|
|
413
|
-
if (url.includes("api.openai.com"))
|
|
414
|
-
return "openai";
|
|
415
|
-
if (url.includes("anthropic.com"))
|
|
416
|
-
return "anthropic";
|
|
417
|
-
if (url.includes("generativelanguage.googleapis.com"))
|
|
418
|
-
return "google";
|
|
419
|
-
return "";
|
|
420
|
-
}
|
|
421
|
-
function toRecord(v) {
|
|
422
|
-
if (v && typeof v === "object" && !Array.isArray(v))
|
|
423
|
-
return v;
|
|
424
|
-
return {};
|
|
425
|
-
}
|
|
426
|
-
function extractAssistantText(message) {
|
|
427
|
-
if (message.role !== "assistant")
|
|
428
|
-
return "";
|
|
429
|
-
const c = message.content;
|
|
430
|
-
if (typeof c === "string")
|
|
431
|
-
return c;
|
|
432
|
-
if (!Array.isArray(c))
|
|
433
|
-
return "";
|
|
434
|
-
const parts = [];
|
|
435
|
-
for (const block of c) {
|
|
436
|
-
if (block &&
|
|
437
|
-
typeof block === "object" &&
|
|
438
|
-
"type" in block &&
|
|
439
|
-
block.type === "text") {
|
|
440
|
-
const t = block.text;
|
|
441
|
-
if (t)
|
|
442
|
-
parts.push(t);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
return parts.join("");
|
|
446
|
-
}
|
|
447
|
-
// ── Default pi-ai / pi-coding-agent factory ─────────────────────────────
|
|
448
|
-
function defaultResolveModel(provider, modelId, baseUrl) {
|
|
449
|
-
if (!modelId)
|
|
450
|
-
return undefined;
|
|
451
|
-
const piProvider = (provider || inferPiProvider(baseUrl)).toLowerCase();
|
|
452
|
-
if (!piProvider)
|
|
453
|
-
return undefined;
|
|
454
|
-
let model;
|
|
455
|
-
try {
|
|
456
|
-
// pi-ai is a peer dep of pi-coding-agent which is already imported by
|
|
457
|
-
// chat.ts; it's safe to require here. Wrap in try/catch so a missing
|
|
458
|
-
// optional install doesn't blow up the whole adapter — `legacyInner`
|
|
459
|
-
// users may opt out.
|
|
460
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
461
|
-
const piAi = require("@mariozechner/pi-ai");
|
|
462
|
-
model = piAi.getModel(piProvider, modelId);
|
|
463
|
-
}
|
|
464
|
-
catch {
|
|
465
|
-
return undefined;
|
|
466
|
-
}
|
|
467
|
-
// ARouter is OpenRouter-compatible but lives at a different host. When
|
|
468
|
-
// the user explicitly pointed `outer.baseUrl` at arouter.ai (or another
|
|
469
|
-
// OpenRouter-clone), rewrite the resolved model's baseUrl so pi-ai's
|
|
470
|
-
// upstream HTTP call hits the right endpoint.
|
|
471
|
-
if (baseUrl && (baseUrl.toLowerCase().includes("arouter.ai") || piProvider === "openrouter")) {
|
|
472
|
-
const trimmed = baseUrl.replace(/\/$/, "");
|
|
473
|
-
if (trimmed && !trimmed.includes("openrouter.ai")) {
|
|
474
|
-
const suffix = trimmed.endsWith("/api/v1") || trimmed.endsWith("/v1") ? "" : "/api/v1";
|
|
475
|
-
model = { ...model, baseUrl: `${trimmed}${suffix}` };
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
return model;
|
|
479
|
-
}
|
|
480
|
-
const defaultCreateSession = async (cfg) => {
|
|
481
|
-
// Lazy-load to keep the adapter import-safe in environments where
|
|
482
|
-
// `@mariozechner/pi-coding-agent` isn't installed (e.g. tests using
|
|
483
|
-
// `legacyInner`).
|
|
484
|
-
const piAgent = (await import("@mariozechner/pi-coding-agent"));
|
|
485
|
-
const { createAgentSession, DefaultResourceLoader, getAgentDir } = piAgent;
|
|
486
|
-
const localSkills = await loadProjectSkillsLoaderOptions(cfg.projectRoot);
|
|
487
|
-
const loader = new DefaultResourceLoader({
|
|
488
|
-
cwd: cfg.projectRoot,
|
|
489
|
-
agentDir: getAgentDir(),
|
|
490
|
-
...(cfg.systemPrompt ? { systemPromptOverride: () => cfg.systemPrompt } : {}),
|
|
491
|
-
...localSkills,
|
|
492
|
-
});
|
|
493
|
-
await loader.reload();
|
|
494
|
-
const result = await createAgentSession({
|
|
495
|
-
resourceLoader: loader,
|
|
496
|
-
...(cfg.model ? { model: cfg.model } : {}),
|
|
497
|
-
});
|
|
498
|
-
return result.session;
|
|
499
|
-
};
|
|
500
|
-
async function loadProjectSkillsLoaderOptions(projectRoot) {
|
|
501
|
-
try {
|
|
502
|
-
// The helper lives in the same package — we keep it on disk so the
|
|
503
|
-
// existing chat.ts CLI keeps working. Lazy-import to avoid a hard
|
|
504
|
-
// cycle through the public barrel.
|
|
505
|
-
const mod = (await import("../pi-local-skills.js"));
|
|
506
|
-
return mod.projectPiSkillsLoaderOptions?.(projectRoot) ?? {};
|
|
507
|
-
}
|
|
508
|
-
catch {
|
|
509
|
-
return {};
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
//# sourceMappingURL=agentcore-pi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agentcore-pi.js","sourceRoot":"","sources":["../../src/adapters/agentcore-pi.ts"],"names":[],"mappings":"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"}
|
package/dist/chat.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Standalone interactive chat CLI for the two-layer agent.
|
|
3
|
-
*
|
|
4
|
-
* Same UX as before — `pnpm run chat` opens a REPL that drives the outer
|
|
5
|
-
* orchestrator (pi-coding-agent) over `ORCH_*` env vars, with the inner
|
|
6
|
-
* `mobile_use` / `ground` / `ui_xml` extensions loaded from
|
|
7
|
-
* `<projectRoot>/.pi/extensions/`. Internally it now goes through the
|
|
8
|
-
* `PiOrchestratorAgent` adapter so there is exactly **one** code path
|
|
9
|
-
* for "construct a pi session with our system prompt and our extension
|
|
10
|
-
* context", shared with the production `bootstrap.ts` flow.
|
|
11
|
-
*
|
|
12
|
-
* `chat.ts` does NOT start the ACP bridge / HTTP debug / agent-sync
|
|
13
|
-
* plugins; it's a developer convenience to manually drive the agent
|
|
14
|
-
* against a local device. For production runs use `pnpm start`.
|
|
15
|
-
*/
|
|
16
|
-
import "dotenv/config";
|