@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.
- package/CODE_OF_CONDUCT.md +41 -41
- package/CONTRIBUTING.md +156 -156
- package/LICENSE +21 -718
- package/README.de.md +169 -169
- package/README.ja.md +167 -167
- package/README.ko.md +167 -167
- package/README.md +435 -418
- package/README.ru.md +169 -169
- package/README.tr.md +298 -298
- package/README.zh-CN.md +167 -167
- package/SECURITY.md +46 -46
- package/dist/api-automation.html +110 -110
- package/dist/api-docs.html +548 -548
- package/dist/assets/{index-DWOW_Jn0.js → index-Bcqs_1vc.js} +114 -114
- package/dist/clear-cache.html +85 -85
- package/dist/convert-icons.md +52 -52
- package/dist/docs.html +308 -308
- package/dist/features.html +133 -133
- package/dist/generate-icons.js +48 -48
- package/dist/humans.txt +15 -15
- package/dist/icons/codex-white.svg +3 -3
- package/dist/icons/codex.svg +3 -3
- package/dist/icons/cursor-white.svg +11 -11
- package/dist/icons/qwen-logo.svg +14 -14
- package/dist/index.html +58 -58
- package/dist/landing.html +268 -268
- package/dist/llms-full.txt +119 -119
- package/dist/llms.txt +53 -53
- package/dist/manifest.json +60 -60
- package/dist/openapi.yaml +1696 -1696
- package/dist/orchestration.html +125 -125
- package/dist/robots.txt +4 -4
- package/dist/site.css +692 -692
- package/dist/sitemap.xml +51 -51
- package/dist/sw.js +132 -132
- package/dist-server/server/cli.js +100 -100
- package/dist-server/server/daemon/manager.js +33 -33
- package/dist-server/server/daemon-manager.js +64 -64
- package/dist-server/server/routes/commands.js +25 -25
- package/dist-server/server/routes/git.js +17 -17
- package/dist-server/server/routes/live-view.js +46 -46
- package/dist-server/server/services/public-api-manifest.js +51 -51
- package/package.json +224 -224
- package/scripts/fix-node-pty.js +67 -67
- package/scripts/github/create-v1.38-issues.mjs +351 -351
- package/scripts/github/create-vscode-workbench-issues.mjs +121 -121
- package/scripts/smoke/backend-resource-bounds.mjs +152 -152
- package/scripts/smoke/changes-panel-layout.mjs +48 -48
- package/scripts/smoke/chat-composer-fixed-layout.mjs +55 -55
- package/scripts/smoke/chat-message-timeline-order.mjs +41 -41
- package/scripts/smoke/chat-realtime-hydration.mjs +44 -44
- package/scripts/smoke/chat-session-provider-pools.mjs +35 -35
- package/scripts/smoke/chat-session-state.mjs +19 -19
- package/scripts/smoke/code-editor-theme.mjs +55 -55
- package/scripts/smoke/code-editor-vscode-engine.mjs +91 -91
- package/scripts/smoke/command-center-agent-writes.mjs +79 -79
- package/scripts/smoke/command-center-non-git.mjs +46 -46
- package/scripts/smoke/context-packet.mjs +43 -43
- package/scripts/smoke/control-room-ux-redesign.mjs +91 -91
- package/scripts/smoke/daemon-entrypoint.mjs +20 -20
- package/scripts/smoke/default-landing-routing.mjs +33 -33
- package/scripts/smoke/desktop-native-notifications.mjs +30 -30
- package/scripts/smoke/desktop-tray-icon.mjs +33 -33
- package/scripts/smoke/discord-release-workflow.mjs +24 -24
- package/scripts/smoke/git-install-update.mjs +255 -255
- package/scripts/smoke/handoff-artifact-protocol.mjs +50 -50
- package/scripts/smoke/live-view-diagnostics.mjs +53 -53
- package/scripts/smoke/live-view-environment.mjs +92 -92
- package/scripts/smoke/live-view-integration.mjs +450 -450
- package/scripts/smoke/mac-desktop-runtime.mjs +37 -37
- package/scripts/smoke/mobile-tunnel-guidance.mjs +29 -29
- package/scripts/smoke/mobile-ux.mjs +76 -76
- package/scripts/smoke/model-registry.mjs +36 -36
- package/scripts/smoke/multi-project-ui.mjs +45 -45
- package/scripts/smoke/multi-worker-slots.mjs +42 -42
- package/scripts/smoke/notification-center.mjs +87 -87
- package/scripts/smoke/notification-inapp-preference.mjs +23 -23
- package/scripts/smoke/notification-taxonomy.mjs +58 -58
- package/scripts/smoke/orchestration-api.mjs +172 -172
- package/scripts/smoke/orchestration-execution-dashboard.mjs +33 -33
- package/scripts/smoke/orchestration-live-run.mjs +176 -176
- package/scripts/smoke/orchestration-mobile-scroll.mjs +29 -29
- package/scripts/smoke/orchestration-model-sync.mjs +30 -30
- package/scripts/smoke/orchestration-permission-fallback.mjs +34 -34
- package/scripts/smoke/orchestration-runtime-guards.mjs +48 -48
- package/scripts/smoke/orchestration-user-facing-output.mjs +25 -25
- package/scripts/smoke/permission-policy.mjs +50 -50
- package/scripts/smoke/pixcode-workbench-1-48.mjs +167 -167
- package/scripts/smoke/provider-models-opencode-live.mjs +66 -66
- package/scripts/smoke/provider-rest-api.mjs +124 -124
- package/scripts/smoke/provider-selection-status.mjs +52 -52
- package/scripts/smoke/run-state-refresh.mjs +52 -52
- package/scripts/smoke/runtime-manager.mjs +99 -99
- package/scripts/smoke/shell-manual-disconnect.mjs +30 -30
- package/scripts/smoke/side-panel-editor-layout.mjs +34 -34
- package/scripts/smoke/static-root-routing.mjs +21 -21
- package/scripts/smoke/strict-handoff-compact.mjs +60 -60
- package/scripts/smoke/taskmaster-config.mjs +24 -24
- package/scripts/smoke/taskmaster-execution-telegram.mjs +3 -3
- package/scripts/smoke/taskmaster-onboarding.mjs +3 -3
- package/scripts/smoke/taskmaster-run-graph.mjs +3 -3
- package/scripts/smoke/telegram-control.mjs +331 -331
- package/scripts/smoke/tunnel-persistence.mjs +56 -56
- package/scripts/smoke/update-issue-progress.mjs +69 -69
- package/scripts/smoke/update-ux.mjs +55 -55
- package/scripts/smoke/v138-completion.mjs +132 -132
- package/scripts/smoke/v138-desktop-release-hardening.mjs +69 -69
- package/scripts/smoke/v138-diagnostics.mjs +63 -63
- package/scripts/smoke/v138-issue-planner.mjs +33 -33
- package/scripts/smoke/v143-remote-control.mjs +76 -76
- package/scripts/smoke/v144-production-loop.mjs +47 -47
- package/scripts/smoke/v145-platformization.mjs +46 -46
- package/scripts/smoke/v146-control-room-ui.mjs +150 -150
- package/scripts/smoke/version-modal-autoshow.mjs +29 -29
- package/scripts/smoke/vscode-workbench-layout.mjs +63 -63
- package/scripts/smoke/vscode-workbench-polish.mjs +461 -461
- package/scripts/smoke/workflow-fallback-replay.mjs +56 -56
- package/scripts/smoke/workflow-templates.mjs +43 -43
- package/scripts/smoke/workflow-trace-timeline.mjs +46 -46
- package/scripts/update-git-install.mjs +298 -298
- package/server/claude-sdk.js +927 -927
- package/server/cli.js +1106 -1106
- package/server/constants/config.js +4 -4
- package/server/cursor-cli.js +344 -344
- package/server/daemon/manager.js +563 -563
- package/server/daemon-manager.js +964 -964
- package/server/database/db.js +988 -988
- package/server/database/json-store.js +197 -197
- package/server/gemini-cli.js +550 -550
- package/server/gemini-response-handler.js +79 -79
- package/server/index.js +5671 -5671
- package/server/load-env.js +35 -35
- package/server/middleware/account-lockout.js +112 -112
- package/server/middleware/auth.js +277 -277
- package/server/middleware/rate-limiter.js +87 -87
- package/server/modules/orchestration/a2a/adapter-registry.ts +108 -108
- package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +63 -63
- package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +286 -286
- package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +244 -244
- package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +249 -249
- package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +248 -248
- package/server/modules/orchestration/a2a/adapters/json-event.adapter.test.ts +60 -60
- package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +101 -101
- package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +248 -248
- package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +248 -248
- package/server/modules/orchestration/a2a/agent-card.ts +55 -55
- package/server/modules/orchestration/a2a/auth.middleware.ts +29 -29
- package/server/modules/orchestration/a2a/bus.ts +46 -46
- package/server/modules/orchestration/a2a/routes.ts +586 -586
- package/server/modules/orchestration/a2a/task-dispatcher.ts +345 -345
- package/server/modules/orchestration/a2a/task-store.ts +178 -178
- package/server/modules/orchestration/a2a/types.ts +126 -126
- package/server/modules/orchestration/a2a/validator.ts +113 -113
- package/server/modules/orchestration/index.ts +99 -99
- package/server/modules/orchestration/preview/port-watcher.ts +112 -112
- package/server/modules/orchestration/preview/preview-proxy.ts +60 -60
- package/server/modules/orchestration/preview/types.ts +19 -19
- package/server/modules/orchestration/security/permission-policy.ts +401 -401
- package/server/modules/orchestration/tasks/orchestration-task-store.ts +41 -41
- package/server/modules/orchestration/tasks/orchestration-task.routes.ts +81 -81
- package/server/modules/orchestration/tasks/orchestration-task.service.ts +201 -201
- package/server/modules/orchestration/tasks/orchestration-task.types.ts +40 -40
- package/server/modules/orchestration/tasks/task-run-graph.ts +155 -155
- package/server/modules/orchestration/workflows/approval-queue.ts +106 -106
- package/server/modules/orchestration/workflows/built-in-workflows.ts +127 -127
- package/server/modules/orchestration/workflows/context-packet.ts +186 -186
- package/server/modules/orchestration/workflows/handoff-artifact.ts +175 -175
- package/server/modules/orchestration/workflows/workflow-fallback-policy.ts +161 -161
- package/server/modules/orchestration/workflows/workflow-replay.ts +254 -254
- package/server/modules/orchestration/workflows/workflow-runner.ts +2062 -2062
- package/server/modules/orchestration/workflows/workflow-store.ts +97 -97
- package/server/modules/orchestration/workflows/workflow-templates.ts +272 -272
- package/server/modules/orchestration/workflows/workflow-trace.ts +424 -424
- package/server/modules/orchestration/workflows/workflow.routes.ts +586 -586
- package/server/modules/orchestration/workflows/workflow.types.ts +111 -111
- package/server/modules/orchestration/workflows/workspace-target.ts +122 -122
- package/server/modules/orchestration/workspace/docker-workspace.ts +136 -136
- package/server/modules/orchestration/workspace/path-safety.ts +55 -55
- package/server/modules/orchestration/workspace/types.ts +52 -52
- package/server/modules/orchestration/workspace/workspace-manager.ts +102 -102
- package/server/modules/orchestration/workspace/worktree-workspace.ts +126 -126
- package/server/modules/providers/index.ts +2 -2
- package/server/modules/providers/list/claude/claude-auth.provider.ts +146 -146
- package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
- package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -306
- package/server/modules/providers/list/claude/claude.provider.ts +15 -15
- package/server/modules/providers/list/codex/codex-auth.provider.ts +117 -117
- package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
- package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -319
- package/server/modules/providers/list/codex/codex.provider.ts +15 -15
- package/server/modules/providers/list/cursor/cursor-auth.provider.ts +147 -147
- package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
- package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -421
- package/server/modules/providers/list/cursor/cursor.provider.ts +15 -15
- package/server/modules/providers/list/gemini/gemini-auth.provider.ts +173 -173
- package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -110
- package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -227
- package/server/modules/providers/list/gemini/gemini.provider.ts +15 -15
- package/server/modules/providers/list/opencode/opencode-auth.provider.ts +131 -131
- package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +286 -286
- package/server/modules/providers/list/qwen/qwen-auth.provider.ts +146 -146
- package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
- package/server/modules/providers/provider.registry.ts +40 -40
- package/server/modules/providers/provider.routes.ts +982 -982
- package/server/modules/providers/services/mcp.service.ts +86 -86
- package/server/modules/providers/services/provider-auth.service.ts +26 -26
- package/server/modules/providers/services/sessions.service.ts +45 -45
- package/server/modules/providers/shared/base/abstract.provider.ts +20 -20
- package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
- package/server/modules/providers/tests/mcp.test.ts +293 -293
- package/server/openai-codex.js +468 -468
- package/server/opencode-cli.js +491 -491
- package/server/opencode-response-handler.js +111 -111
- package/server/projects.js +3135 -3135
- package/server/qwen-code-cli.js +410 -410
- package/server/routes/agent.js +1462 -1462
- package/server/routes/auth.js +298 -298
- package/server/routes/codex.js +20 -20
- package/server/routes/commands.js +581 -581
- package/server/routes/cursor.js +61 -61
- package/server/routes/diagnostics.js +44 -44
- package/server/routes/gemini.js +25 -25
- package/server/routes/git.js +1822 -1822
- package/server/routes/live-view.js +434 -434
- package/server/routes/mcp-utils.js +13 -13
- package/server/routes/messages.js +97 -97
- package/server/routes/network.js +143 -143
- package/server/routes/platformization.js +231 -231
- package/server/routes/plugins.js +690 -690
- package/server/routes/production-agent-loop.js +90 -90
- package/server/routes/projects.js +918 -918
- package/server/routes/public-api.js +34 -34
- package/server/routes/qwen.js +27 -27
- package/server/routes/remote.js +56 -56
- package/server/routes/settings.js +321 -321
- package/server/routes/telegram.js +163 -163
- package/server/routes/user.js +125 -125
- package/server/routes/webhooks.js +63 -63
- package/server/services/control-room.js +102 -102
- package/server/services/diagnostics.js +165 -165
- package/server/services/external-access.js +403 -403
- package/server/services/install-jobs.js +715 -715
- package/server/services/live-view.js +956 -956
- package/server/services/managed-runtimes.js +493 -493
- package/server/services/model-registry.js +144 -144
- package/server/services/notification-orchestrator.js +365 -365
- package/server/services/notification-taxonomy.js +204 -204
- package/server/services/platformization.js +1052 -1052
- package/server/services/production-agent-loop.js +248 -248
- package/server/services/provider-cli-versions.js +149 -149
- package/server/services/provider-credentials.js +189 -189
- package/server/services/provider-models.js +396 -396
- package/server/services/public-api-manifest.js +181 -181
- package/server/services/qr-login.js +126 -126
- package/server/services/remote-connection.js +127 -127
- package/server/services/runtime-manager.js +323 -323
- package/server/services/startup-update.js +259 -259
- package/server/services/telegram/bot.js +393 -393
- package/server/services/telegram/control-center.js +2453 -2453
- package/server/services/telegram/telegram-gateway.js +314 -314
- package/server/services/telegram/telegram-http-client.js +201 -201
- package/server/services/telegram/translations.js +470 -470
- package/server/services/webhooks.js +216 -216
- package/server/sessionManager.js +225 -225
- package/server/setup-wizard.js +283 -283
- package/server/shared/interfaces.ts +54 -54
- package/server/shared/types.ts +172 -172
- package/server/shared/utils.ts +193 -193
- package/server/tsconfig.json +36 -36
- package/server/utils/colors.js +21 -21
- package/server/utils/commandParser.js +305 -305
- package/server/utils/frontmatter.js +18 -18
- package/server/utils/gitConfig.js +34 -34
- package/server/utils/plugin-loader.js +461 -461
- package/server/utils/plugin-process-manager.js +185 -185
- package/server/utils/port-access.js +227 -227
- package/server/utils/runtime-paths.js +37 -37
- package/server/utils/security-log.js +84 -84
- package/server/utils/url-detection.js +71 -71
- package/server/vite-daemon.js +79 -79
- package/shared/modelConstants.js +161 -161
- 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 = '' } = {}) {
|