@getpaseo/server 0.1.71 → 0.1.73
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/server/server/agent/agent-archive.d.ts +11 -0
- package/dist/server/server/agent/agent-archive.d.ts.map +1 -0
- package/dist/server/server/agent/agent-archive.js +16 -0
- package/dist/server/server/agent/agent-archive.js.map +1 -0
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +3 -23
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
- package/dist/server/server/agent/agent-response-loop.js +2 -1
- package/dist/server/server/agent/agent-response-loop.js.map +1 -1
- package/dist/server/server/agent/create-agent-title.d.ts +8 -0
- package/dist/server/server/agent/create-agent-title.d.ts.map +1 -0
- package/dist/server/server/agent/create-agent-title.js +29 -0
- package/dist/server/server/agent/create-agent-title.js.map +1 -0
- package/dist/server/server/agent/import-sessions.d.ts +20 -1
- package/dist/server/server/agent/import-sessions.d.ts.map +1 -1
- package/dist/server/server/agent/import-sessions.js +101 -0
- package/dist/server/server/agent/import-sessions.js.map +1 -1
- package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
- package/dist/server/server/agent/provider-launch-config.js +1 -0
- package/dist/server/server/agent/provider-launch-config.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +2 -1
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts +25 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js +183 -0
- package/dist/server/server/agent/providers/codex/app-server-transport.js.map +1 -0
- package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts +31 -0
- package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.d.ts.map +1 -0
- package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js +172 -0
- package/dist/server/server/agent/providers/codex/test-utils/fake-app-server.js.map +1 -0
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +1 -21
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +2 -171
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/opencode/runtime.d.ts +27 -0
- package/dist/server/server/agent/providers/opencode/runtime.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/runtime.js +5 -0
- package/dist/server/server/agent/providers/opencode/runtime.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts +55 -0
- package/dist/server/server/agent/providers/opencode/server-manager.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js +255 -0
- package/dist/server/server/agent/providers/opencode/server-manager.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +22 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js +28 -0
- package/dist/server/server/agent/providers/opencode/test-server-manager.js.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts +75 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.d.ts.map +1 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js +169 -0
- package/dist/server/server/agent/providers/opencode/test-utils/test-opencode-runtime.js.map +1 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +38 -36
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +556 -267
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts +8 -3
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.js +44 -34
- package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -1
- package/dist/server/server/bootstrap.d.ts +2 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +45 -8
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/checkout/status-projection.d.ts +19 -0
- package/dist/server/server/checkout/status-projection.d.ts.map +1 -0
- package/dist/server/server/checkout/status-projection.js +98 -0
- package/dist/server/server/checkout/status-projection.js.map +1 -0
- package/dist/server/server/file-explorer/service.d.ts.map +1 -1
- package/dist/server/server/file-explorer/service.js +84 -67
- package/dist/server/server/file-explorer/service.js.map +1 -1
- package/dist/server/server/paseo-worktree-service.d.ts +2 -1
- package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
- package/dist/server/server/paseo-worktree-service.js +30 -3
- package/dist/server/server/paseo-worktree-service.js.map +1 -1
- package/dist/server/server/push/notifications.d.ts +9 -0
- package/dist/server/server/push/notifications.d.ts.map +1 -0
- package/dist/server/server/push/notifications.js +15 -0
- package/dist/server/server/push/notifications.js.map +1 -0
- package/dist/server/server/push/push-service.d.ts +1 -2
- package/dist/server/server/push/push-service.d.ts.map +1 -1
- package/dist/server/server/relay-transport.d.ts +7 -1
- package/dist/server/server/relay-transport.d.ts.map +1 -1
- package/dist/server/server/relay-transport.js +10 -5
- package/dist/server/server/relay-transport.js.map +1 -1
- package/dist/server/server/session.d.ts +1 -17
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +24 -233
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/websocket/runtime-metrics.d.ts +71 -0
- package/dist/server/server/websocket/runtime-metrics.d.ts.map +1 -0
- package/dist/server/server/websocket/runtime-metrics.js +148 -0
- package/dist/server/server/websocket/runtime-metrics.js.map +1 -0
- package/dist/server/server/websocket-server.d.ts +4 -21
- package/dist/server/server/websocket-server.d.ts.map +1 -1
- package/dist/server/server/websocket-server.js +28 -137
- package/dist/server/server/websocket-server.js.map +1 -1
- package/dist/server/server/workspace-directory.d.ts +0 -2
- package/dist/server/server/workspace-directory.d.ts.map +1 -1
- package/dist/server/server/workspace-directory.js +9 -26
- package/dist/server/server/workspace-directory.js.map +1 -1
- package/dist/server/shared/agent-state-bucket.d.ts +13 -0
- package/dist/server/shared/agent-state-bucket.d.ts.map +1 -0
- package/dist/server/shared/agent-state-bucket.js +41 -0
- package/dist/server/shared/agent-state-bucket.js.map +1 -0
- package/dist/server/shared/connection-offer.d.ts +6 -6
- package/dist/server/shared/connection-offer.js +1 -1
- package/dist/server/shared/connection-offer.js.map +1 -1
- package/dist/server/shared/git-remote.d.ts +16 -0
- package/dist/server/shared/git-remote.d.ts.map +1 -0
- package/dist/server/shared/git-remote.js +72 -0
- package/dist/server/shared/git-remote.js.map +1 -0
- package/dist/server/utils/checkout-git.d.ts +1 -0
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +3 -0
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/github-remote.d.ts +3 -7
- package/dist/server/utils/github-remote.d.ts.map +1 -1
- package/dist/server/utils/github-remote.js +4 -70
- package/dist/server/utils/github-remote.js.map +1 -1
- package/dist/server/utils/run-git-command.d.ts.map +1 -1
- package/dist/server/utils/run-git-command.js +1 -0
- package/dist/server/utils/run-git-command.js.map +1 -1
- package/dist/src/server/agent/provider-launch-config.js +1 -0
- package/dist/src/server/agent/provider-launch-config.js.map +1 -1
- package/package.json +5 -5
|
@@ -4,17 +4,16 @@ import * as fsSync from "node:fs";
|
|
|
4
4
|
import fs from "node:fs/promises";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
|
-
import readline from "node:readline";
|
|
8
7
|
import { z } from "zod";
|
|
9
8
|
import { renderPromptAttachmentAsText } from "../prompt-attachments.js";
|
|
10
9
|
import { curateAgentActivity } from "../activity-curator.js";
|
|
11
10
|
import { mapCodexRolloutToolCall, mapCodexToolCallFromThreadItem, } from "./codex/tool-call-mapper.js";
|
|
12
11
|
import { createProviderEnv, createProviderEnvSpec, resolveProviderCommandPrefix, } from "../provider-launch-config.js";
|
|
13
12
|
import { findExecutable, isCommandAvailable } from "../../../utils/executable.js";
|
|
14
|
-
import { terminateWithTreeKill } from "../../../utils/tree-kill.js";
|
|
15
13
|
import { spawnProcess } from "../../../utils/spawn.js";
|
|
16
14
|
import { extractCodexTerminalSessionId, nonEmptyString } from "./tool-call-mapper-utils.js";
|
|
17
15
|
import { buildCodexFeatures, codexModelSupportsFastMode } from "./codex-feature-definitions.js";
|
|
16
|
+
import { CodexAppServerClient } from "./codex/app-server-transport.js";
|
|
18
17
|
import { renderProviderImageOutputAsAssistantMarkdown, } from "./provider-image-output.js";
|
|
19
18
|
import { formatDiagnosticStatus, formatProviderDiagnostic, formatProviderDiagnosticError, resolveBinaryVersion, toDiagnosticErrorMessage, } from "./diagnostic-utils.js";
|
|
20
19
|
import { runProviderTurn } from "./provider-runner.js";
|
|
@@ -26,11 +25,8 @@ function assertChildWithPipes(child) {
|
|
|
26
25
|
function isRecord(value) {
|
|
27
26
|
return value != null && typeof value === "object" && !Array.isArray(value);
|
|
28
27
|
}
|
|
29
|
-
const DEFAULT_TIMEOUT_MS = 14 * 24 * 60 * 60 * 1000;
|
|
30
28
|
const TURN_START_TIMEOUT_MS = 90 * 1000;
|
|
31
29
|
const INTERRUPT_TIMEOUT_MS = 2000;
|
|
32
|
-
const APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS = 2000;
|
|
33
|
-
const APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS = 1000;
|
|
34
30
|
const CODEX_PROVIDER = "codex";
|
|
35
31
|
const CODEX_IMAGE_ATTACHMENT_DIR = "paseo-attachments";
|
|
36
32
|
const ASSISTANT_MESSAGE_BOUNDARY_MARKDOWN = "\n\n---\n\n";
|
|
@@ -458,23 +454,6 @@ function toCodexMcpConfig(config) {
|
|
|
458
454
|
}
|
|
459
455
|
}
|
|
460
456
|
}
|
|
461
|
-
function isJsonRpcResponse(msg) {
|
|
462
|
-
if (!isRecord(msg))
|
|
463
|
-
return false;
|
|
464
|
-
if (typeof msg.id !== "number")
|
|
465
|
-
return false;
|
|
466
|
-
return msg.result !== undefined || !!msg.error;
|
|
467
|
-
}
|
|
468
|
-
function isJsonRpcRequest(msg) {
|
|
469
|
-
if (!isRecord(msg))
|
|
470
|
-
return false;
|
|
471
|
-
return typeof msg.id === "number" && typeof msg.method === "string";
|
|
472
|
-
}
|
|
473
|
-
function isJsonRpcNotification(msg) {
|
|
474
|
-
if (!isRecord(msg))
|
|
475
|
-
return false;
|
|
476
|
-
return typeof msg.method === "string" && typeof msg.id !== "number";
|
|
477
|
-
}
|
|
478
457
|
function toObjectRecord(value) {
|
|
479
458
|
return isRecord(value) ? value : undefined;
|
|
480
459
|
}
|
|
@@ -506,154 +485,6 @@ function filterCodexThreadsByCwd(threads, cwd) {
|
|
|
506
485
|
// with no cwd would falsely match the daemon's own cwd.
|
|
507
486
|
return threads.filter((thread) => typeof thread.cwd === "string" && thread.cwd === cwd);
|
|
508
487
|
}
|
|
509
|
-
class CodexAppServerClient {
|
|
510
|
-
constructor(child, logger) {
|
|
511
|
-
this.child = child;
|
|
512
|
-
this.logger = logger;
|
|
513
|
-
this.pending = new Map();
|
|
514
|
-
this.requestHandlers = new Map();
|
|
515
|
-
this.notificationHandler = null;
|
|
516
|
-
this.nextId = 1;
|
|
517
|
-
this.disposed = false;
|
|
518
|
-
this.stderrBuffer = "";
|
|
519
|
-
this.rl = readline.createInterface({ input: child.stdout });
|
|
520
|
-
this.rl.on("line", (line) => this.handleLine(line));
|
|
521
|
-
child.stderr.on("data", (chunk) => {
|
|
522
|
-
this.stderrBuffer += chunk.toString();
|
|
523
|
-
if (this.stderrBuffer.length > 8192) {
|
|
524
|
-
this.stderrBuffer = this.stderrBuffer.slice(-8192);
|
|
525
|
-
}
|
|
526
|
-
});
|
|
527
|
-
child.on("error", (err) => {
|
|
528
|
-
this.logger.error({ err }, "Codex app-server child process error");
|
|
529
|
-
for (const pending of this.pending.values()) {
|
|
530
|
-
clearTimeout(pending.timer);
|
|
531
|
-
pending.reject(err);
|
|
532
|
-
}
|
|
533
|
-
this.pending.clear();
|
|
534
|
-
this.disposed = true;
|
|
535
|
-
});
|
|
536
|
-
child.on("exit", (code, signal) => {
|
|
537
|
-
const message = code === 0 && !signal
|
|
538
|
-
? "Codex app-server exited"
|
|
539
|
-
: `Codex app-server exited with code ${code ?? "null"} and signal ${signal ?? "null"}`;
|
|
540
|
-
const error = new Error(`${message}\n${this.stderrBuffer}`.trim());
|
|
541
|
-
for (const pending of this.pending.values()) {
|
|
542
|
-
clearTimeout(pending.timer);
|
|
543
|
-
pending.reject(error);
|
|
544
|
-
}
|
|
545
|
-
this.pending.clear();
|
|
546
|
-
this.disposed = true;
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
setNotificationHandler(handler) {
|
|
550
|
-
this.notificationHandler = handler;
|
|
551
|
-
}
|
|
552
|
-
setRequestHandler(method, handler) {
|
|
553
|
-
this.requestHandlers.set(method, handler);
|
|
554
|
-
}
|
|
555
|
-
request(method, params, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
556
|
-
if (this.disposed) {
|
|
557
|
-
return Promise.reject(new Error("Codex app-server client is closed"));
|
|
558
|
-
}
|
|
559
|
-
const id = this.nextId++;
|
|
560
|
-
const payload = { id, method, params };
|
|
561
|
-
const serialized = JSON.stringify(payload);
|
|
562
|
-
this.child.stdin.write(`${serialized}\n`);
|
|
563
|
-
return new Promise((resolve, reject) => {
|
|
564
|
-
const timer = setTimeout(() => {
|
|
565
|
-
this.pending.delete(id);
|
|
566
|
-
reject(new Error(`Codex app-server request timed out for ${method}`));
|
|
567
|
-
}, timeoutMs);
|
|
568
|
-
this.pending.set(id, { resolve, reject, timer });
|
|
569
|
-
});
|
|
570
|
-
}
|
|
571
|
-
notify(method, params) {
|
|
572
|
-
if (this.disposed) {
|
|
573
|
-
return;
|
|
574
|
-
}
|
|
575
|
-
const payload = { method, params };
|
|
576
|
-
this.child.stdin.write(`${JSON.stringify(payload)}\n`);
|
|
577
|
-
}
|
|
578
|
-
writeJsonRpcResponse(response) {
|
|
579
|
-
if (this.disposed || this.child.stdin.destroyed || !this.child.stdin.writable) {
|
|
580
|
-
return;
|
|
581
|
-
}
|
|
582
|
-
try {
|
|
583
|
-
this.child.stdin.write(`${JSON.stringify(response)}\n`);
|
|
584
|
-
}
|
|
585
|
-
catch (error) {
|
|
586
|
-
this.logger.debug({ error }, "Failed to write Codex app-server JSON-RPC response");
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
async dispose() {
|
|
590
|
-
if (this.disposed)
|
|
591
|
-
return;
|
|
592
|
-
this.disposed = true;
|
|
593
|
-
this.rl.close();
|
|
594
|
-
try {
|
|
595
|
-
this.child.stdin.end();
|
|
596
|
-
}
|
|
597
|
-
catch {
|
|
598
|
-
// ignore
|
|
599
|
-
}
|
|
600
|
-
const result = await terminateWithTreeKill(this.child, {
|
|
601
|
-
gracefulTimeoutMs: APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS,
|
|
602
|
-
forceTimeoutMs: APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS,
|
|
603
|
-
onForceSignal: () => {
|
|
604
|
-
this.logger.warn({ timeoutMs: APP_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT_MS }, "Codex app-server did not exit after SIGTERM; sending SIGKILL");
|
|
605
|
-
},
|
|
606
|
-
});
|
|
607
|
-
if (result === "kill-timeout") {
|
|
608
|
-
this.logger.warn({ timeoutMs: APP_SERVER_FORCE_SHUTDOWN_TIMEOUT_MS }, "Codex app-server did not report exit after SIGKILL");
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
async handleLine(line) {
|
|
612
|
-
if (!line.trim())
|
|
613
|
-
return;
|
|
614
|
-
const raw = JSON.parse(line);
|
|
615
|
-
if (!isRecord(raw)) {
|
|
616
|
-
this.logger.warn({ line }, "Parsed JSON is not an object");
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
619
|
-
if (isJsonRpcResponse(raw)) {
|
|
620
|
-
const id = raw.id;
|
|
621
|
-
if (raw.result !== undefined || raw.error) {
|
|
622
|
-
const pending = this.pending.get(id);
|
|
623
|
-
if (!pending)
|
|
624
|
-
return;
|
|
625
|
-
clearTimeout(pending.timer);
|
|
626
|
-
this.pending.delete(id);
|
|
627
|
-
if (raw.error) {
|
|
628
|
-
pending.reject(new Error(raw.error.message ?? "Unknown error"));
|
|
629
|
-
}
|
|
630
|
-
else {
|
|
631
|
-
pending.resolve(raw.result);
|
|
632
|
-
}
|
|
633
|
-
return;
|
|
634
|
-
}
|
|
635
|
-
// Server-initiated request
|
|
636
|
-
if (isJsonRpcRequest(raw)) {
|
|
637
|
-
const request = raw;
|
|
638
|
-
const handler = this.requestHandlers.get(request.method);
|
|
639
|
-
try {
|
|
640
|
-
const result = handler ? await handler(request.params) : {};
|
|
641
|
-
this.writeJsonRpcResponse({ id: request.id, result });
|
|
642
|
-
}
|
|
643
|
-
catch (error) {
|
|
644
|
-
this.writeJsonRpcResponse({
|
|
645
|
-
id: request.id,
|
|
646
|
-
error: { message: error instanceof Error ? error.message : String(error) },
|
|
647
|
-
});
|
|
648
|
-
}
|
|
649
|
-
return;
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
if (isJsonRpcNotification(raw)) {
|
|
653
|
-
this.notificationHandler?.(raw.method, raw.params);
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
488
|
function toAgentUsage(tokenUsage) {
|
|
658
489
|
const usage = toObjectRecord(tokenUsage);
|
|
659
490
|
if (!usage)
|
|
@@ -3148,7 +2979,7 @@ class CodexAppServerAgentSession {
|
|
|
3148
2979
|
this.pendingCommandOutputDeltas.delete(itemId);
|
|
3149
2980
|
this.pendingFileChangeOutputDeltas.delete(itemId);
|
|
3150
2981
|
}
|
|
3151
|
-
this.emitSubAgentActivityUpdate(callId,
|
|
2982
|
+
this.emitSubAgentActivityUpdate(callId, "running");
|
|
3152
2983
|
}
|
|
3153
2984
|
shouldSkipCompletedThreadItem(timelineItem, normalizedItemType, itemId) {
|
|
3154
2985
|
// For commandExecution items, codex/event/exec_command_* is authoritative.
|