@seawork/server 1.0.7 → 1.0.10-rc.5

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 (178) hide show
  1. package/dist/server/client/daemon-client.d.ts +32 -1
  2. package/dist/server/client/daemon-client.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client.js +69 -0
  4. package/dist/server/client/daemon-client.js.map +1 -1
  5. package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -1
  6. package/dist/server/server/agent/agent-management-mcp.js +6 -5
  7. package/dist/server/server/agent/agent-management-mcp.js.map +1 -1
  8. package/dist/server/server/agent/agent-response-loop.d.ts.map +1 -1
  9. package/dist/server/server/agent/agent-response-loop.js +0 -1
  10. package/dist/server/server/agent/agent-response-loop.js.map +1 -1
  11. package/dist/server/server/agent/agent-storage.d.ts +68 -68
  12. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  13. package/dist/server/server/agent/mcp-server.js +6 -5
  14. package/dist/server/server/agent/mcp-server.js.map +1 -1
  15. package/dist/server/server/agent/mcp-shared.d.ts +30 -30
  16. package/dist/server/server/agent/provider-manifest.d.ts +2 -1
  17. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  18. package/dist/server/server/agent/provider-manifest.js +3 -64
  19. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  20. package/dist/server/server/agent/provider-registry.d.ts.map +1 -1
  21. package/dist/server/server/agent/provider-registry.js +2 -10
  22. package/dist/server/server/agent/provider-registry.js.map +1 -1
  23. package/dist/server/server/agent/providers/claude/claude-models.d.ts.map +1 -1
  24. package/dist/server/server/agent/providers/claude/claude-models.js +3 -0
  25. package/dist/server/server/agent/providers/claude/claude-models.js.map +1 -1
  26. package/dist/server/server/agent/providers/claude/task-notification-tool-call.d.ts +2 -2
  27. package/dist/server/server/agent/providers/claude-agent.d.ts +2 -1
  28. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  29. package/dist/server/server/agent/providers/claude-agent.js +167 -22
  30. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  31. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  32. package/dist/server/server/agent/providers/codex-app-server-agent.js +106 -3
  33. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  34. package/dist/server/server/agent/providers/codex-rollout-timeline.d.ts.map +1 -1
  35. package/dist/server/server/agent/providers/codex-rollout-timeline.js +76 -0
  36. package/dist/server/server/agent/providers/codex-rollout-timeline.js.map +1 -1
  37. package/dist/server/server/agent/providers/seawork-models.d.ts.map +1 -1
  38. package/dist/server/server/agent/providers/seawork-models.js +9 -0
  39. package/dist/server/server/agent/providers/seawork-models.js.map +1 -1
  40. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +16 -16
  41. package/dist/server/server/bug-report-handler.d.ts +9 -0
  42. package/dist/server/server/bug-report-handler.d.ts.map +1 -0
  43. package/dist/server/server/bug-report-handler.js +111 -0
  44. package/dist/server/server/bug-report-handler.js.map +1 -0
  45. package/dist/server/server/bug-report-redact.d.ts +12 -0
  46. package/dist/server/server/bug-report-redact.d.ts.map +1 -0
  47. package/dist/server/server/bug-report-redact.js +63 -0
  48. package/dist/server/server/bug-report-redact.js.map +1 -0
  49. package/dist/server/server/chat/chat-rpc-schemas.d.ts +26 -26
  50. package/dist/server/server/chat/chat-types.d.ts +2 -2
  51. package/dist/server/server/exports.d.ts +4 -2
  52. package/dist/server/server/exports.d.ts.map +1 -1
  53. package/dist/server/server/exports.js +3 -0
  54. package/dist/server/server/exports.js.map +1 -1
  55. package/dist/server/server/index.js +47 -0
  56. package/dist/server/server/index.js.map +1 -1
  57. package/dist/server/server/loop/rpc-schemas.d.ts +775 -775
  58. package/dist/server/server/loop-service.d.ts +108 -108
  59. package/dist/server/server/persisted-config.d.ts +121 -121
  60. package/dist/server/server/sac/errors.d.ts +1 -0
  61. package/dist/server/server/sac/errors.d.ts.map +1 -1
  62. package/dist/server/server/sac/errors.js +2 -1
  63. package/dist/server/server/sac/errors.js.map +1 -1
  64. package/dist/server/server/sac/generate.d.ts +19 -11
  65. package/dist/server/server/sac/generate.d.ts.map +1 -1
  66. package/dist/server/server/sac/generate.js +131 -36
  67. package/dist/server/server/sac/generate.js.map +1 -1
  68. package/dist/server/server/sac/index.d.ts +8 -10
  69. package/dist/server/server/sac/index.d.ts.map +1 -1
  70. package/dist/server/server/sac/index.js +5 -17
  71. package/dist/server/server/sac/index.js.map +1 -1
  72. package/dist/server/server/sac/providers/alibaba.d.ts +2 -0
  73. package/dist/server/server/sac/providers/alibaba.d.ts.map +1 -0
  74. package/dist/server/server/sac/providers/alibaba.js +506 -0
  75. package/dist/server/server/sac/providers/alibaba.js.map +1 -0
  76. package/dist/server/server/sac/providers/audio.d.ts +2 -0
  77. package/dist/server/server/sac/providers/audio.d.ts.map +1 -0
  78. package/dist/server/server/sac/providers/audio.js +57 -0
  79. package/dist/server/server/sac/providers/audio.js.map +1 -0
  80. package/dist/server/server/sac/providers/kling.d.ts +2 -0
  81. package/dist/server/server/sac/providers/kling.d.ts.map +1 -0
  82. package/dist/server/server/sac/providers/kling.js +589 -0
  83. package/dist/server/server/sac/providers/kling.js.map +1 -0
  84. package/dist/server/server/sac/providers/nano.d.ts +2 -0
  85. package/dist/server/server/sac/providers/nano.d.ts.map +1 -0
  86. package/dist/server/server/sac/providers/nano.js +37 -0
  87. package/dist/server/server/sac/providers/nano.js.map +1 -0
  88. package/dist/server/server/sac/providers/pixverse.d.ts +2 -0
  89. package/dist/server/server/sac/providers/pixverse.d.ts.map +1 -0
  90. package/dist/server/server/sac/providers/pixverse.js +1017 -0
  91. package/dist/server/server/sac/providers/pixverse.js.map +1 -0
  92. package/dist/server/server/sac/providers/registry.d.ts +34 -0
  93. package/dist/server/server/sac/providers/registry.d.ts.map +1 -0
  94. package/dist/server/server/sac/providers/registry.js +57 -0
  95. package/dist/server/server/sac/providers/registry.js.map +1 -0
  96. package/dist/server/server/sac/providers/seaart.d.ts +1 -4
  97. package/dist/server/server/sac/providers/seaart.d.ts.map +1 -1
  98. package/dist/server/server/sac/providers/seaart.js +8 -18
  99. package/dist/server/server/sac/providers/seaart.js.map +1 -1
  100. package/dist/server/server/sac/providers/store.d.ts +9 -5
  101. package/dist/server/server/sac/providers/store.d.ts.map +1 -1
  102. package/dist/server/server/sac/providers/store.js +0 -3
  103. package/dist/server/server/sac/providers/store.js.map +1 -1
  104. package/dist/server/server/sac/providers/tencent-3d.d.ts +2 -0
  105. package/dist/server/server/sac/providers/tencent-3d.d.ts.map +1 -0
  106. package/dist/server/server/sac/providers/tencent-3d.js +210 -0
  107. package/dist/server/server/sac/providers/tencent-3d.js.map +1 -0
  108. package/dist/server/server/sac/providers/tencent-image.d.ts +2 -0
  109. package/dist/server/server/sac/providers/tencent-image.d.ts.map +1 -0
  110. package/dist/server/server/sac/providers/tencent-image.js +90 -0
  111. package/dist/server/server/sac/providers/tencent-image.js.map +1 -0
  112. package/dist/server/server/sac/providers/tencent-video.d.ts +2 -0
  113. package/dist/server/server/sac/providers/tencent-video.d.ts.map +1 -0
  114. package/dist/server/server/sac/providers/tencent-video.js +103 -0
  115. package/dist/server/server/sac/providers/tencent-video.js.map +1 -0
  116. package/dist/server/server/sac/providers/tripo3d.d.ts +2 -0
  117. package/dist/server/server/sac/providers/tripo3d.d.ts.map +1 -0
  118. package/dist/server/server/sac/providers/tripo3d.js +302 -0
  119. package/dist/server/server/sac/providers/tripo3d.js.map +1 -0
  120. package/dist/server/server/sac/providers/vidu.d.ts +2 -0
  121. package/dist/server/server/sac/providers/vidu.d.ts.map +1 -0
  122. package/dist/server/server/sac/providers/vidu.js +965 -0
  123. package/dist/server/server/sac/providers/vidu.js.map +1 -0
  124. package/dist/server/server/sac/providers/volces-3d.d.ts +2 -0
  125. package/dist/server/server/sac/providers/volces-3d.d.ts.map +1 -0
  126. package/dist/server/server/sac/providers/volces-3d.js +77 -0
  127. package/dist/server/server/sac/providers/volces-3d.js.map +1 -0
  128. package/dist/server/server/sac/providers/volces-video.d.ts +2 -0
  129. package/dist/server/server/sac/providers/volces-video.d.ts.map +1 -0
  130. package/dist/server/server/sac/providers/volces-video.js +392 -0
  131. package/dist/server/server/sac/providers/volces-video.js.map +1 -0
  132. package/dist/server/server/sac/providers/volces.d.ts +1 -4
  133. package/dist/server/server/sac/providers/volces.d.ts.map +1 -1
  134. package/dist/server/server/sac/providers/volces.js +279 -66
  135. package/dist/server/server/sac/providers/volces.js.map +1 -1
  136. package/dist/server/server/sac/types.d.ts +13 -30
  137. package/dist/server/server/sac/types.d.ts.map +1 -1
  138. package/dist/server/server/schedule/rpc-schemas.d.ts +493 -493
  139. package/dist/server/server/schedule/types.d.ts +140 -140
  140. package/dist/server/server/session.d.ts +9 -2
  141. package/dist/server/server/session.d.ts.map +1 -1
  142. package/dist/server/server/session.js +137 -19
  143. package/dist/server/server/session.js.map +1 -1
  144. package/dist/server/server/speech/speech-types.d.ts +2 -2
  145. package/dist/server/server/workspace-registry.d.ts +4 -4
  146. package/dist/server/shared/messages.d.ts +17455 -15917
  147. package/dist/server/shared/messages.d.ts.map +1 -1
  148. package/dist/server/shared/messages.js +83 -0
  149. package/dist/server/shared/messages.js.map +1 -1
  150. package/dist/server/utils/spawn.d.ts.map +1 -1
  151. package/dist/server/utils/spawn.js +8 -3
  152. package/dist/server/utils/spawn.js.map +1 -1
  153. package/dist/server/utils/worktree-metadata.d.ts +4 -4
  154. package/package.json +7 -9
  155. package/dist/server/server/agent/providers/acp-agent.d.ts +0 -202
  156. package/dist/server/server/agent/providers/acp-agent.d.ts.map +0 -1
  157. package/dist/server/server/agent/providers/acp-agent.js +0 -1650
  158. package/dist/server/server/agent/providers/acp-agent.js.map +0 -1
  159. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts +0 -16
  160. package/dist/server/server/agent/providers/copilot-acp-agent.d.ts.map +0 -1
  161. package/dist/server/server/agent/providers/copilot-acp-agent.js +0 -95
  162. package/dist/server/server/agent/providers/copilot-acp-agent.js.map +0 -1
  163. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +0 -3
  164. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +0 -1
  165. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +0 -39
  166. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +0 -1
  167. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts +0 -13
  168. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +0 -1
  169. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +0 -144
  170. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +0 -1
  171. package/dist/server/server/agent/providers/opencode-agent.d.ts +0 -121
  172. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +0 -1
  173. package/dist/server/server/agent/providers/opencode-agent.js +0 -1649
  174. package/dist/server/server/agent/providers/opencode-agent.js.map +0 -1
  175. package/dist/server/server/agent/providers/pi-acp-agent.d.ts +0 -28
  176. package/dist/server/server/agent/providers/pi-acp-agent.d.ts.map +0 -1
  177. package/dist/server/server/agent/providers/pi-acp-agent.js +0 -302
  178. package/dist/server/server/agent/providers/pi-acp-agent.js.map +0 -1
