@getpaseo/server 0.1.59 → 0.1.61
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/scripts/dev-runner.js +26 -7
- package/dist/scripts/dev-runner.js.map +1 -1
- package/dist/server/client/daemon-client-runtime-metrics.d.ts +39 -0
- package/dist/server/client/daemon-client-runtime-metrics.d.ts.map +1 -0
- package/dist/server/client/daemon-client-runtime-metrics.js +173 -0
- package/dist/server/client/daemon-client-runtime-metrics.js.map +1 -0
- package/dist/server/client/daemon-client.d.ts +58 -9
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +151 -10
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/agent-manager.d.ts +55 -48
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +541 -331
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.d.ts +3 -2
- package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
- package/dist/server/server/agent/agent-metadata-generator.js +31 -16
- package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
- package/dist/server/server/agent/agent-projections.d.ts +2 -1
- package/dist/server/server/agent/agent-projections.d.ts.map +1 -1
- package/dist/server/server/agent/agent-projections.js +29 -1
- package/dist/server/server/agent/agent-projections.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +9 -5
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
- package/dist/server/server/agent/agent-storage.d.ts +76 -69
- package/dist/server/server/agent/agent-storage.d.ts.map +1 -1
- package/dist/server/server/agent/agent-storage.js +13 -6
- package/dist/server/server/agent/agent-storage.js.map +1 -1
- package/dist/server/server/agent/agent-stream-coalescer.d.ts +41 -0
- package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -0
- package/dist/server/server/agent/agent-stream-coalescer.js +166 -0
- package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -0
- package/dist/server/server/agent/agent-timeline-store-types.d.ts +54 -0
- package/dist/server/server/agent/agent-timeline-store-types.d.ts.map +1 -0
- package/dist/server/server/agent/agent-timeline-store-types.js +2 -0
- package/dist/server/server/agent/agent-timeline-store-types.js.map +1 -0
- package/dist/server/server/agent/agent-timeline-store.d.ts +32 -0
- package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -0
- package/dist/server/server/agent/agent-timeline-store.js +245 -0
- package/dist/server/server/agent/agent-timeline-store.js.map +1 -0
- package/dist/server/server/agent/mcp-server.d.ts +12 -1
- package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-server.js +276 -65
- package/dist/server/server/agent/mcp-server.js.map +1 -1
- package/dist/server/server/agent/mcp-shared.d.ts +196 -152
- package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
- package/dist/server/server/agent/mcp-shared.js +40 -42
- package/dist/server/server/agent/mcp-shared.js.map +1 -1
- package/dist/server/server/agent/model-resolver.d.ts.map +1 -1
- package/dist/server/server/agent/model-resolver.js +3 -1
- package/dist/server/server/agent/model-resolver.js.map +1 -1
- package/dist/server/server/agent/prompt-attachments.d.ts +6 -0
- package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -0
- package/dist/server/server/agent/prompt-attachments.js +31 -0
- package/dist/server/server/agent/prompt-attachments.js.map +1 -0
- package/dist/server/server/agent/provider-launch-config.d.ts +78 -8
- package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
- package/dist/server/server/agent/provider-launch-config.js +35 -0
- package/dist/server/server/agent/provider-launch-config.js.map +1 -1
- package/dist/server/server/agent/provider-manifest.d.ts +1 -0
- package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
- package/dist/server/server/agent/provider-manifest.js +22 -1
- package/dist/server/server/agent/provider-manifest.js.map +1 -1
- package/dist/server/server/agent/provider-registry.d.ts +5 -2
- package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
- package/dist/server/server/agent/provider-registry.js +61 -17
- package/dist/server/server/agent/provider-registry.js.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.d.ts +17 -5
- package/dist/server/server/agent/provider-snapshot-manager.d.ts.map +1 -1
- package/dist/server/server/agent/provider-snapshot-manager.js +150 -61
- package/dist/server/server/agent/provider-snapshot-manager.js.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.d.ts +8 -4
- package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/acp-agent.js +73 -8
- package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +2 -2
- package/dist/server/server/agent/providers/claude-agent.d.ts +1 -1
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.js +8 -7
- package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +37 -4
- 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 +61 -31
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/copilot-acp-agent.js +3 -2
- package/dist/server/server/agent/providers/copilot-acp-agent.js.map +1 -1
- package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +64 -0
- package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/mock-load-test-agent.js +585 -0
- package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts +19 -4
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +227 -118
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts +69 -0
- package/dist/server/server/agent/providers/pi-direct-agent.d.ts.map +1 -0
- package/dist/server/server/agent/providers/pi-direct-agent.js +1171 -0
- package/dist/server/server/agent/providers/pi-direct-agent.js.map +1 -0
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +7 -4
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
- package/dist/server/server/agent-attention-policy.d.ts +13 -13
- package/dist/server/server/agent-attention-policy.d.ts.map +1 -1
- package/dist/server/server/agent-attention-policy.js +20 -36
- package/dist/server/server/agent-attention-policy.js.map +1 -1
- package/dist/server/server/bootstrap.d.ts +6 -0
- package/dist/server/server/bootstrap.d.ts.map +1 -1
- package/dist/server/server/bootstrap.js +113 -11
- package/dist/server/server/bootstrap.js.map +1 -1
- package/dist/server/server/chat/chat-rpc-schemas.d.ts +44 -44
- package/dist/server/server/chat/chat-types.d.ts +6 -6
- package/dist/server/server/checkout-diff-manager.d.ts +0 -1
- package/dist/server/server/checkout-diff-manager.d.ts.map +1 -1
- package/dist/server/server/checkout-diff-manager.js +6 -4
- package/dist/server/server/checkout-diff-manager.js.map +1 -1
- package/dist/server/server/config.d.ts.map +1 -1
- package/dist/server/server/config.js +1 -0
- package/dist/server/server/config.js.map +1 -1
- package/dist/server/server/file-explorer/service.d.ts.map +1 -1
- package/dist/server/server/file-explorer/service.js +2 -1
- package/dist/server/server/file-explorer/service.js.map +1 -1
- package/dist/server/server/loop/rpc-schemas.d.ts +392 -392
- package/dist/server/server/loop-service.d.ts +52 -52
- package/dist/server/server/paseo-worktree-archive-service.d.ts +41 -0
- package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -0
- package/dist/server/server/paseo-worktree-archive-service.js +137 -0
- package/dist/server/server/paseo-worktree-archive-service.js.map +1 -0
- package/dist/server/server/paseo-worktree-service.d.ts +24 -0
- package/dist/server/server/paseo-worktree-service.d.ts.map +1 -0
- package/dist/server/server/paseo-worktree-service.js +94 -0
- package/dist/server/server/paseo-worktree-service.js.map +1 -0
- package/dist/server/server/path-utils.d.ts +1 -0
- package/dist/server/server/path-utils.d.ts.map +1 -1
- package/dist/server/server/path-utils.js +9 -0
- package/dist/server/server/path-utils.js.map +1 -1
- package/dist/server/server/persisted-config.d.ts +195 -67
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persistence-hooks.d.ts.map +1 -1
- package/dist/server/server/persistence-hooks.js +3 -0
- package/dist/server/server/persistence-hooks.js.map +1 -1
- package/dist/server/server/resolve-worktree-creation-intent.d.ts +30 -0
- package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -0
- package/dist/server/server/resolve-worktree-creation-intent.js +163 -0
- package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -0
- package/dist/server/server/schedule/rpc-schemas.d.ts +192 -192
- package/dist/server/server/schedule/service.d.ts +1 -1
- package/dist/server/server/schedule/service.d.ts.map +1 -1
- package/dist/server/server/schedule/types.d.ts +44 -44
- package/dist/server/server/script-health-monitor.d.ts +39 -0
- package/dist/server/server/script-health-monitor.d.ts.map +1 -0
- package/dist/server/server/script-health-monitor.js +158 -0
- package/dist/server/server/script-health-monitor.js.map +1 -0
- package/dist/server/server/script-proxy.d.ts +40 -0
- package/dist/server/server/script-proxy.d.ts.map +1 -0
- package/dist/server/server/script-proxy.js +245 -0
- package/dist/server/server/script-proxy.js.map +1 -0
- package/dist/server/server/script-route-branch-handler.d.ts +10 -0
- package/dist/server/server/script-route-branch-handler.d.ts.map +1 -0
- package/dist/server/server/script-route-branch-handler.js +45 -0
- package/dist/server/server/script-route-branch-handler.js.map +1 -0
- package/dist/server/server/script-status-projection.d.ts +29 -0
- package/dist/server/server/script-status-projection.d.ts.map +1 -0
- package/dist/server/server/script-status-projection.js +133 -0
- package/dist/server/server/script-status-projection.js.map +1 -0
- package/dist/server/server/session.d.ts +77 -13
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +1290 -548
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/websocket-server.d.ts +27 -3
- package/dist/server/server/websocket-server.d.ts.map +1 -1
- package/dist/server/server/websocket-server.js +112 -29
- package/dist/server/server/websocket-server.js.map +1 -1
- package/dist/server/server/workspace-archive-service.d.ts +8 -0
- package/dist/server/server/workspace-archive-service.d.ts.map +1 -0
- package/dist/server/server/workspace-archive-service.js +17 -0
- package/dist/server/server/workspace-archive-service.js.map +1 -0
- package/dist/server/server/workspace-git-metadata.d.ts +24 -0
- package/dist/server/server/workspace-git-metadata.d.ts.map +1 -0
- package/dist/server/server/workspace-git-metadata.js +78 -0
- package/dist/server/server/workspace-git-metadata.js.map +1 -0
- package/dist/server/server/workspace-git-service.d.ts +104 -5
- package/dist/server/server/workspace-git-service.d.ts.map +1 -1
- package/dist/server/server/workspace-git-service.js +442 -56
- package/dist/server/server/workspace-git-service.js.map +1 -1
- package/dist/server/server/workspace-reconciliation-service.d.ts +54 -0
- package/dist/server/server/workspace-reconciliation-service.d.ts.map +1 -0
- package/dist/server/server/workspace-reconciliation-service.js +176 -0
- package/dist/server/server/workspace-reconciliation-service.js.map +1 -0
- package/dist/server/server/workspace-registry-bootstrap.d.ts.map +1 -1
- package/dist/server/server/workspace-registry-bootstrap.js +4 -3
- package/dist/server/server/workspace-registry-bootstrap.js.map +1 -1
- package/dist/server/server/workspace-registry.d.ts +8 -8
- package/dist/server/server/workspace-registry.test-helpers.d.ts +37 -0
- package/dist/server/server/workspace-registry.test-helpers.d.ts.map +1 -0
- package/dist/server/server/workspace-registry.test-helpers.js +121 -0
- package/dist/server/server/workspace-registry.test-helpers.js.map +1 -0
- package/dist/server/server/workspace-script-runtime-store.d.ts +28 -0
- package/dist/server/server/workspace-script-runtime-store.d.ts.map +1 -0
- package/dist/server/server/workspace-script-runtime-store.js +78 -0
- package/dist/server/server/workspace-script-runtime-store.js.map +1 -0
- package/dist/server/server/workspace-service-env.d.ts +17 -0
- package/dist/server/server/workspace-service-env.d.ts.map +1 -0
- package/dist/server/server/workspace-service-env.js +80 -0
- package/dist/server/server/workspace-service-env.js.map +1 -0
- package/dist/server/server/workspace-service-port-registry.d.ts +19 -0
- package/dist/server/server/workspace-service-port-registry.d.ts.map +1 -0
- package/dist/server/server/workspace-service-port-registry.js +59 -0
- package/dist/server/server/workspace-service-port-registry.js.map +1 -0
- package/dist/server/server/worktree-bootstrap.d.ts +55 -10
- package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
- package/dist/server/server/worktree-bootstrap.js +290 -112
- package/dist/server/server/worktree-bootstrap.js.map +1 -1
- package/dist/server/server/worktree-core.d.ts +25 -0
- package/dist/server/server/worktree-core.d.ts.map +1 -0
- package/dist/server/server/worktree-core.js +75 -0
- package/dist/server/server/worktree-core.js.map +1 -0
- package/dist/server/server/worktree-errors.d.ts +12 -0
- package/dist/server/server/worktree-errors.d.ts.map +1 -0
- package/dist/server/server/worktree-errors.js +31 -0
- package/dist/server/server/worktree-errors.js.map +1 -0
- package/dist/server/server/worktree-session.d.ts +56 -70
- package/dist/server/server/worktree-session.d.ts.map +1 -1
- package/dist/server/server/worktree-session.js +176 -251
- package/dist/server/server/worktree-session.js.map +1 -1
- package/dist/server/services/github-service.d.ts +225 -0
- package/dist/server/services/github-service.d.ts.map +1 -0
- package/dist/server/services/github-service.js +1381 -0
- package/dist/server/services/github-service.js.map +1 -0
- package/dist/server/shared/messages.d.ts +29408 -12268
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +391 -65
- package/dist/server/shared/messages.js.map +1 -1
- package/dist/server/terminal/shell-integration/zsh/.zshenv +17 -0
- package/dist/server/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
- package/dist/server/terminal/terminal-manager.d.ts +9 -0
- package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
- package/dist/server/terminal/terminal-manager.js +27 -0
- package/dist/server/terminal/terminal-manager.js.map +1 -1
- package/dist/server/terminal/terminal-output-coalescer.d.ts +30 -0
- package/dist/server/terminal/terminal-output-coalescer.d.ts.map +1 -0
- package/dist/server/terminal/terminal-output-coalescer.js +55 -0
- package/dist/server/terminal/terminal-output-coalescer.js.map +1 -0
- package/dist/server/terminal/terminal.d.ts +32 -1
- package/dist/server/terminal/terminal.d.ts.map +1 -1
- package/dist/server/terminal/terminal.js +397 -17
- package/dist/server/terminal/terminal.js.map +1 -1
- package/dist/server/utils/checkout-git.d.ts +63 -10
- package/dist/server/utils/checkout-git.d.ts.map +1 -1
- package/dist/server/utils/checkout-git.js +321 -229
- package/dist/server/utils/checkout-git.js.map +1 -1
- package/dist/server/utils/promise-timeout.d.ts +9 -0
- package/dist/server/utils/promise-timeout.d.ts.map +1 -0
- package/dist/server/utils/promise-timeout.js +25 -0
- package/dist/server/utils/promise-timeout.js.map +1 -0
- package/dist/server/utils/script-hostname.d.ts +8 -0
- package/dist/server/utils/script-hostname.d.ts.map +1 -0
- package/dist/server/utils/script-hostname.js +14 -0
- package/dist/server/utils/script-hostname.js.map +1 -0
- package/dist/server/utils/string-command-shell.d.ts +10 -0
- package/dist/server/utils/string-command-shell.d.ts.map +1 -0
- package/dist/server/utils/string-command-shell.js +21 -0
- package/dist/server/utils/string-command-shell.js.map +1 -0
- package/dist/server/utils/worktree.d.ts +54 -7
- package/dist/server/utils/worktree.d.ts.map +1 -1
- package/dist/server/utils/worktree.js +434 -129
- package/dist/server/utils/worktree.js.map +1 -1
- package/dist/src/terminal/shell-integration/zsh/.zshenv +17 -0
- package/dist/src/terminal/shell-integration/zsh/paseo-integration.zsh +32 -0
- package/package.json +11 -14
- package/dist/server/server/agent/providers/pi-acp-agent.d.ts +0 -28
- package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +0 -1
- package/dist/server/server/agent/providers/pi-acp-agent.js +0 -302
- package/dist/server/server/agent/providers/pi-acp-agent.js.map +0 -1
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { ensureValidJson } from "../json-utils.js";
|
|
4
|
-
import { AgentPermissionRequestPayloadSchema, AgentPermissionResponseSchema, AgentSnapshotPayloadSchema, } from "../messages.js";
|
|
5
|
-
import { buildStoredAgentPayload, toAgentPayload } from "./agent-projections.js";
|
|
4
|
+
import { AgentPermissionRequestPayloadSchema, AgentListItemPayloadSchema, AgentPermissionResponseSchema, AgentSnapshotPayloadSchema, } from "../messages.js";
|
|
5
|
+
import { buildStoredAgentPayload, toAgentListItemPayload, toAgentPayload, } from "./agent-projections.js";
|
|
6
6
|
import { curateAgentActivity } from "./activity-curator.js";
|
|
7
7
|
import { ensureAgentLoaded } from "./agent-loading.js";
|
|
8
8
|
import { appendTimelineItemIfAgentKnown, emitLiveTimelineItemIfAgentKnown, } from "./timeline-append.js";
|
|
9
|
+
import { getPaseoWorktreesRoot } from "../../utils/worktree.js";
|
|
10
|
+
import { archivePaseoWorktree, killTerminalsUnderPath, } from "../paseo-worktree-archive-service.js";
|
|
9
11
|
import { WaitForAgentTracker } from "./wait-for-agent-tracker.js";
|
|
10
12
|
import { scheduleAgentMetadataGeneration } from "./agent-metadata-generator.js";
|
|
11
|
-
import { expandUserPath, resolvePathFromBase } from "../path-utils.js";
|
|
13
|
+
import { expandUserPath, isSameOrDescendantPath, resolvePathFromBase } from "../path-utils.js";
|
|
12
14
|
import { captureTerminalLines } from "../../terminal/terminal.js";
|
|
13
|
-
import {
|
|
15
|
+
import { runAsyncWorktreeBootstrap } from "../worktree-bootstrap.js";
|
|
14
16
|
import { ScheduleSummarySchema, StoredScheduleSchema } from "../schedule/types.js";
|
|
15
|
-
import {
|
|
16
|
-
import { AgentModelSchema, AgentProviderEnum, AgentStatusEnum, ProviderSummarySchema, parseDurationString,
|
|
17
|
+
import { resolveSnapshotCwd } from "./provider-snapshot-manager.js";
|
|
18
|
+
import { AgentModelSchema, AgentProviderEnum, AgentStatusEnum, ProviderSummarySchema, parseDurationString, resolveRequiredProviderModel, sanitizePermissionRequest, sendPromptToAgent, setupFinishNotification, serializeSnapshotWithMetadata, startAgentRun, toScheduleSummary, waitForAgentWithTimeout, } from "./mcp-shared.js";
|
|
19
|
+
import { toWorktreeRequestError } from "../worktree-errors.js";
|
|
20
|
+
import { join } from "node:path";
|
|
17
21
|
const CLAUDE_TO_CODEX_MODE = {
|
|
18
22
|
plan: "read-only",
|
|
19
23
|
default: "auto",
|
|
@@ -45,6 +49,50 @@ function mapModeAcrossProviders(sourceMode, sourceProvider, targetProvider) {
|
|
|
45
49
|
}
|
|
46
50
|
return sourceMode;
|
|
47
51
|
}
|
|
52
|
+
function parseTimestamp(value) {
|
|
53
|
+
if (!value) {
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
const parsed = Date.parse(value);
|
|
57
|
+
return Number.isNaN(parsed) ? 0 : parsed;
|
|
58
|
+
}
|
|
59
|
+
function resolveAgentListActivityTime(agent) {
|
|
60
|
+
return Math.max(parseTimestamp(agent.updatedAt), parseTimestamp(agent.lastUserMessageAt), parseTimestamp(agent.attentionTimestamp), parseTimestamp(agent.archivedAt), parseTimestamp(agent.createdAt));
|
|
61
|
+
}
|
|
62
|
+
function compareAgentListItems(a, b) {
|
|
63
|
+
const attentionDelta = Number(b.requiresAttention ?? false) - Number(a.requiresAttention ?? false);
|
|
64
|
+
if (attentionDelta !== 0) {
|
|
65
|
+
return attentionDelta;
|
|
66
|
+
}
|
|
67
|
+
const statusOrder = {
|
|
68
|
+
running: 0,
|
|
69
|
+
initializing: 1,
|
|
70
|
+
idle: 2,
|
|
71
|
+
error: 3,
|
|
72
|
+
closed: 4,
|
|
73
|
+
};
|
|
74
|
+
const statusDelta = (statusOrder[a.status] ?? 999) - (statusOrder[b.status] ?? 999);
|
|
75
|
+
if (statusDelta !== 0) {
|
|
76
|
+
return statusDelta;
|
|
77
|
+
}
|
|
78
|
+
return resolveAgentListActivityTime(b) - resolveAgentListActivityTime(a);
|
|
79
|
+
}
|
|
80
|
+
function resolveScheduleProviderAndModel(params) {
|
|
81
|
+
const providerInput = params.provider?.trim() || params.defaultProvider;
|
|
82
|
+
const slashIndex = providerInput.indexOf("/");
|
|
83
|
+
if (slashIndex === -1) {
|
|
84
|
+
return { provider: providerInput };
|
|
85
|
+
}
|
|
86
|
+
const provider = providerInput.slice(0, slashIndex).trim();
|
|
87
|
+
const model = providerInput.slice(slashIndex + 1).trim();
|
|
88
|
+
if (!provider || !model) {
|
|
89
|
+
throw new Error("provider must be <provider> or <provider>/<model>");
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
provider: provider,
|
|
93
|
+
model,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
48
96
|
function resolveChildAgentCwd(params) {
|
|
49
97
|
const lockedCwd = params.lockedCwd?.trim();
|
|
50
98
|
if (lockedCwd) {
|
|
@@ -147,7 +195,7 @@ export async function createAgentMcpServer(options) {
|
|
|
147
195
|
if (callerAgent) {
|
|
148
196
|
const hasProviderOverride = params?.provider !== undefined;
|
|
149
197
|
const resolvedProviderModel = hasProviderOverride
|
|
150
|
-
?
|
|
198
|
+
? resolveScheduleProviderAndModel({
|
|
151
199
|
provider: params?.provider,
|
|
152
200
|
defaultProvider: callerAgent.provider,
|
|
153
201
|
})
|
|
@@ -192,21 +240,32 @@ export async function createAgentMcpServer(options) {
|
|
|
192
240
|
},
|
|
193
241
|
};
|
|
194
242
|
}
|
|
243
|
+
const resolvedProviderModel = resolveScheduleProviderAndModel({
|
|
244
|
+
provider: params?.provider,
|
|
245
|
+
defaultProvider: "claude",
|
|
246
|
+
});
|
|
195
247
|
return {
|
|
196
248
|
type: "new-agent",
|
|
197
|
-
config:
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
return {
|
|
203
|
-
provider: resolvedProviderModel.provider,
|
|
204
|
-
cwd: params?.cwd?.trim() ? expandUserPath(params.cwd) : process.cwd(),
|
|
205
|
-
...(resolvedProviderModel.model ? { model: resolvedProviderModel.model } : {}),
|
|
206
|
-
};
|
|
207
|
-
})(),
|
|
249
|
+
config: {
|
|
250
|
+
provider: resolvedProviderModel.provider,
|
|
251
|
+
cwd: params?.cwd?.trim() ? expandUserPath(params.cwd) : process.cwd(),
|
|
252
|
+
...(resolvedProviderModel.model ? { model: resolvedProviderModel.model } : {}),
|
|
253
|
+
},
|
|
208
254
|
};
|
|
209
255
|
};
|
|
256
|
+
const ProviderModelInputSchema = AgentProviderEnum.trim()
|
|
257
|
+
.refine((value) => value.includes("/"), {
|
|
258
|
+
message: "provider must be provider/model, for example codex/gpt-5.4",
|
|
259
|
+
})
|
|
260
|
+
.refine((value) => {
|
|
261
|
+
try {
|
|
262
|
+
resolveRequiredProviderModel(value);
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}, { message: "provider must be provider/model, for example codex/gpt-5.4" });
|
|
210
269
|
const agentToAgentInputSchema = {
|
|
211
270
|
cwd: z
|
|
212
271
|
.string()
|
|
@@ -218,8 +277,7 @@ export async function createAgentMcpServer(options) {
|
|
|
218
277
|
.min(1, "Title is required")
|
|
219
278
|
.max(60, "Title must be 60 characters or fewer")
|
|
220
279
|
.describe("Short descriptive title (<= 60 chars) summarizing the agent's focus."),
|
|
221
|
-
provider:
|
|
222
|
-
model: z.string().optional().describe("Model to use (e.g. claude-sonnet-4-20250514)"),
|
|
280
|
+
provider: ProviderModelInputSchema.describe("Required provider/model pair, for example codex/gpt-5.4."),
|
|
223
281
|
thinking: z.string().optional().describe("Thinking option ID"),
|
|
224
282
|
labels: z.record(z.string(), z.string()).optional().describe("Labels to set on the agent"),
|
|
225
283
|
initialPrompt: z
|
|
@@ -248,8 +306,7 @@ export async function createAgentMcpServer(options) {
|
|
|
248
306
|
.min(1, "Title is required")
|
|
249
307
|
.max(60, "Title must be 60 characters or fewer")
|
|
250
308
|
.describe("Short descriptive title (<= 60 chars) summarizing the agent's focus."),
|
|
251
|
-
provider:
|
|
252
|
-
model: z.string().optional().describe("Model to use (e.g. claude-sonnet-4-20250514)"),
|
|
309
|
+
provider: ProviderModelInputSchema.describe("Required provider/model pair, for example codex/gpt-5.4."),
|
|
253
310
|
thinking: z.string().optional().describe("Thinking option ID"),
|
|
254
311
|
labels: z.record(z.string(), z.string()).optional().describe("Labels to set on the agent"),
|
|
255
312
|
initialPrompt: z
|
|
@@ -269,6 +326,17 @@ export async function createAgentMcpServer(options) {
|
|
|
269
326
|
.string()
|
|
270
327
|
.optional()
|
|
271
328
|
.describe("Required when worktreeName is set: the base branch to diff/merge against."),
|
|
329
|
+
refName: z.string().min(1).optional().describe("Optional source ref for worktree creation."),
|
|
330
|
+
action: z
|
|
331
|
+
.enum(["branch-off", "checkout"])
|
|
332
|
+
.optional()
|
|
333
|
+
.describe("Optional worktree creation action."),
|
|
334
|
+
githubPrNumber: z
|
|
335
|
+
.number()
|
|
336
|
+
.int()
|
|
337
|
+
.positive()
|
|
338
|
+
.optional()
|
|
339
|
+
.describe("Optional GitHub pull request number to checkout."),
|
|
272
340
|
background: z
|
|
273
341
|
.boolean()
|
|
274
342
|
.optional()
|
|
@@ -281,8 +349,8 @@ export async function createAgentMcpServer(options) {
|
|
|
281
349
|
.describe("Send a notification prompt to the caller agent when this agent finishes, errors, or needs permission. Requires a caller agent context."),
|
|
282
350
|
};
|
|
283
351
|
const createAgentInputSchema = callerAgentId ? agentToAgentInputSchema : topLevelInputSchema;
|
|
284
|
-
const agentToAgentCreateAgentArgsSchema = z.object(agentToAgentInputSchema);
|
|
285
|
-
const topLevelCreateAgentArgsSchema = z.object(topLevelInputSchema);
|
|
352
|
+
const agentToAgentCreateAgentArgsSchema = z.object(agentToAgentInputSchema).strict();
|
|
353
|
+
const topLevelCreateAgentArgsSchema = z.object(topLevelInputSchema).strict();
|
|
286
354
|
if (options.voiceOnly || options.enableVoiceTools || callerContext?.enableVoiceTools) {
|
|
287
355
|
server.registerTool("speak", {
|
|
288
356
|
title: "Speak",
|
|
@@ -321,7 +389,7 @@ export async function createAgentMcpServer(options) {
|
|
|
321
389
|
}
|
|
322
390
|
server.registerTool("create_agent", {
|
|
323
391
|
title: "Create agent",
|
|
324
|
-
description: "Create
|
|
392
|
+
description: "Create an agent tied to a working directory. Requires provider/model, for example codex/gpt-5.4. Optionally run an initial prompt immediately or create a git worktree for the agent.",
|
|
325
393
|
inputSchema: createAgentInputSchema,
|
|
326
394
|
outputSchema: {
|
|
327
395
|
agentId: z.string(),
|
|
@@ -349,13 +417,15 @@ export async function createAgentMcpServer(options) {
|
|
|
349
417
|
let resolvedCwd;
|
|
350
418
|
let resolvedMode;
|
|
351
419
|
let worktreeConfig;
|
|
420
|
+
let shouldBootstrapWorktree;
|
|
352
421
|
if (callerAgentId) {
|
|
353
422
|
const callerArgs = agentToAgentCreateAgentArgsSchema.parse(args);
|
|
354
|
-
|
|
423
|
+
const resolvedProviderModel = resolveRequiredProviderModel(callerArgs.provider);
|
|
424
|
+
provider = resolvedProviderModel.provider;
|
|
425
|
+
model = resolvedProviderModel.model;
|
|
355
426
|
initialPrompt = callerArgs.initialPrompt;
|
|
356
427
|
background = callerArgs.background ?? false;
|
|
357
428
|
normalizedTitle = callerArgs.title.trim();
|
|
358
|
-
model = callerArgs.model;
|
|
359
429
|
thinking = callerArgs.thinking;
|
|
360
430
|
labels = callerArgs.labels;
|
|
361
431
|
notifyOnFinish = callerArgs.notifyOnFinish ?? false;
|
|
@@ -376,29 +446,39 @@ export async function createAgentMcpServer(options) {
|
|
|
376
446
|
}
|
|
377
447
|
else {
|
|
378
448
|
const topLevelArgs = topLevelCreateAgentArgsSchema.parse(args);
|
|
379
|
-
|
|
449
|
+
const resolvedProviderModel = resolveRequiredProviderModel(topLevelArgs.provider);
|
|
450
|
+
provider = resolvedProviderModel.provider;
|
|
451
|
+
model = resolvedProviderModel.model;
|
|
380
452
|
initialPrompt = topLevelArgs.initialPrompt;
|
|
381
453
|
background = topLevelArgs.background ?? false;
|
|
382
454
|
normalizedTitle = topLevelArgs.title.trim();
|
|
383
|
-
model = topLevelArgs.model;
|
|
384
455
|
thinking = topLevelArgs.thinking;
|
|
385
456
|
labels = topLevelArgs.labels;
|
|
386
457
|
notifyOnFinish = topLevelArgs.notifyOnFinish ?? false;
|
|
387
|
-
const { cwd, mode, worktreeName, baseBranch } = topLevelArgs;
|
|
458
|
+
const { cwd, mode, worktreeName, baseBranch, refName, action, githubPrNumber } = topLevelArgs;
|
|
388
459
|
resolvedCwd = expandUserPath(cwd);
|
|
389
460
|
if (worktreeName) {
|
|
390
|
-
if (!baseBranch) {
|
|
461
|
+
if (!baseBranch && !refName && !action && githubPrNumber === undefined) {
|
|
391
462
|
throw new Error("baseBranch is required when creating a worktree");
|
|
392
463
|
}
|
|
393
|
-
const
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
464
|
+
const createdWorktree = await createMcpWorktree({
|
|
465
|
+
input: {
|
|
466
|
+
cwd: resolvedCwd,
|
|
467
|
+
worktreeSlug: worktreeName,
|
|
468
|
+
refName,
|
|
469
|
+
action,
|
|
470
|
+
githubPrNumber,
|
|
471
|
+
runSetup: false,
|
|
472
|
+
paseoHome: options.paseoHome,
|
|
473
|
+
},
|
|
474
|
+
createPaseoWorktree: options.createPaseoWorktree,
|
|
475
|
+
resolveDefaultBranch: baseBranch ? async () => baseBranch : undefined,
|
|
476
|
+
workspaceGitService: options.workspaceGitService,
|
|
477
|
+
logger: options.logger,
|
|
399
478
|
});
|
|
400
|
-
resolvedCwd = worktree.worktreePath;
|
|
401
|
-
worktreeConfig = worktree;
|
|
479
|
+
resolvedCwd = createdWorktree.worktree.worktreePath;
|
|
480
|
+
worktreeConfig = createdWorktree.worktree;
|
|
481
|
+
shouldBootstrapWorktree = createdWorktree.created;
|
|
402
482
|
}
|
|
403
483
|
resolvedMode = mode;
|
|
404
484
|
}
|
|
@@ -420,6 +500,7 @@ export async function createAgentMcpServer(options) {
|
|
|
420
500
|
void runAsyncWorktreeBootstrap({
|
|
421
501
|
agentId: snapshot.id,
|
|
422
502
|
worktree: worktreeConfig,
|
|
503
|
+
shouldBootstrap: shouldBootstrapWorktree,
|
|
423
504
|
terminalManager: terminalManager ?? null,
|
|
424
505
|
appendTimelineItem: (item) => appendTimelineItemIfAgentKnown({
|
|
425
506
|
agentManager,
|
|
@@ -443,6 +524,11 @@ export async function createAgentMcpServer(options) {
|
|
|
443
524
|
explicitTitle: snapshot.config.title,
|
|
444
525
|
paseoHome: options.paseoHome,
|
|
445
526
|
logger: childLogger,
|
|
527
|
+
deps: options.workspaceGitService
|
|
528
|
+
? {
|
|
529
|
+
workspaceGitService: options.workspaceGitService,
|
|
530
|
+
}
|
|
531
|
+
: undefined,
|
|
446
532
|
});
|
|
447
533
|
try {
|
|
448
534
|
agentManager.recordUserMessage(snapshot.id, trimmedPrompt, {
|
|
@@ -692,14 +778,28 @@ export async function createAgentMcpServer(options) {
|
|
|
692
778
|
});
|
|
693
779
|
server.registerTool("list_agents", {
|
|
694
780
|
title: "List agents",
|
|
695
|
-
description: "List
|
|
781
|
+
description: "List recent agents as compact metadata.",
|
|
696
782
|
inputSchema: {
|
|
697
783
|
includeArchived: z.boolean().optional().default(false),
|
|
784
|
+
cwd: z.string().optional(),
|
|
785
|
+
sinceHours: z
|
|
786
|
+
.number()
|
|
787
|
+
.int()
|
|
788
|
+
.positive()
|
|
789
|
+
.max(24 * 30)
|
|
790
|
+
.optional()
|
|
791
|
+
.default(48),
|
|
792
|
+
statuses: z.array(AgentStatusEnum).optional(),
|
|
793
|
+
limit: z.number().int().positive().max(200).optional().default(50),
|
|
698
794
|
},
|
|
699
795
|
outputSchema: {
|
|
700
|
-
agents: z.array(
|
|
796
|
+
agents: z.array(AgentListItemPayloadSchema),
|
|
701
797
|
},
|
|
702
|
-
}, async ({ includeArchived }) => {
|
|
798
|
+
}, async ({ includeArchived = false, cwd, sinceHours = 48, statuses, limit = 50 }) => {
|
|
799
|
+
const callerCwd = callerAgentId ? resolveCallerAgent()?.cwd : undefined;
|
|
800
|
+
const requestedCwd = cwd?.trim() ? expandUserPath(cwd) : callerCwd;
|
|
801
|
+
const statusFilter = statuses && statuses.length > 0 ? new Set(statuses) : null;
|
|
802
|
+
const sinceMs = Date.now() - sinceHours * 60 * 60 * 1000;
|
|
703
803
|
const liveSnapshots = agentManager.listAgents();
|
|
704
804
|
const liveAgents = await Promise.all(liveSnapshots.map((snapshot) => serializeSnapshotWithMetadata(agentStorage, snapshot, childLogger)));
|
|
705
805
|
const liveIds = new Set(liveSnapshots.map((snapshot) => snapshot.id));
|
|
@@ -708,9 +808,16 @@ export async function createAgentMcpServer(options) {
|
|
|
708
808
|
.filter((record) => !record.internal && !liveIds.has(record.id))
|
|
709
809
|
.filter((record) => includeArchived || !record.archivedAt)
|
|
710
810
|
.map((record) => buildStoredAgentPayload(record, requireProviderRegistry(), childLogger));
|
|
811
|
+
const agents = [...liveAgents, ...storedAgents]
|
|
812
|
+
.map(toAgentListItemPayload)
|
|
813
|
+
.filter((agent) => !requestedCwd || isSameOrDescendantPath(requestedCwd, agent.cwd))
|
|
814
|
+
.filter((agent) => !statusFilter || statusFilter.has(agent.status))
|
|
815
|
+
.filter((agent) => !agent.archivedAt || resolveAgentListActivityTime(agent) >= sinceMs)
|
|
816
|
+
.sort(compareAgentListItems)
|
|
817
|
+
.slice(0, limit);
|
|
711
818
|
return {
|
|
712
819
|
content: [],
|
|
713
|
-
structuredContent: ensureValidJson({ agents
|
|
820
|
+
structuredContent: ensureValidJson({ agents }),
|
|
714
821
|
};
|
|
715
822
|
});
|
|
716
823
|
server.registerTool("cancel_agent", {
|
|
@@ -973,15 +1080,29 @@ export async function createAgentMcpServer(options) {
|
|
|
973
1080
|
}
|
|
974
1081
|
const scheduleTarget = target === "self"
|
|
975
1082
|
? (() => {
|
|
976
|
-
|
|
1083
|
+
const callerAgent = resolveCallerAgent();
|
|
1084
|
+
if (!callerAgentId || !callerAgent) {
|
|
977
1085
|
throw new Error("target=self requires a caller agent");
|
|
978
1086
|
}
|
|
979
|
-
|
|
980
|
-
|
|
1087
|
+
const trimmedCwd = cwd?.trim();
|
|
1088
|
+
if (trimmedCwd && expandUserPath(trimmedCwd) !== callerAgent.cwd) {
|
|
1089
|
+
throw new Error("cwd can only differ from the caller agent when target=new-agent");
|
|
1090
|
+
}
|
|
1091
|
+
if (provider !== undefined) {
|
|
1092
|
+
const resolved = resolveScheduleProviderAndModel({
|
|
1093
|
+
provider,
|
|
1094
|
+
defaultProvider: callerAgent.provider,
|
|
1095
|
+
});
|
|
1096
|
+
if (resolved.provider !== callerAgent.provider ||
|
|
1097
|
+
(resolved.model !== undefined && resolved.model !== callerAgent.config.model)) {
|
|
1098
|
+
throw new Error("provider can only differ from the caller agent when target=new-agent");
|
|
1099
|
+
}
|
|
981
1100
|
}
|
|
982
1101
|
return { type: "agent", agentId: callerAgentId };
|
|
983
1102
|
})()
|
|
984
|
-
:
|
|
1103
|
+
: (() => {
|
|
1104
|
+
return resolveNewAgentScheduleTarget({ provider, cwd });
|
|
1105
|
+
})();
|
|
985
1106
|
const schedule = await scheduleService.create({
|
|
986
1107
|
prompt: prompt.trim(),
|
|
987
1108
|
cadence: every
|
|
@@ -1129,7 +1250,7 @@ export async function createAgentMcpServer(options) {
|
|
|
1129
1250
|
if (!definition) {
|
|
1130
1251
|
throw new Error(`Provider ${provider} is not configured`);
|
|
1131
1252
|
}
|
|
1132
|
-
const models = await definition.fetchModels();
|
|
1253
|
+
const models = await definition.fetchModels({ cwd: resolveSnapshotCwd(), force: false });
|
|
1133
1254
|
return {
|
|
1134
1255
|
content: [],
|
|
1135
1256
|
structuredContent: ensureValidJson({
|
|
@@ -1152,9 +1273,11 @@ export async function createAgentMcpServer(options) {
|
|
|
1152
1273
|
},
|
|
1153
1274
|
}, async ({ cwd }) => {
|
|
1154
1275
|
const resolvedCwd = resolveScopedCwd(cwd, { required: true });
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1276
|
+
if (!options.workspaceGitService) {
|
|
1277
|
+
throw new Error("WorkspaceGitService is required to list worktrees");
|
|
1278
|
+
}
|
|
1279
|
+
const worktrees = await options.workspaceGitService.listWorktrees(resolvedCwd, {
|
|
1280
|
+
reason: "mcp:list-worktrees",
|
|
1158
1281
|
});
|
|
1159
1282
|
return {
|
|
1160
1283
|
content: [],
|
|
@@ -1169,25 +1292,41 @@ export async function createAgentMcpServer(options) {
|
|
|
1169
1292
|
.string()
|
|
1170
1293
|
.optional()
|
|
1171
1294
|
.describe("Optional repository cwd. Defaults to the caller agent cwd."),
|
|
1172
|
-
branchName: z.string(),
|
|
1173
|
-
baseBranch: z.string(),
|
|
1295
|
+
branchName: z.string().optional(),
|
|
1296
|
+
baseBranch: z.string().optional(),
|
|
1297
|
+
refName: z.string().min(1).optional(),
|
|
1298
|
+
action: z.enum(["branch-off", "checkout"]).optional(),
|
|
1299
|
+
githubPrNumber: z.number().int().positive().optional(),
|
|
1174
1300
|
},
|
|
1175
1301
|
outputSchema: {
|
|
1176
1302
|
branchName: z.string(),
|
|
1177
1303
|
worktreePath: z.string(),
|
|
1178
1304
|
},
|
|
1179
|
-
}, async ({ cwd, branchName, baseBranch }) => {
|
|
1180
|
-
|
|
1181
|
-
branchName,
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1305
|
+
}, async ({ cwd, branchName, baseBranch, refName, action, githubPrNumber }) => {
|
|
1306
|
+
if (!branchName && !refName && githubPrNumber === undefined) {
|
|
1307
|
+
throw new Error("create_worktree requires branchName, refName, or githubPrNumber");
|
|
1308
|
+
}
|
|
1309
|
+
const repoRoot = resolveScopedCwd(cwd, { required: true });
|
|
1310
|
+
const createdWorktree = await createMcpWorktree({
|
|
1311
|
+
input: {
|
|
1312
|
+
cwd: repoRoot,
|
|
1313
|
+
worktreeSlug: branchName,
|
|
1314
|
+
refName,
|
|
1315
|
+
action,
|
|
1316
|
+
githubPrNumber,
|
|
1317
|
+
runSetup: false,
|
|
1318
|
+
paseoHome: options.paseoHome,
|
|
1319
|
+
},
|
|
1320
|
+
createPaseoWorktree: options.createPaseoWorktree,
|
|
1321
|
+
resolveDefaultBranch: baseBranch ? async () => baseBranch : undefined,
|
|
1322
|
+
workspaceGitService: options.workspaceGitService,
|
|
1323
|
+
logger: options.logger,
|
|
1186
1324
|
});
|
|
1325
|
+
const { worktree } = createdWorktree;
|
|
1187
1326
|
return {
|
|
1188
1327
|
content: [],
|
|
1189
1328
|
structuredContent: ensureValidJson({
|
|
1190
|
-
branchName,
|
|
1329
|
+
branchName: worktree.branchName,
|
|
1191
1330
|
worktreePath: worktree.worktreePath,
|
|
1192
1331
|
}),
|
|
1193
1332
|
};
|
|
@@ -1207,11 +1346,48 @@ export async function createAgentMcpServer(options) {
|
|
|
1207
1346
|
success: z.boolean(),
|
|
1208
1347
|
},
|
|
1209
1348
|
}, async ({ cwd, worktreePath, worktreeSlug }) => {
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
worktreePath
|
|
1213
|
-
|
|
1349
|
+
const repoRoot = resolveScopedCwd(cwd, { required: true });
|
|
1350
|
+
if (!worktreePath && !worktreeSlug) {
|
|
1351
|
+
throw new Error("worktreePath or worktreeSlug is required");
|
|
1352
|
+
}
|
|
1353
|
+
if (!options.github) {
|
|
1354
|
+
throw new Error("GitHub service is required to archive worktrees");
|
|
1355
|
+
}
|
|
1356
|
+
if (!options.workspaceGitService) {
|
|
1357
|
+
throw new Error("WorkspaceGitService is required to archive worktrees");
|
|
1358
|
+
}
|
|
1359
|
+
if (!options.archiveWorkspaceRecord) {
|
|
1360
|
+
throw new Error("Workspace registry archiver is required to archive worktrees");
|
|
1361
|
+
}
|
|
1362
|
+
if (!options.emitWorkspaceUpdatesForCwds) {
|
|
1363
|
+
throw new Error("Workspace update emitter is required to archive worktrees");
|
|
1364
|
+
}
|
|
1365
|
+
if (!options.emitSessionMessage) {
|
|
1366
|
+
throw new Error("Session message emitter is required to archive worktrees");
|
|
1367
|
+
}
|
|
1368
|
+
const targetPath = worktreePath ??
|
|
1369
|
+
join(await getPaseoWorktreesRoot(repoRoot, options.paseoHome), worktreeSlug);
|
|
1370
|
+
await archivePaseoWorktree({
|
|
1214
1371
|
paseoHome: options.paseoHome,
|
|
1372
|
+
github: options.github,
|
|
1373
|
+
workspaceGitService: options.workspaceGitService,
|
|
1374
|
+
agentManager,
|
|
1375
|
+
agentStorage,
|
|
1376
|
+
archiveWorkspaceRecord: options.archiveWorkspaceRecord,
|
|
1377
|
+
emit: options.emitSessionMessage,
|
|
1378
|
+
emitWorkspaceUpdatesForCwds: options.emitWorkspaceUpdatesForCwds,
|
|
1379
|
+
isPathWithinRoot: isSameOrDescendantPath,
|
|
1380
|
+
killTerminalsUnderPath: (rootPath) => killTerminalsUnderPath({
|
|
1381
|
+
terminalManager: terminalManager ?? null,
|
|
1382
|
+
isPathWithinRoot: isSameOrDescendantPath,
|
|
1383
|
+
killTrackedTerminal: () => { },
|
|
1384
|
+
sessionLogger: childLogger,
|
|
1385
|
+
}, rootPath),
|
|
1386
|
+
sessionLogger: childLogger,
|
|
1387
|
+
}, {
|
|
1388
|
+
targetPath,
|
|
1389
|
+
repoRoot,
|
|
1390
|
+
requestId: "mcp:archive_worktree",
|
|
1215
1391
|
});
|
|
1216
1392
|
return {
|
|
1217
1393
|
content: [],
|
|
@@ -1327,4 +1503,39 @@ export async function createAgentMcpServer(options) {
|
|
|
1327
1503
|
});
|
|
1328
1504
|
return server;
|
|
1329
1505
|
}
|
|
1506
|
+
async function createMcpWorktree(options) {
|
|
1507
|
+
try {
|
|
1508
|
+
if (!options.createPaseoWorktree) {
|
|
1509
|
+
throw new Error("Paseo worktree service is not configured");
|
|
1510
|
+
}
|
|
1511
|
+
const result = await options.createPaseoWorktree(options.input, {
|
|
1512
|
+
resolveDefaultBranch: options.resolveDefaultBranch,
|
|
1513
|
+
});
|
|
1514
|
+
if (options.workspaceGitService) {
|
|
1515
|
+
const refreshResults = await Promise.allSettled([
|
|
1516
|
+
options.workspaceGitService.getSnapshot(options.input.cwd, {
|
|
1517
|
+
force: true,
|
|
1518
|
+
reason: "create-worktree",
|
|
1519
|
+
}),
|
|
1520
|
+
options.workspaceGitService.getSnapshot(result.worktree.worktreePath, {
|
|
1521
|
+
force: true,
|
|
1522
|
+
reason: "create-worktree",
|
|
1523
|
+
}),
|
|
1524
|
+
]);
|
|
1525
|
+
for (const [index, refreshResult] of refreshResults.entries()) {
|
|
1526
|
+
if (refreshResult.status === "fulfilled") {
|
|
1527
|
+
continue;
|
|
1528
|
+
}
|
|
1529
|
+
options.logger.warn({
|
|
1530
|
+
err: refreshResult.reason,
|
|
1531
|
+
cwd: index === 0 ? options.input.cwd : result.worktree.worktreePath,
|
|
1532
|
+
}, "Failed to force-refresh workspace git snapshot after creating worktree");
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1535
|
+
return result;
|
|
1536
|
+
}
|
|
1537
|
+
catch (error) {
|
|
1538
|
+
throw toWorktreeRequestError(error);
|
|
1539
|
+
}
|
|
1540
|
+
}
|
|
1330
1541
|
//# sourceMappingURL=mcp-server.js.map
|