-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage.json
More file actions
221 lines (221 loc) · 17.3 KB
/
Copy pathpackage.json
File metadata and controls
221 lines (221 loc) · 17.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
{
"name": "terminay",
"productName": "Terminay",
"private": true,
"version": "0.0.0",
"description": "A desktop terminal workspace built with Electron, React, and Vite.",
"author": "Mark Wylde",
"license": "MIT",
"repository": {
"type": "git",
"url": "git@github.com:markwylde/terminay.git"
},
"type": "module",
"packageManager": "npm@12.0.2",
"workspaces": [
"apps/*",
"packages/*",
"extensions/*"
],
"engines": {
"node": "24.15.0",
"npm": "12.0.2"
},
"browserslist": [
"Chrome >= 132",
"Safari >= 17.4",
"iOS >= 17.4"
],
"scripts": {
"postinstall": "node scripts/ensure-node-pty-helper-mode.mjs",
"dev": "node scripts/run-canonical-development.mjs",
"build:dev-desktop": "TERMINAY_DEVELOPMENT_SOURCE_WORKSPACES=1 vite build --config vite.server-ui.config.ts && TERMINAY_DEVELOPMENT_SOURCE_WORKSPACES=1 vite build && TERMINAY_DEVELOPMENT_SOURCE_WORKSPACES=1 vite build --config vite.server-preload.config.ts",
"dev:electron": "TERMINAY_DEVELOPMENT_SOURCE_WORKSPACES=1 tsc && vite build && electron-builder --dir --mac --arm64 && open \"release/$npm_package_version/mac-arm64/Terminay.app\"",
"build:app": "npm run build:application-graph && npm run build:server-postcompile && npm run build:server-ui:bundle && tsc && vite build && vite build --config vite.server-preload.config.ts && node scripts/build-ui-bundle-manifest.mjs dist $npm_package_version 1 remote.html",
"build:built-in-extensions": "node scripts/stage-built-in-extensions.mjs",
"build:built-in-extension-workspaces": "turbo run compile --filter=terminay-*",
"verify:built-in-extensions": "node scripts/verify-built-in-extension-artifacts.mjs build/built-in-extensions",
"build:application-graph": "turbo run build --filter=@terminay/server --filter=@terminay/web && turbo run compile --filter=terminay-*",
"build:dev-bootstrap": "npm run build:application-graph && npm run build:server-postcompile && vite build --config vite.server-preload.config.ts",
"build:server-postcompile": "npm run build:postcompile:reuse-extension-tests --workspace @terminay/server",
"test:built-in-extensions": "turbo run test:ci --filter=terminay-*",
"build": "npm run build:app && electron-builder --publish never",
"build:mac": "npm run build:app && electron-builder --mac dmg --publish never",
"build:linux": "npm run build:app && electron-builder --linux AppImage --publish never",
"lint": "biome lint .",
"build:workspaces": "turbo run build --filter=!terminay-* && turbo run compile --filter=terminay-*",
"build:server-ui": "turbo run build --filter=@terminay/web && npm run build:server-ui:bundle",
"build:server-ui:bundle": "vite build --config vite.server-ui.config.ts",
"benchmark:server-ui-archive": "npm run build:server-ui && node scripts/server-ui-archive-benchmark.mjs --renderer-directory dist-web --entry-path server.html",
"build:web": "npm run build --workspace @terminay/protocol && npm run build --workspace @terminay/client-core && npm run build --workspace @terminay/responsive-ui && npm run build:server-ui",
"build:applications": "turbo run build --filter=@terminay/server --filter=@terminay/desktop --filter=@terminay/web",
"build:shared": "turbo run build --filter=@terminay/client-core --filter=@terminay/responsive-ui --filter=@terminay/server-core",
"check:boundaries": "node scripts/check-workspace-boundaries.mjs",
"check:deterministic-artifacts": "node scripts/check-deterministic-workspace-builds.mjs",
"test:boundaries": "node --test scripts/workspace-boundaries.test.mjs",
"test:close-protection": "node --test scripts/process-cwd-foreground.test.mjs scripts/foreground-close-protection.test.mjs scripts/main-window-close-confirmation.test.mjs scripts/user-data-process-lock.test.mjs",
"typecheck:workspaces": "turbo run typecheck",
"smoke:workspaces": "npm run check:boundaries && npm run test:boundaries && npm run typecheck:workspaces && npm run check:deterministic-artifacts && npm run build:applications",
"smoke": "npm run lint && npm run test:close-protection && npm run test:desktop-diagnostics && node --test scripts/canonical-application-feature-ipc.test.mjs scripts/local-view-state.test.mjs scripts/e2e-container-contract.test.mjs scripts/provider-portable-ci.test.mjs scripts/stage-macos-app-from-dmg.test.mjs scripts/release-artifact-build-contract.test.mjs scripts/task54-canonical-runtime-journeys.test.mjs scripts/task54-legacy-architecture-gate.test.mjs && npm run build:app && node --test scripts/packaged-desktop-artifact.test.mjs && npm run smoke:workspaces && npm run test:security-boundaries",
"test:workspaces": "turbo run test:ci --concurrency=1",
"test:ci": "npm run smoke && npm run test:workspaces && npm run test:release-evidence",
"release": "node scripts/create-release.mjs",
"release:prepare-credentials": "node scripts/prepare-release-credentials.mjs",
"test:e2e": "sh scripts/run-project-environment-e2e.sh && sh scripts/run-e2e-container.sh",
"test:e2e:puzed-ssh": "npm run build --workspace @terminay/server-core && TERMINAY_RUN_PACKED_COMPOSITION_E2E=1 node --test packages/server-core/test/puzed-ssh-public-composition.test.mjs",
"test:e2e:host": "npm run build:app && playwright test",
"test:desktop-diagnostics": "npm run build:shared && npm run build --workspace @terminay/ui-bundle && node --test scripts/local-desktop-diagnostics-*.test.mjs scripts/renderer-root-diagnostics.test.mjs scripts/privileged-webrtc-transport-lifecycle.test.mjs",
"test:desktop-diagnostics-release": "npm run build:app && TERMINAY_REQUIRE_DESKTOP_DIAGNOSTICS_BUILD=1 node --test scripts/local-desktop-diagnostics-release.test.mjs",
"test:e2e:remote-real": "npm run build:app && playwright test e2e/webrtc-pairing-reconnect.spec.ts",
"test:e2e:ai-real": "playwright test e2e/ai-tab-metadata.spec.ts --grep @real-codex",
"test:e2e:ai-real-claude": "playwright test e2e/ai-tab-metadata.spec.ts --grep @real-claude-code",
"test:e2e:headed": "npm run build:app && playwright test --headed",
"test:release-config": "node --test scripts/release-config.test.mjs scripts/prepare-release-credentials.test.mjs",
"test:webrtc-runtime-selection": "node --test scripts/secure-werift-selection.test.mjs scripts/secure-werift-release-contract.test.mjs scripts/secure-werift-offline-rebuild.test.mjs scripts/secure-werift-sctp-recovery.test.mjs",
"test:release-evidence": "npm run test:release-config && npm run test:webrtc-runtime-selection && npm run test:release-readiness && npm run test:task18-web-host-readiness && npm run test:hosted-deployment-order && npm run test:standalone-artifact && npm run test:task20-artifact-contract && npm run test:security-fuzz && npm run test:security-boundaries && node --test scripts/task20-supply-chain-audit.test.mjs scripts/task20-release-lifecycle.test.mjs scripts/repository-ownership-release.test.mjs scripts/task20-direct-ui-mismatch.test.mjs && node scripts/task20-supply-chain-audit.mjs",
"test:release-readiness": "node --test scripts/release-readiness.test.mjs",
"test:task18-web-host-readiness": "npm run build:shared && npm run build --workspace @terminay/web && node --test scripts/task18-web-host-readiness.test.mjs",
"test:hosted-deployment-order": "node --test scripts/hosted-deployment-order.test.mjs",
"test:security-fuzz": "node --test scripts/security-boundary-fuzz.test.mjs",
"test:security-boundaries": "node --test scripts/security-privilege-boundary.test.mjs scripts/external-url.test.mjs",
"test:security-revocation": "npm run build --workspace @terminay/server && node --test apps/terminay-server/test/security-revocation-replay.test.mjs",
"test:shared-client-path": "node --test scripts/shared-client-path.test.mjs",
"release:readiness": "node scripts/release-readiness.mjs",
"test:control-protocol": "node --test scripts/control-protocol.test.mjs",
"test:control-server": "node --test scripts/control-server.test.mjs",
"test:server-terminal-runtime": "node --test scripts/server-terminal-authority-host-bookkeeping.test.mjs scripts/task9-embedded-agent-authority.test.mjs",
"test:pty-packaged-macos": "npm run build:app && CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --dir --mac --arm64 --publish never && TERMINAY_PACKAGED_APP=release/0.0.0/mac-arm64/Terminay.app node --test scripts/pty-packaged-macos.test.mjs",
"test:packaged-startup-macos": "TERMINAY_PACKAGED_APP=${TERMINAY_PACKAGED_APP:-release/0.0.0/mac-arm64/Terminay.app} node --test scripts/packaged-desktop-startup-smoke.test.mjs",
"test:packaged-built-in-extension-runtime": "node --test scripts/packaged-built-in-extension-runtime.test.mjs",
"test:packaged-built-in-extension-runtime:linux": "sh scripts/run-packaged-built-in-extension-runtime-linux.sh",
"test:pty-packaged-linux": "npm run build:app && electron-builder --linux AppImage --x64 --publish never && TERMINAY_PACKAGED_APPIMAGE=release/0.0.0/Terminay-Linux-0.0.0.AppImage xvfb-run --auto-servernum node --test scripts/pty-packaged-linux.test.mjs",
"test:terminal-input": "node --test scripts/terminal-input.test.mjs",
"test:parakeet-runtime": "node --test scripts/parakeet-runtime.test.mjs",
"test:parakeet-real": "TERMINAY_TEST_REAL_PARAKEET=1 node scripts/parakeet-real-macos-smoke.mjs",
"test:recording-service": "node --test scripts/recording-service.test.mjs",
"test:recording-replay": "node --test scripts/recording-replay.test.mjs",
"test:vault-reference": "node --test scripts/vault-reference.test.mjs",
"test:headless-vault": "npm run build --workspace @terminay/server-core && node --test packages/server-core/test/headless-vault.test.mjs",
"test:mcp-install": "node --test scripts/mcp-install-codex.test.mjs scripts/mcp-install-cursor-gemini.test.mjs scripts/mcp-install-opencode.test.mjs scripts/mcp-install-providers.test.mjs scripts/mcp-cli-real-container-contract.test.mjs",
"e2e:mcp-cli-real-tests": "sh scripts/run-mcp-cli-real-tests.sh",
"test:mcp-stdio": "node --test scripts/mcp-stdio.test.mjs",
"test:signal-parser": "node --test scripts/terminal-signal-parser.test.mjs",
"test:signal-interpreters": "node --test scripts/signal-interpreters.test.mjs",
"test:safe-storage-import": "node --test scripts/safe-storage-import.test.mjs",
"test:server-state-crash": "node --test scripts/server-state-sqlite-crash.test.mjs",
"test:server-runtime": "npm run build:applications && node --test scripts/standalone-server-cli.test.mjs",
"test:standalone-artifact": "node --test scripts/standalone-artifact.test.mjs scripts/task20-standalone-release-archive.test.mjs",
"test:task6-runtime-layout": "node --test scripts/task6-runtime-layout.test.mjs",
"test:ghcr-image": "node --test scripts/ghcr-image.test.mjs",
"test:task20-artifact-contract": "node --test scripts/task20-release-artifact.test.mjs scripts/task20-release-lifecycle.test.mjs",
"test:docker-pairing-smoke": "node --test scripts/docker-pairing-smoke.test.mjs",
"test:remote-stream-transport": "npm run build:shared && npm run build --workspace @terminay/server && node --test scripts/websocket-byte-transport-e2e.test.mjs",
"smoke:docker-pairing": "node scripts/docker-pairing-smoke.mjs",
"test:standalone-server": "npm run build:shared && npm run build --workspace @terminay/server && npm run test --workspace @terminay/server && node --test scripts/standalone-server-cli.test.mjs scripts/standalone-artifact.test.mjs",
"test:activity-store": "node --test scripts/terminal-activity-store.test.mjs",
"test:activity-forwarding": "node --test scripts/terminal-activity-forwarder.test.mjs",
"test:agent-status": "node --test scripts/agent-status-store.test.mjs",
"test:agent-runtime": "npm run build --workspace @terminay/server-core && node --test packages/server-core/test/agent-service.test.mjs packages/server-core/test/agent-protocol.test.mjs packages/server-core/test/agent-terminal-integration.test.mjs packages/server-core/test/extension-agent-runtime.test.mjs && node --test scripts/agent-extension-boundaries.test.mjs",
"test:agent-extension-compat": "npm run test:compat --workspace terminay-agent-codex && npm run test:compat --workspace terminay-agent-claude-code && npm run test:compat --workspace terminay-agent-cursor && npm run test:compat --workspace terminay-agent-grok && npm run test:compat --workspace terminay-agent-omp",
"test:agent-extension-packages": "npm run test --workspace terminay-plugin-ssh && npm run test --workspace terminay-plugin-puzed && npm run test --workspace terminay-agent-codex && npm run test --workspace terminay-agent-claude-code && npm run test --workspace terminay-agent-cursor && npm run test --workspace terminay-agent-grok && npm run test --workspace terminay-agent-opencode && npm run test --workspace terminay-agent-omp",
"test:agent-ui": "node --test scripts/agent-ui-components.test.mjs",
"test:macro-preview": "node --test scripts/macro-preview.test.mjs",
"test:connection-menu": "node --test scripts/native-menu-host-contract.test.mjs scripts/session-transport-host-contract.test.mjs scripts/web-session-heartbeat-reconnect.test.mjs",
"test:local-view-state": "node --test scripts/local-view-state.test.mjs",
"test:terminal-panel-context": "npm run build --workspace @terminay/client-core && node --test scripts/terminal-panel-binding-fence.test.mjs scripts/terminal-panel-context.test.mjs scripts/terminal-panel-input-queue.test.mjs scripts/terminal-webgl-renderer.test.mjs",
"test:shared-responsive-entry": "node --test scripts/canonical-workspace-production-graph.test.mjs",
"acceptance:app-identity": "node --test scripts/canonical-workspace-production-graph.test.mjs",
"acceptance:app-parity": "npm run acceptance:app-identity",
"acceptance:app-screenshots": "node scripts/shared-app-screenshot-compare.mjs",
"test:agents": "npm run test:agent-status && npm run test:agent-runtime && npm run test:agent-extension-compat && npm run test:agent-extension-packages && npm run test:agent-ui",
"test:project-tab-drag": "node --test scripts/project-tab-drag.test.mjs",
"test:project-tab-overflow": "node --test --experimental-strip-types scripts/project-tab-overflow.test.mjs",
"test:activity-count-badge": "node --test --experimental-strip-types scripts/activity-count-badge.test.mjs",
"test:project-environment-ui": "npm run build --workspace @terminay/client-core && node --test packages/client-core/test/project-environments.test.mjs scripts/project-environment-ui.test.mjs",
"test:git-worktree-status": "node --test scripts/git-worktree-status.test.mjs",
"test:file-viewer-diff": "node --test scripts/file-viewer-diff.test.mjs",
"test:file-viewer-draft": "node --test scripts/file-viewer-draft.test.mjs",
"test:file-viewer-performant": "node --test scripts/file-viewer-performant.test.mjs",
"test:quick-push-default": "node --test scripts/quick-push-default-worktree.test.mjs",
"test:quick-push-pr": "node --test scripts/quick-push-pr.test.mjs",
"test:remote-device-keys": "node --test scripts/device-keys-indexeddb.test.mjs",
"test:remote-webrtc-service": "node --test scripts/webrtc-service-runtime.test.mjs",
"test:remote-webrtc-host": "node --test scripts/webrtc-host-revocation.test.mjs",
"test:server-ui-archive-integration": "node scripts/server-ui-archive-integration-proof.mjs",
"test:remote-webrtc": "node --test scripts/webrtc-pairing.test.mjs",
"test:spike-headless-webrtc": "node --test scripts/headless-webrtc-werift.test.mjs",
"test:spike-headless-webrtc-node-datachannel": "node --test scripts/headless-webrtc-node-datachannel.test.mjs",
"test:spike-production-headless-webrtc": "node --test scripts/production-headless-webrtc-node-datachannel.test.mjs",
"test:spike-production-headless-webrtc-secure-werift": "node --test scripts/production-headless-webrtc-secure-werift.test.mjs",
"preview": "vite preview"
},
"dependencies": {
"@fontsource/open-sans": "^5.3.0",
"@mdx-js/mdx": "^3.1.1",
"@mdx-js/react": "^3.1.1",
"@mdxeditor/editor": "^4.2.1",
"@modelcontextprotocol/sdk": "^1.29.0",
"@monaco-editor/react": "^4.7.0",
"@tabler/icons-react": "^3.44.0",
"@terminay/client-core": "1.0.0",
"@terminay/responsive-ui": "1.0.0",
"@xterm/addon-fit": "0.12.0-beta.299",
"@xterm/addon-search": "0.17.0-beta.299",
"@xterm/addon-serialize": "0.15.0-beta.299",
"@xterm/addon-unicode11": "0.10.0-beta.299",
"@xterm/addon-web-links": "0.13.0-beta.299",
"@xterm/addon-webgl": "0.20.0-beta.298",
"@xterm/headless": "6.1.0-beta.301",
"@xterm/xterm": "6.1.0-beta.302",
"dockview": "^6.6.1",
"esbuild": "0.28.2",
"eta": "^4.6.0",
"framer-motion": "^12.40.0",
"highlight.js": "^11.11.1",
"lucide-react": "^1.17.0",
"markdown-it": "^14.2.0",
"monaco-editor": "^0.55.1",
"node-pty": "^1.1.0",
"npm": "12.0.2",
"openai": "^6.45.0",
"pdfjs-dist": "^6.0.227",
"qrcode": "^1.5.4",
"react": "^19.2.7",
"react-dom": "^19.2.7",
"selfsigned": "^5.5.0",
"ws": "^8.21.0"
},
"overrides": {
"@hono/node-server": "2.0.12",
"brace-expansion": "5.0.9",
"fast-uri": "4.1.4",
"monaco-editor": {
"dompurify": "3.4.13"
},
"pvutils": "1.1.5"
},
"devDependencies": {
"@biomejs/biome": "^2.5.0",
"@playwright/test": "^1.60.0",
"@types/markdown-it": "^14.1.2",
"@types/node": "^24.13.3",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/ws": "^8.18.1",
"@vitejs/plugin-react": "^6.0.2",
"acorn": "^8.18.0",
"electron": "^42.3.2",
"electron-builder": "^26.15.3",
"turbo": "2.10.12",
"typescript": "^6.0.3",
"vite": "^8.0.16",
"vite-plugin-electron": "^1.0.4",
"vite-plugin-electron-renderer": "^1.0.0"
},
"main": "dist-electron/main.js",
"allowScripts": {
"node-pty@1.1.0": true,
"esbuild@0.28.2": true
}
}