@pixelbyte-software/pixcode 1.54.10 → 1.54.11

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 (282) hide show
  1. package/CODE_OF_CONDUCT.md +41 -41
  2. package/CONTRIBUTING.md +156 -156
  3. package/LICENSE +21 -718
  4. package/README.de.md +169 -169
  5. package/README.ja.md +167 -167
  6. package/README.ko.md +167 -167
  7. package/README.md +435 -418
  8. package/README.ru.md +169 -169
  9. package/README.tr.md +298 -298
  10. package/README.zh-CN.md +167 -167
  11. package/SECURITY.md +46 -46
  12. package/dist/api-automation.html +110 -110
  13. package/dist/api-docs.html +548 -548
  14. package/dist/assets/{index-DWOW_Jn0.js → index-Bcqs_1vc.js} +114 -114
  15. package/dist/clear-cache.html +85 -85
  16. package/dist/convert-icons.md +52 -52
  17. package/dist/docs.html +308 -308
  18. package/dist/features.html +133 -133
  19. package/dist/generate-icons.js +48 -48
  20. package/dist/humans.txt +15 -15
  21. package/dist/icons/codex-white.svg +3 -3
  22. package/dist/icons/codex.svg +3 -3
  23. package/dist/icons/cursor-white.svg +11 -11
  24. package/dist/icons/qwen-logo.svg +14 -14
  25. package/dist/index.html +58 -58
  26. package/dist/landing.html +268 -268
  27. package/dist/llms-full.txt +119 -119
  28. package/dist/llms.txt +53 -53
  29. package/dist/manifest.json +60 -60
  30. package/dist/openapi.yaml +1696 -1696
  31. package/dist/orchestration.html +125 -125
  32. package/dist/robots.txt +4 -4
  33. package/dist/site.css +692 -692
  34. package/dist/sitemap.xml +51 -51
  35. package/dist/sw.js +132 -132
  36. package/dist-server/server/cli.js +100 -100
  37. package/dist-server/server/daemon/manager.js +33 -33
  38. package/dist-server/server/daemon-manager.js +64 -64
  39. package/dist-server/server/routes/commands.js +25 -25
  40. package/dist-server/server/routes/git.js +17 -17
  41. package/dist-server/server/routes/live-view.js +46 -46
  42. package/dist-server/server/services/public-api-manifest.js +51 -51
  43. package/package.json +224 -224
  44. package/scripts/fix-node-pty.js +67 -67
  45. package/scripts/github/create-v1.38-issues.mjs +351 -351
  46. package/scripts/github/create-vscode-workbench-issues.mjs +121 -121
  47. package/scripts/smoke/backend-resource-bounds.mjs +152 -152
  48. package/scripts/smoke/changes-panel-layout.mjs +48 -48
  49. package/scripts/smoke/chat-composer-fixed-layout.mjs +55 -55
  50. package/scripts/smoke/chat-message-timeline-order.mjs +41 -41
  51. package/scripts/smoke/chat-realtime-hydration.mjs +44 -44
  52. package/scripts/smoke/chat-session-provider-pools.mjs +35 -35
  53. package/scripts/smoke/chat-session-state.mjs +19 -19
  54. package/scripts/smoke/code-editor-theme.mjs +55 -55
  55. package/scripts/smoke/code-editor-vscode-engine.mjs +91 -91
  56. package/scripts/smoke/command-center-agent-writes.mjs +79 -79
  57. package/scripts/smoke/command-center-non-git.mjs +46 -46
  58. package/scripts/smoke/context-packet.mjs +43 -43
  59. package/scripts/smoke/control-room-ux-redesign.mjs +91 -91
  60. package/scripts/smoke/daemon-entrypoint.mjs +20 -20
  61. package/scripts/smoke/default-landing-routing.mjs +33 -33
  62. package/scripts/smoke/desktop-native-notifications.mjs +30 -30
  63. package/scripts/smoke/desktop-tray-icon.mjs +33 -33
  64. package/scripts/smoke/discord-release-workflow.mjs +24 -24
  65. package/scripts/smoke/git-install-update.mjs +255 -255
  66. package/scripts/smoke/handoff-artifact-protocol.mjs +50 -50
  67. package/scripts/smoke/live-view-diagnostics.mjs +53 -53
  68. package/scripts/smoke/live-view-environment.mjs +92 -92
  69. package/scripts/smoke/live-view-integration.mjs +450 -450
  70. package/scripts/smoke/mac-desktop-runtime.mjs +37 -37
  71. package/scripts/smoke/mobile-tunnel-guidance.mjs +29 -29
  72. package/scripts/smoke/mobile-ux.mjs +76 -76
  73. package/scripts/smoke/model-registry.mjs +36 -36
  74. package/scripts/smoke/multi-project-ui.mjs +45 -45
  75. package/scripts/smoke/multi-worker-slots.mjs +42 -42
  76. package/scripts/smoke/notification-center.mjs +87 -87
  77. package/scripts/smoke/notification-inapp-preference.mjs +23 -23
  78. package/scripts/smoke/notification-taxonomy.mjs +58 -58
  79. package/scripts/smoke/orchestration-api.mjs +172 -172
  80. package/scripts/smoke/orchestration-execution-dashboard.mjs +33 -33
  81. package/scripts/smoke/orchestration-live-run.mjs +176 -176
  82. package/scripts/smoke/orchestration-mobile-scroll.mjs +29 -29
  83. package/scripts/smoke/orchestration-model-sync.mjs +30 -30
  84. package/scripts/smoke/orchestration-permission-fallback.mjs +34 -34
  85. package/scripts/smoke/orchestration-runtime-guards.mjs +48 -48
  86. package/scripts/smoke/orchestration-user-facing-output.mjs +25 -25
  87. package/scripts/smoke/permission-policy.mjs +50 -50
  88. package/scripts/smoke/pixcode-workbench-1-48.mjs +167 -167
  89. package/scripts/smoke/provider-models-opencode-live.mjs +66 -66
  90. package/scripts/smoke/provider-rest-api.mjs +124 -124
  91. package/scripts/smoke/provider-selection-status.mjs +52 -52
  92. package/scripts/smoke/run-state-refresh.mjs +52 -52
  93. package/scripts/smoke/runtime-manager.mjs +99 -99
  94. package/scripts/smoke/shell-manual-disconnect.mjs +30 -30
  95. package/scripts/smoke/side-panel-editor-layout.mjs +34 -34
  96. package/scripts/smoke/static-root-routing.mjs +21 -21
  97. package/scripts/smoke/strict-handoff-compact.mjs +60 -60
  98. package/scripts/smoke/taskmaster-config.mjs +24 -24
  99. package/scripts/smoke/taskmaster-execution-telegram.mjs +3 -3
  100. package/scripts/smoke/taskmaster-onboarding.mjs +3 -3
  101. package/scripts/smoke/taskmaster-run-graph.mjs +3 -3
  102. package/scripts/smoke/telegram-control.mjs +331 -331
  103. package/scripts/smoke/tunnel-persistence.mjs +56 -56
  104. package/scripts/smoke/update-issue-progress.mjs +69 -69
  105. package/scripts/smoke/update-ux.mjs +55 -55
  106. package/scripts/smoke/v138-completion.mjs +132 -132
  107. package/scripts/smoke/v138-desktop-release-hardening.mjs +69 -69
  108. package/scripts/smoke/v138-diagnostics.mjs +63 -63
  109. package/scripts/smoke/v138-issue-planner.mjs +33 -33
  110. package/scripts/smoke/v143-remote-control.mjs +76 -76
  111. package/scripts/smoke/v144-production-loop.mjs +47 -47
  112. package/scripts/smoke/v145-platformization.mjs +46 -46
  113. package/scripts/smoke/v146-control-room-ui.mjs +150 -150
  114. package/scripts/smoke/version-modal-autoshow.mjs +29 -29
  115. package/scripts/smoke/vscode-workbench-layout.mjs +63 -63
  116. package/scripts/smoke/vscode-workbench-polish.mjs +461 -461
  117. package/scripts/smoke/workflow-fallback-replay.mjs +56 -56
  118. package/scripts/smoke/workflow-templates.mjs +43 -43
  119. package/scripts/smoke/workflow-trace-timeline.mjs +46 -46
  120. package/scripts/update-git-install.mjs +298 -298
  121. package/server/claude-sdk.js +927 -927
  122. package/server/cli.js +1106 -1106
  123. package/server/constants/config.js +4 -4
  124. package/server/cursor-cli.js +344 -344
  125. package/server/daemon/manager.js +563 -563
  126. package/server/daemon-manager.js +964 -964
  127. package/server/database/db.js +988 -988
  128. package/server/database/json-store.js +197 -197
  129. package/server/gemini-cli.js +550 -550
  130. package/server/gemini-response-handler.js +79 -79
  131. package/server/index.js +5671 -5671
  132. package/server/load-env.js +35 -35
  133. package/server/middleware/account-lockout.js +112 -112
  134. package/server/middleware/auth.js +277 -277
  135. package/server/middleware/rate-limiter.js +87 -87
  136. package/server/modules/orchestration/a2a/adapter-registry.ts +108 -108
  137. package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +63 -63
  138. package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +286 -286
  139. package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +244 -244
  140. package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +249 -249
  141. package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +248 -248
  142. package/server/modules/orchestration/a2a/adapters/json-event.adapter.test.ts +60 -60
  143. package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +101 -101
  144. package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +248 -248
  145. package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +248 -248
  146. package/server/modules/orchestration/a2a/agent-card.ts +55 -55
  147. package/server/modules/orchestration/a2a/auth.middleware.ts +29 -29
  148. package/server/modules/orchestration/a2a/bus.ts +46 -46
  149. package/server/modules/orchestration/a2a/routes.ts +586 -586
  150. package/server/modules/orchestration/a2a/task-dispatcher.ts +345 -345
  151. package/server/modules/orchestration/a2a/task-store.ts +178 -178
  152. package/server/modules/orchestration/a2a/types.ts +126 -126
  153. package/server/modules/orchestration/a2a/validator.ts +113 -113
  154. package/server/modules/orchestration/index.ts +99 -99
  155. package/server/modules/orchestration/preview/port-watcher.ts +112 -112
  156. package/server/modules/orchestration/preview/preview-proxy.ts +60 -60
  157. package/server/modules/orchestration/preview/types.ts +19 -19
  158. package/server/modules/orchestration/security/permission-policy.ts +401 -401
  159. package/server/modules/orchestration/tasks/orchestration-task-store.ts +41 -41
  160. package/server/modules/orchestration/tasks/orchestration-task.routes.ts +81 -81
  161. package/server/modules/orchestration/tasks/orchestration-task.service.ts +201 -201
  162. package/server/modules/orchestration/tasks/orchestration-task.types.ts +40 -40
  163. package/server/modules/orchestration/tasks/task-run-graph.ts +155 -155
  164. package/server/modules/orchestration/workflows/approval-queue.ts +106 -106
  165. package/server/modules/orchestration/workflows/built-in-workflows.ts +127 -127
  166. package/server/modules/orchestration/workflows/context-packet.ts +186 -186
  167. package/server/modules/orchestration/workflows/handoff-artifact.ts +175 -175
  168. package/server/modules/orchestration/workflows/workflow-fallback-policy.ts +161 -161
  169. package/server/modules/orchestration/workflows/workflow-replay.ts +254 -254
  170. package/server/modules/orchestration/workflows/workflow-runner.ts +2062 -2062
  171. package/server/modules/orchestration/workflows/workflow-store.ts +97 -97
  172. package/server/modules/orchestration/workflows/workflow-templates.ts +272 -272
  173. package/server/modules/orchestration/workflows/workflow-trace.ts +424 -424
  174. package/server/modules/orchestration/workflows/workflow.routes.ts +586 -586
  175. package/server/modules/orchestration/workflows/workflow.types.ts +111 -111
  176. package/server/modules/orchestration/workflows/workspace-target.ts +122 -122
  177. package/server/modules/orchestration/workspace/docker-workspace.ts +136 -136
  178. package/server/modules/orchestration/workspace/path-safety.ts +55 -55
  179. package/server/modules/orchestration/workspace/types.ts +52 -52
  180. package/server/modules/orchestration/workspace/workspace-manager.ts +102 -102
  181. package/server/modules/orchestration/workspace/worktree-workspace.ts +126 -126
  182. package/server/modules/providers/index.ts +2 -2
  183. package/server/modules/providers/list/claude/claude-auth.provider.ts +146 -146
  184. package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
  185. package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -306
  186. package/server/modules/providers/list/claude/claude.provider.ts +15 -15
  187. package/server/modules/providers/list/codex/codex-auth.provider.ts +117 -117
  188. package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
  189. package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -319
  190. package/server/modules/providers/list/codex/codex.provider.ts +15 -15
  191. package/server/modules/providers/list/cursor/cursor-auth.provider.ts +147 -147
  192. package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
  193. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -421
  194. package/server/modules/providers/list/cursor/cursor.provider.ts +15 -15
  195. package/server/modules/providers/list/gemini/gemini-auth.provider.ts +173 -173
  196. package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -110
  197. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -227
  198. package/server/modules/providers/list/gemini/gemini.provider.ts +15 -15
  199. package/server/modules/providers/list/opencode/opencode-auth.provider.ts +131 -131
  200. package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +286 -286
  201. package/server/modules/providers/list/qwen/qwen-auth.provider.ts +146 -146
  202. package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
  203. package/server/modules/providers/provider.registry.ts +40 -40
  204. package/server/modules/providers/provider.routes.ts +982 -982
  205. package/server/modules/providers/services/mcp.service.ts +86 -86
  206. package/server/modules/providers/services/provider-auth.service.ts +26 -26
  207. package/server/modules/providers/services/sessions.service.ts +45 -45
  208. package/server/modules/providers/shared/base/abstract.provider.ts +20 -20
  209. package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
  210. package/server/modules/providers/tests/mcp.test.ts +293 -293
  211. package/server/openai-codex.js +468 -468
  212. package/server/opencode-cli.js +491 -491
  213. package/server/opencode-response-handler.js +111 -111
  214. package/server/projects.js +3135 -3135
  215. package/server/qwen-code-cli.js +410 -410
  216. package/server/routes/agent.js +1462 -1462
  217. package/server/routes/auth.js +298 -298
  218. package/server/routes/codex.js +20 -20
  219. package/server/routes/commands.js +581 -581
  220. package/server/routes/cursor.js +61 -61
  221. package/server/routes/diagnostics.js +44 -44
  222. package/server/routes/gemini.js +25 -25
  223. package/server/routes/git.js +1822 -1822
  224. package/server/routes/live-view.js +434 -434
  225. package/server/routes/mcp-utils.js +13 -13
  226. package/server/routes/messages.js +97 -97
  227. package/server/routes/network.js +143 -143
  228. package/server/routes/platformization.js +231 -231
  229. package/server/routes/plugins.js +690 -690
  230. package/server/routes/production-agent-loop.js +90 -90
  231. package/server/routes/projects.js +918 -918
  232. package/server/routes/public-api.js +34 -34
  233. package/server/routes/qwen.js +27 -27
  234. package/server/routes/remote.js +56 -56
  235. package/server/routes/settings.js +321 -321
  236. package/server/routes/telegram.js +163 -163
  237. package/server/routes/user.js +125 -125
  238. package/server/routes/webhooks.js +63 -63
  239. package/server/services/control-room.js +102 -102
  240. package/server/services/diagnostics.js +165 -165
  241. package/server/services/external-access.js +403 -403
  242. package/server/services/install-jobs.js +715 -715
  243. package/server/services/live-view.js +956 -956
  244. package/server/services/managed-runtimes.js +493 -493
  245. package/server/services/model-registry.js +144 -144
  246. package/server/services/notification-orchestrator.js +365 -365
  247. package/server/services/notification-taxonomy.js +204 -204
  248. package/server/services/platformization.js +1052 -1052
  249. package/server/services/production-agent-loop.js +248 -248
  250. package/server/services/provider-cli-versions.js +149 -149
  251. package/server/services/provider-credentials.js +189 -189
  252. package/server/services/provider-models.js +396 -396
  253. package/server/services/public-api-manifest.js +181 -181
  254. package/server/services/qr-login.js +126 -126
  255. package/server/services/remote-connection.js +127 -127
  256. package/server/services/runtime-manager.js +323 -323
  257. package/server/services/startup-update.js +259 -259
  258. package/server/services/telegram/bot.js +393 -393
  259. package/server/services/telegram/control-center.js +2453 -2453
  260. package/server/services/telegram/telegram-gateway.js +314 -314
  261. package/server/services/telegram/telegram-http-client.js +201 -201
  262. package/server/services/telegram/translations.js +470 -470
  263. package/server/services/webhooks.js +216 -216
  264. package/server/sessionManager.js +225 -225
  265. package/server/setup-wizard.js +283 -283
  266. package/server/shared/interfaces.ts +54 -54
  267. package/server/shared/types.ts +172 -172
  268. package/server/shared/utils.ts +193 -193
  269. package/server/tsconfig.json +36 -36
  270. package/server/utils/colors.js +21 -21
  271. package/server/utils/commandParser.js +305 -305
  272. package/server/utils/frontmatter.js +18 -18
  273. package/server/utils/gitConfig.js +34 -34
  274. package/server/utils/plugin-loader.js +461 -461
  275. package/server/utils/plugin-process-manager.js +185 -185
  276. package/server/utils/port-access.js +227 -227
  277. package/server/utils/runtime-paths.js +37 -37
  278. package/server/utils/security-log.js +84 -84
  279. package/server/utils/url-detection.js +71 -71
  280. package/server/vite-daemon.js +79 -79
  281. package/shared/modelConstants.js +161 -161
  282. package/shared/networkHosts.js +22 -22
