@surething/cockpit 1.0.235 → 1.0.237

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 (207) 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 +3 -3
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/react-loadable-manifest.json +7 -0
  6. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next-prod/server/app/_global-error.html +1 -1
  9. package/.next-prod/server/app/_global-error.rsc +1 -1
  10. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next-prod/server/app/_not-found/page.js +1 -1
  17. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next-prod/server/app/_not-found.html +2 -2
  20. package/.next-prod/server/app/_not-found.rsc +3 -3
  21. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
  22. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  23. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  24. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  25. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  26. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  27. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  28. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  29. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  30. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  31. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  33. package/.next-prod/server/app/api/chat/pty-input/route.js.nft.json +1 -1
  34. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  35. package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
  36. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  37. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  39. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  41. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  43. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  45. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  47. package/.next-prod/server/app/api/file/route.js +1 -1
  48. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  49. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  51. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  53. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  55. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  57. package/.next-prod/server/app/api/files/read/route.js +1 -1
  58. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  59. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  61. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  63. package/.next-prod/server/app/api/files/stat/route.js +1 -1
  64. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  65. package/.next-prod/server/app/api/files/text/route.js +1 -1
  66. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  67. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  69. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  71. package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  73. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  75. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  77. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  79. package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  81. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  83. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  85. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  87. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  89. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  91. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  93. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  95. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  97. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/note/route.js +1 -1
  99. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  101. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  103. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  105. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  107. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
  109. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  111. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
  113. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  115. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
  117. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  119. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
  121. package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
  123. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  125. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  127. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  129. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  131. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  133. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  135. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  137. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  139. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  141. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  143. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  145. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  147. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  149. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  151. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  153. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  155. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  157. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/m/page.js +2 -2
  159. package/.next-prod/server/app/m/page.js.nft.json +1 -1
  160. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  161. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/page.js +1 -1
  163. package/.next-prod/server/app/page.js.nft.json +1 -1
  164. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  165. package/.next-prod/server/app/project/page.js +1 -1
  166. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  167. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  168. package/.next-prod/server/app/review/[id]/page.js +1 -1
  169. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  170. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  171. package/.next-prod/server/app-paths-manifest.json +2 -2
  172. package/.next-prod/server/chunks/2939.js +1 -1
  173. package/.next-prod/server/chunks/7270.js +45 -0
  174. package/.next-prod/server/chunks/{4257.js → 8523.js} +3 -3
  175. package/.next-prod/server/chunks/8916.js +1 -1
  176. package/.next-prod/server/chunks/9658.js +3 -3
  177. package/.next-prod/server/middleware-build-manifest.js +1 -1
  178. package/.next-prod/server/middleware-react-loadable-manifest.js +1 -1
  179. package/.next-prod/server/pages/404.html +2 -2
  180. package/.next-prod/server/pages/500.html +1 -1
  181. package/.next-prod/server/server-reference-manifest.json +1 -1
  182. package/.next-prod/static/chunks/{217-656e1fdbc820d9dd.js → 217-1bf54355c7c0c898.js} +1 -1
  183. package/.next-prod/static/chunks/3283-80d4d836a00d7bb4.js +25 -0
  184. package/.next-prod/static/chunks/6784-11888818d8e3114e.js +0 -0
  185. package/.next-prod/static/chunks/{9428-ffc16bc24c6e0da1.js → 6787-866a3046a4a0fa50.js} +3 -3
  186. package/.next-prod/static/chunks/9b0008ae.0167ac0019d88811.js +45 -0
  187. package/.next-prod/static/chunks/app/{layout-e9ada9458f95f29c.js → layout-3781fa5b8e04f272.js} +1 -1
  188. package/.next-prod/static/chunks/app/m/page-bf48756850ebe349.js +1 -0
  189. package/.next-prod/static/chunks/app/{page-8f349cc054af0d5b.js → page-e63d872a9af204ae.js} +1 -1
  190. package/.next-prod/static/chunks/app/project/{page-8f349cc054af0d5b.js → page-e63d872a9af204ae.js} +1 -1
  191. package/.next-prod/static/chunks/webpack-fb9d282647d95d0a.js +1 -0
  192. package/.next-prod/static/css/7ed891f30e531791.css +1 -0
  193. package/.next-prod/trace +13 -13
  194. package/.next-prod/trace-build +1 -1
  195. package/bin/cock.mjs +26 -1
  196. package/bin/postinstall.mjs +23 -0
  197. package/package.json +7 -3
  198. package/public/pdfjs/pdf.worker.min.mjs +29 -0
  199. package/scripts/claudeBinary.mjs +38 -0
  200. package/scripts/copy-pdfjs-worker.mjs +74 -0
  201. package/.next-prod/static/chunks/2576-47a83a4d8066d196.js +0 -25
  202. package/.next-prod/static/chunks/6784-8a99d051f03bb100.js +0 -0
  203. package/.next-prod/static/chunks/app/m/page-06a5ea22c02892d1.js +0 -1
  204. package/.next-prod/static/chunks/webpack-2c71a79c277961bc.js +0 -1
  205. package/.next-prod/static/css/44a979b47b165c63.css +0 -1
  206. /package/.next-prod/static/{cfyYtf1Sz25gcv6tfZqFF → pibOtHY_hUMQlMPI6P_Mk}/_buildManifest.js +0 -0
  207. /package/.next-prod/static/{cfyYtf1Sz25gcv6tfZqFF → pibOtHY_hUMQlMPI6P_Mk}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":20021804,"timestamp":209200108,"id":14,"parentId":1,"tags":{},"startTime":1783087338651,"traceId":"d4faafea5b747eae"},{"name":"run-typescript","duration":17715183,"timestamp":229225693,"id":1604,"parentId":1,"tags":{},"startTime":1783087358677,"traceId":"d4faafea5b747eae"},{"name":"static-check","duration":1182531,"timestamp":246981364,"id":1607,"parentId":1,"tags":{},"startTime":1783087376433,"traceId":"d4faafea5b747eae"},{"name":"static-generation","duration":6044624,"timestamp":248295312,"id":1879,"parentId":1,"tags":{},"startTime":1783087377747,"traceId":"d4faafea5b747eae"},{"name":"collect-build-traces","duration":19380003,"timestamp":248164502,"id":1876,"parentId":1,"tags":{},"startTime":1783087377616,"traceId":"d4faafea5b747eae"},{"name":"telemetry-flush","duration":60,"timestamp":267549705,"id":1888,"parentId":1,"tags":{},"startTime":1783087397001,"traceId":"d4faafea5b747eae"},{"name":"next-build","duration":58524579,"timestamp":209025198,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1783087338477,"traceId":"d4faafea5b747eae"}]
