@seawork/server 1.0.16 → 1.0.17-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/client/daemon-client.d.ts +60 -0
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +147 -0
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/provider-launch-config.d.ts +9 -0
- package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
- package/dist/server/server/agent/provider-launch-config.js +2 -0
- package/dist/server/server/agent/provider-launch-config.js.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.d.ts +4 -0
- package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/claude-agent.js +30 -20
- package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
- package/dist/server/server/bug-report-handler.d.ts.map +1 -1
- package/dist/server/server/bug-report-handler.js +2 -0
- package/dist/server/server/bug-report-handler.js.map +1 -1
- package/dist/server/server/forum-handler.d.ts +11 -0
- package/dist/server/server/forum-handler.d.ts.map +1 -0
- package/dist/server/server/forum-handler.js +216 -0
- package/dist/server/server/forum-handler.js.map +1 -0
- package/dist/server/server/index.js +2 -1
- package/dist/server/server/index.js.map +1 -1
- package/dist/server/server/list-my-issues-handler.d.ts +7 -0
- package/dist/server/server/list-my-issues-handler.d.ts.map +1 -0
- package/dist/server/server/list-my-issues-handler.js +62 -0
- package/dist/server/server/list-my-issues-handler.js.map +1 -0
- package/dist/server/server/persisted-config.d.ts +7 -0
- package/dist/server/server/persisted-config.d.ts.map +1 -1
- package/dist/server/server/persisted-config.js +121 -2
- package/dist/server/server/persisted-config.js.map +1 -1
- package/dist/server/server/session.d.ts +6 -0
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +44 -0
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
- package/dist/server/shared/daemon-endpoints.js +22 -4
- package/dist/server/shared/daemon-endpoints.js.map +1 -1
- package/dist/server/shared/messages.d.ts +2763 -227
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +139 -0
- package/dist/server/shared/messages.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type pino from "pino";
|
|
2
|
+
import type { GetPublicIssueRequestMessage, GetPublicIssueResponseMessage, ListIssueCommentsRequestMessage, ListIssueCommentsResponseMessage, ListPublicIssuesRequestMessage, ListPublicIssuesResponseMessage, PostIssueCommentRequestMessage, PostIssueCommentResponseMessage, ToggleIssueReactionRequestMessage, ToggleIssueReactionResponseMessage } from "../shared/messages.js";
|
|
3
|
+
export interface ForumHandlerDeps {
|
|
4
|
+
logger: pino.Logger;
|
|
5
|
+
}
|
|
6
|
+
export declare function handleListPublicIssues(msg: ListPublicIssuesRequestMessage, deps: ForumHandlerDeps): Promise<ListPublicIssuesResponseMessage>;
|
|
7
|
+
export declare function handleGetPublicIssue(msg: GetPublicIssueRequestMessage, deps: ForumHandlerDeps): Promise<GetPublicIssueResponseMessage>;
|
|
8
|
+
export declare function handleListIssueComments(msg: ListIssueCommentsRequestMessage, deps: ForumHandlerDeps): Promise<ListIssueCommentsResponseMessage>;
|
|
9
|
+
export declare function handlePostIssueComment(msg: PostIssueCommentRequestMessage, deps: ForumHandlerDeps): Promise<PostIssueCommentResponseMessage>;
|
|
10
|
+
export declare function handleToggleIssueReaction(msg: ToggleIssueReactionRequestMessage, deps: ForumHandlerDeps): Promise<ToggleIssueReactionResponseMessage>;
|
|
11
|
+
//# sourceMappingURL=forum-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forum-handler.d.ts","sourceRoot":"","sources":["../../../src/server/forum-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAI/B,iCAAiC,EACjC,kCAAkC,EACnC,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAkCD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,8BAA8B,EACnC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,+BAA+B,CAAC,CAmC1C;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,4BAA4B,EACjC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,6BAA6B,CAAC,CAkCxC;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,+BAA+B,EACpC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,gCAAgC,CAAC,CA4B3C;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,8BAA8B,EACnC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,+BAA+B,CAAC,CAyC1C;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,iCAAiC,EACtC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kCAAkC,CAAC,CA8C7C"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
const BUG_INTAKE_URL = process.env.BUG_INTAKE_URL?.replace(/\/+$/, "") || "https://seawork-bug-intake.sg.seaverse.dev";
|
|
2
|
+
async function getJson(url) {
|
|
3
|
+
const res = await fetch(url, { method: "GET", headers: { accept: "application/json" } });
|
|
4
|
+
if (!res.ok)
|
|
5
|
+
return { ok: false, status: res.status };
|
|
6
|
+
const body = (await res.json());
|
|
7
|
+
return { ok: true, status: res.status, body };
|
|
8
|
+
}
|
|
9
|
+
async function postJson(url, payload) {
|
|
10
|
+
const res = await fetch(url, {
|
|
11
|
+
method: "POST",
|
|
12
|
+
headers: { "content-type": "application/json", accept: "application/json" },
|
|
13
|
+
body: JSON.stringify(payload),
|
|
14
|
+
});
|
|
15
|
+
if (!res.ok) {
|
|
16
|
+
let errBody;
|
|
17
|
+
try {
|
|
18
|
+
errBody = (await res.json());
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// ignore
|
|
22
|
+
}
|
|
23
|
+
return { ok: false, status: res.status, body: errBody };
|
|
24
|
+
}
|
|
25
|
+
const body = (await res.json());
|
|
26
|
+
return { ok: true, status: res.status, body };
|
|
27
|
+
}
|
|
28
|
+
export async function handleListPublicIssues(msg, deps) {
|
|
29
|
+
const params = new URLSearchParams();
|
|
30
|
+
if (msg.sort)
|
|
31
|
+
params.set("sort", msg.sort);
|
|
32
|
+
if (msg.limit)
|
|
33
|
+
params.set("limit", String(msg.limit));
|
|
34
|
+
if (msg.offset !== undefined)
|
|
35
|
+
params.set("offset", String(msg.offset));
|
|
36
|
+
if (msg.email)
|
|
37
|
+
params.set("email", msg.email);
|
|
38
|
+
if (msg.clientId)
|
|
39
|
+
params.set("clientId", msg.clientId);
|
|
40
|
+
try {
|
|
41
|
+
const r = await getJson(BUG_INTAKE_URL + "/issues?" + params.toString());
|
|
42
|
+
if (!r.ok || !r.body?.ok) {
|
|
43
|
+
return {
|
|
44
|
+
type: "list_public_issues_response",
|
|
45
|
+
requestId: msg.requestId,
|
|
46
|
+
ok: false,
|
|
47
|
+
error: "intake_error_" + r.status,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
type: "list_public_issues_response",
|
|
52
|
+
requestId: msg.requestId,
|
|
53
|
+
ok: true,
|
|
54
|
+
issues: r.body.issues ?? [],
|
|
55
|
+
total: r.body.total,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
deps.logger.error({ err }, "list public issues failed");
|
|
60
|
+
return {
|
|
61
|
+
type: "list_public_issues_response",
|
|
62
|
+
requestId: msg.requestId,
|
|
63
|
+
ok: false,
|
|
64
|
+
error: err.message,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export async function handleGetPublicIssue(msg, deps) {
|
|
69
|
+
const params = new URLSearchParams();
|
|
70
|
+
if (msg.email)
|
|
71
|
+
params.set("email", msg.email);
|
|
72
|
+
if (msg.clientId)
|
|
73
|
+
params.set("clientId", msg.clientId);
|
|
74
|
+
const url = BUG_INTAKE_URL +
|
|
75
|
+
"/issues/" +
|
|
76
|
+
msg.issueNumber +
|
|
77
|
+
(params.toString() ? "?" + params.toString() : "");
|
|
78
|
+
try {
|
|
79
|
+
const r = await getJson(url);
|
|
80
|
+
if (!r.ok || !r.body?.ok) {
|
|
81
|
+
return {
|
|
82
|
+
type: "get_public_issue_response",
|
|
83
|
+
requestId: msg.requestId,
|
|
84
|
+
ok: false,
|
|
85
|
+
error: "intake_error_" + r.status,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
type: "get_public_issue_response",
|
|
90
|
+
requestId: msg.requestId,
|
|
91
|
+
ok: true,
|
|
92
|
+
issue: r.body.issue,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
deps.logger.error({ err }, "get public issue failed");
|
|
97
|
+
return {
|
|
98
|
+
type: "get_public_issue_response",
|
|
99
|
+
requestId: msg.requestId,
|
|
100
|
+
ok: false,
|
|
101
|
+
error: err.message,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export async function handleListIssueComments(msg, deps) {
|
|
106
|
+
try {
|
|
107
|
+
const r = await getJson(BUG_INTAKE_URL + "/issues/" + msg.issueNumber + "/comments");
|
|
108
|
+
if (!r.ok || !r.body?.ok) {
|
|
109
|
+
return {
|
|
110
|
+
type: "list_issue_comments_response",
|
|
111
|
+
requestId: msg.requestId,
|
|
112
|
+
ok: false,
|
|
113
|
+
error: "intake_error_" + r.status,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
type: "list_issue_comments_response",
|
|
118
|
+
requestId: msg.requestId,
|
|
119
|
+
ok: true,
|
|
120
|
+
comments: r.body.comments ?? [],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
deps.logger.error({ err }, "list comments failed");
|
|
125
|
+
return {
|
|
126
|
+
type: "list_issue_comments_response",
|
|
127
|
+
requestId: msg.requestId,
|
|
128
|
+
ok: false,
|
|
129
|
+
error: err.message,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export async function handlePostIssueComment(msg, deps) {
|
|
134
|
+
const email = msg.email?.trim();
|
|
135
|
+
const clientId = msg.clientId?.trim();
|
|
136
|
+
const displayName = msg.displayName?.trim();
|
|
137
|
+
const body = msg.body?.trim();
|
|
138
|
+
if (!email || !clientId || !displayName || !body) {
|
|
139
|
+
return {
|
|
140
|
+
type: "post_issue_comment_response",
|
|
141
|
+
requestId: msg.requestId,
|
|
142
|
+
ok: false,
|
|
143
|
+
error: "missing_fields",
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const r = await postJson(BUG_INTAKE_URL + "/issues/" + msg.issueNumber + "/comments", { email, clientId, displayName, body });
|
|
148
|
+
if (!r.ok || !r.body?.ok) {
|
|
149
|
+
return {
|
|
150
|
+
type: "post_issue_comment_response",
|
|
151
|
+
requestId: msg.requestId,
|
|
152
|
+
ok: false,
|
|
153
|
+
error: r.body?.error ?? "intake_error_" + r.status,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
type: "post_issue_comment_response",
|
|
158
|
+
requestId: msg.requestId,
|
|
159
|
+
ok: true,
|
|
160
|
+
comment: r.body.comment,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
deps.logger.error({ err }, "post comment failed");
|
|
165
|
+
return {
|
|
166
|
+
type: "post_issue_comment_response",
|
|
167
|
+
requestId: msg.requestId,
|
|
168
|
+
ok: false,
|
|
169
|
+
error: err.message,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export async function handleToggleIssueReaction(msg, deps) {
|
|
174
|
+
const email = msg.email?.trim();
|
|
175
|
+
const clientId = msg.clientId?.trim();
|
|
176
|
+
if (!email || !clientId) {
|
|
177
|
+
return {
|
|
178
|
+
type: "toggle_issue_reaction_response",
|
|
179
|
+
requestId: msg.requestId,
|
|
180
|
+
ok: false,
|
|
181
|
+
error: "missing_identity",
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const r = await postJson(BUG_INTAKE_URL + "/issues/" + msg.issueNumber + "/reactions", {
|
|
186
|
+
email,
|
|
187
|
+
clientId,
|
|
188
|
+
content: msg.content ?? "+1",
|
|
189
|
+
});
|
|
190
|
+
if (!r.ok || !r.body?.ok) {
|
|
191
|
+
return {
|
|
192
|
+
type: "toggle_issue_reaction_response",
|
|
193
|
+
requestId: msg.requestId,
|
|
194
|
+
ok: false,
|
|
195
|
+
error: r.body?.error ?? "intake_error_" + r.status,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
type: "toggle_issue_reaction_response",
|
|
200
|
+
requestId: msg.requestId,
|
|
201
|
+
ok: true,
|
|
202
|
+
total: r.body.total,
|
|
203
|
+
viewerHasReacted: r.body.viewerHasReacted,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
deps.logger.error({ err }, "toggle reaction failed");
|
|
208
|
+
return {
|
|
209
|
+
type: "toggle_issue_reaction_response",
|
|
210
|
+
requestId: msg.requestId,
|
|
211
|
+
ok: false,
|
|
212
|
+
error: err.message,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=forum-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forum-handler.js","sourceRoot":"","sources":["../../../src/server/forum-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,7 +120,8 @@ async function main() {
|
|
|
120
120
|
// Write/remove a settings file for spawned claude CLI processes so they use
|
|
121
121
|
// our gateway auth regardless of the user's ~/.claude/settings.json.
|
|
122
122
|
const claudeSettingsPath = path.join(seaworkHome, "claude-settings.json");
|
|
123
|
-
|
|
123
|
+
const useLocalClaudeConfig = config.agentProviderSettings?.claude?.authMode === "local";
|
|
124
|
+
if (process.env.ANTHROPIC_API_KEY && !useLocalClaudeConfig) {
|
|
124
125
|
const settings = {
|
|
125
126
|
// Override user-level auth helpers so the spawned claude CLI authenticates
|
|
126
127
|
// purely via ANTHROPIC_API_KEY below. If a user has e.g. a Vtrix/Bedrock
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type pino from "pino";
|
|
2
|
+
import type { ListMyIssuesRequestMessage, ListMyIssuesResponseMessage } from "../shared/messages.js";
|
|
3
|
+
export interface ListMyIssuesHandlerDeps {
|
|
4
|
+
logger: pino.Logger;
|
|
5
|
+
}
|
|
6
|
+
export declare function handleListMyIssues(msg: ListMyIssuesRequestMessage, deps: ListMyIssuesHandlerDeps): Promise<ListMyIssuesResponseMessage>;
|
|
7
|
+
//# sourceMappingURL=list-my-issues-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-my-issues-handler.d.ts","sourceRoot":"","sources":["../../../src/server/list-my-issues-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAE5B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB;AAKD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,0BAA0B,EAC/B,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,2BAA2B,CAAC,CA4DtC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const BUG_INTAKE_URL = process.env.BUG_INTAKE_URL?.replace(/\/+$/, "") || "https://seawork-bug-intake.sg.seaverse.dev";
|
|
2
|
+
export async function handleListMyIssues(msg, deps) {
|
|
3
|
+
const { logger } = deps;
|
|
4
|
+
const email = msg.email?.trim();
|
|
5
|
+
const clientId = msg.clientId?.trim();
|
|
6
|
+
if (!email && !clientId) {
|
|
7
|
+
return {
|
|
8
|
+
type: "list_my_issues_response",
|
|
9
|
+
requestId: msg.requestId,
|
|
10
|
+
ok: false,
|
|
11
|
+
error: "missing_identity",
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const params = new URLSearchParams();
|
|
15
|
+
if (email)
|
|
16
|
+
params.set("email", email);
|
|
17
|
+
if (clientId)
|
|
18
|
+
params.set("clientId", clientId);
|
|
19
|
+
if (msg.limit)
|
|
20
|
+
params.set("limit", String(msg.limit));
|
|
21
|
+
try {
|
|
22
|
+
const res = await fetch(BUG_INTAKE_URL + "/my-issues?" + params.toString(), {
|
|
23
|
+
method: "GET",
|
|
24
|
+
headers: { accept: "application/json" },
|
|
25
|
+
});
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
const text = await res.text().catch(() => "");
|
|
28
|
+
logger.error({ status: res.status, text }, "bug-intake my-issues rejected");
|
|
29
|
+
return {
|
|
30
|
+
type: "list_my_issues_response",
|
|
31
|
+
requestId: msg.requestId,
|
|
32
|
+
ok: false,
|
|
33
|
+
error: "intake_error_" + res.status,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const body = (await res.json());
|
|
37
|
+
if (!body.ok) {
|
|
38
|
+
return {
|
|
39
|
+
type: "list_my_issues_response",
|
|
40
|
+
requestId: msg.requestId,
|
|
41
|
+
ok: false,
|
|
42
|
+
error: body.error ?? "intake_error",
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
type: "list_my_issues_response",
|
|
47
|
+
requestId: msg.requestId,
|
|
48
|
+
ok: true,
|
|
49
|
+
issues: body.issues ?? [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
logger.error({ err, url: BUG_INTAKE_URL }, "bug-intake my-issues fetch failed");
|
|
54
|
+
return {
|
|
55
|
+
type: "list_my_issues_response",
|
|
56
|
+
requestId: msg.requestId,
|
|
57
|
+
ok: false,
|
|
58
|
+
error: err.message || "intake_unreachable",
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=list-my-issues-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-my-issues-handler.js","sourceRoot":"","sources":["../../../src/server/list-my-issues-handler.ts"],"names":[],"mappings":"AAWA,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,4CAA4C,CAAC;AAElG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAA+B,EAC/B,IAA6B;IAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,kBAAkB;SAC1B,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,GAAG,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,cAAc,GAAG,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE;YAC1E,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAC5E,OAAO;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM;aACpC,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI7B,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO;gBACL,IAAI,EAAE,yBAAyB;gBAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;aACpC,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,mCAAmC,CAAC,CAAC;QAChF,OAAO;YACL,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,EAAE,EAAE,KAAK;YACT,KAAK,EAAG,GAAa,CAAC,OAAO,IAAI,oBAAoB;SACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -143,6 +143,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
143
143
|
}>>;
|
|
144
144
|
agents: z.ZodOptional<z.ZodObject<{
|
|
145
145
|
providers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
146
|
+
authMode: z.ZodOptional<z.ZodEnum<["seawork", "local"]>>;
|
|
146
147
|
command: z.ZodOptional<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
|
|
147
148
|
mode: z.ZodLiteral<"default">;
|
|
148
149
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -180,6 +181,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
180
181
|
argv: string[];
|
|
181
182
|
} | undefined;
|
|
182
183
|
env?: Record<string, string> | undefined;
|
|
184
|
+
authMode?: "seawork" | "local" | undefined;
|
|
183
185
|
}, {
|
|
184
186
|
command?: {
|
|
185
187
|
mode: "default";
|
|
@@ -191,6 +193,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
191
193
|
argv: string[];
|
|
192
194
|
} | undefined;
|
|
193
195
|
env?: Record<string, string> | undefined;
|
|
196
|
+
authMode?: "seawork" | "local" | undefined;
|
|
194
197
|
}>>>;
|
|
195
198
|
models: z.ZodOptional<z.ZodUnknown>;
|
|
196
199
|
}, "strict", z.ZodTypeAny, {
|
|
@@ -206,6 +209,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
206
209
|
argv: string[];
|
|
207
210
|
} | undefined;
|
|
208
211
|
env?: Record<string, string> | undefined;
|
|
212
|
+
authMode?: "seawork" | "local" | undefined;
|
|
209
213
|
}> | undefined;
|
|
210
214
|
}, {
|
|
211
215
|
models?: unknown;
|
|
@@ -220,6 +224,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
220
224
|
argv: string[];
|
|
221
225
|
} | undefined;
|
|
222
226
|
env?: Record<string, string> | undefined;
|
|
227
|
+
authMode?: "seawork" | "local" | undefined;
|
|
223
228
|
}> | undefined;
|
|
224
229
|
}>>;
|
|
225
230
|
features: z.ZodOptional<z.ZodObject<{
|
|
@@ -558,6 +563,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
558
563
|
argv: string[];
|
|
559
564
|
} | undefined;
|
|
560
565
|
env?: Record<string, string> | undefined;
|
|
566
|
+
authMode?: "seawork" | "local" | undefined;
|
|
561
567
|
}> | undefined;
|
|
562
568
|
} | undefined;
|
|
563
569
|
providers?: {
|
|
@@ -655,6 +661,7 @@ export declare const PersistedConfigSchema: z.ZodObject<{
|
|
|
655
661
|
argv: string[];
|
|
656
662
|
} | undefined;
|
|
657
663
|
env?: Record<string, string> | undefined;
|
|
664
|
+
authMode?: "seawork" | "local" | undefined;
|
|
658
665
|
}> | undefined;
|
|
659
666
|
} | undefined;
|
|
660
667
|
providers?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted-config.d.ts","sourceRoot":"","sources":["../../../src/server/persisted-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAOhB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;YAAgE,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA+H5E,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"persisted-config.d.ts","sourceRoot":"","sources":["../../../src/server/persisted-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAOhB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;YAAgE,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA+H5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DvB,CAAC;AAEZ,KAAK,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAOhE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG;IACjE,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnE,MAAM,CAAC,EAAE,sBAAsB,CAAC;KACjC,CAAC;CACH,CAAC;AAgCF,KAAK,UAAU,GAAG;IAChB,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IACrD,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC5B,CAAC;AAsNF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,eAAe,CAsB7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAMlF;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,UAAU,GAClB,IAAI,CA6CN"}
|
|
@@ -188,6 +188,15 @@ export const PersistedConfigSchema = z
|
|
|
188
188
|
})
|
|
189
189
|
.strict();
|
|
190
190
|
const CONFIG_FILENAME = "config.json";
|
|
191
|
+
const KNOWN_TOP_LEVEL_KEYS = new Set([
|
|
192
|
+
"version",
|
|
193
|
+
"daemon",
|
|
194
|
+
"app",
|
|
195
|
+
"providers",
|
|
196
|
+
"agents",
|
|
197
|
+
"features",
|
|
198
|
+
"log",
|
|
199
|
+
]);
|
|
191
200
|
// Defaults never include `agents.models`, so the `unknown` → typed mismatch
|
|
192
201
|
// between `PersistedConfigRaw` and `PersistedConfig` is safe to cast away.
|
|
193
202
|
const DEFAULT_PERSISTED_CONFIG = PersistedConfigSchema.parse({
|
|
@@ -211,6 +220,97 @@ function getConfigPath(seaworkHome) {
|
|
|
211
220
|
function getLogger(logger) {
|
|
212
221
|
return logger?.child({ module: "config" });
|
|
213
222
|
}
|
|
223
|
+
// Forward-compat: the daemon may be reading a config.json written by a newer
|
|
224
|
+
// daemon (rollback / cross-device sync / future field). Strip anything the
|
|
225
|
+
// strict schema doesn't recognize *before* parsing so unknown keys can't kill
|
|
226
|
+
// startup. Known sub-trees (`daemon`, `providers`, `agents`, `features`) get
|
|
227
|
+
// the same treatment one level deep — the namespaces most likely to grow new
|
|
228
|
+
// fields. Stripped paths are returned for caller to surface as a warning.
|
|
229
|
+
//
|
|
230
|
+
// Leaves (`log.console.*`, `daemon.cors.*`, etc.) remain strict-validated so
|
|
231
|
+
// typos are still caught, just not at the top-level entry points.
|
|
232
|
+
const KNOWN_SUB_KEYS = {
|
|
233
|
+
daemon: new Set(["listen", "allowedHosts", "mcp", "cors", "relay"]),
|
|
234
|
+
providers: new Set(["openai", "local"]),
|
|
235
|
+
agents: new Set(["providers", "models"]),
|
|
236
|
+
features: new Set(["dictation", "voiceMode"]),
|
|
237
|
+
};
|
|
238
|
+
function isPlainRecord(value) {
|
|
239
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
240
|
+
}
|
|
241
|
+
function stripUnknownKeysAndCollect(parsed) {
|
|
242
|
+
if (!isPlainRecord(parsed)) {
|
|
243
|
+
return { cleaned: parsed, stripped: [], unknownTree: null };
|
|
244
|
+
}
|
|
245
|
+
const stripped = [];
|
|
246
|
+
const root = {};
|
|
247
|
+
const unknownTree = {};
|
|
248
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
249
|
+
if (!KNOWN_TOP_LEVEL_KEYS.has(key)) {
|
|
250
|
+
stripped.push(key);
|
|
251
|
+
unknownTree[key] = value;
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
const subKeys = KNOWN_SUB_KEYS[key];
|
|
255
|
+
if (subKeys && isPlainRecord(value)) {
|
|
256
|
+
const subRoot = {};
|
|
257
|
+
const subUnknown = {};
|
|
258
|
+
for (const [subKey, subValue] of Object.entries(value)) {
|
|
259
|
+
if (subKeys.has(subKey)) {
|
|
260
|
+
subRoot[subKey] = subValue;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
stripped.push(`${key}.${subKey}`);
|
|
264
|
+
subUnknown[subKey] = subValue;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
root[key] = subRoot;
|
|
268
|
+
if (Object.keys(subUnknown).length > 0)
|
|
269
|
+
unknownTree[key] = subUnknown;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
root[key] = value;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
cleaned: root,
|
|
277
|
+
stripped,
|
|
278
|
+
unknownTree: Object.keys(unknownTree).length > 0 ? unknownTree : null,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
// Deep-merge raw unknown branches back into the to-be-written object so newer-
|
|
282
|
+
// daemon-only fields survive a load/save round-trip in an older daemon. The
|
|
283
|
+
// known half of the tree always wins — this only fills in keys the writer
|
|
284
|
+
// didn't touch.
|
|
285
|
+
function mergeUnknownBack(target, unknown) {
|
|
286
|
+
for (const [key, value] of Object.entries(unknown)) {
|
|
287
|
+
const existing = target[key];
|
|
288
|
+
if (isPlainRecord(existing) && isPlainRecord(value)) {
|
|
289
|
+
mergeUnknownBack(existing, value);
|
|
290
|
+
}
|
|
291
|
+
else if (existing === undefined) {
|
|
292
|
+
target[key] = value;
|
|
293
|
+
}
|
|
294
|
+
// else: writer set this key explicitly; respect their value.
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Best-effort recovery of unknown future fields from disk so they survive a
|
|
298
|
+
// save() invoked with an in-memory config that doesn't know about them. Reads
|
|
299
|
+
// the current file, returns the unknown subtree, and swallows all errors —
|
|
300
|
+
// save's job is to write, not to fail because the prior file is corrupt.
|
|
301
|
+
function readUnknownTreeFromDisk(configPath) {
|
|
302
|
+
try {
|
|
303
|
+
if (!existsSync(configPath))
|
|
304
|
+
return null;
|
|
305
|
+
const raw = readFileSync(configPath, "utf-8");
|
|
306
|
+
const parsed = JSON.parse(raw);
|
|
307
|
+
const migrated = stripDeprecatedLocalSpeechConfigFields(parsed);
|
|
308
|
+
return stripUnknownKeysAndCollect(migrated).unknownTree;
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
214
314
|
function stripDeprecatedLocalSpeechConfigFields(parsed) {
|
|
215
315
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
216
316
|
return parsed;
|
|
@@ -264,7 +364,12 @@ function readPersistedConfig(seaworkHome, logger) {
|
|
|
264
364
|
throw new Error(`[Config] Invalid JSON in ${configPath}: ${message}`);
|
|
265
365
|
}
|
|
266
366
|
const migrated = stripDeprecatedLocalSpeechConfigFields(parsed);
|
|
267
|
-
const
|
|
367
|
+
const { cleaned, stripped } = stripUnknownKeysAndCollect(migrated);
|
|
368
|
+
if (stripped.length > 0) {
|
|
369
|
+
log?.warn(`Ignoring unknown keys in ${configPath}: ${stripped.join(", ")}. ` +
|
|
370
|
+
`These are likely from a newer daemon; startup will continue.`);
|
|
371
|
+
}
|
|
372
|
+
const result = PersistedConfigSchema.safeParse(cleaned);
|
|
268
373
|
if (!result.success) {
|
|
269
374
|
const issues = result.error.issues
|
|
270
375
|
.map((i) => ` - ${i.path.join(".")}: ${i.message}`)
|
|
@@ -355,8 +460,22 @@ export function savePersistedConfig(seaworkHome, config, logger) {
|
|
|
355
460
|
}
|
|
356
461
|
result.data.agents = { ...result.data.agents, models: modelsResult.data };
|
|
357
462
|
}
|
|
463
|
+
// Preserve any forward-compat fields already on disk (written by a newer
|
|
464
|
+
// daemon) so that this older daemon's save doesn't silently delete them.
|
|
465
|
+
// The in-memory config has no knowledge of these keys, so we re-read them
|
|
466
|
+
// from disk and merge them under untouched paths only.
|
|
467
|
+
//
|
|
468
|
+
// Read-then-write is not atomic; a concurrent writer between these calls
|
|
469
|
+
// could still lose data. Acceptable here because the daemon holds a pid
|
|
470
|
+
// lock (pid-lock.ts) so only one process owns ~/.seawork/config.json at a
|
|
471
|
+
// time. CLI mutations route through the same daemon.
|
|
472
|
+
const toWrite = result.data;
|
|
473
|
+
const existingUnknown = readUnknownTreeFromDisk(configPath);
|
|
474
|
+
if (existingUnknown) {
|
|
475
|
+
mergeUnknownBack(toWrite, existingUnknown);
|
|
476
|
+
}
|
|
358
477
|
try {
|
|
359
|
-
writeFileSync(configPath, JSON.stringify(
|
|
478
|
+
writeFileSync(configPath, JSON.stringify(toWrite, null, 2) + "\n");
|
|
360
479
|
log?.info(`Saved to ${configPath}`);
|
|
361
480
|
}
|
|
362
481
|
catch (err) {
|