@getpaseo/server 0.1.98 → 0.1.100

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.
Files changed (59) hide show
  1. package/dist/server/server/agent/agent-manager.js +2 -2
  2. package/dist/server/server/agent/agent-sdk-types.d.ts +11 -6
  3. package/dist/server/server/agent/provider-registry.d.ts +6 -3
  4. package/dist/server/server/agent/provider-registry.js +49 -22
  5. package/dist/server/server/agent/provider-snapshot-manager.js +26 -14
  6. package/dist/server/server/agent/providers/acp-agent.d.ts +23 -3
  7. package/dist/server/server/agent/providers/acp-agent.js +139 -9
  8. package/dist/server/server/agent/providers/claude/agent.d.ts +2 -2
  9. package/dist/server/server/agent/providers/claude/agent.js +41 -77
  10. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +3 -2
  11. package/dist/server/server/agent/providers/codex-app-server-agent.js +6 -25
  12. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +2 -1
  13. package/dist/server/server/agent/providers/copilot-acp-agent.js +11 -31
  14. package/dist/server/server/agent/providers/generic-acp-agent.d.ts +0 -1
  15. package/dist/server/server/agent/providers/generic-acp-agent.js +2 -108
  16. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +2 -3
  17. package/dist/server/server/agent/providers/mock-load-test-agent.js +5 -5
  18. package/dist/server/server/agent/providers/mock-slow-provider.d.ts +2 -3
  19. package/dist/server/server/agent/providers/mock-slow-provider.js +2 -5
  20. package/dist/server/server/agent/providers/opencode/server-manager.d.ts +14 -11
  21. package/dist/server/server/agent/providers/opencode/server-manager.js +149 -91
  22. package/dist/server/server/agent/providers/opencode/test-server-manager.d.ts +6 -5
  23. package/dist/server/server/agent/providers/opencode/test-server-manager.js +13 -3
  24. package/dist/server/server/agent/providers/opencode/test-utils/{test-opencode-runtime.d.ts → test-opencode-harness.d.ts} +11 -11
  25. package/dist/server/server/agent/providers/opencode/test-utils/{test-opencode-runtime.js → test-opencode-harness.js} +23 -10
  26. package/dist/server/server/agent/providers/opencode-agent.d.ts +13 -6
  27. package/dist/server/server/agent/providers/opencode-agent.js +74 -137
  28. package/dist/server/server/agent/providers/pi/agent.d.ts +4 -4
  29. package/dist/server/server/agent/providers/pi/agent.js +13 -76
  30. package/dist/server/server/agent/providers/pi/cli-runtime.d.ts +3 -0
  31. package/dist/server/server/agent/providers/pi/cli-runtime.js +8 -5
  32. package/dist/server/server/agent/providers/pi/rpc-types.d.ts +2 -1
  33. package/dist/server/server/agent/providers/pi/runtime.d.ts +1 -1
  34. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.d.ts +1 -1
  35. package/dist/server/server/agent/providers/pi/test-utils/fake-pi.js +1 -1
  36. package/dist/server/server/session/agent-config/agent-config-session.d.ts +50 -0
  37. package/dist/server/server/session/agent-config/agent-config-session.js +98 -0
  38. package/dist/server/server/session/chat/chat-schedule-loop-session.d.ts +120 -0
  39. package/dist/server/server/session/chat/chat-schedule-loop-session.js +489 -0
  40. package/dist/server/server/session/checkout/checkout-session.d.ts +142 -0
  41. package/dist/server/server/session/checkout/checkout-session.js +925 -0
  42. package/dist/server/server/session/daemon/daemon-session.d.ts +50 -0
  43. package/dist/server/server/session/daemon/daemon-session.js +98 -0
  44. package/dist/server/server/session/files/workspace-files-session.d.ts +43 -0
  45. package/dist/server/server/session/files/workspace-files-session.js +218 -0
  46. package/dist/server/server/session/project-config/project-config-session.d.ts +34 -0
  47. package/dist/server/server/session/project-config/project-config-session.js +125 -0
  48. package/dist/server/server/session/provider/provider-catalog-session.d.ts +74 -0
  49. package/dist/server/server/session/provider/provider-catalog-session.js +339 -0
  50. package/dist/server/server/session/voice/voice-session.d.ts +166 -0
  51. package/dist/server/server/session/voice/voice-session.js +893 -0
  52. package/dist/server/server/{voice → session/voice}/voice-turn-controller.d.ts +2 -2
  53. package/dist/server/server/{voice → session/voice}/voice-turn-controller.js +2 -2
  54. package/dist/server/server/session.d.ts +13 -208
  55. package/dist/server/server/session.js +2132 -5105
  56. package/dist/server/utils/checkout-git.d.ts +6 -0
  57. package/package.json +5 -5
  58. package/dist/server/server/agent/providers/opencode/runtime.d.ts +0 -28
  59. package/dist/server/server/agent/providers/opencode/runtime.js +0 -5
