@posthog/agent 2.3.386 → 2.3.388
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/adapters/claude/session/jsonl-hydration.d.ts +1 -0
- package/dist/agent.d.ts +1 -0
- package/dist/agent.js +20 -2
- package/dist/agent.js.map +1 -1
- package/dist/handoff-checkpoint.d.ts +43 -0
- package/dist/handoff-checkpoint.js +6684 -0
- package/dist/handoff-checkpoint.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/posthog-api.d.ts +2 -0
- package/dist/posthog-api.js +18 -2
- package/dist/posthog-api.js.map +1 -1
- package/dist/resume.d.ts +4 -8
- package/dist/resume.js +266 -6491
- package/dist/resume.js.map +1 -1
- package/dist/server/agent-server.d.ts +7 -16
- package/dist/server/agent-server.js +2333 -1383
- package/dist/server/agent-server.js.map +1 -1
- package/dist/server/bin.cjs +2332 -1382
- package/dist/server/bin.cjs.map +1 -1
- package/dist/server/schemas.d.ts +191 -0
- package/dist/server/schemas.js +108 -0
- package/dist/server/schemas.js.map +1 -0
- package/dist/tree-tracker.d.ts +1 -0
- package/dist/tree-tracker.js +18 -4
- package/dist/tree-tracker.js.map +1 -1
- package/dist/types.d.ts +18 -1
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -1
- package/package.json +10 -2
- package/src/acp-extensions.ts +3 -0
- package/src/handoff-checkpoint.test.ts +183 -0
- package/src/handoff-checkpoint.ts +367 -0
- package/src/posthog-api.test.ts +29 -0
- package/src/posthog-api.ts +13 -1
- package/src/resume.ts +27 -12
- package/src/sagas/apply-snapshot-saga.ts +7 -0
- package/src/sagas/capture-tree-saga.ts +10 -3
- package/src/sagas/resume-saga.test.ts +7 -47
- package/src/sagas/resume-saga.ts +42 -64
- package/src/sagas/test-fixtures.ts +46 -0
- package/src/server/agent-server.ts +193 -70
- package/src/server/schemas.ts +21 -2
- package/src/types.ts +24 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
|
|
3
|
+
declare const handoffLocalGitStateSchema: z.ZodObject<{
|
|
4
|
+
head: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
5
|
+
branch: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
6
|
+
upstreamHead: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
7
|
+
upstreamRemote: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
8
|
+
upstreamMergeRef: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
declare const remoteMcpServerSchema: z.ZodObject<{
|
|
11
|
+
type: z.ZodEnum<{
|
|
12
|
+
http: "http";
|
|
13
|
+
sse: "sse";
|
|
14
|
+
}>;
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
url: z.ZodURL;
|
|
17
|
+
headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
18
|
+
name: z.ZodString;
|
|
19
|
+
value: z.ZodString;
|
|
20
|
+
}, z.core.$strip>>>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
declare const mcpServersSchema: z.ZodArray<z.ZodObject<{
|
|
23
|
+
type: z.ZodEnum<{
|
|
24
|
+
http: "http";
|
|
25
|
+
sse: "sse";
|
|
26
|
+
}>;
|
|
27
|
+
name: z.ZodString;
|
|
28
|
+
url: z.ZodURL;
|
|
29
|
+
headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
30
|
+
name: z.ZodString;
|
|
31
|
+
value: z.ZodString;
|
|
32
|
+
}, z.core.$strip>>>;
|
|
33
|
+
}, z.core.$strip>>;
|
|
34
|
+
type RemoteMcpServer = z.infer<typeof remoteMcpServerSchema>;
|
|
35
|
+
declare const claudeCodeConfigSchema: z.ZodObject<{
|
|
36
|
+
systemPrompt: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
37
|
+
type: z.ZodLiteral<"preset">;
|
|
38
|
+
preset: z.ZodLiteral<"claude_code">;
|
|
39
|
+
append: z.ZodOptional<z.ZodString>;
|
|
40
|
+
}, z.core.$strip>]>>;
|
|
41
|
+
plugins: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
42
|
+
type: z.ZodLiteral<"local">;
|
|
43
|
+
path: z.ZodString;
|
|
44
|
+
}, z.core.$strip>>>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
declare const jsonRpcRequestSchema: z.ZodObject<{
|
|
47
|
+
jsonrpc: z.ZodLiteral<"2.0">;
|
|
48
|
+
method: z.ZodString;
|
|
49
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
50
|
+
id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
type JsonRpcRequest = z.infer<typeof jsonRpcRequestSchema>;
|
|
53
|
+
declare const userMessageParamsSchema: z.ZodObject<{
|
|
54
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
55
|
+
artifacts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
declare const permissionResponseParamsSchema: z.ZodObject<{
|
|
58
|
+
requestId: z.ZodString;
|
|
59
|
+
optionId: z.ZodString;
|
|
60
|
+
customInput: z.ZodOptional<z.ZodString>;
|
|
61
|
+
answers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
declare const setConfigOptionParamsSchema: z.ZodObject<{
|
|
64
|
+
configId: z.ZodString;
|
|
65
|
+
value: z.ZodString;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
declare const refreshSessionParamsSchema: z.ZodObject<{
|
|
68
|
+
mcpServers: z.ZodArray<z.ZodObject<{
|
|
69
|
+
type: z.ZodEnum<{
|
|
70
|
+
http: "http";
|
|
71
|
+
sse: "sse";
|
|
72
|
+
}>;
|
|
73
|
+
name: z.ZodString;
|
|
74
|
+
url: z.ZodURL;
|
|
75
|
+
headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
76
|
+
name: z.ZodString;
|
|
77
|
+
value: z.ZodString;
|
|
78
|
+
}, z.core.$strip>>>;
|
|
79
|
+
}, z.core.$strip>>;
|
|
80
|
+
}, z.core.$strip>;
|
|
81
|
+
declare const closeParamsSchema: z.ZodOptional<z.ZodObject<{
|
|
82
|
+
localGitState: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
head: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
84
|
+
branch: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
85
|
+
upstreamHead: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
86
|
+
upstreamRemote: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
87
|
+
upstreamMergeRef: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
88
|
+
}, z.core.$strip>>;
|
|
89
|
+
}, z.core.$strip>>;
|
|
90
|
+
declare const commandParamsSchemas: {
|
|
91
|
+
readonly user_message: z.ZodObject<{
|
|
92
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
93
|
+
artifacts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
94
|
+
}, z.core.$strip>;
|
|
95
|
+
readonly "posthog/user_message": z.ZodObject<{
|
|
96
|
+
content: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>]>>;
|
|
97
|
+
artifacts: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
readonly cancel: z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
|
|
100
|
+
readonly "posthog/cancel": z.ZodOptional<z.ZodObject<{}, z.core.$strip>>;
|
|
101
|
+
readonly close: z.ZodOptional<z.ZodObject<{
|
|
102
|
+
localGitState: z.ZodOptional<z.ZodObject<{
|
|
103
|
+
head: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
104
|
+
branch: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
105
|
+
upstreamHead: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
106
|
+
upstreamRemote: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
107
|
+
upstreamMergeRef: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
108
|
+
}, z.core.$strip>>;
|
|
109
|
+
}, z.core.$strip>>;
|
|
110
|
+
readonly "posthog/close": z.ZodOptional<z.ZodObject<{
|
|
111
|
+
localGitState: z.ZodOptional<z.ZodObject<{
|
|
112
|
+
head: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
113
|
+
branch: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
114
|
+
upstreamHead: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
115
|
+
upstreamRemote: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
116
|
+
upstreamMergeRef: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | null, string | null | undefined>>;
|
|
117
|
+
}, z.core.$strip>>;
|
|
118
|
+
}, z.core.$strip>>;
|
|
119
|
+
readonly permission_response: z.ZodObject<{
|
|
120
|
+
requestId: z.ZodString;
|
|
121
|
+
optionId: z.ZodString;
|
|
122
|
+
customInput: z.ZodOptional<z.ZodString>;
|
|
123
|
+
answers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
readonly "posthog/permission_response": z.ZodObject<{
|
|
126
|
+
requestId: z.ZodString;
|
|
127
|
+
optionId: z.ZodString;
|
|
128
|
+
customInput: z.ZodOptional<z.ZodString>;
|
|
129
|
+
answers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
readonly set_config_option: z.ZodObject<{
|
|
132
|
+
configId: z.ZodString;
|
|
133
|
+
value: z.ZodString;
|
|
134
|
+
}, z.core.$strip>;
|
|
135
|
+
readonly "posthog/set_config_option": z.ZodObject<{
|
|
136
|
+
configId: z.ZodString;
|
|
137
|
+
value: z.ZodString;
|
|
138
|
+
}, z.core.$strip>;
|
|
139
|
+
readonly refresh_session: z.ZodObject<{
|
|
140
|
+
mcpServers: z.ZodArray<z.ZodObject<{
|
|
141
|
+
type: z.ZodEnum<{
|
|
142
|
+
http: "http";
|
|
143
|
+
sse: "sse";
|
|
144
|
+
}>;
|
|
145
|
+
name: z.ZodString;
|
|
146
|
+
url: z.ZodURL;
|
|
147
|
+
headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
148
|
+
name: z.ZodString;
|
|
149
|
+
value: z.ZodString;
|
|
150
|
+
}, z.core.$strip>>>;
|
|
151
|
+
}, z.core.$strip>>;
|
|
152
|
+
}, z.core.$strip>;
|
|
153
|
+
readonly "posthog/refresh_session": z.ZodObject<{
|
|
154
|
+
mcpServers: z.ZodArray<z.ZodObject<{
|
|
155
|
+
type: z.ZodEnum<{
|
|
156
|
+
http: "http";
|
|
157
|
+
sse: "sse";
|
|
158
|
+
}>;
|
|
159
|
+
name: z.ZodString;
|
|
160
|
+
url: z.ZodURL;
|
|
161
|
+
headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
162
|
+
name: z.ZodString;
|
|
163
|
+
value: z.ZodString;
|
|
164
|
+
}, z.core.$strip>>>;
|
|
165
|
+
}, z.core.$strip>>;
|
|
166
|
+
}, z.core.$strip>;
|
|
167
|
+
readonly "_posthog/refresh_session": z.ZodObject<{
|
|
168
|
+
mcpServers: z.ZodArray<z.ZodObject<{
|
|
169
|
+
type: z.ZodEnum<{
|
|
170
|
+
http: "http";
|
|
171
|
+
sse: "sse";
|
|
172
|
+
}>;
|
|
173
|
+
name: z.ZodString;
|
|
174
|
+
url: z.ZodURL;
|
|
175
|
+
headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
176
|
+
name: z.ZodString;
|
|
177
|
+
value: z.ZodString;
|
|
178
|
+
}, z.core.$strip>>>;
|
|
179
|
+
}, z.core.$strip>>;
|
|
180
|
+
}, z.core.$strip>;
|
|
181
|
+
};
|
|
182
|
+
type CommandMethod = keyof typeof commandParamsSchemas;
|
|
183
|
+
declare function validateCommandParams(method: string, params: unknown): {
|
|
184
|
+
success: true;
|
|
185
|
+
data: unknown;
|
|
186
|
+
} | {
|
|
187
|
+
success: false;
|
|
188
|
+
error: string;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export { type CommandMethod, type JsonRpcRequest, type RemoteMcpServer, claudeCodeConfigSchema, closeParamsSchema, commandParamsSchemas, handoffLocalGitStateSchema, jsonRpcRequestSchema, mcpServersSchema, permissionResponseParamsSchema, refreshSessionParamsSchema, setConfigOptionParamsSchema, userMessageParamsSchema, validateCommandParams };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// src/server/schemas.ts
|
|
2
|
+
import { z } from "zod/v4";
|
|
3
|
+
var httpHeaderSchema = z.object({
|
|
4
|
+
name: z.string(),
|
|
5
|
+
value: z.string()
|
|
6
|
+
});
|
|
7
|
+
var nullishString = z.string().nullish().transform((value) => value ?? null);
|
|
8
|
+
var handoffLocalGitStateSchema = z.object({
|
|
9
|
+
head: nullishString,
|
|
10
|
+
branch: nullishString,
|
|
11
|
+
upstreamHead: nullishString,
|
|
12
|
+
upstreamRemote: nullishString,
|
|
13
|
+
upstreamMergeRef: nullishString
|
|
14
|
+
});
|
|
15
|
+
var remoteMcpServerSchema = z.object({
|
|
16
|
+
type: z.enum(["http", "sse"]),
|
|
17
|
+
name: z.string().min(1, "MCP server name is required"),
|
|
18
|
+
url: z.url({ error: "MCP server url must be a valid URL" }),
|
|
19
|
+
headers: z.array(httpHeaderSchema).default([])
|
|
20
|
+
});
|
|
21
|
+
var mcpServersSchema = z.array(remoteMcpServerSchema);
|
|
22
|
+
var claudeCodeConfigSchema = z.object({
|
|
23
|
+
systemPrompt: z.union([
|
|
24
|
+
z.string(),
|
|
25
|
+
z.object({
|
|
26
|
+
type: z.literal("preset"),
|
|
27
|
+
preset: z.literal("claude_code"),
|
|
28
|
+
append: z.string().optional()
|
|
29
|
+
})
|
|
30
|
+
]).optional(),
|
|
31
|
+
plugins: z.array(z.object({ type: z.literal("local"), path: z.string() })).optional()
|
|
32
|
+
});
|
|
33
|
+
var jsonRpcRequestSchema = z.object({
|
|
34
|
+
jsonrpc: z.literal("2.0"),
|
|
35
|
+
method: z.string(),
|
|
36
|
+
params: z.record(z.string(), z.unknown()).optional(),
|
|
37
|
+
id: z.union([z.string(), z.number()]).optional()
|
|
38
|
+
});
|
|
39
|
+
var userMessageParamsSchema = z.object({
|
|
40
|
+
content: z.union([
|
|
41
|
+
z.string().min(1, "Content is required"),
|
|
42
|
+
z.array(z.record(z.string(), z.unknown())).min(1, "Content is required")
|
|
43
|
+
]).optional(),
|
|
44
|
+
artifacts: z.array(z.record(z.string(), z.unknown())).optional()
|
|
45
|
+
}).refine(
|
|
46
|
+
(params) => {
|
|
47
|
+
const hasContent = typeof params.content === "string" ? params.content.trim().length > 0 : Array.isArray(params.content) && params.content.length > 0;
|
|
48
|
+
const hasArtifacts = Array.isArray(params.artifacts) && params.artifacts.length > 0;
|
|
49
|
+
return hasContent || hasArtifacts;
|
|
50
|
+
},
|
|
51
|
+
{ error: "Either content or artifacts are required" }
|
|
52
|
+
);
|
|
53
|
+
var permissionResponseParamsSchema = z.object({
|
|
54
|
+
requestId: z.string().min(1, "requestId is required"),
|
|
55
|
+
optionId: z.string().min(1, "optionId is required"),
|
|
56
|
+
customInput: z.string().optional(),
|
|
57
|
+
answers: z.record(z.string(), z.string()).optional()
|
|
58
|
+
});
|
|
59
|
+
var setConfigOptionParamsSchema = z.object({
|
|
60
|
+
configId: z.string().min(1, "configId is required"),
|
|
61
|
+
value: z.string().min(1, "value is required")
|
|
62
|
+
});
|
|
63
|
+
var refreshSessionParamsSchema = z.object({
|
|
64
|
+
mcpServers: mcpServersSchema
|
|
65
|
+
});
|
|
66
|
+
var closeParamsSchema = z.object({
|
|
67
|
+
localGitState: handoffLocalGitStateSchema.optional()
|
|
68
|
+
}).optional();
|
|
69
|
+
var commandParamsSchemas = {
|
|
70
|
+
user_message: userMessageParamsSchema,
|
|
71
|
+
"posthog/user_message": userMessageParamsSchema,
|
|
72
|
+
cancel: z.object({}).optional(),
|
|
73
|
+
"posthog/cancel": z.object({}).optional(),
|
|
74
|
+
close: closeParamsSchema,
|
|
75
|
+
"posthog/close": closeParamsSchema,
|
|
76
|
+
permission_response: permissionResponseParamsSchema,
|
|
77
|
+
"posthog/permission_response": permissionResponseParamsSchema,
|
|
78
|
+
set_config_option: setConfigOptionParamsSchema,
|
|
79
|
+
"posthog/set_config_option": setConfigOptionParamsSchema,
|
|
80
|
+
refresh_session: refreshSessionParamsSchema,
|
|
81
|
+
"posthog/refresh_session": refreshSessionParamsSchema,
|
|
82
|
+
"_posthog/refresh_session": refreshSessionParamsSchema
|
|
83
|
+
};
|
|
84
|
+
function validateCommandParams(method, params) {
|
|
85
|
+
const schema = commandParamsSchemas[method] ?? commandParamsSchemas[method.replace(/^_?posthog\//, "")];
|
|
86
|
+
if (!schema) {
|
|
87
|
+
return { success: false, error: `Unknown method: ${method}` };
|
|
88
|
+
}
|
|
89
|
+
const result = schema.safeParse(params);
|
|
90
|
+
if (!result.success) {
|
|
91
|
+
return { success: false, error: result.error.message };
|
|
92
|
+
}
|
|
93
|
+
return { success: true, data: result.data };
|
|
94
|
+
}
|
|
95
|
+
export {
|
|
96
|
+
claudeCodeConfigSchema,
|
|
97
|
+
closeParamsSchema,
|
|
98
|
+
commandParamsSchemas,
|
|
99
|
+
handoffLocalGitStateSchema,
|
|
100
|
+
jsonRpcRequestSchema,
|
|
101
|
+
mcpServersSchema,
|
|
102
|
+
permissionResponseParamsSchema,
|
|
103
|
+
refreshSessionParamsSchema,
|
|
104
|
+
setConfigOptionParamsSchema,
|
|
105
|
+
userMessageParamsSchema,
|
|
106
|
+
validateCommandParams
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/server/schemas.ts"],"sourcesContent":["import { z } from \"zod/v4\";\n\nconst httpHeaderSchema = z.object({\n name: z.string(),\n value: z.string(),\n});\n\nconst nullishString = z\n .string()\n .nullish()\n .transform((value) => value ?? null);\n\nexport const handoffLocalGitStateSchema = z.object({\n head: nullishString,\n branch: nullishString,\n upstreamHead: nullishString,\n upstreamRemote: nullishString,\n upstreamMergeRef: nullishString,\n});\n\nconst remoteMcpServerSchema = z.object({\n type: z.enum([\"http\", \"sse\"]),\n name: z.string().min(1, \"MCP server name is required\"),\n url: z.url({ error: \"MCP server url must be a valid URL\" }),\n headers: z.array(httpHeaderSchema).default([]),\n});\n\nexport const mcpServersSchema = z.array(remoteMcpServerSchema);\n\nexport type RemoteMcpServer = z.infer<typeof remoteMcpServerSchema>;\n\nexport const claudeCodeConfigSchema = z.object({\n systemPrompt: z\n .union([\n z.string(),\n z.object({\n type: z.literal(\"preset\"),\n preset: z.literal(\"claude_code\"),\n append: z.string().optional(),\n }),\n ])\n .optional(),\n plugins: z\n .array(z.object({ type: z.literal(\"local\"), path: z.string() }))\n .optional(),\n});\n\nexport const jsonRpcRequestSchema = z.object({\n jsonrpc: z.literal(\"2.0\"),\n method: z.string(),\n params: z.record(z.string(), z.unknown()).optional(),\n id: z.union([z.string(), z.number()]).optional(),\n});\n\nexport type JsonRpcRequest = z.infer<typeof jsonRpcRequestSchema>;\n\nexport const userMessageParamsSchema = z\n .object({\n content: z\n .union([\n z.string().min(1, \"Content is required\"),\n z\n .array(z.record(z.string(), z.unknown()))\n .min(1, \"Content is required\"),\n ])\n .optional(),\n artifacts: z.array(z.record(z.string(), z.unknown())).optional(),\n })\n .refine(\n (params) => {\n const hasContent =\n typeof params.content === \"string\"\n ? params.content.trim().length > 0\n : Array.isArray(params.content) && params.content.length > 0;\n const hasArtifacts =\n Array.isArray(params.artifacts) && params.artifacts.length > 0;\n\n return hasContent || hasArtifacts;\n },\n { error: \"Either content or artifacts are required\" },\n );\n\nexport const permissionResponseParamsSchema = z.object({\n requestId: z.string().min(1, \"requestId is required\"),\n optionId: z.string().min(1, \"optionId is required\"),\n customInput: z.string().optional(),\n answers: z.record(z.string(), z.string()).optional(),\n});\n\nexport const setConfigOptionParamsSchema = z.object({\n configId: z.string().min(1, \"configId is required\"),\n value: z.string().min(1, \"value is required\"),\n});\n\nexport const refreshSessionParamsSchema = z.object({\n mcpServers: mcpServersSchema,\n});\n\nexport const closeParamsSchema = z\n .object({\n localGitState: handoffLocalGitStateSchema.optional(),\n })\n .optional();\n\nexport const commandParamsSchemas = {\n user_message: userMessageParamsSchema,\n \"posthog/user_message\": userMessageParamsSchema,\n cancel: z.object({}).optional(),\n \"posthog/cancel\": z.object({}).optional(),\n close: closeParamsSchema,\n \"posthog/close\": closeParamsSchema,\n permission_response: permissionResponseParamsSchema,\n \"posthog/permission_response\": permissionResponseParamsSchema,\n set_config_option: setConfigOptionParamsSchema,\n \"posthog/set_config_option\": setConfigOptionParamsSchema,\n refresh_session: refreshSessionParamsSchema,\n \"posthog/refresh_session\": refreshSessionParamsSchema,\n \"_posthog/refresh_session\": refreshSessionParamsSchema,\n} as const;\n\nexport type CommandMethod = keyof typeof commandParamsSchemas;\n\nexport function validateCommandParams(\n method: string,\n params: unknown,\n): { success: true; data: unknown } | { success: false; error: string } {\n const schema =\n commandParamsSchemas[method as CommandMethod] ??\n commandParamsSchemas[\n method.replace(/^_?posthog\\//, \"\") as keyof typeof commandParamsSchemas\n ];\n\n if (!schema) {\n return { success: false, error: `Unknown method: ${method}` };\n }\n\n const result = schema.safeParse(params);\n if (!result.success) {\n return { success: false, error: result.error.message };\n }\n\n return { success: true, data: result.data };\n}\n"],"mappings":"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","names":[]}
|
package/dist/tree-tracker.d.ts
CHANGED
package/dist/tree-tracker.js
CHANGED
|
@@ -6116,6 +6116,13 @@ var ApplySnapshotSaga = class extends Saga {
|
|
|
6116
6116
|
const base64Content = Buffer.from(arrayBuffer).toString("utf-8");
|
|
6117
6117
|
const binaryContent = Buffer.from(base64Content, "base64");
|
|
6118
6118
|
await writeFile3(archivePath, binaryContent);
|
|
6119
|
+
this.log.info("Tree archive downloaded", {
|
|
6120
|
+
treeHash: snapshot.treeHash,
|
|
6121
|
+
snapshotBytes: binaryContent.byteLength,
|
|
6122
|
+
snapshotWireBytes: arrayBuffer.byteLength,
|
|
6123
|
+
totalBytes: binaryContent.byteLength,
|
|
6124
|
+
totalWireBytes: arrayBuffer.byteLength
|
|
6125
|
+
});
|
|
6119
6126
|
},
|
|
6120
6127
|
rollback: async () => {
|
|
6121
6128
|
if (this.archivePath) {
|
|
@@ -6224,6 +6231,8 @@ var CaptureTreeSaga2 = class extends Saga {
|
|
|
6224
6231
|
execute: async () => {
|
|
6225
6232
|
const archiveContent = await readFile3(archivePath);
|
|
6226
6233
|
const base64Content = archiveContent.toString("base64");
|
|
6234
|
+
const snapshotBytes = archiveContent.byteLength;
|
|
6235
|
+
const snapshotWireBytes = Buffer.byteLength(base64Content, "utf-8");
|
|
6227
6236
|
const artifacts = await apiClient.uploadTaskArtifacts(taskId, runId, [
|
|
6228
6237
|
{
|
|
6229
6238
|
name: `trees/${treeHash}.tar.gz`,
|
|
@@ -6232,12 +6241,17 @@ var CaptureTreeSaga2 = class extends Saga {
|
|
|
6232
6241
|
content_type: "application/gzip"
|
|
6233
6242
|
}
|
|
6234
6243
|
]);
|
|
6235
|
-
|
|
6244
|
+
const uploadedArtifact = artifacts[0];
|
|
6245
|
+
if (uploadedArtifact?.storage_path) {
|
|
6236
6246
|
this.log.info("Tree archive uploaded", {
|
|
6237
|
-
storagePath:
|
|
6238
|
-
treeHash
|
|
6247
|
+
storagePath: uploadedArtifact.storage_path,
|
|
6248
|
+
treeHash,
|
|
6249
|
+
snapshotBytes,
|
|
6250
|
+
snapshotWireBytes,
|
|
6251
|
+
totalBytes: snapshotBytes,
|
|
6252
|
+
totalWireBytes: snapshotWireBytes
|
|
6239
6253
|
});
|
|
6240
|
-
return
|
|
6254
|
+
return uploadedArtifact.storage_path;
|
|
6241
6255
|
}
|
|
6242
6256
|
return void 0;
|
|
6243
6257
|
},
|