@surething/cockpit 1.0.216 → 1.0.218

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 (75) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +2 -2
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next-prod/server/app/_global-error.html +1 -1
  7. package/.next-prod/server/app/_global-error.rsc +1 -1
  8. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next-prod/server/app/_not-found.html +1 -1
  16. package/.next-prod/server/app/_not-found.rsc +3 -3
  17. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
  18. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  20. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  24. package/.next-prod/server/app/api/chat/route.js +1 -1
  25. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  26. package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
  27. package/.next-prod/server/app/api/scheduled-tasks/route.js +1 -1
  28. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  29. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  30. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  31. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  32. package/.next-prod/server/app-paths-manifest.json +2 -2
  33. package/.next-prod/server/chunks/2939.js +1 -1
  34. package/.next-prod/server/chunks/8916.js +1 -1
  35. package/.next-prod/server/chunks/9658.js +7 -7
  36. package/.next-prod/server/chunks/9877.js +1 -1
  37. package/.next-prod/server/functions-config-manifest.json +1 -0
  38. package/.next-prod/server/middleware-build-manifest.js +1 -1
  39. package/.next-prod/server/pages/404.html +1 -1
  40. package/.next-prod/server/pages/500.html +1 -1
  41. package/.next-prod/server/server-reference-manifest.json +1 -1
  42. package/.next-prod/static/chunks/6345-2637497e8b101740.js +14 -0
  43. package/.next-prod/static/chunks/6917-ed0e9c62a123d529.js +29 -0
  44. package/.next-prod/static/chunks/app/{layout-a0362651ba6e6e6f.js → layout-1659a95e6c4a6bb5.js} +1 -1
  45. package/.next-prod/static/chunks/app/{page-1b14cabf47df9ff7.js → page-afcbd897b4c3600f.js} +1 -1
  46. package/.next-prod/static/chunks/app/project/{page-1b14cabf47df9ff7.js → page-afcbd897b4c3600f.js} +1 -1
  47. package/.next-prod/static/css/f4a773117ca8af75.css +1 -0
  48. package/.next-prod/trace +13 -13
  49. package/.next-prod/trace-build +1 -1
  50. package/README.md +8 -7
  51. package/README.zh.md +8 -7
  52. package/bin/cock-browser.messages.mjs +176 -0
  53. package/bin/cock-browser.mjs +290 -18
  54. package/bin/cock-codegraph.mjs +21 -6
  55. package/bin/cock-connection.mjs +151 -0
  56. package/bin/cock.mjs +12 -1
  57. package/bin/setup-dev.mjs +15 -13
  58. package/chrome-extension/automation.js +684 -32
  59. package/chrome-extension/manifest.json +1 -1
  60. package/chrome-extension/messages.js +45 -0
  61. package/dist/{chunk-CZWJPTRO.mjs → chunk-GCYLMG43.mjs} +2486 -1047
  62. package/dist/chunk-O4P2J44N.mjs +314 -0
  63. package/dist/{chunk-KRTISG5I.mjs → chunk-WOM47O75.mjs} +245 -10
  64. package/dist/httpApi.mjs +140 -7
  65. package/dist/scheduledTasks.mjs +15 -1159
  66. package/dist/{server-OSOMFNXR.mjs → server-SNB4H35J.mjs} +8 -2
  67. package/dist/wsServer.mjs +27 -19
  68. package/package.json +3 -5
  69. package/server.mjs +5 -1
  70. package/.next-prod/static/chunks/5188-415582403ef0e29c.js +0 -29
  71. package/.next-prod/static/chunks/6345-e5ceeb2aeb698eb6.js +0 -14
  72. package/.next-prod/static/css/cc6d733cdf607b30.css +0 -1
  73. package/dist/chunk-ZJ6CC3MH.mjs +0 -223
  74. /package/.next-prod/static/{GAYKr2BmQpFqJgRJfvQ3D → bOkuiIr_nWzG5GjPLNqdN}/_buildManifest.js +0 -0
  75. /package/.next-prod/static/{GAYKr2BmQpFqJgRJfvQ3D → bOkuiIr_nWzG5GjPLNqdN}/_ssgManifest.js +0 -0
@@ -11,6 +11,7 @@ import {
11
11
  findSafeStart,
12
12
  getAllProjectCwds,
13
13
  getBrowserByShortId,
14
+ getBrowserHealth,
14
15
  getFirstAvailableLine,
15
16
  getLinesView,
16
17
  getRegistrySize,
@@ -25,9 +26,11 @@ import {
25
26
  notifyExitListeners,
26
27
  notifyOutputListeners,
27
28
  readAround,
29
+ readBubbleTitles,
28
30
  readHead,
29
31
  readSince,
30
32
  readTail,
33
+ recordCommandResolved,
31
34
  registerBrowser,
32
35
  registerCommand,
33
36
  registerTerminal,
@@ -38,12 +41,12 @@ import {
38
41
  unregisterTerminal,
39
42
  updateBrowserWs,
40
43
  writeStdinToCommand
41
- } from "./chunk-KRTISG5I.mjs";
44
+ } from "./chunk-WOM47O75.mjs";
42
45
  import {
43
46
  createNeo4jDriver,
44
47
  runCypherWithDriver,
45
48
  serializeValue
46
- } from "./chunk-ZJ6CC3MH.mjs";
49
+ } from "./chunk-GCYLMG43.mjs";
47
50
  import "./chunk-7P6ASYW6.mjs";