@@ -221,22 +221,22 @@ function buildDaemonServiceUnit({ appRoot, serverPort, databasePath, nodeExecPat
221
221
  nodeExecPath,
222
222
  cliEntry,
223
223
  });
224
- return `[Unit]
225
- Description=Pixcode Server
226
- After=network.target
227
-
228
- [Service]
229
- Type=simple
230
- WorkingDirectory=${appRoot}
231
- ExecStart=${execStart}
232
- Environment=HOST=0.0.0.0
233
- Environment=CI=true
234
- Environment=PIXCODE_DAEMON_MANAGED=1
235
- Restart=always
236
- RestartSec=2
237
-
238
- [Install]
239
- WantedBy=default.target
224
+ return `[Unit]
225
+ Description=Pixcode Server
226
+ After=network.target
227
+
228
+ [Service]
229
+ Type=simple
230
+ WorkingDirectory=${appRoot}
231
+ ExecStart=${execStart}
232
+ Environment=HOST=0.0.0.0
233
+ Environment=CI=true
234
+ Environment=PIXCODE_DAEMON_MANAGED=1
235
+ Restart=always
236
+ RestartSec=2
237
+
238
+ [Install]
239
+ WantedBy=default.target
240
240
  `;
241
241
  }
242
242
  function resolveFrontendDaemonEntry(appRoot, cliEntry) {
@@ -277,22 +277,22 @@ function buildFrontendDaemonServiceUnit({ appRoot, frontendPort, nodeExecPath, c
277
277
  nodeExecPath,
278
278
  cliEntry,
279
279
  });
280
- return `[Unit]
281
- Description=Pixcode Frontend (Vite Dev Server)
282
- After=network.target
283
-
284
- [Service]
285
- Type=simple
286
- WorkingDirectory=${appRoot}
287
- ExecStart=${execStart}
288
- Environment=HOST=0.0.0.0
289
- Environment=CI=true
290
- Environment=PIXCODE_DAEMON_MANAGED=1
291
- Restart=always
292
- RestartSec=2
293
-
294
- [Install]
295
- WantedBy=default.target
280
+ return `[Unit]
281
+ Description=Pixcode Frontend (Vite Dev Server)
282
+ After=network.target
283
+
284
+ [Service]
285
+ Type=simple
286
+ WorkingDirectory=${appRoot}
287
+ ExecStart=${execStart}
288
+ Environment=HOST=0.0.0.0
289
+ Environment=CI=true
290
+ Environment=PIXCODE_DAEMON_MANAGED=1
291
+ Restart=always
292
+ RestartSec=2
293
+
294
+ [Install]
295
+ WantedBy=default.target
296
296
  `;
