@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.
Files changed (41) hide show
  1. package/dist/server/client/daemon-client.d.ts +60 -0
  2. package/dist/server/client/daemon-client.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client.js +147 -0
  4. package/dist/server/client/daemon-client.js.map +1 -1
  5. package/dist/server/server/agent/provider-launch-config.d.ts +9 -0
  6. package/dist/server/server/agent/provider-launch-config.d.ts.map +1 -1
  7. package/dist/server/server/agent/provider-launch-config.js +2 -0
  8. package/dist/server/server/agent/provider-launch-config.js.map +1 -1
  9. package/dist/server/server/agent/providers/claude-agent.d.ts +4 -0
  10. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  11. package/dist/server/server/agent/providers/claude-agent.js +30 -20
  12. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  13. package/dist/server/server/bug-report-handler.d.ts.map +1 -1
  14. package/dist/server/server/bug-report-handler.js +2 -0
  15. package/dist/server/server/bug-report-handler.js.map +1 -1
  16. package/dist/server/server/forum-handler.d.ts +11 -0
  17. package/dist/server/server/forum-handler.d.ts.map +1 -0
  18. package/dist/server/server/forum-handler.js +216 -0
  19. package/dist/server/server/forum-handler.js.map +1 -0
  20. package/dist/server/server/index.js +2 -1
  21. package/dist/server/server/index.js.map +1 -1
  22. package/dist/server/server/list-my-issues-handler.d.ts +7 -0
  23. package/dist/server/server/list-my-issues-handler.d.ts.map +1 -0
  24. package/dist/server/server/list-my-issues-handler.js +62 -0
  25. package/dist/server/server/list-my-issues-handler.js.map +1 -0
  26. package/dist/server/server/persisted-config.d.ts +7 -0
  27. package/dist/server/server/persisted-config.d.ts.map +1 -1
  28. package/dist/server/server/persisted-config.js +121 -2
  29. package/dist/server/server/persisted-config.js.map +1 -1
  30. package/dist/server/server/session.d.ts +6 -0
  31. package/dist/server/server/session.d.ts.map +1 -1
  32. package/dist/server/server/session.js +44 -0
  33. package/dist/server/server/session.js.map +1 -1
  34. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
  35. package/dist/server/shared/daemon-endpoints.js +22 -4
  36. package/dist/server/shared/daemon-endpoints.js.map +1 -1
  37. package/dist/server/shared/messages.d.ts +2763 -227
  38. package/dist/server/shared/messages.d.ts.map +1 -1
  39. package/dist/server/shared/messages.js +139 -0
  40. package/dist/server/shared/messages.js.map +1 -1
  41. 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
- if (process.env.ANTHROPIC_API_KEY) {
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAqBF,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;AA2GF,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,CA8BN"}
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 result = PersistedConfigSchema.safeParse(migrated);
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(result.data, null, 2) + "\n");
478
+ writeFileSync(configPath, JSON.stringify(toWrite, null, 2) + "\n");
360
479
  log?.info(`Saved to ${configPath}`);
361
480
  }
362
481
  catch (err) {