@anhlp/alp-paseo 0.0.0-beta.1 → 0.0.0-beta.2
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/README.md +15 -4
- package/client/task-pills.ts +5 -1
- package/package.json +6 -12
- package/server/dist/alpd.js +1867 -741
- package/server/dist/index.js +1954 -800
- package/server/dist/library.js +4 -2
- package/server/dist/main.js +36 -5
- package/server/dist/mapping.js +25 -16
- package/server/dist/panel/library.js +4 -2
- package/server/dist/panel/mapping.js +25 -16
- package/server/dist/panel/tasks.js +4 -2
- package/server/dist/panel/usage.js +4 -2
- package/server/dist/paseo/agents.js +47 -17
- package/server/dist/paseo/index.js +34 -4
- package/server/dist/paseo/plugins.js +4 -2
- package/server/dist/paseo/timeline-items.js +25 -2
- package/server/dist/provider-core.js +23 -1
- package/server/dist/provider.js +1804 -656
- package/server/dist/remote/index.js +27 -3
- package/server/dist/remote/link.js +4 -2
- package/server/dist/remote/panels.js +4 -2
- package/server/dist/remote/provider.js +27 -3
- package/server/dist/tasks.js +4 -2
- package/server/dist/tool-detail.js +26 -0
- package/server/dist/usage.js +4 -2
- package/server/dist/web-app/_expo/static/js/web/{index-185bf24e94a45852b2cfa53666d1cb86.js → index-c01174e6924afca25f226efae0b2a3ae.js} +2 -2
- package/server/dist/web-app/_expo/static/js/web/{index-185bf24e94a45852b2cfa53666d1cb86.js.br → index-c01174e6924afca25f226efae0b2a3ae.js.br} +0 -0
- package/server/dist/web-app/_expo/static/js/web/{index-185bf24e94a45852b2cfa53666d1cb86.js.gz → index-c01174e6924afca25f226efae0b2a3ae.js.gz} +0 -0
- package/server/dist/web-app/alp-web-app.json +2 -1
- package/server/dist/web-app/index.html +1 -1
- package/server/dist/web-app/index.html.br +0 -0
- package/server/dist/web-app/index.html.gz +0 -0
- package/server/dist/web.js +4 -2
- package/server/dist/alp-templates.d.ts +0 -9
- package/server/dist/compat.d.ts +0 -3
- package/server/dist/index.d.ts +0 -10
- package/server/dist/library.d.ts +0 -1
- package/server/dist/main.d.ts +0 -2
- package/server/dist/mapping-wire.d.ts +0 -58
- package/server/dist/mapping.d.ts +0 -99
- package/server/dist/panel/compat.d.ts +0 -3
- package/server/dist/panel/library.d.ts +0 -6
- package/server/dist/panel/mapping.d.ts +0 -1
- package/server/dist/panel/session-tasks.d.ts +0 -6
- package/server/dist/panel/tasks.d.ts +0 -8
- package/server/dist/panel/usage.d.ts +0 -3
- package/server/dist/paseo/agents.d.ts +0 -65
- package/server/dist/paseo/chat-search.d.ts +0 -18
- package/server/dist/paseo/checkout.d.ts +0 -71
- package/server/dist/paseo/files.d.ts +0 -19
- package/server/dist/paseo/gateway.d.ts +0 -61
- package/server/dist/paseo/git.d.ts +0 -21
- package/server/dist/paseo/index.d.ts +0 -56
- package/server/dist/paseo/plugins.d.ts +0 -17
- package/server/dist/paseo/providers.d.ts +0 -19
- package/server/dist/paseo/quiet.d.ts +0 -2
- package/server/dist/paseo/relay-transport.d.ts +0 -43
- package/server/dist/paseo/relay.d.ts +0 -84
- package/server/dist/paseo/timeline-items.d.ts +0 -13
- package/server/dist/paseo/timeline-projection.d.ts +0 -96
- package/server/dist/paseo/timeline-store.d.ts +0 -60
- package/server/dist/paseo/usage.d.ts +0 -12
- package/server/dist/paseo/workspaces.d.ts +0 -58
- package/server/dist/provider-core.d.ts +0 -68
- package/server/dist/provider.d.ts +0 -28
- package/server/dist/remote/index.d.ts +0 -10
- package/server/dist/remote/link.d.ts +0 -58
- package/server/dist/remote/panels.d.ts +0 -29
- package/server/dist/remote/provider.d.ts +0 -25
- package/server/dist/session-tasks.d.ts +0 -1
- package/server/dist/shared/library.d.ts +0 -258
- package/server/dist/shared/tasks.d.ts +0 -128
- package/server/dist/shared/team-models.d.ts +0 -14
- package/server/dist/shared/usage.d.ts +0 -27
- package/server/dist/tasks.d.ts +0 -1
- package/server/dist/usage.d.ts +0 -1
- package/server/dist/web.d.ts +0 -42
package/server/dist/library.js
CHANGED
|
@@ -9477,8 +9477,10 @@ var TAIL_BYTES = 256 * 1024;
|
|
|
9477
9477
|
var MAX_FRAME = 16 * 1024 * 1024;
|
|
9478
9478
|
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
9479
9479
|
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
9480
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
9481
|
-
var
|
|
9480
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
9481
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
9482
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
9483
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
9482
9484
|
|
|
9483
9485
|
// packages/client/src/rpc/errors.js
|
|
9484
9486
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
package/server/dist/main.js
CHANGED
|
@@ -164,7 +164,7 @@ function encodeFrame(value) {
|
|
|
164
164
|
return `${JSON.stringify(value)}
|
|
165
165
|
`;
|
|
166
166
|
}
|
|
167
|
-
var PROTOCOL_VERSION, MAX_FRAME, AlpRpcError, ERROR, RPC_ERROR, CAPABILITY, RPC_METHODS;
|
|
167
|
+
var PROTOCOL_VERSION, MAX_FRAME, AlpRpcError, ERROR, RPC_ERROR, CAPABILITY, PROMPT_IMAGES, RPC_METHODS, WORKSPACE_FILES;
|
|
168
168
|
var init_wire = __esm({
|
|
169
169
|
"packages/protocol/src/wire.js"() {
|
|
170
170
|
PROTOCOL_VERSION = 1;
|
|
@@ -178,8 +178,10 @@ var init_wire = __esm({
|
|
|
178
178
|
};
|
|
179
179
|
ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
180
180
|
RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
181
|
-
CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
182
|
-
|
|
181
|
+
CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
182
|
+
PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
183
|
+
RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
184
|
+
WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
183
185
|
}
|
|
184
186
|
});
|
|
185
187
|
|
|
@@ -16616,6 +16618,7 @@ init_log();
|
|
|
16616
16618
|
|
|
16617
16619
|
// packages/runtime/src/runtime.ts
|
|
16618
16620
|
init_log();
|
|
16621
|
+
init_src();
|
|
16619
16622
|
|
|
16620
16623
|
// packages/runtime/src/board.ts
|
|
16621
16624
|
var PIN_KINDS = ["claim", "decision", "finding"];
|
|
@@ -33850,6 +33853,28 @@ function searchTimeline({ rows, query, cursor = 0 }) {
|
|
|
33850
33853
|
return { locations, nextCursor: null };
|
|
33851
33854
|
}
|
|
33852
33855
|
|
|
33856
|
+
// integrations/paseo/server/tool-detail.ts
|
|
33857
|
+
function paseoDetail(detail) {
|
|
33858
|
+
switch (detail.type) {
|
|
33859
|
+
case "shell":
|
|
33860
|
+
return { type: "shell", command: detail.command, ...detail.cwd ? { cwd: detail.cwd } : {}, output: detail.output, ...detail.exitCode !== void 0 ? { exitCode: detail.exitCode } : {} };
|
|
33861
|
+
case "read":
|
|
33862
|
+
case "edit":
|
|
33863
|
+
case "write":
|
|
33864
|
+
case "search":
|
|
33865
|
+
case "fetch":
|
|
33866
|
+
case "plan":
|
|
33867
|
+
case "plain_text":
|
|
33868
|
+
return { ...detail };
|
|
33869
|
+
case "sub_agent":
|
|
33870
|
+
return { ...detail, log: detail.log ?? "", actions: [] };
|
|
33871
|
+
default: {
|
|
33872
|
+
const other = detail;
|
|
33873
|
+
return { type: "unknown", input: other.input ?? null, output: other.output ?? null };
|
|
33874
|
+
}
|
|
33875
|
+
}
|
|
33876
|
+
}
|
|
33877
|
+
|
|
33853
33878
|
// integrations/paseo/server/paseo/timeline-items.ts
|
|
33854
33879
|
var TimelineDeltas = class {
|
|
33855
33880
|
last = /* @__PURE__ */ new Map();
|
|
@@ -33875,7 +33900,7 @@ var TimelineDeltas = class {
|
|
|
33875
33900
|
case "todo":
|
|
33876
33901
|
return { type: "todo", items: item.items.map((entry) => ({ id: entry.id, text: entry.text, status: entry.status, completed: entry.status === "completed" })) };
|
|
33877
33902
|
case "tool_call": {
|
|
33878
|
-
const detail = item.detail
|
|
33903
|
+
const detail = paseoDetail(item.detail);
|
|
33879
33904
|
return item.status === "failed" ? { type: "tool_call", callId: item.callId, name: item.name, status: "failed", error: item.error ?? "Tool call failed", detail } : { type: "tool_call", callId: item.callId, name: item.name, status: item.status, error: null, detail };
|
|
33880
33905
|
}
|
|
33881
33906
|
}
|
|
@@ -34484,6 +34509,7 @@ function createAgents({ clientFactory, home: home2, broadcast, directory, log: l
|
|
|
34484
34509
|
const roots = /* @__PURE__ */ new Map();
|
|
34485
34510
|
const timelines = new InMemoryAgentTimelineStore();
|
|
34486
34511
|
const deltas = /* @__PURE__ */ new Map();
|
|
34512
|
+
const epochs = /* @__PURE__ */ new Map();
|
|
34487
34513
|
const replaying = /* @__PURE__ */ new Set();
|
|
34488
34514
|
const attaching = /* @__PURE__ */ new Map();
|
|
34489
34515
|
const turns = /* @__PURE__ */ new Map();
|
|
@@ -34578,6 +34604,7 @@ function createAgents({ clientFactory, home: home2, broadcast, directory, log: l
|
|
|
34578
34604
|
}
|
|
34579
34605
|
for (const id2 of [...roots.keys()]) if (!seen.has(id2)) {
|
|
34580
34606
|
roots.delete(id2);
|
|
34607
|
+
epochs.delete(id2);
|
|
34581
34608
|
broadcast({ type: "agent_update", payload: { kind: "remove", agentId: id2 } });
|
|
34582
34609
|
directory.changed();
|
|
34583
34610
|
}
|
|
@@ -34677,7 +34704,9 @@ function createAgents({ clientFactory, home: home2, broadcast, directory, log: l
|
|
|
34677
34704
|
const { event } = envelope;
|
|
34678
34705
|
switch (event.type) {
|
|
34679
34706
|
case "item": {
|
|
34680
|
-
|
|
34707
|
+
const seenEpoch = epochs.get(root);
|
|
34708
|
+
if (envelope.epoch) epochs.set(root, envelope.epoch);
|
|
34709
|
+
if (envelope.epoch && seenEpoch && envelope.epoch !== seenEpoch) deltas.set(root, new TimelineDeltas());
|
|
34681
34710
|
let maker = deltas.get(root);
|
|
34682
34711
|
if (!maker) deltas.set(root, maker = new TimelineDeltas());
|
|
34683
34712
|
append(root, maker.next(event.item), envelope.ts);
|
|
@@ -34718,6 +34747,7 @@ function createAgents({ clientFactory, home: home2, broadcast, directory, log: l
|
|
|
34718
34747
|
pending = (async () => {
|
|
34719
34748
|
timelines.initialize(root);
|
|
34720
34749
|
deltas.set(root, new TimelineDeltas());
|
|
34750
|
+
epochs.delete(root);
|
|
34721
34751
|
replaying.add(root);
|
|
34722
34752
|
try {
|
|
34723
34753
|
await alp.request("session.attach", { sessionId: root, replay: true });
|
|
@@ -34737,6 +34767,7 @@ function createAgents({ clientFactory, home: home2, broadcast, directory, log: l
|
|
|
34737
34767
|
timelines.delete(root);
|
|
34738
34768
|
deltas.set(root, new TimelineDeltas());
|
|
34739
34769
|
attaching.delete(root);
|
|
34770
|
+
epochs.delete(root);
|
|
34740
34771
|
replaying.delete(root);
|
|
34741
34772
|
turns.delete(root);
|
|
34742
34773
|
for (const child of children2.values()) {
|
package/server/dist/mapping.js
CHANGED
|
@@ -7923,6 +7923,15 @@ function createLogger({ component, level, context = {}, write = stderrSink, now
|
|
|
7923
7923
|
}
|
|
7924
7924
|
var TAIL_BYTES = 256 * 1024;
|
|
7925
7925
|
|
|
7926
|
+
// packages/protocol/src/wire.js
|
|
7927
|
+
var MAX_FRAME = 16 * 1024 * 1024;
|
|
7928
|
+
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
7929
|
+
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
7930
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
7931
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
7932
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
7933
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
7934
|
+
|
|
7926
7935
|
// packages/core/src/atomic.js
|
|
7927
7936
|
import { rename, rm, writeFile } from "node:fs/promises";
|
|
7928
7937
|
async function moveFile(from, to) {
|
|
@@ -25451,12 +25460,19 @@ async function syncTemplateProfiles(settings, options2 = {}) {
|
|
|
25451
25460
|
}
|
|
25452
25461
|
|
|
25453
25462
|
// packages/core/src/workflow.js
|
|
25454
|
-
|
|
25455
|
-
|
|
25463
|
+
var INIT_TEAM = "pho";
|
|
25464
|
+
function defaultTeam(settings, { restored, scaffolded = false } = {}) {
|
|
25465
|
+
return teamOf(restored?.mode ?? settings.workflow?.mode ?? (scaffolded ? INIT_TEAM : "custom"));
|
|
25466
|
+
}
|
|
25467
|
+
async function resolveWorkflow(root, selected, restored, { library, templates: templates2, scaffold = false } = {}) {
|
|
25468
|
+
const file2 = path9.join(root, ".alp/settings.json");
|
|
25469
|
+
const settings = await jsonObject(file2, "INVALID_SETTINGS");
|
|
25456
25470
|
validateSettings(settings, ".alp/settings.json");
|
|
25471
|
+
const scaffolded = scaffold && await optionalText(file2) === void 0;
|
|
25472
|
+
const fallback = defaultTeam(settings, { restored, scaffolded });
|
|
25457
25473
|
const chosen = selected === void 0 ? void 0 : teamOf(selected);
|
|
25458
|
-
if (chosen === "custom") throw new Error("Choose a team, such as pho (Ph\u1EDF) or cafe (Cafe)");
|
|
25459
|
-
const mode = chosen ??
|
|
25474
|
+
if (chosen === "custom" && fallback !== "custom") throw new Error("Choose a team, such as pho (Ph\u1EDF) or cafe (Cafe)");
|
|
25475
|
+
const mode = chosen ?? fallback;
|
|
25460
25476
|
if (restored && mode !== teamOf(restored.mode)) throw new Error("Cannot change team in an existing session");
|
|
25461
25477
|
const team = mode === "custom" ? void 0 : applyProfile(await resolveTeam(root, mode, { library, templates: templates2 }), (settings.team ?? settings.profile)?.[mode]);
|
|
25462
25478
|
const maxPeers = restored?.maxPeers ?? settings.workflow?.maxPeers ?? team?.maxPeers ?? 2;
|
|
@@ -25480,7 +25496,7 @@ async function initProject(projectRoot, { templateRoot: templateRoot2, templates
|
|
|
25480
25496
|
const team = await projectProfiles({ root, templates: templates2, library, teamIds });
|
|
25481
25497
|
const files = {
|
|
25482
25498
|
"ALP.md": await template("ALP.md"),
|
|
25483
|
-
".alp/settings.json": JSON.stringify({ defaultAgent: "main", workflow: { mode:
|
|
25499
|
+
".alp/settings.json": JSON.stringify({ defaultAgent: "main", workflow: { mode: INIT_TEAM }, team, templateDefaults: profileDefaults(team) }, null, 2) + "\n"
|
|
25484
25500
|
};
|
|
25485
25501
|
const directories2 = [".alp"];
|
|
25486
25502
|
const created = [];
|
|
@@ -25652,13 +25668,13 @@ async function resolveSession(spec, options2 = {}) {
|
|
|
25652
25668
|
if (scaffoldMissing) await initProject(spec.cwd, { ...starter, library: options2.library });
|
|
25653
25669
|
else if (!spec.restore) {
|
|
25654
25670
|
const settings = await jsonObject(settingsFile, "INVALID_SETTINGS");
|
|
25655
|
-
await initProject(spec.cwd, { ...starter, library: options2.library, onlyManagedProfiles: true, teamIds: [
|
|
25671
|
+
await initProject(spec.cwd, { ...starter, library: options2.library, onlyManagedProfiles: true, teamIds: [spec.workflow === void 0 ? defaultTeam(settings) : teamOf(spec.workflow)] });
|
|
25656
25672
|
}
|
|
25657
25673
|
}
|
|
25658
25674
|
if (options2.library) await ensureLibrary(options2.library, options2.templates ? { templates: options2.templates } : {});
|
|
25659
25675
|
const restored = spec.restore;
|
|
25660
25676
|
if (restored && spec.agent !== void 0 && spec.agent !== restored.agent) throw new Error("Cannot resume a thread as a different ALP agent");
|
|
25661
|
-
const { team, ...workflow } = await resolveWorkflow(spec.cwd, spec.workflow, restored?.workflow, { library: options2.library, templates: options2.templates });
|
|
25677
|
+
const { team, ...workflow } = await resolveWorkflow(spec.cwd, spec.workflow, restored?.workflow, { library: options2.library, templates: options2.templates, scaffold: options2.initialize === false });
|
|
25662
25678
|
const agent = await resolveAgent(spec.cwd, { agent: spec.agent ?? restored?.agent, library: options2.library, templates: options2.templates });
|
|
25663
25679
|
const oracleModels = team?.oracleModels ?? ORACLE_MODELS;
|
|
25664
25680
|
if (agent.name === "oracle" && !restored && !oracleModels.includes(spec.model ?? "")) throw new Error(`Oracle runs on ${oracleModels.join(" or ")}; choose one`);
|
|
@@ -25970,13 +25986,6 @@ var log = createLogger({ component: "runtime" });
|
|
|
25970
25986
|
import os2 from "node:os";
|
|
25971
25987
|
import path14 from "node:path";
|
|
25972
25988
|
|
|
25973
|
-
// packages/protocol/src/wire.js
|
|
25974
|
-
var MAX_FRAME = 16 * 1024 * 1024;
|
|
25975
|
-
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
25976
|
-
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
25977
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
25978
|
-
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list"]);
|
|
25979
|
-
|
|
25980
25989
|
// packages/client/src/rpc/errors.js
|
|
25981
25990
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
|
25982
25991
|
var CLIENT_ERROR = Object.freeze({
|
|
@@ -26000,7 +26009,7 @@ var BIN_DIRECTORIES = [path14.join(os2.homedir(), ".npm-global", "bin"), path14.
|
|
|
26000
26009
|
|
|
26001
26010
|
// integrations/paseo/server/mapping-wire.ts
|
|
26002
26011
|
import path15 from "node:path";
|
|
26003
|
-
var
|
|
26012
|
+
var DEFAULT_TEAM = "pho";
|
|
26004
26013
|
function configModels(session, labelOf = () => void 0) {
|
|
26005
26014
|
if (!session.parentId && session.workflow.mode !== "custom") return { model: session.workflow.mode, models: [{ id: session.workflow.mode, label: session.teamLabel ?? session.workflow.mode, thinkingOptions: [] }] };
|
|
26006
26015
|
const id = `${session.runtime}:${session.model}`;
|
|
@@ -26059,7 +26068,7 @@ async function mapSession(config2, persistence) {
|
|
|
26059
26068
|
export {
|
|
26060
26069
|
DEFAULT_CLAUDE_MODEL,
|
|
26061
26070
|
DEFAULT_MODEL,
|
|
26062
|
-
|
|
26071
|
+
DEFAULT_TEAM,
|
|
26063
26072
|
InstructionsAdapter as PaseoAdapter,
|
|
26064
26073
|
alpdSessionOf,
|
|
26065
26074
|
configModels2 as configModels,
|
|
@@ -9477,8 +9477,10 @@ var TAIL_BYTES = 256 * 1024;
|
|
|
9477
9477
|
var MAX_FRAME = 16 * 1024 * 1024;
|
|
9478
9478
|
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
9479
9479
|
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
9480
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
9481
|
-
var
|
|
9480
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
9481
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
9482
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
9483
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
9482
9484
|
|
|
9483
9485
|
// packages/client/src/rpc/errors.js
|
|
9484
9486
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
|
@@ -7923,6 +7923,15 @@ function createLogger({ component, level, context = {}, write = stderrSink, now
|
|
|
7923
7923
|
}
|
|
7924
7924
|
var TAIL_BYTES = 256 * 1024;
|
|
7925
7925
|
|
|
7926
|
+
// packages/protocol/src/wire.js
|
|
7927
|
+
var MAX_FRAME = 16 * 1024 * 1024;
|
|
7928
|
+
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
7929
|
+
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
7930
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
7931
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
7932
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
7933
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
7934
|
+
|
|
7926
7935
|
// packages/core/src/atomic.js
|
|
7927
7936
|
import { rename, rm, writeFile } from "node:fs/promises";
|
|
7928
7937
|
async function moveFile(from, to) {
|
|
@@ -25451,12 +25460,19 @@ async function syncTemplateProfiles(settings, options2 = {}) {
|
|
|
25451
25460
|
}
|
|
25452
25461
|
|
|
25453
25462
|
// packages/core/src/workflow.js
|
|
25454
|
-
|
|
25455
|
-
|
|
25463
|
+
var INIT_TEAM = "pho";
|
|
25464
|
+
function defaultTeam(settings, { restored, scaffolded = false } = {}) {
|
|
25465
|
+
return teamOf(restored?.mode ?? settings.workflow?.mode ?? (scaffolded ? INIT_TEAM : "custom"));
|
|
25466
|
+
}
|
|
25467
|
+
async function resolveWorkflow(root, selected, restored, { library, templates: templates2, scaffold = false } = {}) {
|
|
25468
|
+
const file2 = path9.join(root, ".alp/settings.json");
|
|
25469
|
+
const settings = await jsonObject(file2, "INVALID_SETTINGS");
|
|
25456
25470
|
validateSettings(settings, ".alp/settings.json");
|
|
25471
|
+
const scaffolded = scaffold && await optionalText(file2) === void 0;
|
|
25472
|
+
const fallback = defaultTeam(settings, { restored, scaffolded });
|
|
25457
25473
|
const chosen = selected === void 0 ? void 0 : teamOf(selected);
|
|
25458
|
-
if (chosen === "custom") throw new Error("Choose a team, such as pho (Ph\u1EDF) or cafe (Cafe)");
|
|
25459
|
-
const mode = chosen ??
|
|
25474
|
+
if (chosen === "custom" && fallback !== "custom") throw new Error("Choose a team, such as pho (Ph\u1EDF) or cafe (Cafe)");
|
|
25475
|
+
const mode = chosen ?? fallback;
|
|
25460
25476
|
if (restored && mode !== teamOf(restored.mode)) throw new Error("Cannot change team in an existing session");
|
|
25461
25477
|
const team = mode === "custom" ? void 0 : applyProfile(await resolveTeam(root, mode, { library, templates: templates2 }), (settings.team ?? settings.profile)?.[mode]);
|
|
25462
25478
|
const maxPeers = restored?.maxPeers ?? settings.workflow?.maxPeers ?? team?.maxPeers ?? 2;
|
|
@@ -25480,7 +25496,7 @@ async function initProject(projectRoot, { templateRoot: templateRoot2, templates
|
|
|
25480
25496
|
const team = await projectProfiles({ root, templates: templates2, library, teamIds });
|
|
25481
25497
|
const files = {
|
|
25482
25498
|
"ALP.md": await template("ALP.md"),
|
|
25483
|
-
".alp/settings.json": JSON.stringify({ defaultAgent: "main", workflow: { mode:
|
|
25499
|
+
".alp/settings.json": JSON.stringify({ defaultAgent: "main", workflow: { mode: INIT_TEAM }, team, templateDefaults: profileDefaults(team) }, null, 2) + "\n"
|
|
25484
25500
|
};
|
|
25485
25501
|
const directories2 = [".alp"];
|
|
25486
25502
|
const created = [];
|
|
@@ -25652,13 +25668,13 @@ async function resolveSession(spec, options2 = {}) {
|
|
|
25652
25668
|
if (scaffoldMissing) await initProject(spec.cwd, { ...starter, library: options2.library });
|
|
25653
25669
|
else if (!spec.restore) {
|
|
25654
25670
|
const settings = await jsonObject(settingsFile, "INVALID_SETTINGS");
|
|
25655
|
-
await initProject(spec.cwd, { ...starter, library: options2.library, onlyManagedProfiles: true, teamIds: [
|
|
25671
|
+
await initProject(spec.cwd, { ...starter, library: options2.library, onlyManagedProfiles: true, teamIds: [spec.workflow === void 0 ? defaultTeam(settings) : teamOf(spec.workflow)] });
|
|
25656
25672
|
}
|
|
25657
25673
|
}
|
|
25658
25674
|
if (options2.library) await ensureLibrary(options2.library, options2.templates ? { templates: options2.templates } : {});
|
|
25659
25675
|
const restored = spec.restore;
|
|
25660
25676
|
if (restored && spec.agent !== void 0 && spec.agent !== restored.agent) throw new Error("Cannot resume a thread as a different ALP agent");
|
|
25661
|
-
const { team, ...workflow } = await resolveWorkflow(spec.cwd, spec.workflow, restored?.workflow, { library: options2.library, templates: options2.templates });
|
|
25677
|
+
const { team, ...workflow } = await resolveWorkflow(spec.cwd, spec.workflow, restored?.workflow, { library: options2.library, templates: options2.templates, scaffold: options2.initialize === false });
|
|
25662
25678
|
const agent = await resolveAgent(spec.cwd, { agent: spec.agent ?? restored?.agent, library: options2.library, templates: options2.templates });
|
|
25663
25679
|
const oracleModels = team?.oracleModels ?? ORACLE_MODELS;
|
|
25664
25680
|
if (agent.name === "oracle" && !restored && !oracleModels.includes(spec.model ?? "")) throw new Error(`Oracle runs on ${oracleModels.join(" or ")}; choose one`);
|
|
@@ -25970,13 +25986,6 @@ var log = createLogger({ component: "runtime" });
|
|
|
25970
25986
|
import os2 from "node:os";
|
|
25971
25987
|
import path14 from "node:path";
|
|
25972
25988
|
|
|
25973
|
-
// packages/protocol/src/wire.js
|
|
25974
|
-
var MAX_FRAME = 16 * 1024 * 1024;
|
|
25975
|
-
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
25976
|
-
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
25977
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
25978
|
-
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list"]);
|
|
25979
|
-
|
|
25980
25989
|
// packages/client/src/rpc/errors.js
|
|
25981
25990
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
|
25982
25991
|
var CLIENT_ERROR = Object.freeze({
|
|
@@ -26000,7 +26009,7 @@ var BIN_DIRECTORIES = [path14.join(os2.homedir(), ".npm-global", "bin"), path14.
|
|
|
26000
26009
|
|
|
26001
26010
|
// integrations/paseo/server/mapping-wire.ts
|
|
26002
26011
|
import path15 from "node:path";
|
|
26003
|
-
var
|
|
26012
|
+
var DEFAULT_TEAM = "pho";
|
|
26004
26013
|
function configModels(session, labelOf = () => void 0) {
|
|
26005
26014
|
if (!session.parentId && session.workflow.mode !== "custom") return { model: session.workflow.mode, models: [{ id: session.workflow.mode, label: session.teamLabel ?? session.workflow.mode, thinkingOptions: [] }] };
|
|
26006
26015
|
const id = `${session.runtime}:${session.model}`;
|
|
@@ -26059,7 +26068,7 @@ async function mapSession(config2, persistence) {
|
|
|
26059
26068
|
export {
|
|
26060
26069
|
DEFAULT_CLAUDE_MODEL,
|
|
26061
26070
|
DEFAULT_MODEL,
|
|
26062
|
-
|
|
26071
|
+
DEFAULT_TEAM,
|
|
26063
26072
|
InstructionsAdapter as PaseoAdapter,
|
|
26064
26073
|
alpdSessionOf,
|
|
26065
26074
|
configModels2 as configModels,
|
|
@@ -529,8 +529,10 @@ var TAIL_BYTES = 256 * 1024;
|
|
|
529
529
|
var MAX_FRAME = 16 * 1024 * 1024;
|
|
530
530
|
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
531
531
|
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
532
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
533
|
-
var
|
|
532
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
533
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
534
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
535
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
534
536
|
|
|
535
537
|
// packages/client/src/rpc/errors.js
|
|
536
538
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
|
@@ -45,8 +45,10 @@ var AlpRpcError = class extends Error {
|
|
|
45
45
|
};
|
|
46
46
|
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
47
47
|
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
48
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
49
|
-
var
|
|
48
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
49
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
50
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
51
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
50
52
|
|
|
51
53
|
// packages/client/src/rpc/errors.js
|
|
52
54
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
|
@@ -8200,6 +8200,23 @@ function createLogger({ component, level, context = {}, write = stderrSink, now
|
|
|
8200
8200
|
}
|
|
8201
8201
|
var TAIL_BYTES = 256 * 1024;
|
|
8202
8202
|
|
|
8203
|
+
// packages/protocol/src/wire.js
|
|
8204
|
+
var PROTOCOL_VERSION = 1;
|
|
8205
|
+
var MAX_FRAME = 16 * 1024 * 1024;
|
|
8206
|
+
var AlpRpcError = class extends Error {
|
|
8207
|
+
constructor(error51) {
|
|
8208
|
+
super(error51?.message ?? "ALP daemon request failed");
|
|
8209
|
+
this.code = error51?.code;
|
|
8210
|
+
this.data = error51?.data;
|
|
8211
|
+
}
|
|
8212
|
+
};
|
|
8213
|
+
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
8214
|
+
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
8215
|
+
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language", sessionListPage: "session.list.page", questionWatch: "question.watch", questionWatchTurns: "question.watch.turns", workspaceFiles: "workspace.files", workspaceFilesRead: "workspace.files.read", promptImages: "prompt.images" });
|
|
8216
|
+
var PROMPT_IMAGES = Object.freeze({ mimeTypes: Object.freeze(["image/png", "image/jpeg", "image/gif", "image/webp"]), maxCount: 8, maxBytes: 5 * 1024 * 1024, maxTotalBytes: 11 * 1024 * 1024 });
|
|
8217
|
+
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "question.watch", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list", "workspace.files.list", "workspace.files.read", "workspace.files.search"]);
|
|
8218
|
+
var WORKSPACE_FILES = Object.freeze({ maxReadBytes: 1024 * 1024, maxListEntries: 1e3, maxPathLength: 4096 });
|
|
8219
|
+
|
|
8203
8220
|
// packages/runtime/src/board.ts
|
|
8204
8221
|
var PIN_KINDS = ["claim", "decision", "finding"];
|
|
8205
8222
|
|
|
@@ -24816,21 +24833,6 @@ import net from "node:net";
|
|
|
24816
24833
|
import os from "node:os";
|
|
24817
24834
|
import path3 from "node:path";
|
|
24818
24835
|
|
|
24819
|
-
// packages/protocol/src/wire.js
|
|
24820
|
-
var PROTOCOL_VERSION = 1;
|
|
24821
|
-
var MAX_FRAME = 16 * 1024 * 1024;
|
|
24822
|
-
var AlpRpcError = class extends Error {
|
|
24823
|
-
constructor(error51) {
|
|
24824
|
-
super(error51?.message ?? "ALP daemon request failed");
|
|
24825
|
-
this.code = error51?.code;
|
|
24826
|
-
this.data = error51?.data;
|
|
24827
|
-
}
|
|
24828
|
-
};
|
|
24829
|
-
var ERROR = Object.freeze({ failed: 1e3, notFound: 1001, forbidden: 1003, conflict: 1004, unavailable: 1005, protocol: 1006 });
|
|
24830
|
-
var RPC_ERROR = Object.freeze({ parseError: -32700, invalidRequest: -32600, methodNotFound: -32601, invalidParams: -32602 });
|
|
24831
|
-
var CAPABILITY = Object.freeze({ attachAfter: "attach.after", promptReceipts: "prompt.receipts", extensionMethods: "extension.methods", team: "team", task: "task", library: "library", settingsLanguage: "settings.language" });
|
|
24832
|
-
var RPC_METHODS = Object.freeze(["assignment.recall", "board.list", "catalog.get", "daemon.hello", "daemon.pause", "daemon.pauses", "daemon.resume", "daemon.shutdown", "daemon.status", "daemon.usage", "extension.register", "extension.unregister", "library.delete", "library.duplicate", "library.get", "library.list", "library.models", "library.rename", "library.save", "library.skills.set", "question.answer", "question.list", "session.archive", "session.attach", "session.close", "session.configure", "session.create", "session.get", "session.interrupt", "session.list", "session.log", "session.message", "session.preview", "session.prompt", "session.release", "session.rename", "session.status", "settings.language.get", "settings.language.set", "task.create", "task.gate.resolve", "task.list", "task.update", "team.list"]);
|
|
24833
|
-
|
|
24834
24836
|
// packages/client/src/rpc/errors.js
|
|
24835
24837
|
var BRAND = Symbol.for("@anhlp/alp-client/AlpClientError");
|
|
24836
24838
|
var CLIENT_ERROR = Object.freeze({
|
|
@@ -25408,6 +25410,28 @@ function searchTimeline({ rows, query, cursor = 0 }) {
|
|
|
25408
25410
|
return { locations, nextCursor: null };
|
|
25409
25411
|
}
|
|
25410
25412
|
|
|
25413
|
+
// integrations/paseo/server/tool-detail.ts
|
|
25414
|
+
function paseoDetail(detail) {
|
|
25415
|
+
switch (detail.type) {
|
|
25416
|
+
case "shell":
|
|
25417
|
+
return { type: "shell", command: detail.command, ...detail.cwd ? { cwd: detail.cwd } : {}, output: detail.output, ...detail.exitCode !== void 0 ? { exitCode: detail.exitCode } : {} };
|
|
25418
|
+
case "read":
|
|
25419
|
+
case "edit":
|
|
25420
|
+
case "write":
|
|
25421
|
+
case "search":
|
|
25422
|
+
case "fetch":
|
|
25423
|
+
case "plan":
|
|
25424
|
+
case "plain_text":
|
|
25425
|
+
return { ...detail };
|
|
25426
|
+
case "sub_agent":
|
|
25427
|
+
return { ...detail, log: detail.log ?? "", actions: [] };
|
|
25428
|
+
default: {
|
|
25429
|
+
const other = detail;
|
|
25430
|
+
return { type: "unknown", input: other.input ?? null, output: other.output ?? null };
|
|
25431
|
+
}
|
|
25432
|
+
}
|
|
25433
|
+
}
|
|
25434
|
+
|
|
25411
25435
|
// integrations/paseo/server/paseo/timeline-items.ts
|
|
25412
25436
|
var TimelineDeltas = class {
|
|
25413
25437
|
last = /* @__PURE__ */ new Map();
|
|
@@ -25433,7 +25457,7 @@ var TimelineDeltas = class {
|
|
|
25433
25457
|
case "todo":
|
|
25434
25458
|
return { type: "todo", items: item.items.map((entry) => ({ id: entry.id, text: entry.text, status: entry.status, completed: entry.status === "completed" })) };
|
|
25435
25459
|
case "tool_call": {
|
|
25436
|
-
const detail = item.detail
|
|
25460
|
+
const detail = paseoDetail(item.detail);
|
|
25437
25461
|
return item.status === "failed" ? { type: "tool_call", callId: item.callId, name: item.name, status: "failed", error: item.error ?? "Tool call failed", detail } : { type: "tool_call", callId: item.callId, name: item.name, status: item.status, error: null, detail };
|
|
25438
25462
|
}
|
|
25439
25463
|
}
|
|
@@ -26042,6 +26066,7 @@ function createAgents({ clientFactory, home, broadcast, directory, log: log2 = (
|
|
|
26042
26066
|
const roots = /* @__PURE__ */ new Map();
|
|
26043
26067
|
const timelines = new InMemoryAgentTimelineStore();
|
|
26044
26068
|
const deltas = /* @__PURE__ */ new Map();
|
|
26069
|
+
const epochs = /* @__PURE__ */ new Map();
|
|
26045
26070
|
const replaying = /* @__PURE__ */ new Set();
|
|
26046
26071
|
const attaching = /* @__PURE__ */ new Map();
|
|
26047
26072
|
const turns = /* @__PURE__ */ new Map();
|
|
@@ -26136,6 +26161,7 @@ function createAgents({ clientFactory, home, broadcast, directory, log: log2 = (
|
|
|
26136
26161
|
}
|
|
26137
26162
|
for (const id of [...roots.keys()]) if (!seen.has(id)) {
|
|
26138
26163
|
roots.delete(id);
|
|
26164
|
+
epochs.delete(id);
|
|
26139
26165
|
broadcast({ type: "agent_update", payload: { kind: "remove", agentId: id } });
|
|
26140
26166
|
directory.changed();
|
|
26141
26167
|
}
|
|
@@ -26235,7 +26261,9 @@ function createAgents({ clientFactory, home, broadcast, directory, log: log2 = (
|
|
|
26235
26261
|
const { event } = envelope;
|
|
26236
26262
|
switch (event.type) {
|
|
26237
26263
|
case "item": {
|
|
26238
|
-
|
|
26264
|
+
const seenEpoch = epochs.get(root);
|
|
26265
|
+
if (envelope.epoch) epochs.set(root, envelope.epoch);
|
|
26266
|
+
if (envelope.epoch && seenEpoch && envelope.epoch !== seenEpoch) deltas.set(root, new TimelineDeltas());
|
|
26239
26267
|
let maker = deltas.get(root);
|
|
26240
26268
|
if (!maker) deltas.set(root, maker = new TimelineDeltas());
|
|
26241
26269
|
append(root, maker.next(event.item), envelope.ts);
|
|
@@ -26276,6 +26304,7 @@ function createAgents({ clientFactory, home, broadcast, directory, log: log2 = (
|
|
|
26276
26304
|
pending = (async () => {
|
|
26277
26305
|
timelines.initialize(root);
|
|
26278
26306
|
deltas.set(root, new TimelineDeltas());
|
|
26307
|
+
epochs.delete(root);
|
|
26279
26308
|
replaying.add(root);
|
|
26280
26309
|
try {
|
|
26281
26310
|
await alp.request("session.attach", { sessionId: root, replay: true });
|
|
@@ -26295,6 +26324,7 @@ function createAgents({ clientFactory, home, broadcast, directory, log: log2 = (
|
|
|
26295
26324
|
timelines.delete(root);
|
|
26296
26325
|
deltas.set(root, new TimelineDeltas());
|
|
26297
26326
|
attaching.delete(root);
|
|
26327
|
+
epochs.delete(root);
|
|
26298
26328
|
replaying.delete(root);
|
|
26299
26329
|
turns.delete(root);
|
|
26300
26330
|
for (const child of children.values()) {
|