codebase-cli 2.0.0-pre.2 → 2.0.0-pre.20
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/agent/agent.js +2 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/config.js +76 -9
- package/dist/agent/config.js.map +1 -1
- package/dist/app-server/protocol.js +7 -0
- package/dist/app-server/protocol.js.map +1 -0
- package/dist/app-server/server.js +241 -0
- package/dist/app-server/server.js.map +1 -0
- package/dist/auth/flow.js +174 -41
- package/dist/auth/flow.js.map +1 -1
- package/dist/cli.js +47 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/builtins.js +88 -5
- package/dist/commands/builtins.js.map +1 -1
- package/dist/commands/registry.js +46 -1
- package/dist/commands/registry.js.map +1 -1
- package/dist/headless/run.js +1 -1
- package/dist/headless/run.js.map +1 -1
- package/dist/permissions/store.js +4 -0
- package/dist/permissions/store.js.map +1 -1
- package/dist/projects/cli.js +92 -0
- package/dist/projects/cli.js.map +1 -0
- package/dist/projects/client.js +120 -0
- package/dist/projects/client.js.map +1 -0
- package/dist/projects/types.js +2 -0
- package/dist/projects/types.js.map +1 -0
- package/dist/skills/platform-loader.js +133 -38
- package/dist/skills/platform-loader.js.map +1 -1
- package/dist/ui/App.js +122 -12
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/FirstRunSetup.js +90 -15
- package/dist/ui/FirstRunSetup.js.map +1 -1
- package/dist/ui/Input.js +245 -13
- package/dist/ui/Input.js.map +1 -1
- package/dist/ui/Markdown.js +286 -0
- package/dist/ui/Markdown.js.map +1 -0
- package/dist/ui/Message.js +449 -25
- package/dist/ui/Message.js.map +1 -1
- package/dist/ui/MessageList.js +7 -2
- package/dist/ui/MessageList.js.map +1 -1
- package/dist/ui/Permission.js +43 -20
- package/dist/ui/Permission.js.map +1 -1
- package/dist/ui/PixelC.js +25 -0
- package/dist/ui/PixelC.js.map +1 -0
- package/dist/ui/Status.js +213 -7
- package/dist/ui/Status.js.map +1 -1
- package/dist/ui/Throbber.js +11 -7
- package/dist/ui/Throbber.js.map +1 -1
- package/dist/ui/Welcome.js +59 -0
- package/dist/ui/Welcome.js.map +1 -0
- package/dist/ui/attachments.js +68 -0
- package/dist/ui/attachments.js.map +1 -0
- package/dist/ui/debug-input.js +44 -0
- package/dist/ui/debug-input.js.map +1 -0
- package/dist/ui/highlight.js +324 -0
- package/dist/ui/highlight.js.map +1 -0
- package/dist/ui/history-store.js +60 -0
- package/dist/ui/history-store.js.map +1 -0
- package/dist/ui/path-complete.js +102 -0
- package/dist/ui/path-complete.js.map +1 -0
- package/dist/ui/terminal-restore.js +83 -0
- package/dist/ui/terminal-restore.js.map +1 -0
- package/package.json +3 -1
package/dist/agent/agent.js
CHANGED
|
@@ -43,6 +43,7 @@ export function createAgent(opts = {}) {
|
|
|
43
43
|
const permissions = new PermissionStore({
|
|
44
44
|
allowPatterns: config.allowPatterns(),
|
|
45
45
|
denyPatterns: config.denyPatterns(),
|
|
46
|
+
autoApprove: opts.autoApprove,
|
|
46
47
|
});
|
|
47
48
|
const userQueries = new UserQueryStore();
|
|
48
49
|
const planMode = new PlanModeStore();
|
|
@@ -207,6 +208,7 @@ export function createAgent(opts = {}) {
|
|
|
207
208
|
hooks,
|
|
208
209
|
diagnostics,
|
|
209
210
|
subscribe,
|
|
211
|
+
resumedFrom: resumed ? { updatedAt: resumed.updatedAt, messageCount: resumed.messages.length } : undefined,
|
|
210
212
|
};
|
|
211
213
|
}
|
|
212
214
|
//# sourceMappingURL=agent.js.map
|
package/dist/agent/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,KAAK,EAAmB,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAuB,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;AAElH;;;;;GAKG;AACH,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IACtD,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,eAAe;IACf,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,gBAAgB;IAChB,eAAe;CACf,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/config.js
CHANGED
|
@@ -65,6 +65,22 @@ export function resolveConfig(envOrOpts = process.env) {
|
|
|
65
65
|
return proxied;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
+
// 2. OpenAI-compatible custom endpoint. Triggers when the user has
|
|
69
|
+
// set OPENAI_BASE_URL alongside an api key — that combination
|
|
70
|
+
// only makes sense for a custom Chat Completions backend (Groq,
|
|
71
|
+
// Ollama, MiniMax in-house, Qwen in-house, vLLM, …). pi-ai's
|
|
72
|
+
// registry only knows about a fixed set of providers/models, so
|
|
73
|
+
// we synthesize a Model object on the fly using a known
|
|
74
|
+
// chat-completions template and overriding id + baseUrl.
|
|
75
|
+
if (env.OPENAI_BASE_URL && env.OPENAI_API_KEY && env.OPENAI_MODEL) {
|
|
76
|
+
const compat = buildOpenAiCompatConfig({
|
|
77
|
+
baseUrl: env.OPENAI_BASE_URL,
|
|
78
|
+
modelId: env.OPENAI_MODEL,
|
|
79
|
+
apiKey: env.OPENAI_API_KEY,
|
|
80
|
+
});
|
|
81
|
+
if (compat)
|
|
82
|
+
return compat;
|
|
83
|
+
}
|
|
68
84
|
const explicitProvider = env.CODEBASE_PROVIDER;
|
|
69
85
|
const explicitModel = env.CODEBASE_MODEL;
|
|
70
86
|
if (explicitProvider && explicitModel) {
|
|
@@ -97,26 +113,77 @@ export function resolveConfig(envOrOpts = process.env) {
|
|
|
97
113
|
"Or set CODEBASE_PROVIDER + CODEBASE_MODEL explicitly.");
|
|
98
114
|
}
|
|
99
115
|
/**
|
|
100
|
-
* Build a model
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
116
|
+
* Build a model that routes through codebase.design's inference proxy.
|
|
117
|
+
*
|
|
118
|
+
* Default when signed in via OAuth: "Codebase Auto" — the in-house
|
|
119
|
+
* MiniMax-M2.7 served via the openai-compat protocol. This matches
|
|
120
|
+
* what the web app calls the same model (`codebase` provider in
|
|
121
|
+
* web/backend/providers/registry.js).
|
|
122
|
+
*
|
|
123
|
+
* Override via env: CODEBASE_PROVIDER + CODEBASE_MODEL still pick a
|
|
124
|
+
* specific upstream from pi-ai's registry, also routed through the
|
|
125
|
+
* proxy. The proxy dispatches by the model id in the request body +
|
|
126
|
+
* the bearer scope on the token, so this works for any model the
|
|
127
|
+
* user's account has access to.
|
|
105
128
|
*/
|
|
106
129
|
function buildProxiedConfig(env, accessToken) {
|
|
107
130
|
const explicitProvider = env.CODEBASE_PROVIDER;
|
|
108
131
|
const explicitModel = env.CODEBASE_MODEL;
|
|
109
|
-
const
|
|
110
|
-
|
|
132
|
+
const proxyBase = (env.CODEBASE_PROXY_BASE_URL ?? DEFAULT_PROXY_BASE).replace(/\/+$/, "");
|
|
133
|
+
// Default: "Codebase Auto" — synthesized openai-compat model.
|
|
134
|
+
// Can't use pi-ai's registry here because "codebase" isn't a
|
|
135
|
+
// KnownProvider; clone a known chat-completions model and override.
|
|
136
|
+
if (!explicitProvider) {
|
|
137
|
+
const template = getModel("groq", "llama-3.3-70b-versatile");
|
|
138
|
+
if (!template)
|
|
139
|
+
return null;
|
|
140
|
+
const model = {
|
|
141
|
+
...template,
|
|
142
|
+
id: "MiniMax-M2.7",
|
|
143
|
+
name: "Codebase Auto",
|
|
144
|
+
baseUrl: proxyBase,
|
|
145
|
+
// Override provider so the status bar and /model don't lie about
|
|
146
|
+
// where this is served from. pi-ai uses `provider` mainly for
|
|
147
|
+
// display + a few baseUrl heuristics; the request body sends
|
|
148
|
+
// `model.id` only, so this cast is safe.
|
|
149
|
+
provider: "codebase",
|
|
150
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
151
|
+
};
|
|
152
|
+
return { model, apiKey: accessToken, source: "proxy" };
|
|
153
|
+
}
|
|
154
|
+
const modelId = explicitModel ?? DEFAULT_MODELS[explicitProvider];
|
|
111
155
|
if (!modelId)
|
|
112
156
|
return null;
|
|
113
|
-
const baseModel = getModel(
|
|
157
|
+
const baseModel = getModel(explicitProvider, modelId);
|
|
114
158
|
if (!baseModel)
|
|
115
159
|
return null;
|
|
116
|
-
const proxyBase = (env.CODEBASE_PROXY_BASE_URL ?? DEFAULT_PROXY_BASE).replace(/\/+$/, "");
|
|
117
160
|
const proxiedModel = { ...baseModel, baseUrl: proxyBase };
|
|
118
161
|
return { model: proxiedModel, apiKey: accessToken, source: "proxy" };
|
|
119
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* OpenAI Chat-Completions compatible custom endpoint. Used by
|
|
165
|
+
* MiniMax in-house, Qwen in-house, Groq custom URLs, Ollama, vLLM,
|
|
166
|
+
* any tinybox running a Chat Completions server. Synthesizes a
|
|
167
|
+
* Model<"openai-completions"> by cloning a known model from the
|
|
168
|
+
* registry and overriding the id + baseUrl. Cost is unknown so we
|
|
169
|
+
* zero it — /cost will report $0 for these runs, which is honest
|
|
170
|
+
* (we don't know the rate) rather than wrong.
|
|
171
|
+
*/
|
|
172
|
+
function buildOpenAiCompatConfig(opts) {
|
|
173
|
+
// groq's llama-3.3-70b-versatile uses "openai-completions" — the
|
|
174
|
+
// closest match for what MiniMax / Qwen in-house actually serve.
|
|
175
|
+
const template = getModel("groq", "llama-3.3-70b-versatile");
|
|
176
|
+
if (!template)
|
|
177
|
+
return null;
|
|
178
|
+
const model = {
|
|
179
|
+
...template,
|
|
180
|
+
id: opts.modelId,
|
|
181
|
+
name: opts.modelId,
|
|
182
|
+
baseUrl: opts.baseUrl.replace(/\/+$/, ""),
|
|
183
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
184
|
+
};
|
|
185
|
+
return { model, apiKey: opts.apiKey, source: "explicit" };
|
|
186
|
+
}
|
|
120
187
|
/**
|
|
121
188
|
* BYOK mode: caller has saved a provider's own API key. Use the
|
|
122
189
|
* provider's normal baseUrl from pi-ai's registry — no proxy.
|
package/dist/agent/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agent/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function isCommand(value) {
|
|
2
|
+
return typeof value === "object" && value !== null && typeof value.type === "string";
|
|
3
|
+
}
|
|
4
|
+
export function buildErrorResponse(id, command, error) {
|
|
5
|
+
return { id, type: "response", command, success: false, error };
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/app-server/protocol.ts"],"names":[],"mappings":"AA4HA,MAAM,UAAU,SAAS,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAsB,EAAE,OAAe,EAAE,KAAa;IACxF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { createInterface } from "node:readline";
|
|
2
|
+
import { createAgent } from "../agent/agent.js";
|
|
3
|
+
import { ConfigError } from "../agent/config.js";
|
|
4
|
+
import { buildErrorResponse, isCommand, } from "./protocol.js";
|
|
5
|
+
const USER_AGENT = "codebase-cli/app-server";
|
|
6
|
+
const EMPTY_USAGE = {
|
|
7
|
+
input: 0,
|
|
8
|
+
output: 0,
|
|
9
|
+
cacheRead: 0,
|
|
10
|
+
cacheWrite: 0,
|
|
11
|
+
totalTokens: 0,
|
|
12
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Start the JSON-RPC server on stdio.
|
|
16
|
+
*
|
|
17
|
+
* One connection = one agent instance = one session. The function
|
|
18
|
+
* resolves when stdin is closed; the caller (cli.tsx) exits with the
|
|
19
|
+
* returned exit code.
|
|
20
|
+
*/
|
|
21
|
+
export async function runAppServer(opts = {}) {
|
|
22
|
+
const stdin = opts.stdin ?? process.stdin;
|
|
23
|
+
const stdout = opts.stdout ?? process.stdout;
|
|
24
|
+
const stderr = opts.stderr ?? process.stderr;
|
|
25
|
+
function send(message) {
|
|
26
|
+
stdout.write(`${JSON.stringify(message)}\n`);
|
|
27
|
+
}
|
|
28
|
+
function fatal(error) {
|
|
29
|
+
send({ type: "event", event: { type: "server_error", message: error } });
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
let bundle;
|
|
33
|
+
try {
|
|
34
|
+
bundle = createAgent({ resume: opts.resume, autoApprove: opts.autoApprove });
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
const msg = e instanceof ConfigError ? e.message : e instanceof Error ? e.message : String(e);
|
|
38
|
+
stderr.write(`app-server: ${msg}\n`);
|
|
39
|
+
return fatal(msg);
|
|
40
|
+
}
|
|
41
|
+
let totalUsage = { ...EMPTY_USAGE, cost: { ...EMPTY_USAGE.cost } };
|
|
42
|
+
let status = "idle";
|
|
43
|
+
let pendingPermission;
|
|
44
|
+
let inFlightPrompt = null;
|
|
45
|
+
// ─── outbound: forward agent events + track status ──────────────────
|
|
46
|
+
const unsubscribeAgent = bundle.subscribe((event) => {
|
|
47
|
+
// Update local status mirror for get_state queries.
|
|
48
|
+
if (event.type === "agent_start" || event.type === "turn_start") {
|
|
49
|
+
status = "thinking";
|
|
50
|
+
}
|
|
51
|
+
else if (event.type === "message_update" && event.message.role === "assistant") {
|
|
52
|
+
status = "streaming";
|
|
53
|
+
}
|
|
54
|
+
else if (event.type === "tool_execution_start") {
|
|
55
|
+
status = "tool";
|
|
56
|
+
}
|
|
57
|
+
else if (event.type === "tool_execution_end") {
|
|
58
|
+
status = "thinking";
|
|
59
|
+
}
|
|
60
|
+
else if (event.type === "agent_end") {
|
|
61
|
+
status = "idle";
|
|
62
|
+
}
|
|
63
|
+
// Accumulate usage from message_end events (pi-agent-core
|
|
64
|
+
// emits per-message usage there).
|
|
65
|
+
if (event.type === "message_end") {
|
|
66
|
+
const candidate = event.message.usage;
|
|
67
|
+
if (candidate) {
|
|
68
|
+
totalUsage = mergeUsage(totalUsage, candidate);
|
|
69
|
+
send({ type: "event", event: { type: "usage_update", usage: totalUsage } });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
send({ type: "event", event });
|
|
73
|
+
});
|
|
74
|
+
// ─── permission requests: forward to the extension ─────────────────
|
|
75
|
+
const unsubscribePerms = bundle.permissions.subscribe((req) => {
|
|
76
|
+
if (!req) {
|
|
77
|
+
if (pendingPermission) {
|
|
78
|
+
pendingPermission = undefined;
|
|
79
|
+
send({ type: "event", event: { type: "permission_cleared" } });
|
|
80
|
+
}
|
|
81
|
+
status = inFlightPrompt ? "thinking" : "idle";
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
pendingPermission = {
|
|
85
|
+
id: req.id,
|
|
86
|
+
tool: req.tool,
|
|
87
|
+
summary: req.summary,
|
|
88
|
+
detail: req.detail,
|
|
89
|
+
risk: req.risk,
|
|
90
|
+
};
|
|
91
|
+
status = "awaiting-permission";
|
|
92
|
+
send({
|
|
93
|
+
type: "event",
|
|
94
|
+
event: { type: "permission_request", request: pendingPermission },
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
// ─── inbound: line-by-line JSONL on stdin ───────────────────────────
|
|
98
|
+
const reader = createInterface({ input: stdin, crlfDelay: Infinity });
|
|
99
|
+
send({ type: "event", event: { type: "server_ready" } });
|
|
100
|
+
let initialized = false;
|
|
101
|
+
for await (const line of reader) {
|
|
102
|
+
const trimmed = line.trim();
|
|
103
|
+
if (!trimmed)
|
|
104
|
+
continue;
|
|
105
|
+
let command;
|
|
106
|
+
try {
|
|
107
|
+
command = JSON.parse(trimmed);
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
send(buildErrorResponse(undefined, "parse", `JSON parse error: ${e instanceof Error ? e.message : String(e)}`));
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
if (!isCommand(command)) {
|
|
114
|
+
send(buildErrorResponse(undefined, "parse", "command must be an object with a `type` field"));
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const c = command;
|
|
118
|
+
// Gate everything except initialize until we're initialized.
|
|
119
|
+
if (!initialized && c.type !== "initialize") {
|
|
120
|
+
send(buildErrorResponse(c.id, c.type, "send `initialize` first"));
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const response = await dispatch(c);
|
|
125
|
+
if (response)
|
|
126
|
+
send(response);
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
send(buildErrorResponse(c.id, c.type, e instanceof Error ? e.message : String(e)));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
unsubscribeAgent();
|
|
133
|
+
unsubscribePerms();
|
|
134
|
+
return 0;
|
|
135
|
+
// ─── command dispatch ──────────────────────────────────────────────
|
|
136
|
+
async function dispatch(c) {
|
|
137
|
+
switch (c.type) {
|
|
138
|
+
case "initialize": {
|
|
139
|
+
initialized = true;
|
|
140
|
+
const model = modelInfo();
|
|
141
|
+
return {
|
|
142
|
+
id: c.id,
|
|
143
|
+
type: "response",
|
|
144
|
+
command: "initialize",
|
|
145
|
+
success: true,
|
|
146
|
+
data: { userAgent: USER_AGENT, model, source: bundle.source },
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
case "prompt": {
|
|
150
|
+
if (inFlightPrompt) {
|
|
151
|
+
return buildErrorResponse(c.id, c.type, "a prompt is already in flight — abort first");
|
|
152
|
+
}
|
|
153
|
+
// Fire-and-forget; the response just acknowledges receipt.
|
|
154
|
+
// The real work surfaces via the agent event stream. Pi's
|
|
155
|
+
// `prompt(text, images?)` overload handles multimodal input
|
|
156
|
+
// transparently — base64-encoded image bytes plus mimeType.
|
|
157
|
+
const images = c.images && c.images.length > 0 ? [...c.images] : undefined;
|
|
158
|
+
inFlightPrompt = bundle.agent
|
|
159
|
+
.prompt(c.message, images)
|
|
160
|
+
.catch((err) => {
|
|
161
|
+
send(buildErrorResponse(undefined, "prompt", err instanceof Error ? err.message : String(err)));
|
|
162
|
+
})
|
|
163
|
+
.finally(() => {
|
|
164
|
+
inFlightPrompt = null;
|
|
165
|
+
});
|
|
166
|
+
return { id: c.id, type: "response", command: "prompt", success: true };
|
|
167
|
+
}
|
|
168
|
+
case "abort": {
|
|
169
|
+
bundle.agent.abort();
|
|
170
|
+
return { id: c.id, type: "response", command: "abort", success: true };
|
|
171
|
+
}
|
|
172
|
+
case "get_state": {
|
|
173
|
+
return {
|
|
174
|
+
id: c.id,
|
|
175
|
+
type: "response",
|
|
176
|
+
command: "get_state",
|
|
177
|
+
success: true,
|
|
178
|
+
data: buildState(),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
case "get_messages": {
|
|
182
|
+
return {
|
|
183
|
+
id: c.id,
|
|
184
|
+
type: "response",
|
|
185
|
+
command: "get_messages",
|
|
186
|
+
success: true,
|
|
187
|
+
data: { messages: bundle.agent.state.messages },
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
case "set_model": {
|
|
191
|
+
// Light-touch: pi-agent-core's Agent exposes a `state.model`
|
|
192
|
+
// setter, but switching mid-session requires careful handling
|
|
193
|
+
// of in-flight requests. For now we reject — the user picks
|
|
194
|
+
// the model at startup via env vars and we just report it.
|
|
195
|
+
return buildErrorResponse(c.id, c.type, "set_model is not yet supported in app-server mode — set CODEBASE_PROVIDER + CODEBASE_MODEL before launch");
|
|
196
|
+
}
|
|
197
|
+
case "permission_respond": {
|
|
198
|
+
if (!pendingPermission || pendingPermission.id !== c.requestId) {
|
|
199
|
+
return buildErrorResponse(c.id, c.type, "no matching pending permission request");
|
|
200
|
+
}
|
|
201
|
+
bundle.permissions.respond(c.requestId, c.choice);
|
|
202
|
+
return { id: c.id, type: "response", command: "permission_respond", success: true };
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function modelInfo() {
|
|
207
|
+
return {
|
|
208
|
+
provider: bundle.model.provider,
|
|
209
|
+
id: bundle.model.id,
|
|
210
|
+
name: bundle.model.name,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function buildState() {
|
|
214
|
+
return {
|
|
215
|
+
model: modelInfo(),
|
|
216
|
+
source: bundle.source,
|
|
217
|
+
status,
|
|
218
|
+
messageCount: bundle.agent.state.messages.length,
|
|
219
|
+
usage: totalUsage,
|
|
220
|
+
cwd: bundle.toolContext.cwd,
|
|
221
|
+
pendingPermission,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function mergeUsage(a, b) {
|
|
226
|
+
return {
|
|
227
|
+
input: a.input + b.input,
|
|
228
|
+
output: a.output + b.output,
|
|
229
|
+
cacheRead: a.cacheRead + b.cacheRead,
|
|
230
|
+
cacheWrite: a.cacheWrite + b.cacheWrite,
|
|
231
|
+
totalTokens: a.totalTokens + b.totalTokens,
|
|
232
|
+
cost: {
|
|
233
|
+
input: a.cost.input + b.cost.input,
|
|
234
|
+
output: a.cost.output + b.cost.output,
|
|
235
|
+
cacheRead: a.cost.cacheRead + b.cost.cacheRead,
|
|
236
|
+
cacheWrite: a.cost.cacheWrite + b.cost.cacheWrite,
|
|
237
|
+
total: a.cost.total + b.cost.total,
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/app-server/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAoB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EACN,kBAAkB,EAClB,SAAS,GAOT,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAE7C,MAAM,WAAW,GAAU;IAC1B,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;CACpE,CAAC;AAYF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB,EAAE;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAE7C,SAAS,IAAI,CAAC,OAAwB;QACrC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,KAAK,CAAC,KAAa;QAC3B,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC;IACV,CAAC;IAED,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACJ,MAAM,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,CAAC,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,UAAU,GAAU,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1E,IAAI,MAAM,GAA2B,MAAM,CAAC;IAC5C,IAAI,iBAAgD,CAAC;IACrD,IAAI,cAAc,GAAyB,IAAI,CAAC;IAEhD,uEAAuE;IAEvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAiB,EAAE,EAAE;QAC/D,oDAAoD;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjE,MAAM,GAAG,UAAU,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClF,MAAM,GAAG,WAAW,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAClD,MAAM,GAAG,MAAM,CAAC;QACjB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAChD,MAAM,GAAG,UAAU,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACvC,MAAM,GAAG,MAAM,CAAC;QACjB,CAAC;QAED,0DAA0D;QAC1D,kCAAkC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,MAAM,SAAS,GAAI,KAAK,CAAC,OAA6B,CAAC,KAAK,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBACf,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAC/C,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7E,CAAC;QACF,CAAC;QAED,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,sEAAsE;IAEtE,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAkC,EAAE,EAAE;QAC5F,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,IAAI,iBAAiB,EAAE,CAAC;gBACvB,iBAAiB,GAAG,SAAS,CAAC;gBAC9B,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9C,OAAO;QACR,CAAC;QACD,iBAAiB,GAAG;YACnB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;SACd,CAAC;QACF,MAAM,GAAG,qBAAqB,CAAC;QAC/B,IAAI,CAAC;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE;SACjE,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,uEAAuE;IAEvE,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEtE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAEzD,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CACH,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,qBAAqB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CACzG,CAAC;YACF,SAAS;QACV,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,+CAA+C,CAAC,CAAC,CAAC;YAC9F,SAAS;QACV,CAAC;QAED,MAAM,CAAC,GAAG,OAAqB,CAAC;QAEhC,6DAA6D;QAC7D,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAClE,SAAS;QACV,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,QAAQ;gBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;IACF,CAAC;IAED,gBAAgB,EAAE,CAAC;IACnB,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,CAAC;IAET,sEAAsE;IAEtE,KAAK,UAAU,QAAQ,CAAC,CAAa;QACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,YAAY,CAAC,CAAC,CAAC;gBACnB,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC1B,OAAO;oBACN,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,YAAY;oBACrB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;iBAC7D,CAAC;YACH,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACf,IAAI,cAAc,EAAE,CAAC;oBACpB,OAAO,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAAC;gBACxF,CAAC;gBACD,2DAA2D;gBAC3D,0DAA0D;gBAC1D,4DAA4D;gBAC5D,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3E,cAAc,GAAG,MAAM,CAAC,KAAK;qBAC3B,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;qBACzB,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACvB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjG,CAAC,CAAC;qBACD,OAAO,CAAC,GAAG,EAAE;oBACb,cAAc,GAAG,IAAI,CAAC;gBACvB,CAAC,CAAC,CAAC;gBACJ,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzE,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACrB,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxE,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBAClB,OAAO;oBACN,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,UAAU,EAAE;iBAClB,CAAC;YACH,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACrB,OAAO;oBACN,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,cAAc;oBACvB,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;iBAC/C,CAAC;YACH,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBAClB,6DAA6D;gBAC7D,8DAA8D;gBAC9D,4DAA4D;gBAC5D,2DAA2D;gBAC3D,OAAO,kBAAkB,CACxB,CAAC,CAAC,EAAE,EACJ,CAAC,CAAC,IAAI,EACN,0GAA0G,CAC1G,CAAC;YACH,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;oBAChE,OAAO,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;gBACnF,CAAC;gBACD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAClD,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACrF,CAAC;QACF,CAAC;IACF,CAAC;IAED,SAAS,SAAS;QACjB,OAAO;YACN,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC/B,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;SACvB,CAAC;IACH,CAAC;IAED,SAAS,UAAU;QAClB,OAAO;YACN,KAAK,EAAE,SAAS,EAAE;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM;YACN,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YAChD,KAAK,EAAE,UAAU;YACjB,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;YAC3B,iBAAiB;SACjB,CAAC;IACH,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,CAAQ,EAAE,CAAQ;IACrC,OAAO;QACN,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;QAC3B,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;QACpC,UAAU,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;QACvC,WAAW,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;QAC1C,IAAI,EAAE;YACL,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;YAClC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;YACrC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS;YAC9C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU;YACjD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;SAClC;KACD,CAAC;AACH,CAAC"}
|