48
51
  export {
49
52
  PtyRingBuffer,
@@ -59,6 +62,7 @@ export {
59
62
  findSafeStart,
60
63
  getAllProjectCwds,
61
64
  getBrowserByShortId,
65
+ getBrowserHealth,
62
66
  getFirstAvailableLine,
63
67
  getLinesView,
64
68
  getRegistrySize,
@@ -73,9 +77,11 @@ export {
73
77
  notifyExitListeners,
74
78
  notifyOutputListeners,
75
79
  readAround,
80
+ readBubbleTitles,
76
81
  readHead,
77
82
  readSince,
78
83
  readTail,
84
+ recordCommandResolved,
79
85
  registerBrowser,
80
86
  registerCommand,
81
87
  registerTerminal,
package/dist/wsServer.mjs CHANGED
@@ -1,16 +1,6 @@
1
1
  import {
2
- AppError,
3
- Effect_exports,
4
- FSError,
5
- NotFoundError,
6
- PubSub_exports,
7
- Queue_exports,
8
- Schedule_exports,
9
- Stream_exports,
10
- ValidationError,
11
- WSError,
12
2
  getLastUserMessage
13
- } from "./chunk-CZWJPTRO.mjs";
3
+ } from "./chunk-O4P2J44N.mjs";
14
4
  import {
15
5
  addExitListener,
16
6
  addOutputListener,
@@ -26,13 +16,23 @@ import {
26
16
  resolvePendingRequest,
27
17
  unregisterBrowser,
28
18
  writeStdinToCommand
29
- } from "./chunk-KRTISG5I.mjs";
19
+ } from "./chunk-WOM47O75.mjs";
30
20
  import {
21
+ AppError,
22
+ Effect_exports,
23
+ FSError,
31
24
  GLOBAL_STATE_FILE,
25
+ NotFoundError,
26
+ PubSub_exports,
27
+ Queue_exports,
32
28
  REVIEW_DIR,
33
29
  REVIEW_SIGNAL_FILE,
30
+ Schedule_exports,
31
+ Stream_exports,
32
+ ValidationError,
33
+ WSError,
34
34
  readJsonFile
35
- } from "./chunk-ZJ6CC3MH.mjs";
35
+ } from "./chunk-GCYLMG43.mjs";
36
36
  import "./chunk-7P6ASYW6.mjs";
37
37
 
38
38
  // src/lib/wsServer.ts
@@ -612,14 +612,14 @@ var runTerminalFollowHandler = (ws, shortId) => {
612
612
 
613
613
  // src/lib/effect/browserHandler.ts
614
614
  var HEARTBEAT3 = Schedule_exports.spaced("30 seconds");
615
- var handleBrowser = (conn, ws, fullId) => Effect_exports.gen(function* () {
615
+ var handleBrowser = (conn, ws, fullId, projectCwd, tabId) => Effect_exports.gen(function* () {
616
616
  if (!fullId) {
617
617
  return yield* Effect_exports.fail(
618
618
  new ValidationError({ field: "fullId", reason: "missing" })
619
619
  );
620
620
  }
621
621
  const shortId = yield* Effect_exports.acquireRelease(
622
- Effect_exports.sync(() => registerBrowser(fullId, ws)),
622
+ Effect_exports.sync(() => registerBrowser(fullId, ws, projectCwd, tabId)),
623
623
  () => Effect_exports.sync(() => unregisterBrowser(fullId))
624
624
  );
625
625
  yield* Effect_exports.logInfo("ws/browser registered").pipe(
@@ -644,11 +644,11 @@ var handleBrowser = (conn, ws, fullId) => Effect_exports.gen(function* () {
644
644
  }).pipe(
645
645
  Effect_exports.withSpan("ws.handleBrowser", { attributes: { fullId } })
646
646
  );
647
- var runBrowserHandler = (ws, fullId) => {
647
+ var runBrowserHandler = (ws, fullId, projectCwd, tabId) => {
648
648
  const program = Effect_exports.scoped(
649
649
  Effect_exports.gen(function* () {
650
650
  const conn = yield* fromWebSocket(ws, "browser");
651
- yield* handleBrowser(conn, ws, fullId);
651
+ yield* handleBrowser(conn, ws, fullId, projectCwd, tabId);
652
652
  })
653
653
  ).pipe(
654
654
  Effect_exports.catchTag(
@@ -683,7 +683,7 @@ var handleJupyter = (conn, bubbleId, cwd) => Effect_exports.gen(function* () {
683
683
  Effect_exports.annotateLogs("cwd", cwd)
684
684
  );
685
685
  const { kernelManager } = yield* Effect_exports.tryPromise({
686
- try: () => import("./server-OSOMFNXR.mjs"),
686
+ try: () => import("./server-SNB4H35J.mjs"),
687
687
  catch: (cause) => new AppError({
688
688
  message: "failed to import kernel manager",
689
689
  cause
@@ -1165,6 +1165,8 @@ var runTerminalHandler = (ws, projectCwd) => {
1165
1165
  // packages/feature/explorer/src/server/codeMap/projectGraph/codeIndex.ts
1166
1166
  import { promises as fs4 } from "fs";
1167
1167
  import path6 from "path";
1168
+ import { exec as exec2 } from "child_process";
1169
+ import { promisify as promisify2 } from "util";
1168
1170
 
1169
1171
  // packages/feature/explorer/src/server/codeMap/projectGraph/buildGraph.ts
1170
1172
  import { exec } from "child_process";
@@ -3872,6 +3874,7 @@ function registerWatcherSubscriber(fn) {
3872
3874
  }
3873
3875
  }
3874
3876
  }
3877
+ var execAsync2 = promisify2(exec2);
3875
3878
 
3876
3879
  // src/lib/codeIndexSync.ts
3877
3880
  var wired = false;
@@ -3913,7 +3916,12 @@ var wss = g_ws.__cockpitWss ?? (() => {
3913
3916
  } else if (pathname === "/ws/terminal") {
3914
3917
  runTerminalHandler(ws, query.projectCwd);
3915
3918
  } else if (pathname === "/ws/browser") {
3916
- runBrowserHandler(ws, query.fullId);
3919
+ runBrowserHandler(
3920
+ ws,
3921
+ query.fullId,
3922
+ query.projectCwd,
3923
+ query.tabId
3924
+ );
3917
3925
  } else if (pathname === "/ws/terminal-follow") {
3918
3926
  runTerminalFollowHandler(ws, query.id);
3919
3927
  } else if (pathname === "/ws/jupyter") {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@surething/cockpit",
3
- "version": "1.0.216",
4
- "description": "Claude Code GUI for parallel AI coding — drive Claude (default), OpenAI Codex, DeepSeek, Kimi, or local Ollama in tabs. Multi-project sessions, terminal, browser & DB bubbles, code review, slash modes. Local-first, MIT.",
3
+ "version": "1.0.218",
4
+ "description": "Claude Code GUI for parallel AI coding — drive Claude (default), Codex, DeepSeek, Kimi, or local Ollama in tabs. Multi-project sessions, terminal, browser & DB bubbles, code review, slash modes. Local-first, MIT.",
5
5
  "author": "Robert",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -19,7 +19,6 @@
19
19
  "claude-code-client",
20
20
  "claude-agent-sdk",
21
21
  "anthropic",
22
- "openai-codex",
23
22
  "codex",
24
23
  "deepseek",
25
24
  "deepseek-gui",
@@ -93,7 +92,7 @@
93
92
  },
94
93
  "dependencies": {
95
94
  "@ai-sdk/openai": "^3.0.52",
96
- "@anthropic-ai/claude-agent-sdk": "^0.2.112",
95
+ "@anthropic-ai/claude-agent-sdk": "^0.3.158",
97
96
  "@dagrejs/dagre": "^3.0.0",
98
97
  "@tanstack/react-virtual": "^3.13.18",
99
98
  "@tiptap/extension-link": "^3.19.0",
@@ -168,7 +167,6 @@
168
167
  "typescript": "5.9.3"
169
168
  },
170
169
  "overrides": {
171
- "@anthropic-ai/sdk": "^0.91.1",
172
170
  "postcss": "^8.5.10"
173
171
  }
174
172
  }
package/server.mjs CHANGED
@@ -80,7 +80,7 @@ app.prepare().then(async () => {
80
80
  const upgradeHandler = app.getUpgradeHandler();
81
81
  // v2 P8: HTTP intercepts (handleTerminalApi / handleBrowserApi) moved to src/lib/httpApi.ts
82
82
  const { handleUpgrade, broadcastToGlobalState } = await import(dev ? './src/lib/wsServer.ts' : './dist/wsServer.mjs');
83
- const { handleBrowserApi, handleTerminalApi } = await import(dev ? './src/lib/httpApi.ts' : './dist/httpApi.mjs');
83
+ const { handleBrowserApi, handleTerminalApi, handleConnectionApi } = await import(dev ? './src/lib/httpApi.ts' : './dist/httpApi.mjs');
84
84
  const { scheduledTaskManager } = await import(dev ? '@cockpit/feature-agent/server/scheduledTasks' : './dist/scheduledTasks.mjs');
85
85
 
86
86
  // 初始化定时任务管理器
@@ -99,6 +99,10 @@ app.prepare().then(async () => {
99
99
  const handled = await handleTerminalApi(req, res);
100
100
  if (handled) return;
101
101
  }
102
+ if (req.url?.startsWith('/api/connection/') && req.method === 'POST') {
103
+ const handled = await handleConnectionApi(req, res);
104
+ if (handled) return;
105
+ }
102
106
  handle(req, res);
103
107
  });
104
108