297
297
  }
298
298
  function normalizeState(value) {
@@ -489,38 +489,38 @@ function showDaemonHelp(c, context = {}) {
489
489
  const statusExample = buildDaemonCliCommand({ subcommand: 'status', mode: 'system' }, context);
490
490
  const doctorExample = buildDaemonCliCommand({ subcommand: 'doctor', mode: 'auto' }, context);
491
491
  const logsExample = buildDaemonCliCommand({ subcommand: 'logs', mode: 'system' }, context);
492
- console.log(`
493
- ${c.bright('Pixcode Daemon')} - Persistent Linux service manager
494
-
495
- Usage:
496
- ${usagePrefix} daemon [subcommand] [options]
497
-
498
- Subcommands:
499
- ${c.bright('install')} Install/update unit, reload daemon, enable and start now
500
- ${c.bright('start')} Start the service
501
- ${c.bright('stop')} Stop the service (temporary; auto-start remains enabled)
502
- ${c.bright('restart')} Restart the service
503
- ${c.bright('status')} Show active/enabled state
504
- ${c.bright('logs')} Show recent service logs
505
- ${c.bright('enable')} Enable auto-start at boot
506
- ${c.bright('disable')} Disable auto-start at boot
507
- ${c.bright('uninstall')} Stop, disable, and remove the service unit
508
- ${c.bright('doctor')} Run diagnostics (bus, linger, units, state, port, logs)
509
- ${c.bright('help')} Show this help
510
-
511
- Options:
512
- -p, --port <port> Set service server port (default: 3001)
513
- --frontend-port <port> Start a separate frontend Vite service on this port (legacy/dev)
514
- --single-port, --no-frontend
515
- Serve the built UI from the backend port only (default)
516
- -m, --mode <mode> Service mode: user | system | auto (default: system)
517
- --database-path <path> Set service database path
518
-
519
- Examples:
520
- $ ${installExample}
521
- $ ${statusExample}
522
- $ ${doctorExample}
523
- $ ${logsExample}
492
+ console.log(`
493
+ ${c.bright('Pixcode Daemon')} - Persistent Linux service manager
494
+
495
+ Usage:
496
+ ${usagePrefix} daemon [subcommand] [options]
497
+
498
+ Subcommands:
499
+ ${c.bright('install')} Install/update unit, reload daemon, enable and start now
500
+ ${c.bright('start')} Start the service
501
+ ${c.bright('stop')} Stop the service (temporary; auto-start remains enabled)
502
+ ${c.bright('restart')} Restart the service
503
+ ${c.bright('status')} Show active/enabled state
504
+ ${c.bright('logs')} Show recent service logs
505
+ ${c.bright('enable')} Enable auto-start at boot
506
+ ${c.bright('disable')} Disable auto-start at boot
507
+ ${c.bright('uninstall')} Stop, disable, and remove the service unit
508
+ ${c.bright('doctor')} Run diagnostics (bus, linger, units, state, port, logs)
509
+ ${c.bright('help')} Show this help
510
+
511
+ Options:
512
+ -p, --port <port> Set service server port (default: 3001)
513
+ --frontend-port <port> Start a separate frontend Vite service on this port (legacy/dev)
514
+ --single-port, --no-frontend
515
+ Serve the built UI from the backend port only (default)
516
+ -m, --mode <mode> Service mode: user | system | auto (default: system)
517
+ --database-path <path> Set service database path
518
+
519
+ Examples:
520
+ $ ${installExample}
521
+ $ ${statusExample}
522
+ $ ${doctorExample}
523
+ $ ${logsExample}
524
524
  `);
525
525
  }
526
526
  export function hasInstalledDaemonUnit() {
@@ -144,31 +144,31 @@ function getProviderDefaultModel(provider) {
144
144
  */
145
145
  const builtInHandlers = {
146
146
  '/help': async (args, context) => {
147
- const helpText = `# Claude Code Commands
148
-
149
- ## Built-in Commands
150
-
151
- ${builtInCommands.map(cmd => `### ${cmd.name}
152
- ${cmd.description}
153
- `).join('\n')}
154
-
155
- ## Custom Commands
156
-
157
- Custom commands can be created in:
158
- - Project: \`.claude/commands/\` (project-specific)
159
- - User: \`~/.claude/commands/\` (available in all projects)
160
-
161
- ### Command Syntax
162
-
163
- - **Arguments**: Use \`$ARGUMENTS\` for all args or \`$1\`, \`$2\`, etc. for positional
164
- - **File Includes**: Use \`@filename\` to include file contents
165
- - **Bash Commands**: Use \`!command\` to execute bash commands
166
-
167
- ### Examples
168
-
169
- \`\`\`markdown
170
- /mycommand arg1 arg2
171
- \`\`\`
147
+ const helpText = `# Claude Code Commands
148
+
149
+ ## Built-in Commands
150
+
151
+ ${builtInCommands.map(cmd => `### ${cmd.name}
152
+ ${cmd.description}
153
+ `).join('\n')}
154
+
155
+ ## Custom Commands
156
+
157
+ Custom commands can be created in:
158
+ - Project: \`.claude/commands/\` (project-specific)
159
+ - User: \`~/.claude/commands/\` (available in all projects)
160
+
161
+ ### Command Syntax
162
+
163
+ - **Arguments**: Use \`$ARGUMENTS\` for all args or \`$1\`, \`$2\`, etc. for positional
164
+ - **File Includes**: Use \`@filename\` to include file contents
165
+ - **Bash Commands**: Use \`!command\` to execute bash commands
166
+
167
+ ### Examples
168
+
169
+ \`\`\`markdown
170
+ /mycommand arg1 arg2
171
+ \`\`\`
172
172
  `;
173
173
  return {
174
174
  type: 'builtin',
@@ -1051,23 +1051,23 @@ router.post('/generate-commit-message', async (req, res) => {
1051
1051
  */
1052
1052
  async function generateCommitMessageWithAI(files, diffContext, provider, projectPath) {
1053
1053
  // Create the prompt
1054
- const prompt = `Generate a conventional commit message for these changes.
1055
-
1056
- REQUIREMENTS:
1057
- - Format: type(scope): subject
1058
- - Include body explaining what changed and why
1059
- - Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore
1060
- - Subject under 50 chars, body wrapped at 72 chars
1061
- - Focus on user-facing changes, not implementation details
1062
- - Consider what's being added AND removed
1063
- - Return ONLY the commit message (no markdown, explanations, or code blocks)
1064
-
1065
- FILES CHANGED:
1066
- ${files.map(f => `- ${f}`).join('\n')}
1067
-
1068
- DIFFS:
1069
- ${diffContext.substring(0, 4000)}
1070
-
1054
+ const prompt = `Generate a conventional commit message for these changes.
1055
+
1056
+ REQUIREMENTS:
1057
+ - Format: type(scope): subject
1058
+ - Include body explaining what changed and why
1059
+ - Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore
1060
+ - Subject under 50 chars, body wrapped at 72 chars
1061
+ - Focus on user-facing changes, not implementation details
1062
+ - Consider what's being added AND removed
1063
+ - Return ONLY the commit message (no markdown, explanations, or code blocks)
1064
+
1065
+ FILES CHANGED:
1066
+ ${files.map(f => `- ${f}`).join('\n')}
1067
+
1068
+ DIFFS:
1069
+ ${diffContext.substring(0, 4000)}
1070
+
1071
1071
  Generate the commit message:`;
1072
1072
  try {
1073
1073
  // Create a simple writer that collects the response
@@ -124,52 +124,52 @@ export function renderLiveViewDiagnosticHtml(payload) {
124
124
  const logs = payload.diagnostics?.logs?.length
125
125
  ? payload.diagnostics.logs.map((line) => escapeHtml(line)).join('\n')
126
126
  : 'No process logs were captured yet.';
127
- return `<!doctype html>
128
- <html lang="en">
129
- <head>
130
- <meta charset="utf-8">
131
- <meta name="viewport" content="width=device-width, initial-scale=1">
132
- <title>Pixcode Live View diagnostics</title>
133
- <style>
134
- :root { color-scheme: light dark; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
135
- body { margin: 0; min-height: 100vh; background: #0b0f14; color: #e5edf5; }
136
- main { box-sizing: border-box; max-width: 980px; margin: 0 auto; padding: 32px 20px; }
137
- .eyebrow { color: #f97316; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
138
- h1 { margin: 8px 0 10px; font-size: clamp(26px, 5vw, 44px); line-height: 1.05; }
139
- p { color: #a8b3c2; line-height: 1.6; }
140
- section { margin-top: 18px; border: 1px solid rgba(148, 163, 184, .24); border-radius: 12px; background: rgba(15, 23, 42, .72); padding: 16px; }
141
- dl { display: grid; grid-template-columns: minmax(110px, 180px) minmax(0, 1fr); gap: 10px 14px; margin: 0; }
142
- dt { color: #94a3b8; font-size: 12px; text-transform: uppercase; }
143
- dd { margin: 0; overflow-wrap: anywhere; }
144
- pre { margin: 0; max-height: 280px; overflow: auto; white-space: pre-wrap; color: #dbeafe; background: #020617; border-radius: 10px; padding: 14px; }
145
- code { color: #bfdbfe; }
146
- li { margin: 8px 0; color: #d0d8e4; }
147
- </style>
148
- </head>
149
- <body>
150
- <main>
151
- <div class="eyebrow">Pixcode Live View</div>
152
- <h1>${escapeHtml(payload.message)}</h1>
153
- <p>${escapeHtml(payload.errorDetail || 'The preview link is active, but the local runner is not ready.')}</p>
154
- <section>
155
- <dl>
156
- <dt>Status</dt><dd>${escapeHtml(payload.status)}</dd>
157
- <dt>Framework</dt><dd>${escapeHtml(payload.framework || 'Unknown')}</dd>
158
- <dt>Command</dt><dd><code>${escapeHtml(payload.diagnostics?.command || 'No command captured')}</code></dd>
159
- <dt>Upstream</dt><dd>${escapeHtml(payload.upstreamUrl || 'Not ready')}</dd>
160
- <dt>Share ID</dt><dd>${escapeHtml(payload.shareId || 'Unknown')}</dd>
161
- </dl>
162
- </section>
163
- <section>
164
- <h2>What to check</h2>
165
- <ul>${suggestions}</ul>
166
- </section>
167
- <section>
168
- <h2>Process logs</h2>
169
- <pre>${logs}</pre>
170
- </section>
171
- </main>
172
- </body>
127
+ return `<!doctype html>
128
+ <html lang="en">
129
+ <head>
130
+ <meta charset="utf-8">
131
+ <meta name="viewport" content="width=device-width, initial-scale=1">
132
+ <title>Pixcode Live View diagnostics</title>
133
+ <style>
134
+ :root { color-scheme: light dark; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
135
+ body { margin: 0; min-height: 100vh; background: #0b0f14; color: #e5edf5; }
136
+ main { box-sizing: border-box; max-width: 980px; margin: 0 auto; padding: 32px 20px; }
137
+ .eyebrow { color: #f97316; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
138
+ h1 { margin: 8px 0 10px; font-size: clamp(26px, 5vw, 44px); line-height: 1.05; }
139
+ p { color: #a8b3c2; line-height: 1.6; }
140
+ section { margin-top: 18px; border: 1px solid rgba(148, 163, 184, .24); border-radius: 12px; background: rgba(15, 23, 42, .72); padding: 16px; }
141
+ dl { display: grid; grid-template-columns: minmax(110px, 180px) minmax(0, 1fr); gap: 10px 14px; margin: 0; }
142
+ dt { color: #94a3b8; font-size: 12px; text-transform: uppercase; }
143
+ dd { margin: 0; overflow-wrap: anywhere; }
144
+ pre { margin: 0; max-height: 280px; overflow: auto; white-space: pre-wrap; color: #dbeafe; background: #020617; border-radius: 10px; padding: 14px; }
145
+ code { color: #bfdbfe; }
146
+ li { margin: 8px 0; color: #d0d8e4; }
147
+ </style>
148
+ </head>
149
+ <body>
150
+ <main>
151
+ <div class="eyebrow">Pixcode Live View</div>
152
+ <h1>${escapeHtml(payload.message)}</h1>
153
+ <p>${escapeHtml(payload.errorDetail || 'The preview link is active, but the local runner is not ready.')}</p>
154
+ <section>
155
+ <dl>
156
+ <dt>Status</dt><dd>${escapeHtml(payload.status)}</dd>
157
+ <dt>Framework</dt><dd>${escapeHtml(payload.framework || 'Unknown')}</dd>
158
+ <dt>Command</dt><dd><code>${escapeHtml(payload.diagnostics?.command || 'No command captured')}</code></dd>
159
+ <dt>Upstream</dt><dd>${escapeHtml(payload.upstreamUrl || 'Not ready')}</dd>
160
+ <dt>Share ID</dt><dd>${escapeHtml(payload.shareId || 'Unknown')}</dd>
161
+ </dl>
162
+ </section>
163
+ <section>
164
+ <h2>What to check</h2>
165
+ <ul>${suggestions}</ul>
166
+ </section>
167
+ <section>
168
+ <h2>Process logs</h2>
169
+ <pre>${logs}</pre>
170
+ </section>
171
+ </main>
172
+ </body>
173
173
  </html>`;
174
174
  }
175
175
  function requestPrefersHtml(req) {
@@ -56,57 +56,57 @@ export function buildPublicApiManifest({ baseUrl = '' } = {}) {
56
56
  }
57
57
  export function buildTypeScriptSdkStarter({ baseUrl = '' } = {}) {
58
58
  const origin = String(baseUrl || 'http://127.0.0.1:3001').replace(/\/+$/, '');
59
- return `export type PixcodeRun = {
60
- id: string;
61
- workflowId: string;
62
- status: 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
63
- };
64
-
65
- export class PixcodeClient {
66
- constructor(
67
- private readonly apiKey: string,
68
- private readonly baseUrl = '${origin}',
69
- ) {}
70
-
71
- private async request<T>(path: string, init: RequestInit = {}): Promise<T> {
72
- const response = await fetch(new URL(path, this.baseUrl), {
73
- ...init,
74
- headers: {
75
- 'Content-Type': 'application/json',
76
- 'X-API-Key': this.apiKey,
77
- ...(init.headers || {}),
78
- },
79
- });
80
- if (!response.ok) throw new Error(\`Pixcode API \${response.status}: \${await response.text()}\`);
81
- return response.json() as Promise<T>;
82
- }
83
-
84
- projects() {
85
- return this.request<{ projects: unknown[] }>('/api/projects');
86
- }
87
-
88
- controlRoom() {
89
- return this.request<{ success: true; controlRoom: unknown }>('/api/remote/control-room');
90
- }
91
-
92
- approvals() {
93
- return this.request<{ pendingApprovals: unknown[] }>('/api/orchestration/workflows/approvals');
94
- }
95
-
96
- decideApproval(approvalId: string, allow: boolean) {
97
- return this.request(\`/api/orchestration/workflows/approvals/\${encodeURIComponent(approvalId)}\`, {
98
- method: 'POST',
99
- body: JSON.stringify({ allow, source: 'api' }),
100
- });
101
- }
102
-
103
- startWorkflow(workflowId: string, input: string, metadata: Record<string, unknown> = {}) {
104
- return this.request<PixcodeRun>(\`/api/orchestration/workflows/\${encodeURIComponent(workflowId)}/runs\`, {
105
- method: 'POST',
106
- body: JSON.stringify({ input, metadata }),
107
- });
108
- }
109
- }
59
+ return `export type PixcodeRun = {
60
+ id: string;
61
+ workflowId: string;
62
+ status: 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
63
+ };
64
+
65
+ export class PixcodeClient {
66
+ constructor(
67
+ private readonly apiKey: string,
68
+ private readonly baseUrl = '${origin}',
69
+ ) {}
70
+
71
+ private async request<T>(path: string, init: RequestInit = {}): Promise<T> {
72
+ const response = await fetch(new URL(path, this.baseUrl), {
73
+ ...init,
74
+ headers: {
75
+ 'Content-Type': 'application/json',
76
+ 'X-API-Key': this.apiKey,
77
+ ...(init.headers || {}),
78
+ },
79
+ });
80
+ if (!response.ok) throw new Error(\`Pixcode API \${response.status}: \${await response.text()}\`);
81
+ return response.json() as Promise<T>;
82
+ }
83
+
84
+ projects() {
85
+ return this.request<{ projects: unknown[] }>('/api/projects');
86
+ }
87
+
88
+ controlRoom() {
89
+ return this.request<{ success: true; controlRoom: unknown }>('/api/remote/control-room');
90
+ }
91
+
92
+ approvals() {
93
+ return this.request<{ pendingApprovals: unknown[] }>('/api/orchestration/workflows/approvals');
94
+ }
95
+
96
+ decideApproval(approvalId: string, allow: boolean) {
97
+ return this.request(\`/api/orchestration/workflows/approvals/\${encodeURIComponent(approvalId)}\`, {
98
+ method: 'POST',
99
+ body: JSON.stringify({ allow, source: 'api' }),
100
+ });
101
+ }
102
+
103
+ startWorkflow(workflowId: string, input: string, metadata: Record<string, unknown> = {}) {
104
+ return this.request<PixcodeRun>(\`/api/orchestration/workflows/\${encodeURIComponent(workflowId)}/runs\`, {
105
+ method: 'POST',
106
+ body: JSON.stringify({ input, metadata }),
107
+ });
108
+ }
109
+ }
110
110
  `;
111
111
  }
112
112
  export function buildCurlCookbook({ baseUrl = '' } = {}) {