@@ -862,6 +862,8 @@ function normalizeCodexThreadItemType(rawType) {
862
862
  return "mcpToolCall";
863
863
  case "WebSearch":
864
864
  return "webSearch";
865
+ case "ImageGeneration":
866
+ return "imageGeneration";
865
867
  default:
866
868
  return rawType;
867
869
  }
@@ -1121,6 +1123,46 @@ function mapCodexTerminalInteractionToToolCall(params) {
1121
1123
  ...(processId ? { metadata: { processId } } : {}),
1122
1124
  };
1123
1125
  }
1126
+ function normalizeCodexGeneratedImageSource(item) {
1127
+ const savedPath = nonEmptyString(item.savedPath) ??
1128
+ nonEmptyString(item.saved_path) ??
1129
+ nonEmptyString(item.path) ??
1130
+ null;
1131
+ if (savedPath) {
1132
+ return savedPath;
1133
+ }
1134
+ const result = nonEmptyString(item.result);
1135
+ if (!result) {
1136
+ return null;
1137
+ }
1138
+ return result.startsWith("data:") ? result : `data:image/png;base64,${result}`;
1139
+ }
1140
+ function markdownImageSource(source) {
1141
+ if (/^(https?:|data:|blob:)/i.test(source)) {
1142
+ return source;
1143
+ }
1144
+ return `<${source.replace(/>/g, "%3E")}>`;
1145
+ }
1146
+ function mapCodexImageGenerationToTimeline(item) {
1147
+ const source = normalizeCodexGeneratedImageSource(item);
1148
+ if (!source) {
1149
+ return null;
1150
+ }
1151
+ return {
1152
+ type: "assistant_message",
1153
+ text: `![Generated image](${markdownImageSource(source)})`,
1154
+ };
1155
+ }
1156
+ function rawResponseItemToThreadItem(item) {
1157
+ if (item.type !== "image_generation_call") {
1158
+ return null;
1159
+ }
1160
+ return {
1161
+ ...item,
1162
+ type: "imageGeneration",
1163
+ revisedPrompt: item.revised_prompt ?? item.revisedPrompt ?? null,
1164
+ };
1165
+ }
1124
1166
  function threadItemToTimeline(item, options) {
1125
1167
  if (!item || typeof item !== "object")
1126
1168
  return null;
@@ -1163,6 +1205,8 @@ function threadItemToTimeline(item, options) {
1163
1205
  case "mcpToolCall":
1164
1206
  case "webSearch":
1165
1207
  return mapCodexToolCallFromThreadItem(normalizedItem, { cwd });
1208
+ case "imageGeneration":
1209
+ return mapCodexImageGenerationToTimeline(normalizedItem);
1166
1210
  default:
1167
1211
  return null;
1168
1212
  }
@@ -1268,6 +1312,16 @@ const ItemLifecycleNotificationSchema = z
1268
1312
  .passthrough(),
1269
1313
  })
