@pixelbyte-software/pixcode 1.51.2 → 1.51.4
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 +155 -155
- package/LICENSE +718 -718
- package/README.de.md +169 -169
- package/README.ja.md +167 -167
- package/README.ko.md +167 -167
- package/README.md +419 -419
- 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-B9N-gfOQ.css +32 -0
- package/dist/assets/{index-EN9ngyxf.js → index-HfGHXhD6.js} +175 -175
- package/dist/clear-cache.html +85 -85
- package/dist/convert-icons.md +52 -52
- package/dist/docs.html +308 -308
- package/dist/favicon.svg +8 -8
- 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/icon-128x128.svg +9 -9
- package/dist/icons/icon-144x144.svg +9 -9
- package/dist/icons/icon-152x152.svg +9 -9
- package/dist/icons/icon-192x192.svg +9 -9
- package/dist/icons/icon-384x384.svg +9 -9
- package/dist/icons/icon-512x512.svg +9 -9
- package/dist/icons/icon-72x72.svg +9 -9
- package/dist/icons/icon-96x96.svg +9 -9
- package/dist/icons/icon-template.svg +9 -9
- package/dist/icons/qwen-logo.svg +14 -14
- package/dist/index.html +59 -59
- package/dist/landing.html +268 -268
- package/dist/llms-full.txt +119 -119
- package/dist/llms.txt +53 -53
- package/dist/logo.svg +12 -12
- 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 +96 -96
- package/dist-server/server/daemon/manager.js +33 -33
- package/dist-server/server/daemon-manager.js +64 -64
- package/dist-server/server/database/db.js +14 -2
- package/dist-server/server/database/db.js.map +1 -1
- package/dist-server/server/index.js +191 -31
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/middleware/auth.js +16 -5
- package/dist-server/server/middleware/auth.js.map +1 -1
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js +84 -0
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js.map +1 -0
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js +43 -0
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js.map +1 -0
- package/dist-server/server/modules/orchestration/hermes/hermes.routes.js +55 -1
- package/dist-server/server/modules/orchestration/hermes/hermes.routes.js.map +1 -1
- package/dist-server/server/modules/orchestration/index.js +1 -0
- package/dist-server/server/modules/orchestration/index.js.map +1 -1
- package/dist-server/server/routes/auth.js +12 -5
- package/dist-server/server/routes/auth.js.map +1 -1
- package/dist-server/server/routes/commands.js +25 -25
- package/dist-server/server/routes/git.js +29 -17
- package/dist-server/server/routes/git.js.map +1 -1
- package/dist-server/server/routes/live-view.js +46 -46
- package/dist-server/server/routes/platformization.js +7 -6
- package/dist-server/server/routes/platformization.js.map +1 -1
- package/dist-server/server/services/hermes-gateway.js +310 -0
- package/dist-server/server/services/hermes-gateway.js.map +1 -1
- package/dist-server/server/services/platformization.js +58 -2
- package/dist-server/server/services/platformization.js.map +1 -1
- package/dist-server/server/services/public-api-manifest.js +59 -51
- package/dist-server/server/services/public-api-manifest.js.map +1 -1
- package/package.json +222 -222
- 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/hermes/configure-pixcode-mcp.mjs +165 -163
- package/scripts/hermes/pixcode-mcp-server.mjs +1009 -958
- 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/hermes-api-install.mjs +56 -56
- package/scripts/smoke/hermes-gateway-persistence.mjs +104 -104
- package/scripts/smoke/hermes-mcp-pixcode-roundtrip.mjs +426 -367
- package/scripts/smoke/hermes-rest-chat-api.mjs +162 -162
- package/scripts/smoke/hermes-rest-chat-live.mjs +45 -45
- package/scripts/smoke/hermes-rest-codex-launch.mjs +209 -209
- package/scripts/smoke/hermes-rest-gateway.mjs +79 -70
- package/scripts/smoke/hermes-rest-live.mjs +42 -42
- package/scripts/smoke/hermes-roundtrip.mjs +167 -167
- package/scripts/smoke/hermes-settings-commands.mjs +349 -346
- package/scripts/smoke/hermes-smoke-launcher-guard.mjs +34 -34
- 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/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 +242 -242
- 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 -436
- 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 +293 -293
- package/server/claude-sdk.js +920 -920
- package/server/cli.js +1039 -1039
- 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 +908 -895
- 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 +201 -30
- package/server/load-env.js +35 -35
- package/server/middleware/auth.js +171 -156
- 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 -0
- package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +101 -0
- 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/routes.ts +590 -590
- 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/hermes/hermes.routes.ts +642 -583
- package/server/modules/orchestration/index.ts +101 -100
- 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 +64 -64
- package/server/modules/orchestration/tasks/orchestration-task.service.ts +209 -209
- 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 +2070 -2070
- 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-mcp.provider.ts +126 -126
- package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +286 -286
- package/server/modules/providers/list/opencode/opencode.provider.ts +29 -29
- package/server/modules/providers/list/qwen/qwen-auth.provider.ts +146 -146
- package/server/modules/providers/list/qwen/qwen-mcp.provider.ts +114 -114
- package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
- package/server/modules/providers/list/qwen/qwen.provider.ts +21 -21
- package/server/modules/providers/provider.registry.ts +40 -40
- package/server/modules/providers/provider.routes.ts +944 -944
- 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/shared/provider-configs.ts +142 -142
- package/server/modules/providers/tests/mcp.test.ts +293 -293
- package/server/openai-codex.js +462 -462
- package/server/opencode-cli.js +491 -491
- package/server/opencode-response-handler.js +111 -111
- package/server/projects.js +3008 -3008
- package/server/qwen-code-cli.js +410 -410
- package/server/qwen-response-handler.js +73 -73
- package/server/routes/agent.js +1435 -1435
- package/server/routes/auth.js +154 -146
- package/server/routes/codex.js +20 -20
- package/server/routes/commands.js +570 -570
- package/server/routes/cursor.js +61 -61
- package/server/routes/diagnostics.js +41 -41
- package/server/routes/gemini.js +25 -25
- package/server/routes/git.js +1650 -1635
- package/server/routes/live-view.js +411 -411
- package/server/routes/mcp-utils.js +13 -13
- package/server/routes/messages.js +62 -62
- package/server/routes/network.js +125 -125
- package/server/routes/platformization.js +198 -197
- package/server/routes/plugins.js +320 -320
- package/server/routes/production-agent-loop.js +90 -90
- package/server/routes/projects.js +917 -917
- package/server/routes/public-api.js +34 -34
- package/server/routes/qwen.js +27 -27
- package/server/routes/remote.js +55 -55
- package/server/routes/settings.js +321 -321
- package/server/routes/telegram.js +140 -140
- 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 +375 -375
- package/server/services/hermes-gateway.js +1562 -1247
- package/server/services/hermes-install-jobs.js +729 -729
- 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 +844 -779
- 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 +190 -182
- package/server/services/remote-connection.js +127 -127
- package/server/services/runtime-manager.js +323 -323
- package/server/services/startup-update.js +234 -234
- package/server/services/telegram/bot.js +331 -331
- package/server/services/telegram/control-center.js +979 -979
- package/server/services/telegram/telegram-http-client.js +151 -151
- package/server/services/telegram/translations.js +340 -340
- package/server/services/vapid-keys.js +36 -36
- package/server/services/webhooks.js +216 -216
- package/server/sessionManager.js +225 -225
- 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 +457 -457
- package/server/utils/plugin-process-manager.js +185 -185
- package/server/utils/port-access.js +209 -209
- package/server/utils/runtime-paths.js +37 -37
- 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
- package/dist/assets/index-DMz0zv6T.css +0 -32
package/package.json
CHANGED
|
@@ -1,222 +1,222 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@pixelbyte-software/pixcode",
|
|
3
|
-
"version": "1.51.
|
|
4
|
-
"description": "Self-hosted AI coding agent control room for Claude Code, Cursor CLI, OpenAI Codex, Gemini CLI, Qwen Code, and OpenCode with chat, files, shell, Git, orchestration, API keys, Telegram, MCP, plugins, themes, and desktop/server deployment.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist-server/server/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"pixcode": "dist-server/server/cli.js"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"server/",
|
|
12
|
-
"!server/database/auth.json",
|
|
13
|
-
"shared/",
|
|
14
|
-
"dist/",
|
|
15
|
-
"dist-server/",
|
|
16
|
-
"scripts/",
|
|
17
|
-
"README.md",
|
|
18
|
-
"CONTRIBUTING.md",
|
|
19
|
-
"CODE_OF_CONDUCT.md",
|
|
20
|
-
"SECURITY.md"
|
|
21
|
-
],
|
|
22
|
-
"homepage": "https://github.com/alicomert/pixcode",
|
|
23
|
-
"repository": {
|
|
24
|
-
"type": "git",
|
|
25
|
-
"url": "git+https://github.com/alicomert/pixcode.git"
|
|
26
|
-
},
|
|
27
|
-
"bugs": {
|
|
28
|
-
"url": "https://github.com/alicomert/pixcode/issues"
|
|
29
|
-
},
|
|
30
|
-
"publishConfig": {
|
|
31
|
-
"access": "public"
|
|
32
|
-
},
|
|
33
|
-
"scripts": {
|
|
34
|
-
"dev": "npm run server:dev",
|
|
35
|
-
"server": "node dist-server/server/cli.js start",
|
|
36
|
-
"server:dev": "node server/cli.js daemon install --mode system --port 3001 --frontend-port 5173",
|
|
37
|
-
"server:dev-watch": "node server/cli.js daemon restart --mode system --port 3001 --frontend-port 5173",
|
|
38
|
-
"client": "vite",
|
|
39
|
-
"build": "npm run build:client && npm run build:server",
|
|
40
|
-
"build:client": "vite build",
|
|
41
|
-
"prebuild:server": "node -e \"require('node:fs').rmSync('dist-server', { recursive: true, force: true })\"",
|
|
42
|
-
"build:server": "tsc -p server/tsconfig.json && tsc-alias -p server/tsconfig.json",
|
|
43
|
-
"preview": "vite preview",
|
|
44
|
-
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p server/tsconfig.json",
|
|
45
|
-
"lint": "eslint src/ server/",
|
|
46
|
-
"lint:fix": "eslint src/ server/ --fix",
|
|
47
|
-
"smoke:chat-session-state": "node scripts/smoke/chat-session-state.mjs",
|
|
48
|
-
"smoke:orchestration-api": "node scripts/smoke/orchestration-api.mjs",
|
|
49
|
-
"smoke:orchestration-live": "node scripts/smoke/orchestration-live-run.mjs",
|
|
50
|
-
"smoke:provider-rest": "node scripts/smoke/provider-rest-api.mjs",
|
|
51
|
-
"smoke:static-root": "node scripts/smoke/static-root-routing.mjs",
|
|
52
|
-
"smoke:telegram-control": "node scripts/smoke/telegram-control.mjs",
|
|
53
|
-
"smoke:update-ux": "node scripts/smoke/update-ux.mjs",
|
|
54
|
-
"smoke:v138-diagnostics": "node scripts/smoke/v138-diagnostics.mjs",
|
|
55
|
-
"smoke:v138-desktop": "node scripts/smoke/v138-desktop-release-hardening.mjs",
|
|
56
|
-
"smoke:v138-completion": "node scripts/smoke/v138-completion.mjs",
|
|
57
|
-
"smoke:v138-issues": "node scripts/smoke/v138-issue-planner.mjs",
|
|
58
|
-
"issues:v1.38": "node scripts/github/create-v1.38-issues.mjs --apply",
|
|
59
|
-
"start": "npm run build && npm run server",
|
|
60
|
-
"release": "./release.sh",
|
|
61
|
-
"prepublishOnly": "npm run build",
|
|
62
|
-
"postinstall": "node scripts/fix-node-pty.js",
|
|
63
|
-
"prepare": "husky",
|
|
64
|
-
"update:platform": "./update-platform.sh"
|
|
65
|
-
},
|
|
66
|
-
"keywords": [
|
|
67
|
-
"pixcode",
|
|
68
|
-
"ai coding agent",
|
|
69
|
-
"ai coding assistant",
|
|
70
|
-
"self-hosted ai ide",
|
|
71
|
-
"self-hosted developer tool",
|
|
72
|
-
"coding agent ui",
|
|
73
|
-
"coding agent dashboard",
|
|
74
|
-
"multi-agent orchestration",
|
|
75
|
-
"agent orchestration",
|
|
76
|
-
"openai compatible api",
|
|
77
|
-
"claude code",
|
|
78
|
-
"claude-code",
|
|
79
|
-
"claude-code-ui",
|
|
80
|
-
"claude code ui",
|
|
81
|
-
"anthropic",
|
|
82
|
-
"codex",
|
|
83
|
-
"codex-ui",
|
|
84
|
-
"openai codex",
|
|
85
|
-
"openai-codex",
|
|
86
|
-
"openai",
|
|
87
|
-
"cursor",
|
|
88
|
-
"cursor-cli",
|
|
89
|
-
"cursor cli ui",
|
|
90
|
-
"gemini",
|
|
91
|
-
"gemini-cli",
|
|
92
|
-
"gemini cli ui",
|
|
93
|
-
"qwen",
|
|
94
|
-
"qwen-code",
|
|
95
|
-
"qwen code ui",
|
|
96
|
-
"opencode",
|
|
97
|
-
"opencode-cli",
|
|
98
|
-
"opencode ui",
|
|
99
|
-
"google",
|
|
100
|
-
"mcp",
|
|
101
|
-
"mcp manager",
|
|
102
|
-
"telegram bot",
|
|
103
|
-
"api automation",
|
|
104
|
-
"git ui",
|
|
105
|
-
"terminal ui",
|
|
106
|
-
"web-ui",
|
|
107
|
-
"desktop app",
|
|
108
|
-
"mobile IDE",
|
|
109
|
-
"yapay zeka kodlama"
|
|
110
|
-
],
|
|
111
|
-
"author": "Pixcode Contributors",
|
|
112
|
-
"license": "AGPL-3.0-or-later",
|
|
113
|
-
"dependencies": {
|
|
114
|
-
"@anthropic-ai/claude-agent-sdk": "^0.2.116",
|
|
115
|
-
"@iarna/toml": "^2.2.5",
|
|
116
|
-
"@octokit/rest": "^22.0.0",
|
|
117
|
-
"@openai/codex-sdk": "^0.101.0",
|
|
118
|
-
"bcryptjs": "^3.0.3",
|
|
119
|
-
"better-sqlite3": "^12.6.2",
|
|
120
|
-
"chokidar": "^4.0.3",
|
|
121
|
-
"cors": "^2.8.5",
|
|
122
|
-
"cross-spawn": "^7.0.3",
|
|
123
|
-
"express": "^4.18.2",
|
|
124
|
-
"gray-matter": "^4.0.3",
|
|
125
|
-
"jsonwebtoken": "^9.0.2",
|
|
126
|
-
"mime-types": "^3.0.1",
|
|
127
|
-
"monaco-editor": "^0.55.1",
|
|
128
|
-
"multer": "^2.0.1",
|
|
129
|
-
"node-fetch": "^2.7.0",
|
|
130
|
-
"node-pty": "^1.2.0-beta.12",
|
|
131
|
-
"tar": "^7.5.13",
|
|
132
|
-
"web-push": "^3.6.7",
|
|
133
|
-
"ws": "^8.14.2"
|
|
134
|
-
},
|
|
135
|
-
"devDependencies": {
|
|
136
|
-
"@codemirror/lang-css": "^6.3.1",
|
|
137
|
-
"@codemirror/lang-html": "^6.4.9",
|
|
138
|
-
"@codemirror/lang-javascript": "^6.2.4",
|
|
139
|
-
"@codemirror/lang-json": "^6.0.1",
|
|
140
|
-
"@codemirror/lang-markdown": "^6.3.3",
|
|
141
|
-
"@codemirror/lang-python": "^6.2.1",
|
|
142
|
-
"@codemirror/merge": "^6.11.1",
|
|
143
|
-
"@codemirror/theme-one-dark": "^6.1.2",
|
|
144
|
-
"@commitlint/cli": "^20.5.0",
|
|
145
|
-
"@commitlint/config-conventional": "^20.5.0",
|
|
146
|
-
"@eslint/js": "^9.39.3",
|
|
147
|
-
"@heroicons/react": "^2.2.0",
|
|
148
|
-
"@monaco-editor/react": "^4.7.0",
|
|
149
|
-
"@release-it/conventional-changelog": "^10.0.5",
|
|
150
|
-
"@replit/codemirror-minimap": "^0.5.2",
|
|
151
|
-
"@tailwindcss/typography": "^0.5.16",
|
|
152
|
-
"@types/better-sqlite3": "^7.6.13",
|
|
153
|
-
"@types/cross-spawn": "^6.0.6",
|
|
154
|
-
"@types/express": "^5.0.6",
|
|
155
|
-
"@types/node": "^22.19.7",
|
|
156
|
-
"@types/qrcode": "^1.5.6",
|
|
157
|
-
"@types/react": "^18.2.43",
|
|
158
|
-
"@types/react-dom": "^18.2.17",
|
|
159
|
-
"@uiw/react-codemirror": "^4.23.13",
|
|
160
|
-
"@vitejs/plugin-react": "^4.6.0",
|
|
161
|
-
"@xterm/addon-clipboard": "^0.1.0",
|
|
162
|
-
"@xterm/addon-fit": "^0.10.0",
|
|
163
|
-
"@xterm/addon-web-links": "^0.11.0",
|
|
164
|
-
"@xterm/addon-webgl": "^0.18.0",
|
|
165
|
-
"@xterm/xterm": "^5.5.0",
|
|
166
|
-
"auto-changelog": "^2.5.0",
|
|
167
|
-
"autoprefixer": "^10.4.16",
|
|
168
|
-
"class-variance-authority": "^0.7.1",
|
|
169
|
-
"clsx": "^2.1.1",
|
|
170
|
-
"concurrently": "^8.2.2",
|
|
171
|
-
"eslint": "^9.39.3",
|
|
172
|
-
"eslint-import-resolver-typescript": "^4.4.4",
|
|
173
|
-
"eslint-plugin-boundaries": "^6.0.2",
|
|
174
|
-
"eslint-plugin-import-x": "^4.16.1",
|
|
175
|
-
"eslint-plugin-react": "^7.37.5",
|
|
176
|
-
"eslint-plugin-react-hooks": "^7.0.1",
|
|
177
|
-
"eslint-plugin-react-refresh": "^0.5.2",
|
|
178
|
-
"eslint-plugin-tailwindcss": "^3.18.2",
|
|
179
|
-
"eslint-plugin-unused-imports": "^4.4.1",
|
|
180
|
-
"fuse.js": "^7.0.0",
|
|
181
|
-
"globals": "^17.4.0",
|
|
182
|
-
"gsap": "^3.12.5",
|
|
183
|
-
"husky": "^9.1.7",
|
|
184
|
-
"i18next": "^25.7.4",
|
|
185
|
-
"i18next-browser-languagedetector": "^8.2.0",
|
|
186
|
-
"jszip": "^3.10.1",
|
|
187
|
-
"katex": "^0.16.25",
|
|
188
|
-
"lint-staged": "^16.3.2",
|
|
189
|
-
"lucide-react": "^0.515.0",
|
|
190
|
-
"node-gyp": "^12.0.0",
|
|
191
|
-
"postcss": "^8.4.32",
|
|
192
|
-
"qrcode": "^1.5.4",
|
|
193
|
-
"react": "^18.2.0",
|
|
194
|
-
"react-dom": "^18.2.0",
|
|
195
|
-
"react-dropzone": "^14.2.3",
|
|
196
|
-
"react-error-boundary": "^4.1.2",
|
|
197
|
-
"react-i18next": "^16.5.3",
|
|
198
|
-
"react-markdown": "^10.1.0",
|
|
199
|
-
"react-router-dom": "^6.8.1",
|
|
200
|
-
"react-syntax-highlighter": "^16.1.1",
|
|
201
|
-
"rehype-katex": "^7.0.1",
|
|
202
|
-
"rehype-raw": "^7.0.0",
|
|
203
|
-
"release-it": "^19.0.5",
|
|
204
|
-
"remark-gfm": "^4.0.0",
|
|
205
|
-
"remark-math": "^6.0.0",
|
|
206
|
-
"sharp": "^0.34.2",
|
|
207
|
-
"tailwind-merge": "^3.3.1",
|
|
208
|
-
"tailwindcss": "^3.4.0",
|
|
209
|
-
"tsc-alias": "^1.8.16",
|
|
210
|
-
"tsx": "^4.21.0",
|
|
211
|
-
"typescript": "^5.9.3",
|
|
212
|
-
"typescript-eslint": "^8.56.1",
|
|
213
|
-
"vite": "^7.0.4"
|
|
214
|
-
},
|
|
215
|
-
"lint-staged": {
|
|
216
|
-
"src/**/*.{ts,tsx,js,jsx}": "eslint",
|
|
217
|
-
"server/**/*.{js,ts}": "eslint"
|
|
218
|
-
},
|
|
219
|
-
"overrides": {
|
|
220
|
-
"undici": ">=6.23.1"
|
|
221
|
-
}
|
|
222
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@pixelbyte-software/pixcode",
|
|
3
|
+
"version": "1.51.4",
|
|
4
|
+
"description": "Self-hosted AI coding agent control room for Claude Code, Cursor CLI, OpenAI Codex, Gemini CLI, Qwen Code, and OpenCode with chat, files, shell, Git, orchestration, API keys, Telegram, MCP, plugins, themes, and desktop/server deployment.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist-server/server/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"pixcode": "dist-server/server/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"server/",
|
|
12
|
+
"!server/database/auth.json",
|
|
13
|
+
"shared/",
|
|
14
|
+
"dist/",
|
|
15
|
+
"dist-server/",
|
|
16
|
+
"scripts/",
|
|
17
|
+
"README.md",
|
|
18
|
+
"CONTRIBUTING.md",
|
|
19
|
+
"CODE_OF_CONDUCT.md",
|
|
20
|
+
"SECURITY.md"
|
|
21
|
+
],
|
|
22
|
+
"homepage": "https://github.com/alicomert/pixcode",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/alicomert/pixcode.git"
|
|
26
|
+
},
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/alicomert/pixcode/issues"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"dev": "npm run server:dev",
|
|
35
|
+
"server": "node dist-server/server/cli.js start",
|
|
36
|
+
"server:dev": "node server/cli.js daemon install --mode system --port 3001 --frontend-port 5173",
|
|
37
|
+
"server:dev-watch": "node server/cli.js daemon restart --mode system --port 3001 --frontend-port 5173",
|
|
38
|
+
"client": "vite",
|
|
39
|
+
"build": "npm run build:client && npm run build:server",
|
|
40
|
+
"build:client": "vite build",
|
|
41
|
+
"prebuild:server": "node -e \"require('node:fs').rmSync('dist-server', { recursive: true, force: true })\"",
|
|
42
|
+
"build:server": "tsc -p server/tsconfig.json && tsc-alias -p server/tsconfig.json",
|
|
43
|
+
"preview": "vite preview",
|
|
44
|
+
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p server/tsconfig.json",
|
|
45
|
+
"lint": "eslint src/ server/",
|
|
46
|
+
"lint:fix": "eslint src/ server/ --fix",
|
|
47
|
+
"smoke:chat-session-state": "node scripts/smoke/chat-session-state.mjs",
|
|
48
|
+
"smoke:orchestration-api": "node scripts/smoke/orchestration-api.mjs",
|
|
49
|
+
"smoke:orchestration-live": "node scripts/smoke/orchestration-live-run.mjs",
|
|
50
|
+
"smoke:provider-rest": "node scripts/smoke/provider-rest-api.mjs",
|
|
51
|
+
"smoke:static-root": "node scripts/smoke/static-root-routing.mjs",
|
|
52
|
+
"smoke:telegram-control": "node scripts/smoke/telegram-control.mjs",
|
|
53
|
+
"smoke:update-ux": "node scripts/smoke/update-ux.mjs",
|
|
54
|
+
"smoke:v138-diagnostics": "node scripts/smoke/v138-diagnostics.mjs",
|
|
55
|
+
"smoke:v138-desktop": "node scripts/smoke/v138-desktop-release-hardening.mjs",
|
|
56
|
+
"smoke:v138-completion": "node scripts/smoke/v138-completion.mjs",
|
|
57
|
+
"smoke:v138-issues": "node scripts/smoke/v138-issue-planner.mjs",
|
|
58
|
+
"issues:v1.38": "node scripts/github/create-v1.38-issues.mjs --apply",
|
|
59
|
+
"start": "npm run build && npm run server",
|
|
60
|
+
"release": "./release.sh",
|
|
61
|
+
"prepublishOnly": "npm run build",
|
|
62
|
+
"postinstall": "node scripts/fix-node-pty.js",
|
|
63
|
+
"prepare": "husky",
|
|
64
|
+
"update:platform": "./update-platform.sh"
|
|
65
|
+
},
|
|
66
|
+
"keywords": [
|
|
67
|
+
"pixcode",
|
|
68
|
+
"ai coding agent",
|
|
69
|
+
"ai coding assistant",
|
|
70
|
+
"self-hosted ai ide",
|
|
71
|
+
"self-hosted developer tool",
|
|
72
|
+
"coding agent ui",
|
|
73
|
+
"coding agent dashboard",
|
|
74
|
+
"multi-agent orchestration",
|
|
75
|
+
"agent orchestration",
|
|
76
|
+
"openai compatible api",
|
|
77
|
+
"claude code",
|
|
78
|
+
"claude-code",
|
|
79
|
+
"claude-code-ui",
|
|
80
|
+
"claude code ui",
|
|
81
|
+
"anthropic",
|
|
82
|
+
"codex",
|
|
83
|
+
"codex-ui",
|
|
84
|
+
"openai codex",
|
|
85
|
+
"openai-codex",
|
|
86
|
+
"openai",
|
|
87
|
+
"cursor",
|
|
88
|
+
"cursor-cli",
|
|
89
|
+
"cursor cli ui",
|
|
90
|
+
"gemini",
|
|
91
|
+
"gemini-cli",
|
|
92
|
+
"gemini cli ui",
|
|
93
|
+
"qwen",
|
|
94
|
+
"qwen-code",
|
|
95
|
+
"qwen code ui",
|
|
96
|
+
"opencode",
|
|
97
|
+
"opencode-cli",
|
|
98
|
+
"opencode ui",
|
|
99
|
+
"google",
|
|
100
|
+
"mcp",
|
|
101
|
+
"mcp manager",
|
|
102
|
+
"telegram bot",
|
|
103
|
+
"api automation",
|
|
104
|
+
"git ui",
|
|
105
|
+
"terminal ui",
|
|
106
|
+
"web-ui",
|
|
107
|
+
"desktop app",
|
|
108
|
+
"mobile IDE",
|
|
109
|
+
"yapay zeka kodlama"
|
|
110
|
+
],
|
|
111
|
+
"author": "Pixcode Contributors",
|
|
112
|
+
"license": "AGPL-3.0-or-later",
|
|
113
|
+
"dependencies": {
|
|
114
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.116",
|
|
115
|
+
"@iarna/toml": "^2.2.5",
|
|
116
|
+
"@octokit/rest": "^22.0.0",
|
|
117
|
+
"@openai/codex-sdk": "^0.101.0",
|
|
118
|
+
"bcryptjs": "^3.0.3",
|
|
119
|
+
"better-sqlite3": "^12.6.2",
|
|
120
|
+
"chokidar": "^4.0.3",
|
|
121
|
+
"cors": "^2.8.5",
|
|
122
|
+
"cross-spawn": "^7.0.3",
|
|
123
|
+
"express": "^4.18.2",
|
|
124
|
+
"gray-matter": "^4.0.3",
|
|
125
|
+
"jsonwebtoken": "^9.0.2",
|
|
126
|
+
"mime-types": "^3.0.1",
|
|
127
|
+
"monaco-editor": "^0.55.1",
|
|
128
|
+
"multer": "^2.0.1",
|
|
129
|
+
"node-fetch": "^2.7.0",
|
|
130
|
+
"node-pty": "^1.2.0-beta.12",
|
|
131
|
+
"tar": "^7.5.13",
|
|
132
|
+
"web-push": "^3.6.7",
|
|
133
|
+
"ws": "^8.14.2"
|
|
134
|
+
},
|
|
135
|
+
"devDependencies": {
|
|
136
|
+
"@codemirror/lang-css": "^6.3.1",
|
|
137
|
+
"@codemirror/lang-html": "^6.4.9",
|
|
138
|
+
"@codemirror/lang-javascript": "^6.2.4",
|
|
139
|
+
"@codemirror/lang-json": "^6.0.1",
|
|
140
|
+
"@codemirror/lang-markdown": "^6.3.3",
|
|
141
|
+
"@codemirror/lang-python": "^6.2.1",
|
|
142
|
+
"@codemirror/merge": "^6.11.1",
|
|
143
|
+
"@codemirror/theme-one-dark": "^6.1.2",
|
|
144
|
+
"@commitlint/cli": "^20.5.0",
|
|
145
|
+
"@commitlint/config-conventional": "^20.5.0",
|
|
146
|
+
"@eslint/js": "^9.39.3",
|
|
147
|
+
"@heroicons/react": "^2.2.0",
|
|
148
|
+
"@monaco-editor/react": "^4.7.0",
|
|
149
|
+
"@release-it/conventional-changelog": "^10.0.5",
|
|
150
|
+
"@replit/codemirror-minimap": "^0.5.2",
|
|
151
|
+
"@tailwindcss/typography": "^0.5.16",
|
|
152
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
153
|
+
"@types/cross-spawn": "^6.0.6",
|
|
154
|
+
"@types/express": "^5.0.6",
|
|
155
|
+
"@types/node": "^22.19.7",
|
|
156
|
+
"@types/qrcode": "^1.5.6",
|
|
157
|
+
"@types/react": "^18.2.43",
|
|
158
|
+
"@types/react-dom": "^18.2.17",
|
|
159
|
+
"@uiw/react-codemirror": "^4.23.13",
|
|
160
|
+
"@vitejs/plugin-react": "^4.6.0",
|
|
161
|
+
"@xterm/addon-clipboard": "^0.1.0",
|
|
162
|
+
"@xterm/addon-fit": "^0.10.0",
|
|
163
|
+
"@xterm/addon-web-links": "^0.11.0",
|
|
164
|
+
"@xterm/addon-webgl": "^0.18.0",
|
|
165
|
+
"@xterm/xterm": "^5.5.0",
|
|
166
|
+
"auto-changelog": "^2.5.0",
|
|
167
|
+
"autoprefixer": "^10.4.16",
|
|
168
|
+
"class-variance-authority": "^0.7.1",
|
|
169
|
+
"clsx": "^2.1.1",
|
|
170
|
+
"concurrently": "^8.2.2",
|
|
171
|
+
"eslint": "^9.39.3",
|
|
172
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
173
|
+
"eslint-plugin-boundaries": "^6.0.2",
|
|
174
|
+
"eslint-plugin-import-x": "^4.16.1",
|
|
175
|
+
"eslint-plugin-react": "^7.37.5",
|
|
176
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
177
|
+
"eslint-plugin-react-refresh": "^0.5.2",
|
|
178
|
+
"eslint-plugin-tailwindcss": "^3.18.2",
|
|
179
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
180
|
+
"fuse.js": "^7.0.0",
|
|
181
|
+
"globals": "^17.4.0",
|
|
182
|
+
"gsap": "^3.12.5",
|
|
183
|
+
"husky": "^9.1.7",
|
|
184
|
+
"i18next": "^25.7.4",
|
|
185
|
+
"i18next-browser-languagedetector": "^8.2.0",
|
|
186
|
+
"jszip": "^3.10.1",
|
|
187
|
+
"katex": "^0.16.25",
|
|
188
|
+
"lint-staged": "^16.3.2",
|
|
189
|
+
"lucide-react": "^0.515.0",
|
|
190
|
+
"node-gyp": "^12.0.0",
|
|
191
|
+
"postcss": "^8.4.32",
|
|
192
|
+
"qrcode": "^1.5.4",
|
|
193
|
+
"react": "^18.2.0",
|
|
194
|
+
"react-dom": "^18.2.0",
|
|
195
|
+
"react-dropzone": "^14.2.3",
|
|
196
|
+
"react-error-boundary": "^4.1.2",
|
|
197
|
+
"react-i18next": "^16.5.3",
|
|
198
|
+
"react-markdown": "^10.1.0",
|
|
199
|
+
"react-router-dom": "^6.8.1",
|
|
200
|
+
"react-syntax-highlighter": "^16.1.1",
|
|
201
|
+
"rehype-katex": "^7.0.1",
|
|
202
|
+
"rehype-raw": "^7.0.0",
|
|
203
|
+
"release-it": "^19.0.5",
|
|
204
|
+
"remark-gfm": "^4.0.0",
|
|
205
|
+
"remark-math": "^6.0.0",
|
|
206
|
+
"sharp": "^0.34.2",
|
|
207
|
+
"tailwind-merge": "^3.3.1",
|
|
208
|
+
"tailwindcss": "^3.4.0",
|
|
209
|
+
"tsc-alias": "^1.8.16",
|
|
210
|
+
"tsx": "^4.21.0",
|
|
211
|
+
"typescript": "^5.9.3",
|
|
212
|
+
"typescript-eslint": "^8.56.1",
|
|
213
|
+
"vite": "^7.0.4"
|
|
214
|
+
},
|
|
215
|
+
"lint-staged": {
|
|
216
|
+
"src/**/*.{ts,tsx,js,jsx}": "eslint",
|
|
217
|
+
"server/**/*.{js,ts}": "eslint"
|
|
218
|
+
},
|
|
219
|
+
"overrides": {
|
|
220
|
+
"undici": ">=6.23.1"
|
|
221
|
+
}
|
|
222
|
+
}
|
package/scripts/fix-node-pty.js
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Fix node-pty spawn-helper permissions on macOS
|
|
4
|
-
*
|
|
5
|
-
* This script fixes a known issue with node-pty where the spawn-helper
|
|
6
|
-
* binary is shipped without execute permissions, causing "posix_spawnp failed" errors.
|
|
7
|
-
*
|
|
8
|
-
* @see https://github.com/microsoft/node-pty/issues/850
|
|
9
|
-
* @module scripts/fix-node-pty
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { promises as fs } from 'fs';
|
|
13
|
-
import path from 'path';
|
|
14
|
-
import { fileURLToPath } from 'url';
|
|
15
|
-
|
|
16
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
-
const __dirname = path.dirname(__filename);
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Fixes the spawn-helper binary permissions for node-pty on macOS.
|
|
21
|
-
*
|
|
22
|
-
* The node-pty package ships the spawn-helper binary without execute permissions
|
|
23
|
-
* (644 instead of 755), which causes "posix_spawnp failed" errors when trying
|
|
24
|
-
* to spawn terminal processes.
|
|
25
|
-
*
|
|
26
|
-
* This function:
|
|
27
|
-
* 1. Checks if running on macOS (darwin)
|
|
28
|
-
* 2. Locates spawn-helper binaries for both arm64 and x64 architectures
|
|
29
|
-
* 3. Sets execute permissions (755) on each binary found
|
|
30
|
-
*
|
|
31
|
-
* @async
|
|
32
|
-
* @function fixSpawnHelper
|
|
33
|
-
* @returns {Promise<void>} Resolves when permissions are fixed or skipped
|
|
34
|
-
* @example
|
|
35
|
-
* // Run as postinstall script
|
|
36
|
-
* await fixSpawnHelper();
|
|
37
|
-
*/
|
|
38
|
-
async function fixSpawnHelper() {
|
|
39
|
-
const nodeModulesPath = path.join(__dirname, '..', 'node_modules', 'node-pty', 'prebuilds');
|
|
40
|
-
|
|
41
|
-
// Only run on macOS
|
|
42
|
-
if (process.platform !== 'darwin') {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const darwinDirs = ['darwin-arm64', 'darwin-x64'];
|
|
47
|
-
|
|
48
|
-
for (const dir of darwinDirs) {
|
|
49
|
-
const spawnHelperPath = path.join(nodeModulesPath, dir, 'spawn-helper');
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
// Check if file exists
|
|
53
|
-
await fs.access(spawnHelperPath);
|
|
54
|
-
|
|
55
|
-
// Make it executable (755)
|
|
56
|
-
await fs.chmod(spawnHelperPath, 0o755);
|
|
57
|
-
console.log(`[postinstall] Fixed permissions for ${spawnHelperPath}`);
|
|
58
|
-
} catch (err) {
|
|
59
|
-
// File doesn't exist or other error - ignore
|
|
60
|
-
if (err.code !== 'ENOENT') {
|
|
61
|
-
console.warn(`[postinstall] Warning: Could not fix ${spawnHelperPath}: ${err.message}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
fixSpawnHelper().catch(console.error);
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Fix node-pty spawn-helper permissions on macOS
|
|
4
|
+
*
|
|
5
|
+
* This script fixes a known issue with node-pty where the spawn-helper
|
|
6
|
+
* binary is shipped without execute permissions, causing "posix_spawnp failed" errors.
|
|
7
|
+
*
|
|
8
|
+
* @see https://github.com/microsoft/node-pty/issues/850
|
|
9
|
+
* @module scripts/fix-node-pty
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { promises as fs } from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = path.dirname(__filename);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fixes the spawn-helper binary permissions for node-pty on macOS.
|
|
21
|
+
*
|
|
22
|
+
* The node-pty package ships the spawn-helper binary without execute permissions
|
|
23
|
+
* (644 instead of 755), which causes "posix_spawnp failed" errors when trying
|
|
24
|
+
* to spawn terminal processes.
|
|
25
|
+
*
|
|
26
|
+
* This function:
|
|
27
|
+
* 1. Checks if running on macOS (darwin)
|
|
28
|
+
* 2. Locates spawn-helper binaries for both arm64 and x64 architectures
|
|
29
|
+
* 3. Sets execute permissions (755) on each binary found
|
|
30
|
+
*
|
|
31
|
+
* @async
|
|
32
|
+
* @function fixSpawnHelper
|
|
33
|
+
* @returns {Promise<void>} Resolves when permissions are fixed or skipped
|
|
34
|
+
* @example
|
|
35
|
+
* // Run as postinstall script
|
|
36
|
+
* await fixSpawnHelper();
|
|
37
|
+
*/
|
|
38
|
+
async function fixSpawnHelper() {
|
|
39
|
+
const nodeModulesPath = path.join(__dirname, '..', 'node_modules', 'node-pty', 'prebuilds');
|
|
40
|
+
|
|
41
|
+
// Only run on macOS
|
|
42
|
+
if (process.platform !== 'darwin') {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const darwinDirs = ['darwin-arm64', 'darwin-x64'];
|
|
47
|
+
|
|
48
|
+
for (const dir of darwinDirs) {
|
|
49
|
+
const spawnHelperPath = path.join(nodeModulesPath, dir, 'spawn-helper');
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
// Check if file exists
|
|
53
|
+
await fs.access(spawnHelperPath);
|
|
54
|
+
|
|
55
|
+
// Make it executable (755)
|
|
56
|
+
await fs.chmod(spawnHelperPath, 0o755);
|
|
57
|
+
console.log(`[postinstall] Fixed permissions for ${spawnHelperPath}`);
|
|
58
|
+
} catch (err) {
|
|
59
|
+
// File doesn't exist or other error - ignore
|
|
60
|
+
if (err.code !== 'ENOENT') {
|
|
61
|
+
console.warn(`[postinstall] Warning: Could not fix ${spawnHelperPath}: ${err.message}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
fixSpawnHelper().catch(console.error);
|