@@ -0,0 +1,50 @@
1
+ import type pino from "pino";
2
+ import type { AgentProviderNotice } from "../../agent/agent-sdk-types.js";
3
+ import type { SessionInboundMessage, SessionOutboundMessage } from "../../messages.js";
4
+ export interface AgentConfigSessionHost {
5
+ emit(msg: SessionOutboundMessage): void;
6
+ }
7
+ /**
8
+ * The per-agent config mutations this subsystem drives. The shell adapts these
9
+ * onto the live AgentManager (mode still routes through setAgentModeCommand);
10
+ * tests wire an in-memory fake. Mode and thinking yield a provider notice; model
11
+ * and feature do not.
12
+ */
13
+ export interface AgentConfigOperations {
14
+ setMode(agentId: string, modeId: string): Promise<AgentProviderNotice | null>;
15
+ setModel(agentId: string, modelId: string | null): Promise<void>;
16
+ setFeature(agentId: string, featureId: string, value: unknown): Promise<void>;
17
+ setThinking(agentId: string, thinkingOptionId: string | null): Promise<AgentProviderNotice | null>;
18
+ }
19
+ export interface AgentConfigSessionOptions {
20
+ host: AgentConfigSessionHost;
21
+ operations: AgentConfigOperations;
22
+ logger: pino.Logger;
23
+ }
24
+ /**
25
+ * A client's per-agent config surface: set mode, model, feature, and thinking
26
+ * option. Each request shares one envelope — log, run the mutation, then emit the
27
+ * accepted response, or on failure emit an activity_log error frame followed by
28
+ * the rejected response. Reaches no state beyond the injected operations and the
29
+ * outbound channel.
30
+ */
31
+ export declare class AgentConfigSession {
32
+ private readonly host;
33
+ private readonly operations;
34
+ private readonly logger;
35
+ constructor(options: AgentConfigSessionOptions);
36
+ handleSetAgentModeRequest(msg: Extract<SessionInboundMessage, {
37
+ type: "set_agent_mode_request";
38
+ }>): Promise<void>;
39
+ handleSetAgentModelRequest(msg: Extract<SessionInboundMessage, {
40
+ type: "set_agent_model_request";
41
+ }>): Promise<void>;
42
+ handleSetAgentFeatureRequest(msg: Extract<SessionInboundMessage, {
43
+ type: "set_agent_feature_request";
44
+ }>): Promise<void>;
45
+ handleSetAgentThinkingRequest(msg: Extract<SessionInboundMessage, {
46
+ type: "set_agent_thinking_request";
47
+ }>): Promise<void>;
48
+ private applyConfigChange;
49
+ }
50
+ //# sourceMappingURL=agent-config-session.d.ts.map
@@ -0,0 +1,98 @@
1
+ import { v4 as uuidv4 } from "uuid";
2
+ import { getErrorMessage, getErrorMessageOr } from "@getpaseo/protocol/error-utils";
3
+ /**
4
+ * A client's per-agent config surface: set mode, model, feature, and thinking
5
+ * option. Each request shares one envelope — log, run the mutation, then emit the
6
+ * accepted response, or on failure emit an activity_log error frame followed by
7
+ * the rejected response. Reaches no state beyond the injected operations and the
8
+ * outbound channel.
9
+ */
10
+ export class AgentConfigSession {
11
+ constructor(options) {
12
+ this.host = options.host;
13
+ this.operations = options.operations;
14
+ this.logger = options.logger;
15
+ }
16
+ handleSetAgentModeRequest(msg) {
17
+ const { agentId, modeId, requestId } = msg;
18
+ return this.applyConfigChange({
19
+ agentId,
20
+ requestId,
21
+ logLabel: "set_agent_mode_request",
22
+ logFields: { agentId, modeId, requestId },
23
+ failureText: "Failed to set agent mode",
24
+ run: () => this.operations.setMode(agentId, modeId),
25
+ emitResponse: (payload) => this.host.emit({ type: "set_agent_mode_response", payload }),
26
+ });
27
+ }
28
+ handleSetAgentModelRequest(msg) {
29
+ const { agentId, modelId, requestId } = msg;
30
+ return this.applyConfigChange({
31
+ agentId,
32
+ requestId,
33
+ logLabel: "set_agent_model_request",
34
+ logFields: { agentId, modelId, requestId },
35
+ failureText: "Failed to set agent model",
36
+ run: async () => {
37
+ await this.operations.setModel(agentId, modelId);
38
+ return undefined;
39
+ },
40
+ emitResponse: (payload) => this.host.emit({ type: "set_agent_model_response", payload }),
41
+ });
42
+ }
43
+ handleSetAgentFeatureRequest(msg) {
44
+ const { agentId, featureId, value, requestId } = msg;
45
+ return this.applyConfigChange({
46
+ agentId,
47
+ requestId,
48
+ logLabel: "set_agent_feature_request",
49
+ logFields: { agentId, featureId, value, requestId },
50
+ failureText: "Failed to set agent feature",
51
+ run: async () => {
52
+ await this.operations.setFeature(agentId, featureId, value);
53
+ return undefined;
54
+ },
55
+ emitResponse: (payload) => this.host.emit({ type: "set_agent_feature_response", payload }),
56
+ });
57
+ }
58
+ handleSetAgentThinkingRequest(msg) {
59
+ const { agentId, thinkingOptionId, requestId } = msg;
60
+ return this.applyConfigChange({
61
+ agentId,
62
+ requestId,
63
+ logLabel: "set_agent_thinking_request",
64
+ logFields: { agentId, thinkingOptionId, requestId },
65
+ failureText: "Failed to set agent thinking option",
66
+ run: () => this.operations.setThinking(agentId, thinkingOptionId),
67
+ emitResponse: (payload) => this.host.emit({ type: "set_agent_thinking_response", payload }),
68
+ });
69
+ }
70
+ async applyConfigChange(change) {
71
+ const { agentId, requestId, logLabel, logFields, failureText, run, emitResponse } = change;
72
+ this.logger.info(logFields, `session: ${logLabel}`);
73
+ try {
74
+ const notice = await run();
75
+ this.logger.info(logFields, `session: ${logLabel} success`);
76
+ emitResponse({ requestId, agentId, accepted: true, error: null, notice });
77
+ }
78
+ catch (error) {
79
+ this.logger.error({ err: error, ...logFields }, `session: ${logLabel} error`);
80
+ this.host.emit({
81
+ type: "activity_log",
82
+ payload: {
83
+ id: uuidv4(),
84
+ timestamp: new Date(),
85
+ type: "error",
86
+ content: `${failureText}: ${getErrorMessage(error)}`,
87
+ },
88
+ });
89
+ emitResponse({
90
+ requestId,
91
+ agentId,
92
+ accepted: false,
93
+ error: getErrorMessageOr(error, failureText),
94
+ });
95
+ }
96
+ }
97
+ }
98
+ //# sourceMappingURL=agent-config-session.js.map
@@ -0,0 +1,120 @@
1
+ import type pino from "pino";
2
+ import type { SessionInboundMessage, SessionOutboundMessage } from "../../messages.js";
3
+ import type { StoredAgentRecord } from "../../agent/agent-storage.js";
4
+ import type { ManagedAgent } from "../../agent/agent-manager.js";
5
+ import { type FileBackedChatService } from "../../chat/chat-service.js";
6
+ import type { LoopService } from "../../loop-service.js";
7
+ import type { ScheduleService } from "../../schedule/service.js";
8
+ /**
9
+ * The collaborators a chat command reaches that are NOT part of the chat/schedule/loop
10
+ * domain: the agent roster reads and the agent-message send used only by chat/post
11
+ * mention fanout. The Session shell owns the agent lifecycle; this subsystem orchestrates
12
+ * a notification through it but does not own it.
13
+ */
14
+ export interface ChatScheduleLoopSessionHost {
15
+ emit(msg: SessionOutboundMessage): void;
16
+ listStoredAgents(): Promise<StoredAgentRecord[]>;
17
+ listLiveAgents(): ManagedAgent[];
18
+ resolveAgentIdentifier(identifier: string): Promise<{
19
+ ok: true;
20
+ agentId: string;
21
+ } | {
22
+ ok: false;
23
+ error: string;
24
+ }>;
25
+ sendAgentMessage(agentId: string, text: string): Promise<void>;
26
+ }
27
+ export interface ChatScheduleLoopSessionOptions {
28
+ host: ChatScheduleLoopSessionHost;
29
+ chatService: FileBackedChatService;
30
+ scheduleService: ScheduleService;
31
+ loopService: LoopService;
32
+ clientId: string;
33
+ logger: pino.Logger;
34
+ }
35
+ /**
36
+ * A client's chat, schedule, and loop request surface. The three families are the
37
+ * least-coupled in the session: each is a stateless request/response over its own
38
+ * service (chat rooms, cron routines, autonomous loops), with no shared observer,
39
+ * git, or voice state and no subscriptions to tear down. They live in one subsystem
40
+ * because they are dispatched together — schedule/* was historically reached through
41
+ * the chat dispatcher's fall-through arm. The three rpc-error emitters stay separate:
42
+ * they differ by default code, and only the chat one reads ChatServiceError.code.
43
+ */
44
+ export declare class ChatScheduleLoopSession {
45
+ private readonly host;
46
+ private readonly chatService;
47
+ private readonly scheduleService;
48
+ private readonly loopService;
49
+ private readonly clientId;
50
+ private readonly logger;
51
+ constructor(options: ChatScheduleLoopSessionOptions);
52
+ private emitChatRpcError;
53
+ handleChatCreateRequest(request: Extract<SessionInboundMessage, {
54
+ type: "chat/create";
55
+ }>): Promise<void>;
56
+ handleChatListRequest(request: Extract<SessionInboundMessage, {
57
+ type: "chat/list";
58
+ }>): Promise<void>;
59
+ handleChatInspectRequest(request: Extract<SessionInboundMessage, {
60
+ type: "chat/inspect";
61
+ }>): Promise<void>;
62
+ handleChatDeleteRequest(request: Extract<SessionInboundMessage, {
63
+ type: "chat/delete";
64
+ }>): Promise<void>;
65
+ handleChatPostRequest(request: Extract<SessionInboundMessage, {
66
+ type: "chat/post";
67
+ }>): Promise<void>;
68
+ handleChatReadRequest(request: Extract<SessionInboundMessage, {
69
+ type: "chat/read";
70
+ }>): Promise<void>;
71
+ handleChatWaitRequest(request: Extract<SessionInboundMessage, {
72
+ type: "chat/wait";
73
+ }>): Promise<void>;
74
+ private toScheduleSummary;
75
+ private emitScheduleRpcError;
76
+ handleScheduleCreateRequest(request: Extract<SessionInboundMessage, {
77
+ type: "schedule/create";
78
+ }>): Promise<void>;
79
+ handleScheduleListRequest(request: Extract<SessionInboundMessage, {
80
+ type: "schedule/list";
81
+ }>): Promise<void>;
82
+ handleScheduleInspectRequest(request: Extract<SessionInboundMessage, {
83
+ type: "schedule/inspect";
84
+ }>): Promise<void>;
85
+ handleScheduleLogsRequest(request: Extract<SessionInboundMessage, {
86
+ type: "schedule/logs";
87
+ }>): Promise<void>;
88
+ handleSchedulePauseRequest(request: Extract<SessionInboundMessage, {
89
+ type: "schedule/pause";
90
+ }>): Promise<void>;
91
+ handleScheduleResumeRequest(request: Extract<SessionInboundMessage, {
92
+ type: "schedule/resume";
93
+ }>): Promise<void>;
94
+ handleScheduleDeleteRequest(request: Extract<SessionInboundMessage, {
95
+ type: "schedule/delete";
96
+ }>): Promise<void>;
97
+ handleScheduleRunOnceRequest(request: Extract<SessionInboundMessage, {
98
+ type: "schedule/run-once";
99
+ }>): Promise<void>;
100
+ handleScheduleUpdateRequest(request: Extract<SessionInboundMessage, {
101
+ type: "schedule/update";
102
+ }>): Promise<void>;
103
+ private emitLoopRpcError;
104
+ handleLoopRunRequest(request: Extract<SessionInboundMessage, {
105
+ type: "loop/run";
106
+ }>): Promise<void>;
107
+ handleLoopListRequest(request: Extract<SessionInboundMessage, {
108
+ type: "loop/list";
109
+ }>): Promise<void>;
110
+ handleLoopInspectRequest(request: Extract<SessionInboundMessage, {
111
+ type: "loop/inspect";
112
+ }>): Promise<void>;
113
+ handleLoopLogsRequest(request: Extract<SessionInboundMessage, {
114
+ type: "loop/logs";
115
+ }>): Promise<void>;
116
+ handleLoopStopRequest(request: Extract<SessionInboundMessage, {
117
+ type: "loop/stop";
118
+ }>): Promise<void>;
119
+ }
120
+ //# sourceMappingURL=chat-schedule-loop-session.d.ts.map