1
+ [{"name":"run-webpack","duration":19984693,"timestamp":161374706,"id":14,"parentId":1,"tags":{},"startTime":1783396708397,"traceId":"281b860421a58a40"},{"name":"run-typescript","duration":18381890,"timestamp":181363309,"id":1606,"parentId":1,"tags":{},"startTime":1783396728385,"traceId":"281b860421a58a40"},{"name":"static-check","duration":1188175,"timestamp":199787563,"id":1609,"parentId":1,"tags":{},"startTime":1783396746810,"traceId":"281b860421a58a40"},{"name":"static-generation","duration":6203546,"timestamp":201425767,"id":1881,"parentId":1,"tags":{},"startTime":1783396748448,"traceId":"281b860421a58a40"},{"name":"collect-build-traces","duration":20799726,"timestamp":200976359,"id":1878,"parentId":1,"tags":{},"startTime":1783396747998,"traceId":"281b860421a58a40"},{"name":"telemetry-flush","duration":50,"timestamp":221781229,"id":1890,"parentId":1,"tags":{},"startTime":1783396768803,"traceId":"281b860421a58a40"},{"name":"next-build","duration":60572981,"timestamp":161208309,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1783396708230,"traceId":"281b860421a58a40"}]
package/bin/cock.mjs CHANGED
@@ -3,6 +3,7 @@
3
3
  import { dirname, resolve } from 'path';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { spawnSync } from 'child_process';