1270
1314
  .passthrough();
1315
+ const RawResponseItemCompletedNotificationSchema = z
1316
+ .object({
1317
+ item: z
1318
+ .object({
1319
+ id: z.string().optional(),
1320
+ type: z.string().optional(),
1321
+ })
1322
+ .passthrough(),
1323
+ })
1324
+ .passthrough();
1271
1325
  const CodexEventTurnAbortedNotificationSchema = z
1272
1326
  .object({
1273
1327
  msg: z
@@ -1519,6 +1573,20 @@ const CodexNotificationSchema = z.union([
1519
1573
  method,
1520
1574
  params,
1521
1575
  })),
1576
+ z
1577
+ .object({
1578
+ method: z.literal("rawResponseItem/completed"),
1579
+ params: RawResponseItemCompletedNotificationSchema,
1580
+ })
1581
+ .transform(({ params }) => ({
1582
+ kind: "raw_response_item_completed",
1583
+ item: params.item,
1584
+ })),
1585
+ z.object({ method: z.literal("rawResponseItem/completed"), params: z.unknown() }).transform(({ method, params }) => ({
1586
+ kind: "invalid_payload",
1587
+ method,
1588
+ params,
1589
+ })),
1522
1590
  z
1523
1591
  .object({ method: z.literal("item/started"), params: ItemLifecycleNotificationSchema })
1524
1592
  .transform(({ params }) => ({
@@ -2373,13 +2441,17 @@ class CodexAppServerAgentSession {
2373
2441
  }
2374
2442
  const turnId = this.createTurnId();
2375
2443
  this.activeForegroundTurnId = turnId;
2444
+ const turnStartT0 = Date.now();
2445
+ this.logger.info({ turnId }, "[timing] codex turn/start request sending");
2376
2446
  try {
2377
2447
  await this.client.request("turn/start", params, TURN_START_TIMEOUT_MS);
2378
2448
  }
2379
2449
  catch (error) {
2450
+ this.logger.info({ turnId, elapsedMs: Date.now() - turnStartT0 }, "[timing] codex turn/start FAILED");
2380
2451
  this.activeForegroundTurnId = null;
2381
2452
  throw error;
2382
2453
  }
2454
+ this.logger.info({ turnId, elapsedMs: Date.now() - turnStartT0 }, "[timing] codex turn/start acknowledged");
2383
2455
  return { turnId };
2384
2456
  }
2385
2457
  subscribe(callback) {
@@ -2947,6 +3019,27 @@ class CodexAppServerAgentSession {
2947
3019
  }
2948
3020
  return;
2949
3021
  }
3022
+ if (parsed.kind === "raw_response_item_completed") {
3023
+ const threadItem = rawResponseItemToThreadItem(parsed.item);
3024
+ if (!threadItem) {
3025
+ return;
3026
+ }
3027
+ const itemId = threadItem.id;
3028
+ if (itemId && this.emittedItemCompletedIds.has(itemId)) {
3029
+ return;
3030
+ }
3031
+ const timelineItem = threadItemToTimeline(threadItem, {
3032
+ includeUserMessage: false,
3033
+ cwd: this.config.cwd ?? null,
3034
+ });
3035
+ if (timelineItem) {
3036
+ this.emitEvent({ type: "timeline", provider: CODEX_PROVIDER, item: timelineItem });
3037
+ if (itemId) {
3038
+ this.emittedItemCompletedIds.add(itemId);
3039
+ }
3040
+ }
3041
+ return;
3042
+ }
2950
3043
  if (parsed.kind === "item_completed") {
2951
3044
  // Codex emits mirrored lifecycle notifications via both `codex/event/item_*`
2952
3045
  // and canonical `item/*`. We render only the canonical channel to avoid
@@ -3268,8 +3361,17 @@ export class CodexAppServerAgentClient {
3268
3361
  extraArgs.push("-c", `model_provider="seawork"`, "-c", `model_providers.seawork.name="Seawork"`, "-c", `model_providers.seawork.base_url="${seaworkBaseUrl}/v1"`, "-c", `model_providers.seawork.env_key="SEAWORK_API_KEY"`, "--disable", "js_repl");
3269
3362
  codexEnv.SEAWORK_API_KEY = codexEnv.OPENAI_API_KEY ?? "";
3270
3363
  }
3271
- this.logger.info({ extraArgs }, "Codex app-server extra args");
3272
- return spawnProcess(launchPrefix.command, [...launchPrefix.args, "app-server", ...extraArgs], {
3364
+ const fullArgs = [...launchPrefix.args, "app-server", ...extraArgs];
3365
+ this.logger.debug({
3366
+ command: launchPrefix.command,
3367
+ args: fullArgs,
3368
+ hasOpenaiKey: !!codexEnv.OPENAI_API_KEY,
3369
+ openaiKeyPrefix: codexEnv.OPENAI_API_KEY?.slice(0, 10) ?? null,
3370
+ openaiBaseUrl: codexEnv.OPENAI_BASE_URL ?? null,
3371
+ hasSeaworkKey: !!codexEnv.SEAWORK_API_KEY,
3372
+ launchEnvKeys: Object.keys(launchEnv ?? {}),
3373
+ }, "codex_spawn");
3374
+ return spawnProcess(launchPrefix.command, fullArgs, {
3273
3375
  detached: process.platform !== "win32",
3274
3376
  stdio: ["pipe", "pipe", "pipe"],
3275
3377
  env: codexEnv,
@@ -3288,6 +3390,7 @@ export class CodexAppServerAgentClient {
3288
3390
  ...overrides,
3289
3391
  provider: CODEX_PROVIDER,
3290
3392
  cwd: overrides?.cwd ?? storedConfig.cwd ?? process.cwd(),
3393
+ modeId: overrides?.modeId ?? storedConfig.modeId ?? "auto",
3291
3394
  };
3292
3395
  const session = new CodexAppServerAgentSession(merged, handle, this.logger, () => this.spawnAppServer(launchContext?.env));
3293
3396
  await session.connect();
@@ -3362,7 +3465,7 @@ export class CodexAppServerAgentClient {
3362
3465
  if (command?.mode === "replace") {
3363
3466
  return existsSync(command.argv[0]);
3364
3467
  }
3365
- return true;
3468
+ return (await findExecutable("codex")) !== null;
3366
3469
  }
3367
3470
  async getDiagnostic() {
3368
3471
  try {