6
+ import { hasClaudeBinary } from '../scripts/claudeBinary.mjs';
6
7
 
7
8
  const __dirname = dirname(fileURLToPath(import.meta.url));
8
9
  const PROJECT_ROOT = resolve(__dirname, '..');
@@ -124,11 +125,27 @@ if (process.argv[2] === 'connection') {
124
125
 
125
126
  if (process.argv[2] === 'update') {
126
127
  console.log('Updating @surething/cockpit...');
127
- const result = spawnSync('npm', ['install', '-g', '@surething/cockpit@latest'], { stdio: 'inherit' });
128
+ const installArgs = ['install', '-g', '@surething/cockpit@latest', '--include=optional'];
129
+ let result = spawnSync('npm', installArgs, { stdio: 'inherit' });
130
+
131
+ // An in-place `npm i -g` can drop the SDK's platform-specific native binary
132
+ // (an optional dependency) when the SDK version bumps — see
133
+ // scripts/claudeBinary.mjs. A clean uninstall + reinstall reliably refetches
134
+ // it. Guard here so `cockpit update` never leaves chat silently broken.
135
+ if (result.status === 0 && !hasClaudeBinary()) {
136
+ console.log('Native Claude binary missing after update — reinstalling to repair...');
137
+ spawnSync('npm', ['uninstall', '-g', '@surething/cockpit'], { stdio: 'inherit' });
138
+ result = spawnSync('npm', installArgs, { stdio: 'inherit' });
139
+ }
140
+
128
141
  if (result.status === 0) {
129
142
  const { readFileSync } = await import('fs');
130
143
  const pkg = JSON.parse(readFileSync(resolve(PROJECT_ROOT, 'package.json'), 'utf8'));
131
144
  console.log(`\nUpdated to v${pkg.version}`);
145
+ if (!hasClaudeBinary()) {
146
+ console.error('\nWarning: the native Claude CLI binary is still missing; chat will not work.');
147
+ console.error('Fix manually: npm uninstall -g @surething/cockpit && npm install -g @surething/cockpit');
148
+ }
132
149
  }
133
150
  process.exit(result.status ?? 1);
134
151
  }
@@ -194,6 +211,14 @@ if (!isDev && !existsSync(resolve(PROJECT_ROOT, '.next-prod', 'BUILD_ID'))) {
194
211
  process.exit(1);
195
212
  }
196
213
 
214
+ // Warn (don't block) if the SDK's native binary is missing — every panel but
215
+ // the Claude chat still works, but chat would otherwise fail with a cryptic
216
+ // runtime error only once the user sends a message. See scripts/claudeBinary.mjs.
217
+ if (!hasClaudeBinary()) {
218
+ console.error('Warning: the native Claude CLI binary is missing; chat may not work.');
219
+ console.error('Fix: npm uninstall -g @surething/cockpit && npm install -g @surething/cockpit\n');
220
+ }
221
+
197
222
  // Hand the project directory to server.mjs so it opens the right URL
198
223
  if (projectDir) {
199
224
  process.env.COCKPIT_OPEN_PROJECT = projectDir;
@@ -6,6 +6,8 @@ import { fileURLToPath } from 'url';
6
6
  import { execSync } from 'child_process';
7
7
  import { homedir } from 'os';
8
8
  import { copyTreeSitterWasms } from '../scripts/copy-tree-sitter-wasms.mjs';
9
+ import { copyPdfjsWorker } from '../scripts/copy-pdfjs-worker.mjs';
10
+ import { hasClaudeBinary } from '../scripts/claudeBinary.mjs';
9
11
 
10
12
  const __dirname = dirname(fileURLToPath(import.meta.url));
11
13
  const projectRoot = join(__dirname, '..');
@@ -20,6 +22,27 @@ try {
20
22
  console.warn('[postinstall] tree-sitter WASM copy failed:', err?.message ?? err);
21
23
  }
22
24
 
25
+ // pdf.js worker → public/pdfjs/. Same graceful contract as above.
26
+ try {
27
+ copyPdfjsWorker(projectRoot);
28
+ } catch (err) {
29
+ console.warn('[postinstall] pdf.js worker copy failed:', err?.message ?? err);
30
+ }
31
+
32
+ // Warn (don't fail) if the Claude Agent SDK's native binary didn't land — the
33
+ // chat engine needs it. npm can skip this optional platform sub-package during
34
+ // an in-place `npm i -g` upgrade; catching it here turns a mid-chat runtime
35
+ // error into an install-time hint. See scripts/claudeBinary.mjs.
36
+ try {
37
+ if (!hasClaudeBinary()) {
38
+ const plat = `${process.platform}-${process.arch}`;
39
+ console.warn(`[postinstall] Warning: Claude native binary (${plat}) is missing — chat will not work.`);
40
+ console.warn('[postinstall] Fix: npm uninstall -g @surething/cockpit && npm install -g @surething/cockpit');
41
+ }
42
+ } catch (err) {
43
+ console.warn('[postinstall] Claude binary check failed:', err?.message ?? err);
44
+ }
45
+
23
46
  if (process.platform !== 'win32') {
24
47
  // node-pty: spawn-helper needs the executable bit
25
48
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@surething/cockpit",
3
- "version": "1.0.235",
3
+ "version": "1.0.237",
4
4
  "description": "The open-source Claude Code GUI — an IDE-like workbench for parallel AI coding. Drive Claude (default), Codex, DeepSeek, Kimi, or local Ollama in tabs. Terminal, browser & DB bubbles, code review. Self-host on a shared dev box — a seat for every teammate. Local-first, MIT.",
5
5
  "author": "Robert",
6
6
  "license": "MIT",
@@ -74,14 +74,16 @@
74
74
  "kernels",
75
75
  "next.config.mjs",
76
76
  "scripts/copy-tree-sitter-wasms.mjs",
77
+ "scripts/copy-pdfjs-worker.mjs",
78
+ "scripts/claudeBinary.mjs",
77
79
  "LICENSE",
78
80
  "README.md"
79
81
  ],
80
82
  "scripts": {
81
- "predev": "node scripts/copy-tree-sitter-wasms.mjs",
83
+ "predev": "node scripts/copy-tree-sitter-wasms.mjs && node scripts/copy-pdfjs-worker.mjs",
82
84
  "dev": "COCKPIT_ENV=dev node --import tsx server.mjs",
83
85
  "prepublishOnly": "npm run build && npm run build:server && rm -rf .next-prod/cache",
84
- "prebuild": "node scripts/copy-tree-sitter-wasms.mjs",
86
+ "prebuild": "node scripts/copy-tree-sitter-wasms.mjs && node scripts/copy-pdfjs-worker.mjs",
85
87
  "build": "next build --webpack",
86
88
  "build:server": "tsup --config tsup.server.ts",
87
89
  "setup": "npm run build && npm run build:server && npm link",
@@ -91,6 +93,7 @@
91
93
  "test:watch": "vitest",
92
94
  "generate-icons": "node scripts/generate-icons.js",
93
95
  "copy-wasms": "node scripts/copy-tree-sitter-wasms.mjs",
96
+ "copy-pdfjs-worker": "node scripts/copy-pdfjs-worker.mjs",
94
97
  "postinstall": "node bin/postinstall.mjs"
95
98
  },
96
99
  "dependencies": {
@@ -129,6 +132,7 @@
129
132
  "neo4j-driver": "^6.0.1",
130
133
  "next": "^16.2.6",
131
134
  "node-pty": "^1.1.0",
135
+ "pdfjs-dist": "^6.1.200",
132
136
  "pg": "^8.20.0",
133
137
  "react": "19.2.3",
134
138
  "react-dom": "19.2.3",