gitspace 0.2.0-rc.4 → 0.2.0-rc.40
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/README.md +160 -148
- package/package.json +59 -30
- package/.claude/settings.local.json +0 -25
- package/.gitspace/bundle.json +0 -50
- package/.gitspace/select/01-status.sh +0 -40
- package/.gitspace/setup/01-install-deps.sh +0 -12
- package/.gitspace/setup/02-typecheck.sh +0 -16
- package/AGENTS.md +0 -451
- package/CLAUDE.md +0 -1
- package/bun.lock +0 -647
- package/docs/CONNECTION.md +0 -623
- package/docs/GATEWAY-WORKER.md +0 -319
- package/docs/GETTING-STARTED.md +0 -448
- package/docs/GITSPACE-PLATFORM.md +0 -1819
- package/docs/INFRASTRUCTURE.md +0 -1347
- package/docs/PROTOCOL.md +0 -619
- package/docs/QUICKSTART.md +0 -183
- package/docs/RELAY.md +0 -327
- package/docs/REMOTE-DESIGN.md +0 -549
- package/docs/ROADMAP.md +0 -564
- package/docs/SITE_DOCS_FIGMA_MAKE.md +0 -1169
- package/docs/STACK-DESIGN.md +0 -588
- package/docs/UNIFIED_ARCHITECTURE.md +0 -292
- package/experiments/pty-benchmark.ts +0 -148
- package/experiments/pty-latency.ts +0 -100
- package/experiments/router/client.ts +0 -199
- package/experiments/router/protocol.ts +0 -74
- package/experiments/router/router.ts +0 -217
- package/experiments/router/session.ts +0 -180
- package/experiments/router/test.ts +0 -133
- package/experiments/socket-bandwidth.ts +0 -77
- package/homebrew/gitspace.rb +0 -45
- package/landing-page/ATTRIBUTIONS.md +0 -3
- package/landing-page/README.md +0 -11
- package/landing-page/bun.lock +0 -801
- package/landing-page/guidelines/Guidelines.md +0 -61
- package/landing-page/index.html +0 -37
- package/landing-page/package.json +0 -90
- package/landing-page/postcss.config.mjs +0 -15
- package/landing-page/public/_redirects +0 -1
- package/landing-page/public/favicon.png +0 -0
- package/landing-page/src/app/App.tsx +0 -53
- package/landing-page/src/app/components/figma/ImageWithFallback.tsx +0 -27
- package/landing-page/src/app/components/ui/accordion.tsx +0 -66
- package/landing-page/src/app/components/ui/alert-dialog.tsx +0 -157
- package/landing-page/src/app/components/ui/alert.tsx +0 -66
- package/landing-page/src/app/components/ui/aspect-ratio.tsx +0 -11
- package/landing-page/src/app/components/ui/avatar.tsx +0 -53
- package/landing-page/src/app/components/ui/badge.tsx +0 -46
- package/landing-page/src/app/components/ui/breadcrumb.tsx +0 -109
- package/landing-page/src/app/components/ui/button.tsx +0 -57
- package/landing-page/src/app/components/ui/calendar.tsx +0 -75
- package/landing-page/src/app/components/ui/card.tsx +0 -92
- package/landing-page/src/app/components/ui/carousel.tsx +0 -241
- package/landing-page/src/app/components/ui/chart.tsx +0 -353
- package/landing-page/src/app/components/ui/checkbox.tsx +0 -32
- package/landing-page/src/app/components/ui/collapsible.tsx +0 -33
- package/landing-page/src/app/components/ui/command.tsx +0 -177
- package/landing-page/src/app/components/ui/context-menu.tsx +0 -252
- package/landing-page/src/app/components/ui/dialog.tsx +0 -135
- package/landing-page/src/app/components/ui/drawer.tsx +0 -132
- package/landing-page/src/app/components/ui/dropdown-menu.tsx +0 -257
- package/landing-page/src/app/components/ui/form.tsx +0 -168
- package/landing-page/src/app/components/ui/hover-card.tsx +0 -44
- package/landing-page/src/app/components/ui/input-otp.tsx +0 -77
- package/landing-page/src/app/components/ui/input.tsx +0 -21
- package/landing-page/src/app/components/ui/label.tsx +0 -24
- package/landing-page/src/app/components/ui/menubar.tsx +0 -276
- package/landing-page/src/app/components/ui/navigation-menu.tsx +0 -168
- package/landing-page/src/app/components/ui/pagination.tsx +0 -127
- package/landing-page/src/app/components/ui/popover.tsx +0 -48
- package/landing-page/src/app/components/ui/progress.tsx +0 -31
- package/landing-page/src/app/components/ui/radio-group.tsx +0 -45
- package/landing-page/src/app/components/ui/resizable.tsx +0 -56
- package/landing-page/src/app/components/ui/scroll-area.tsx +0 -58
- package/landing-page/src/app/components/ui/select.tsx +0 -189
- package/landing-page/src/app/components/ui/separator.tsx +0 -28
- package/landing-page/src/app/components/ui/sheet.tsx +0 -139
- package/landing-page/src/app/components/ui/sidebar.tsx +0 -726
- package/landing-page/src/app/components/ui/skeleton.tsx +0 -13
- package/landing-page/src/app/components/ui/slider.tsx +0 -63
- package/landing-page/src/app/components/ui/sonner.tsx +0 -25
- package/landing-page/src/app/components/ui/switch.tsx +0 -31
- package/landing-page/src/app/components/ui/table.tsx +0 -116
- package/landing-page/src/app/components/ui/tabs.tsx +0 -66
- package/landing-page/src/app/components/ui/textarea.tsx +0 -18
- package/landing-page/src/app/components/ui/toggle-group.tsx +0 -73
- package/landing-page/src/app/components/ui/toggle.tsx +0 -47
- package/landing-page/src/app/components/ui/tooltip.tsx +0 -61
- package/landing-page/src/app/components/ui/use-mobile.ts +0 -21
- package/landing-page/src/app/components/ui/utils.ts +0 -6
- package/landing-page/src/components/docs/DocsContent.tsx +0 -724
- package/landing-page/src/components/docs/DocsSidebar.tsx +0 -84
- package/landing-page/src/components/landing/CTA.tsx +0 -59
- package/landing-page/src/components/landing/Comparison.tsx +0 -84
- package/landing-page/src/components/landing/FaultyTerminal.tsx +0 -424
- package/landing-page/src/components/landing/Features.tsx +0 -201
- package/landing-page/src/components/landing/Hero.tsx +0 -142
- package/landing-page/src/components/landing/Pricing.tsx +0 -140
- package/landing-page/src/components/landing/Roadmap.tsx +0 -86
- package/landing-page/src/components/landing/Security.tsx +0 -81
- package/landing-page/src/components/landing/TerminalWindow.tsx +0 -27
- package/landing-page/src/components/landing/UseCases.tsx +0 -55
- package/landing-page/src/components/landing/Workflow.tsx +0 -101
- package/landing-page/src/components/layout/DashboardNavbar.tsx +0 -37
- package/landing-page/src/components/layout/Footer.tsx +0 -55
- package/landing-page/src/components/layout/LandingNavbar.tsx +0 -82
- package/landing-page/src/components/ui/badge.tsx +0 -39
- package/landing-page/src/components/ui/breadcrumb.tsx +0 -115
- package/landing-page/src/components/ui/button.tsx +0 -57
- package/landing-page/src/components/ui/card.tsx +0 -79
- package/landing-page/src/components/ui/mock-terminal.tsx +0 -68
- package/landing-page/src/components/ui/separator.tsx +0 -28
- package/landing-page/src/lib/utils.ts +0 -6
- package/landing-page/src/main.tsx +0 -10
- package/landing-page/src/pages/Dashboard.tsx +0 -133
- package/landing-page/src/pages/DocsPage.tsx +0 -79
- package/landing-page/src/pages/LandingPage.tsx +0 -31
- package/landing-page/src/pages/TerminalView.tsx +0 -106
- package/landing-page/src/styles/fonts.css +0 -0
- package/landing-page/src/styles/index.css +0 -3
- package/landing-page/src/styles/tailwind.css +0 -4
- package/landing-page/src/styles/theme.css +0 -181
- package/landing-page/vite.config.ts +0 -19
- package/scripts/build.ts +0 -298
- package/scripts/release.ts +0 -140
- package/src/__tests__/test-utils.ts +0 -298
- package/src/commands/__tests__/serve-messages.test.ts +0 -190
- package/src/commands/access.ts +0 -298
- package/src/commands/add.ts +0 -452
- package/src/commands/auth.ts +0 -369
- package/src/commands/connect.ts +0 -287
- package/src/commands/directory.ts +0 -16
- package/src/commands/host.ts +0 -468
- package/src/commands/identity.ts +0 -184
- package/src/commands/list.ts +0 -200
- package/src/commands/relay.ts +0 -315
- package/src/commands/remove.ts +0 -241
- package/src/commands/serve.ts +0 -1536
- package/src/commands/share.ts +0 -451
- package/src/commands/status.ts +0 -125
- package/src/commands/switch.ts +0 -353
- package/src/commands/tmux.ts +0 -317
- package/src/core/__tests__/access.test.ts +0 -240
- package/src/core/access.ts +0 -277
- package/src/core/bundle.ts +0 -342
- package/src/core/config.ts +0 -510
- package/src/core/git.ts +0 -317
- package/src/core/github.ts +0 -151
- package/src/core/identity.ts +0 -631
- package/src/core/linear.ts +0 -225
- package/src/core/shell.ts +0 -161
- package/src/core/trusted-relays.ts +0 -315
- package/src/index.ts +0 -838
- package/src/lib/remote-session/index.ts +0 -7
- package/src/lib/remote-session/protocol.ts +0 -267
- package/src/lib/remote-session/session-handler.ts +0 -581
- package/src/lib/remote-session/workspace-scanner.ts +0 -167
- package/src/lib/tmux-lite/README.md +0 -81
- package/src/lib/tmux-lite/cli.ts +0 -824
- package/src/lib/tmux-lite/crypto/__tests__/helpers/handshake-runner.ts +0 -349
- package/src/lib/tmux-lite/crypto/__tests__/helpers/mock-relay.ts +0 -291
- package/src/lib/tmux-lite/crypto/__tests__/helpers/test-identities.ts +0 -142
- package/src/lib/tmux-lite/crypto/__tests__/integration/authorization.integration.test.ts +0 -339
- package/src/lib/tmux-lite/crypto/__tests__/integration/e2e-communication.integration.test.ts +0 -477
- package/src/lib/tmux-lite/crypto/__tests__/integration/error-handling.integration.test.ts +0 -499
- package/src/lib/tmux-lite/crypto/__tests__/integration/handshake.integration.test.ts +0 -371
- package/src/lib/tmux-lite/crypto/__tests__/integration/security.integration.test.ts +0 -573
- package/src/lib/tmux-lite/crypto/access-control.test.ts +0 -512
- package/src/lib/tmux-lite/crypto/access-control.ts +0 -320
- package/src/lib/tmux-lite/crypto/frames.test.ts +0 -262
- package/src/lib/tmux-lite/crypto/frames.ts +0 -141
- package/src/lib/tmux-lite/crypto/handshake.ts +0 -894
- package/src/lib/tmux-lite/crypto/identity.test.ts +0 -220
- package/src/lib/tmux-lite/crypto/identity.ts +0 -286
- package/src/lib/tmux-lite/crypto/index.ts +0 -51
- package/src/lib/tmux-lite/crypto/invites.test.ts +0 -381
- package/src/lib/tmux-lite/crypto/invites.ts +0 -215
- package/src/lib/tmux-lite/crypto/keyexchange.ts +0 -435
- package/src/lib/tmux-lite/crypto/keys.test.ts +0 -58
- package/src/lib/tmux-lite/crypto/keys.ts +0 -47
- package/src/lib/tmux-lite/crypto/secretbox.test.ts +0 -169
- package/src/lib/tmux-lite/crypto/secretbox.ts +0 -124
- package/src/lib/tmux-lite/handshake-handler.ts +0 -451
- package/src/lib/tmux-lite/protocol.test.ts +0 -307
- package/src/lib/tmux-lite/protocol.ts +0 -266
- package/src/lib/tmux-lite/relay-client.ts +0 -506
- package/src/lib/tmux-lite/server-lifecycle.test.ts +0 -208
- package/src/lib/tmux-lite/server.ts +0 -1254
- package/src/lib/tmux-lite/shell-integration.sh +0 -37
- package/src/lib/tmux-lite/terminal-queries.test.ts +0 -54
- package/src/lib/tmux-lite/terminal-queries.ts +0 -49
- package/src/relay/__tests__/e2e-flow.test.ts +0 -1284
- package/src/relay/__tests__/helpers/auth.ts +0 -354
- package/src/relay/__tests__/helpers/ports.ts +0 -51
- package/src/relay/__tests__/protocol-validation.test.ts +0 -265
- package/src/relay/authorization.ts +0 -303
- package/src/relay/embedded-assets.generated.d.ts +0 -15
- package/src/relay/identity.ts +0 -352
- package/src/relay/index.ts +0 -57
- package/src/relay/pipes.test.ts +0 -427
- package/src/relay/pipes.ts +0 -195
- package/src/relay/protocol.ts +0 -804
- package/src/relay/registries.test.ts +0 -437
- package/src/relay/registries.ts +0 -593
- package/src/relay/server.test.ts +0 -1323
- package/src/relay/server.ts +0 -1094
- package/src/relay/signing.ts +0 -238
- package/src/relay/types.ts +0 -69
- package/src/serve/client-session-manager.ts +0 -622
- package/src/serve/daemon.ts +0 -497
- package/src/serve/pty-session.ts +0 -236
- package/src/serve/types.ts +0 -169
- package/src/shared/components/Flow.tsx +0 -453
- package/src/shared/components/Flow.tui.tsx +0 -343
- package/src/shared/components/Flow.web.tsx +0 -442
- package/src/shared/components/Inbox.tsx +0 -446
- package/src/shared/components/Inbox.tui.tsx +0 -262
- package/src/shared/components/Inbox.web.tsx +0 -329
- package/src/shared/components/MachineList.tsx +0 -187
- package/src/shared/components/MachineList.tui.tsx +0 -161
- package/src/shared/components/MachineList.web.tsx +0 -210
- package/src/shared/components/ProjectList.tsx +0 -176
- package/src/shared/components/ProjectList.tui.tsx +0 -109
- package/src/shared/components/ProjectList.web.tsx +0 -143
- package/src/shared/components/SpacesBrowser.tsx +0 -332
- package/src/shared/components/SpacesBrowser.tui.tsx +0 -163
- package/src/shared/components/SpacesBrowser.web.tsx +0 -221
- package/src/shared/components/index.ts +0 -103
- package/src/shared/hooks/index.ts +0 -16
- package/src/shared/hooks/useNavigation.ts +0 -226
- package/src/shared/index.ts +0 -122
- package/src/shared/providers/LocalMachineProvider.ts +0 -425
- package/src/shared/providers/MachineProvider.ts +0 -165
- package/src/shared/providers/RemoteMachineProvider.ts +0 -439
- package/src/shared/providers/index.ts +0 -26
- package/src/shared/types.ts +0 -145
- package/src/tui/adapters.ts +0 -120
- package/src/tui/app.tsx +0 -1816
- package/src/tui/components/Terminal.tsx +0 -580
- package/src/tui/hooks/index.ts +0 -35
- package/src/tui/hooks/useAppState.ts +0 -314
- package/src/tui/hooks/useDaemonStatus.ts +0 -174
- package/src/tui/hooks/useInboxTUI.ts +0 -114
- package/src/tui/hooks/useRemoteMachines.ts +0 -208
- package/src/tui/index.ts +0 -24
- package/src/tui/state.ts +0 -299
- package/src/tui/terminal-bracketed-paste.test.ts +0 -45
- package/src/tui/terminal-bracketed-paste.ts +0 -47
- package/src/types/bundle.ts +0 -112
- package/src/types/config.ts +0 -89
- package/src/types/errors.ts +0 -206
- package/src/types/identity.ts +0 -284
- package/src/types/workspace-fuzzy.ts +0 -49
- package/src/types/workspace.ts +0 -151
- package/src/utils/bun-socket-writer.ts +0 -80
- package/src/utils/deps.ts +0 -127
- package/src/utils/fuzzy-match.ts +0 -125
- package/src/utils/logger.ts +0 -127
- package/src/utils/markdown.ts +0 -254
- package/src/utils/onboarding.ts +0 -229
- package/src/utils/prompts.ts +0 -114
- package/src/utils/run-commands.ts +0 -112
- package/src/utils/run-scripts.ts +0 -142
- package/src/utils/sanitize.ts +0 -98
- package/src/utils/secrets.ts +0 -122
- package/src/utils/shell-escape.ts +0 -40
- package/src/utils/utf8.ts +0 -79
- package/src/utils/workspace-state.ts +0 -47
- package/src/web/README.md +0 -73
- package/src/web/bun.lock +0 -575
- package/src/web/eslint.config.js +0 -23
- package/src/web/index.html +0 -16
- package/src/web/package.json +0 -37
- package/src/web/public/vite.svg +0 -1
- package/src/web/src/App.tsx +0 -604
- package/src/web/src/assets/react.svg +0 -1
- package/src/web/src/components/Terminal.tsx +0 -207
- package/src/web/src/hooks/useRelayConnection.ts +0 -224
- package/src/web/src/hooks/useTerminal.ts +0 -699
- package/src/web/src/index.css +0 -55
- package/src/web/src/lib/crypto/__tests__/web-terminal.test.ts +0 -1158
- package/src/web/src/lib/crypto/frames.ts +0 -205
- package/src/web/src/lib/crypto/handshake.ts +0 -396
- package/src/web/src/lib/crypto/identity.ts +0 -128
- package/src/web/src/lib/crypto/keyexchange.ts +0 -246
- package/src/web/src/lib/crypto/relay-signing.ts +0 -53
- package/src/web/src/lib/invite.ts +0 -58
- package/src/web/src/lib/storage/identity-store.ts +0 -94
- package/src/web/src/main.tsx +0 -10
- package/src/web/src/types/identity.ts +0 -45
- package/src/web/tsconfig.app.json +0 -28
- package/src/web/tsconfig.json +0 -7
- package/src/web/tsconfig.node.json +0 -26
- package/src/web/vite.config.ts +0 -31
- package/todo-security.md +0 -92
- package/tsconfig.json +0 -23
- package/worker/bun.lock +0 -237
- package/worker/package.json +0 -22
- package/worker/schema.sql +0 -96
- package/worker/src/handlers/auth.ts +0 -451
- package/worker/src/handlers/subdomains.ts +0 -376
- package/worker/src/handlers/user.ts +0 -98
- package/worker/src/index.ts +0 -70
- package/worker/src/middleware/auth.ts +0 -152
- package/worker/src/services/cloudflare.ts +0 -609
- package/worker/src/types.ts +0 -96
- package/worker/tsconfig.json +0 -15
- package/worker/wrangler.toml +0 -26
package/README.md
CHANGED
|
@@ -77,7 +77,7 @@ You can also use traditional CLI commands:
|
|
|
77
77
|
#### 1. Add Your First Project
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
gssh add
|
|
80
|
+
gssh project add
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
Select a GitHub repository, and GitSpace will:
|
|
@@ -90,20 +90,36 @@ Select a GitHub repository, and GitSpace will:
|
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
92
|
# Create a workspace from a Linear issue (if configured)
|
|
93
|
-
gssh add
|
|
93
|
+
gssh workspace add --project my-project
|
|
94
94
|
|
|
95
95
|
# Or create a workspace with a custom name
|
|
96
|
-
gssh add my-feature
|
|
96
|
+
gssh workspace add my-feature --project my-project
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
#### 3.
|
|
99
|
+
#### 3. Target a Workspace
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
|
-
#
|
|
103
|
-
gssh
|
|
102
|
+
# List workspaces in a project
|
|
103
|
+
gssh workspace list --project <project-name>
|
|
104
104
|
|
|
105
|
-
#
|
|
106
|
-
gssh
|
|
105
|
+
# Show context for a specific workspace
|
|
106
|
+
gssh workspace context --project my-project --workspace my-feature
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Workspace Session Mode (`space`)
|
|
110
|
+
|
|
111
|
+
When GitSpace opens a workspace-scoped terminal session, it injects a `space` shell function (bash/zsh).
|
|
112
|
+
|
|
113
|
+
- Use `space ...` for workspace operations without repeating `--project` and `--workspace`
|
|
114
|
+
- `gssh` commands are restricted in this mode to avoid cross-workspace mistakes
|
|
115
|
+
- `gssh machine tmux ...` is blocked inside workspace sessions
|
|
116
|
+
|
|
117
|
+
Examples:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
space context --json
|
|
121
|
+
space review hunks src/app.ts --format json
|
|
122
|
+
space review add-hunk src/app.ts --index 1 --approve --body "Looks good"
|
|
107
123
|
```
|
|
108
124
|
|
|
109
125
|
## Repo Config Bundles
|
|
@@ -117,14 +133,15 @@ A bundle is a directory (typically `.gitspace/`) containing:
|
|
|
117
133
|
```
|
|
118
134
|
.gitspace/
|
|
119
135
|
├── bundle.json # Bundle manifest with onboarding steps
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
└──
|
|
127
|
-
└──
|
|
136
|
+
└── scripts/
|
|
137
|
+
├── pre/ # Deprecated: migrate scripts into ordered setup/
|
|
138
|
+
│ └── 01-copy-env.sh
|
|
139
|
+
├── setup/ # Scripts for setup runs (when bundle/value state changes)
|
|
140
|
+
│ └── 01-install-deps.sh
|
|
141
|
+
├── select/ # Scripts to run on each new terminal attach
|
|
142
|
+
│ └── 01-status.sh
|
|
143
|
+
└── remove/ # Scripts to run before workspace deletion
|
|
144
|
+
└── 01-cleanup.sh
|
|
128
145
|
```
|
|
129
146
|
|
|
130
147
|
### Bundle Manifest (`bundle.json`)
|
|
@@ -179,27 +196,27 @@ A bundle is a directory (typically `.gitspace/`) containing:
|
|
|
179
196
|
|
|
180
197
|
### Using Bundle Values in Scripts
|
|
181
198
|
|
|
182
|
-
Bundle values are passed to scripts as environment variables:
|
|
199
|
+
Bundle values are passed to scripts as environment variables using the configured bundle keys:
|
|
183
200
|
|
|
184
|
-
-
|
|
185
|
-
-
|
|
201
|
+
- `<KEY>` - Regular or secret value using the exact `configKey` from `bundle.json`
|
|
202
|
+
- `<NORMALIZED_KEY>` - Uppercase snake-case alias (for example, `teamName` -> `TEAM_NAME`)
|
|
186
203
|
|
|
187
204
|
**Example script:**
|
|
188
205
|
|
|
189
206
|
```bash
|
|
190
207
|
#!/bin/bash
|
|
191
|
-
# .gitspace/select/01-status.sh
|
|
208
|
+
# .gitspace/scripts/select/01-status.sh
|
|
192
209
|
|
|
193
210
|
WORKSPACE_NAME=$1
|
|
194
211
|
REPOSITORY=$2
|
|
195
212
|
|
|
196
213
|
# Access bundle values
|
|
197
|
-
if [ -n "$
|
|
198
|
-
echo "Welcome, $
|
|
214
|
+
if [ -n "$TEAM_NAME" ]; then
|
|
215
|
+
echo "Welcome, $TEAM_NAME team!"
|
|
199
216
|
fi
|
|
200
217
|
|
|
201
218
|
# Access secrets (stored securely in OS keychain)
|
|
202
|
-
if [ -n "$
|
|
219
|
+
if [ -n "$API_KEY" ]; then
|
|
203
220
|
echo "API Key configured"
|
|
204
221
|
fi
|
|
205
222
|
```
|
|
@@ -208,9 +225,9 @@ fi
|
|
|
208
225
|
|
|
209
226
|
Bundles can be loaded from:
|
|
210
227
|
|
|
211
|
-
1. **In-repo** (automatic): `.gitspace
|
|
212
|
-
2. **Local path**: `gssh add
|
|
213
|
-
3. **Remote URL**: `gssh add
|
|
228
|
+
1. **In-repo** (automatic): `.gitspace/` directory in the cloned repository
|
|
229
|
+
2. **Local path**: `gssh project add --bundle-path /path/to/bundle/`
|
|
230
|
+
3. **Remote URL**: `gssh project add --bundle-url https://example.com/bundle.zip`
|
|
214
231
|
|
|
215
232
|
## Commands Reference
|
|
216
233
|
|
|
@@ -218,12 +235,12 @@ Bundles can be loaded from:
|
|
|
218
235
|
|
|
219
236
|
Launch the interactive terminal UI.
|
|
220
237
|
|
|
221
|
-
### `gssh add
|
|
238
|
+
### `gssh project add`
|
|
222
239
|
|
|
223
240
|
Add a new project from GitHub.
|
|
224
241
|
|
|
225
242
|
```bash
|
|
226
|
-
gssh add
|
|
243
|
+
gssh project add [options]
|
|
227
244
|
|
|
228
245
|
Options:
|
|
229
246
|
--bundle-url <url> Load bundle from remote URL (zip archive)
|
|
@@ -234,12 +251,12 @@ Options:
|
|
|
234
251
|
--linear-key <key> Provide Linear API key via flag
|
|
235
252
|
```
|
|
236
253
|
|
|
237
|
-
### `gssh add [workspace-name]
|
|
254
|
+
### `gssh workspace add [workspace-name] --project <project-name>`
|
|
238
255
|
|
|
239
256
|
Create a new workspace in the current project.
|
|
240
257
|
|
|
241
258
|
```bash
|
|
242
|
-
gssh add [workspace-name] [options]
|
|
259
|
+
gssh workspace add [workspace-name] --project <project-name> [options]
|
|
243
260
|
|
|
244
261
|
Options:
|
|
245
262
|
--branch <name> Specify different branch name from workspace name
|
|
@@ -247,70 +264,52 @@ Options:
|
|
|
247
264
|
--no-setup Skip setup commands
|
|
248
265
|
```
|
|
249
266
|
|
|
250
|
-
### `gssh
|
|
267
|
+
### `gssh workspace context --project <project-name> --workspace <workspace-name>`
|
|
251
268
|
|
|
252
|
-
|
|
269
|
+
Show the resolved workspace context.
|
|
253
270
|
|
|
254
271
|
```bash
|
|
255
|
-
gssh
|
|
256
|
-
# Alias: gssh sw
|
|
272
|
+
gssh workspace context --project <project-name> --workspace <workspace-name>
|
|
257
273
|
```
|
|
258
274
|
|
|
259
|
-
|
|
275
|
+
Use `--project` on workspace commands to target a project.
|
|
260
276
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
### `gssh list [subcommand]`
|
|
277
|
+
### `gssh project list` / `gssh workspace list --project <project-name>`
|
|
264
278
|
|
|
265
279
|
List projects or workspaces.
|
|
266
280
|
|
|
267
281
|
```bash
|
|
268
|
-
gssh list [
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
Subcommands:
|
|
272
|
-
projects List all projects
|
|
273
|
-
workspaces List workspaces in current project (default)
|
|
282
|
+
gssh project list [options]
|
|
283
|
+
gssh workspace list --project <project-name> [options]
|
|
274
284
|
|
|
275
285
|
Options:
|
|
276
286
|
--json Output in JSON format
|
|
277
287
|
--verbose Show additional details
|
|
278
288
|
```
|
|
279
289
|
|
|
280
|
-
### `gssh remove
|
|
290
|
+
### `gssh workspace remove [workspace-name] --project <project-name>`
|
|
281
291
|
|
|
282
292
|
Remove a workspace.
|
|
283
293
|
|
|
284
294
|
```bash
|
|
285
|
-
gssh remove
|
|
286
|
-
# Alias: gssh rm workspace
|
|
295
|
+
gssh workspace remove [workspace-name] --project <project-name> [options]
|
|
287
296
|
|
|
288
297
|
Options:
|
|
289
298
|
--force Skip confirmation prompts
|
|
290
299
|
--keep-branch Don't delete git branch when removing workspace
|
|
291
300
|
```
|
|
292
301
|
|
|
293
|
-
### `gssh remove
|
|
302
|
+
### `gssh project remove [project-name]`
|
|
294
303
|
|
|
295
304
|
Remove a project.
|
|
296
305
|
|
|
297
306
|
```bash
|
|
298
|
-
gssh remove
|
|
299
|
-
# Alias: gssh rm project
|
|
307
|
+
gssh project remove [project-name] [options]
|
|
300
308
|
|
|
301
309
|
Options:
|
|
302
310
|
--force Skip confirmation prompts
|
|
303
311
|
```
|
|
304
312
|
|
|
305
|
-
### `gssh directory`
|
|
306
|
-
|
|
307
|
-
Print the current project directory path.
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
gssh directory
|
|
311
|
-
# Alias: gssh dir
|
|
312
|
-
```
|
|
313
|
-
|
|
314
313
|
## Configuration
|
|
315
314
|
|
|
316
315
|
### Global Configuration
|
|
@@ -356,14 +355,16 @@ Located at `~/gitspace/<project-name>/.config.json`:
|
|
|
356
355
|
|
|
357
356
|
### Custom Scripts
|
|
358
357
|
|
|
359
|
-
GitSpace uses **convention over configuration** for custom scripts
|
|
358
|
+
GitSpace uses **convention over configuration** for custom scripts. Scripts live
|
|
359
|
+
inside each workspace so they can vary by branch:
|
|
360
360
|
|
|
361
361
|
```
|
|
362
|
-
~/gitspace/<project-name>/
|
|
363
|
-
|
|
364
|
-
├──
|
|
365
|
-
├──
|
|
366
|
-
|
|
362
|
+
~/gitspace/<project-name>/workspaces/<workspace-name>/.gitspace/
|
|
363
|
+
└── scripts/
|
|
364
|
+
├── pre/ # Deprecated: run before setup (migrate to setup/)
|
|
365
|
+
├── setup/ # Run when setup state requires refresh
|
|
366
|
+
├── select/ # Run on each new terminal attach
|
|
367
|
+
└── remove/ # Run before workspace deletion
|
|
367
368
|
```
|
|
368
369
|
|
|
369
370
|
#### Script Execution Rules
|
|
@@ -372,26 +373,23 @@ GitSpace uses **convention over configuration** for custom scripts:
|
|
|
372
373
|
2. Scripts run **alphabetically** (use `01-`, `02-` prefixes)
|
|
373
374
|
3. **Working directory**: The workspace directory
|
|
374
375
|
4. **Arguments**: `$1` = workspace name, `$2` = repository name
|
|
375
|
-
5. **Environment**: Bundle values available
|
|
376
|
+
5. **Environment**: Bundle values available by key name (for example `REGION`, `PULUMI_ACCESS_TOKEN`)
|
|
376
377
|
|
|
377
378
|
#### Script Phases
|
|
378
379
|
|
|
379
380
|
| Phase | When | Use Case |
|
|
380
381
|
|-------|------|----------|
|
|
381
|
-
| `pre/` |
|
|
382
|
-
| `setup/` |
|
|
383
|
-
| `select/` | Every
|
|
382
|
+
| `pre/` | Deprecated | Move scripts into ordered `setup/` files |
|
|
383
|
+
| `setup/` | When setup state changes | Install dependencies, initial build |
|
|
384
|
+
| `select/` | Every new terminal attach | Git fetch, status checks |
|
|
384
385
|
| `remove/` | Before deletion | Cleanup, notifications |
|
|
385
386
|
|
|
386
387
|
### Environment Variables
|
|
387
388
|
|
|
388
389
|
```bash
|
|
389
|
-
# Set the current project (overrides global config)
|
|
390
|
-
export SPACES_CURRENT_PROJECT="my-app"
|
|
391
|
-
|
|
392
390
|
# Available in scripts (from bundle onboarding):
|
|
393
|
-
#
|
|
394
|
-
#
|
|
391
|
+
# <KEY> - Value by exact bundle config key name
|
|
392
|
+
# <NORMALIZED_KEY> - Uppercase snake-case alias (e.g. teamName -> TEAM_NAME)
|
|
395
393
|
```
|
|
396
394
|
|
|
397
395
|
## Directory Structure
|
|
@@ -405,13 +403,15 @@ export SPACES_CURRENT_PROJECT="my-app"
|
|
|
405
403
|
│ ├── workspaces/ # Git worktrees
|
|
406
404
|
│ │ └── <workspace-name>/
|
|
407
405
|
│ │ ├── gitspace.lock # Setup completion marker
|
|
408
|
-
│ │
|
|
409
|
-
│ │
|
|
410
|
-
│ └──
|
|
411
|
-
│
|
|
412
|
-
│
|
|
413
|
-
│
|
|
414
|
-
│
|
|
406
|
+
│ │ ├── .prompt/ # Linear issue details (if applicable)
|
|
407
|
+
│ │ │ └── issue.md
|
|
408
|
+
│ │ └── .gitspace/
|
|
409
|
+
│ │ ├── bundle.json
|
|
410
|
+
│ │ └── scripts/ # Custom scripts (per worktree)
|
|
411
|
+
│ │ ├── pre/
|
|
412
|
+
│ │ ├── setup/
|
|
413
|
+
│ │ ├── select/
|
|
414
|
+
│ │ └── remove/
|
|
415
415
|
```
|
|
416
416
|
|
|
417
417
|
## Remote Access
|
|
@@ -423,18 +423,27 @@ GitSpace provides secure remote terminal access with **end-to-end encryption**.
|
|
|
423
423
|
The easiest way to get remote access is through [gitspace.sh](https://gitspace.sh):
|
|
424
424
|
|
|
425
425
|
```bash
|
|
426
|
-
# 1.
|
|
427
|
-
gssh
|
|
426
|
+
# 1. Initialize machine identity on your control host
|
|
427
|
+
gssh user identity init
|
|
428
|
+
gssh user identity show
|
|
428
429
|
|
|
429
|
-
# 2.
|
|
430
|
-
gssh
|
|
430
|
+
# 2. Authenticate with gitspace.sh
|
|
431
|
+
gssh user auth login
|
|
431
432
|
|
|
432
|
-
# 3.
|
|
433
|
-
gssh
|
|
433
|
+
# 3. Reserve your subdomain (e.g., yourname.gitspace.sh)
|
|
434
|
+
gssh user host reserve yourname
|
|
435
|
+
gssh user host status
|
|
434
436
|
|
|
435
|
-
# 4.
|
|
437
|
+
# 4. Start serving
|
|
438
|
+
gssh machine serve start
|
|
439
|
+
gssh machine serve status
|
|
440
|
+
gssh status
|
|
441
|
+
|
|
442
|
+
# 5. Access from browser at https://yourname.gitspace.sh
|
|
436
443
|
```
|
|
437
444
|
|
|
445
|
+
In hosted mode, this machine is your control node (owner): it runs the relay path, maintains access state, and is the place cloud-control state/secrets are managed.
|
|
446
|
+
|
|
438
447
|
### Self-Hosted Setup
|
|
439
448
|
|
|
440
449
|
For complete control, run your own relay:
|
|
@@ -443,83 +452,89 @@ For complete control, run your own relay:
|
|
|
443
452
|
# Terminal 1: Start relay server
|
|
444
453
|
gssh relay start --port 4480
|
|
445
454
|
|
|
446
|
-
# Terminal 2:
|
|
447
|
-
gssh
|
|
448
|
-
gssh serve --relay ws://localhost:4480/ws
|
|
455
|
+
# Terminal 2: Create relay-machine invite token
|
|
456
|
+
gssh invite relay-machine create --relay ws://localhost:4480/ws --machine-signing-key <BASE64_ED25519_PUB> --machine-key-exchange-key <BASE64_X25519_PUB> --label "My MacBook"
|
|
449
457
|
|
|
450
|
-
# Terminal 3:
|
|
451
|
-
gssh
|
|
452
|
-
|
|
453
|
-
|
|
458
|
+
# Terminal 3: Initialize identity, enroll, and start serving
|
|
459
|
+
gssh user identity init
|
|
460
|
+
gssh machine enroll --invite "ws://localhost:4480/ws#<TOKEN>" --label "My MacBook"
|
|
461
|
+
gssh machine serve start
|
|
454
462
|
```
|
|
455
463
|
|
|
464
|
+
When `--relay` is omitted, `gssh machine serve start` lets you choose from:
|
|
465
|
+
- local relay (`ws://127.0.0.1:4480/ws`) if running
|
|
466
|
+
- account relays (`*.gitspace.sh`) discovered from your host config/account
|
|
467
|
+
|
|
468
|
+
`gssh relay start` always keeps the relay reachable locally. If account hosting is configured,
|
|
469
|
+
`auto` and `hosted` modes add a `*.gitspace.sh` tunnel on top of the same local relay instead of
|
|
470
|
+
replacing loopback access.
|
|
471
|
+
|
|
456
472
|
### Identity Management
|
|
457
473
|
|
|
458
474
|
Every machine and client has a cryptographic identity (Ed25519 + X25519 keypair):
|
|
459
475
|
|
|
460
476
|
```bash
|
|
461
|
-
# Create machine identity (stored in
|
|
462
|
-
gssh identity init
|
|
477
|
+
# Create machine identity (stored in OS keychain)
|
|
478
|
+
gssh user identity init
|
|
463
479
|
|
|
464
480
|
# View identity fingerprint
|
|
465
|
-
gssh identity show
|
|
481
|
+
gssh user identity show
|
|
466
482
|
```
|
|
467
483
|
|
|
468
|
-
### Access
|
|
484
|
+
### Owner Access Model
|
|
469
485
|
|
|
470
|
-
|
|
486
|
+
Remote access is owner-only at runtime.
|
|
471
487
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
gssh access list
|
|
475
|
-
|
|
476
|
-
# Add a client by public key
|
|
477
|
-
gssh access add spcs_pk_abc123... --label "Work Laptop"
|
|
478
|
-
|
|
479
|
-
# Remove client access
|
|
480
|
-
gssh access remove spcs_pk_abc123...
|
|
481
|
-
```
|
|
488
|
+
- Clients and machines must present device certificates derived from the same owner user root identity.
|
|
489
|
+
- There is no collaborator ACL grant path for relay or machine access.
|
|
482
490
|
|
|
483
491
|
### Creating Invites
|
|
484
492
|
|
|
485
|
-
|
|
493
|
+
Use root-signed invites for machine enrollment only:
|
|
486
494
|
|
|
487
495
|
```bash
|
|
488
|
-
# Create invite
|
|
489
|
-
gssh
|
|
496
|
+
# Create machine enrollment invite token
|
|
497
|
+
gssh invite relay-machine create --relay ws://localhost:4480/ws --machine-signing-key <BASE64_ED25519_PUB> --machine-key-exchange-key <BASE64_X25519_PUB>
|
|
490
498
|
|
|
491
|
-
#
|
|
492
|
-
gssh
|
|
499
|
+
# List/revoke enrollment invites
|
|
500
|
+
gssh invite list --relay ws://localhost:4480/ws
|
|
501
|
+
gssh invite revoke <invite-id> --relay ws://localhost:4480/ws
|
|
493
502
|
```
|
|
494
503
|
|
|
495
504
|
### Connecting Remotely
|
|
496
505
|
|
|
497
506
|
```bash
|
|
498
|
-
#
|
|
499
|
-
gssh
|
|
507
|
+
# On another owner device: recover the same user root identity
|
|
508
|
+
gssh user identity recover
|
|
509
|
+
|
|
510
|
+
# Connect directly as owner
|
|
511
|
+
gssh client connect <machine-id>
|
|
500
512
|
|
|
501
|
-
#
|
|
502
|
-
gssh --relay wss://relay.example.com
|
|
513
|
+
# Browse machines on a relay
|
|
514
|
+
gssh client machines list --relay wss://relay.example.com
|
|
503
515
|
```
|
|
504
516
|
|
|
505
517
|
### Remote Access Commands
|
|
506
518
|
|
|
507
519
|
| Command | Description |
|
|
508
520
|
|---------|-------------|
|
|
509
|
-
| `gssh auth login` | Authenticate with gitspace.sh (GitHub OAuth) |
|
|
510
|
-
| `gssh auth logout` | Sign out of gitspace.sh |
|
|
511
|
-
| `gssh host reserve <name>` | Reserve a subdomain on gitspace.sh |
|
|
512
|
-
| `gssh host status` | Show hosting status |
|
|
513
|
-
| `gssh identity init` | Create
|
|
514
|
-
| `gssh identity
|
|
515
|
-
| `gssh
|
|
516
|
-
| `gssh
|
|
517
|
-
| `gssh
|
|
518
|
-
| `gssh serve` |
|
|
519
|
-
| `gssh
|
|
520
|
-
| `gssh
|
|
521
|
-
| `gssh
|
|
522
|
-
| `gssh
|
|
521
|
+
| `gssh user auth login` | Authenticate with gitspace.sh (GitHub OAuth) |
|
|
522
|
+
| `gssh user auth logout` | Sign out of gitspace.sh |
|
|
523
|
+
| `gssh user host reserve <name>` | Reserve a subdomain on gitspace.sh |
|
|
524
|
+
| `gssh user host status` | Show hosting status |
|
|
525
|
+
| `gssh user identity init` | Create user root identity |
|
|
526
|
+
| `gssh user identity recover` | Recover identity from mnemonic |
|
|
527
|
+
| `gssh user identity show` | Display identity fingerprint |
|
|
528
|
+
| `gssh machine serve start --foreground` | Start machine daemon |
|
|
529
|
+
| `gssh machine serve start` | Start serve as background daemon |
|
|
530
|
+
| `gssh machine serve stop` | Stop background serve daemon |
|
|
531
|
+
| `gssh cloud status` | Show cloud control status on current control node |
|
|
532
|
+
| `gssh cloud list` | List cloud workspaces from control store |
|
|
533
|
+
| `gssh invite relay-machine create --relay <url> --machine-signing-key <k> --machine-key-exchange-key <k>` | Create machine enrollment invite |
|
|
534
|
+
| `gssh invite list --relay <url>` | List root-signed invites |
|
|
535
|
+
| `gssh invite revoke <invite-id> --relay <url>` | Revoke root-signed invite |
|
|
536
|
+
| `gssh client connect <target>` | Connect to remote machine |
|
|
537
|
+
| `gssh client machines list --relay <url>` | List accessible remote machines |
|
|
523
538
|
| `gssh status` | Show all daemon statuses |
|
|
524
539
|
|
|
525
540
|
### Relay Server Commands
|
|
@@ -529,11 +544,11 @@ For self-hosted relay servers:
|
|
|
529
544
|
| Command | Description |
|
|
530
545
|
|---------|-------------|
|
|
531
546
|
| `gssh relay start` | Start relay server |
|
|
532
|
-
| `gssh relay
|
|
533
|
-
| `gssh relay
|
|
534
|
-
| `gssh relay
|
|
535
|
-
| `gssh relay
|
|
536
|
-
| `gssh relay
|
|
547
|
+
| `gssh relay stop` | Stop relay server |
|
|
548
|
+
| `gssh relay status` | Show relay server status |
|
|
549
|
+
| `gssh invite relay-machine create --relay <url> --machine-signing-key <k> --machine-key-exchange-key <k>` | Create machine enrollment invite |
|
|
550
|
+
| `gssh relay machines list` | List registered machines |
|
|
551
|
+
| `gssh relay machines revoke <machine-id>` | Revoke machine registration |
|
|
537
552
|
|
|
538
553
|
### Terminal Multiplexer (tmux-lite)
|
|
539
554
|
|
|
@@ -541,12 +556,12 @@ Manage terminal sessions:
|
|
|
541
556
|
|
|
542
557
|
| Command | Description |
|
|
543
558
|
|---------|-------------|
|
|
544
|
-
| `gssh tmux start` | Start tmux-lite daemon |
|
|
545
|
-
| `gssh tmux stop` | Stop tmux-lite daemon |
|
|
546
|
-
| `gssh tmux list` | List sessions |
|
|
547
|
-
| `gssh tmux attach <id>` | Attach to session |
|
|
548
|
-
| `gssh tmux new` | Create new session |
|
|
549
|
-
| `gssh tmux kill <id>` | Kill session |
|
|
559
|
+
| `gssh machine tmux start` | Start tmux-lite daemon |
|
|
560
|
+
| `gssh machine tmux stop` | Stop tmux-lite daemon |
|
|
561
|
+
| `gssh machine tmux list` | List sessions |
|
|
562
|
+
| `gssh machine tmux attach <id>` | Attach to session |
|
|
563
|
+
| `gssh machine tmux new` | Create new session |
|
|
564
|
+
| `gssh machine tmux kill <id>` | Kill session |
|
|
550
565
|
|
|
551
566
|
### Environment Variables
|
|
552
567
|
|
|
@@ -555,9 +570,6 @@ Manage terminal sessions:
|
|
|
555
570
|
RELAY_PORT=4480 # Default relay port
|
|
556
571
|
RELAY_BIND=0.0.0.0 # Bind address
|
|
557
572
|
|
|
558
|
-
# Machine identity
|
|
559
|
-
GSSH_IDENTITY_PATH=~/gitspace/.identity/ # Identity storage
|
|
560
|
-
|
|
561
573
|
# gitspace.sh
|
|
562
574
|
GITSPACE_API_URL=https://api.gitspace.sh # API endpoint
|
|
563
575
|
```
|
|
@@ -587,7 +599,7 @@ Error: GitHub CLI is not authenticated
|
|
|
587
599
|
|
|
588
600
|
### Bundle secrets not available
|
|
589
601
|
|
|
590
|
-
If
|
|
602
|
+
If expected bundle key environment variables are empty, ensure:
|
|
591
603
|
1. You completed the onboarding secret steps
|
|
592
604
|
2. Your OS keychain service is running (libsecret on Linux, Keychain on macOS)
|
|
593
605
|
|
package/package.json
CHANGED
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gitspace",
|
|
3
|
-
"version": "0.2.0-rc.
|
|
3
|
+
"version": "0.2.0-rc.40",
|
|
4
4
|
"description": "CLI for managing GitHub workspaces with git worktrees and secure remote terminal access",
|
|
5
5
|
"bin": {
|
|
6
6
|
"gssh": "./bin/gssh"
|
|
7
7
|
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin",
|
|
10
|
+
"README.md",
|
|
11
|
+
"LICENSE"
|
|
12
|
+
],
|
|
8
13
|
"type": "module",
|
|
9
14
|
"scripts": {
|
|
10
15
|
"dev": "bun src/index.ts",
|
|
11
|
-
"
|
|
16
|
+
"dev:web": "bun scripts/dev.ts",
|
|
17
|
+
"check:lockfile-sync": "bun scripts/check-lockfile-sync.ts",
|
|
18
|
+
"typecheck": "tsgo --noEmit -p tsconfig.json",
|
|
12
19
|
"lint": "eslint src/",
|
|
13
|
-
"build:web": "cd
|
|
20
|
+
"build:web": "cd web && bun install && bun run build",
|
|
14
21
|
"build": "bun scripts/build.ts",
|
|
15
22
|
"build:all": "bun scripts/build.ts --all",
|
|
16
23
|
"build:npm": "bun scripts/build.ts --npm",
|
|
17
|
-
"relay": "bun src/relay/index.ts"
|
|
24
|
+
"relay": "bun src/relay/index.ts",
|
|
25
|
+
"e2e:on-demand": "bash scripts/e2e/run-on-demand.sh",
|
|
26
|
+
"check:arch": "node node_modules/.bin/depcruise src --config .dependency-cruiser.cjs --output-type err",
|
|
27
|
+
"check:arch:json": "node node_modules/.bin/depcruise src --config .dependency-cruiser.cjs --output-type json"
|
|
18
28
|
},
|
|
19
29
|
"optionalDependencies": {
|
|
20
|
-
"@gitspace/darwin-arm64": "0.2.0-rc.
|
|
21
|
-
"@gitspace/darwin-x64": "0.2.0-rc.
|
|
22
|
-
"@gitspace/linux-x64": "0.2.0-rc.
|
|
23
|
-
"@gitspace/linux-arm64": "0.2.0-rc.
|
|
30
|
+
"@gitspace/darwin-arm64": "0.2.0-rc.40",
|
|
31
|
+
"@gitspace/darwin-x64": "0.2.0-rc.40",
|
|
32
|
+
"@gitspace/linux-x64": "0.2.0-rc.40",
|
|
33
|
+
"@gitspace/linux-arm64": "0.2.0-rc.40"
|
|
24
34
|
},
|
|
25
35
|
"keywords": [
|
|
26
36
|
"cli",
|
|
@@ -35,41 +45,60 @@
|
|
|
35
45
|
"homepage": "https://gitspace.sh",
|
|
36
46
|
"repository": {
|
|
37
47
|
"type": "git",
|
|
38
|
-
"url": "https://github.com/
|
|
48
|
+
"url": "https://github.com/inKibra/gitspace.sh.git"
|
|
39
49
|
},
|
|
40
50
|
"author": "inKibra, Inc.",
|
|
41
51
|
"license": "SEE LICENSE IN LICENSE",
|
|
42
52
|
"dependencies": {
|
|
43
|
-
"@
|
|
44
|
-
"@
|
|
53
|
+
"@fly/sprites": "0.0.1-rc37",
|
|
54
|
+
"@inquirer/prompts": "^7.10.1",
|
|
55
|
+
"@linear/sdk": "^80.1.0",
|
|
45
56
|
"@noble/curves": "^2.0.1",
|
|
46
57
|
"@noble/hashes": "^2.0.1",
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
58
|
+
"@oh-my-pi/pi-ai": "13.17.5",
|
|
59
|
+
"@oh-my-pi/pi-coding-agent": "13.17.5",
|
|
60
|
+
"@oh-my-pi/pi-tui": "13.17.5",
|
|
61
|
+
"@opentui-ui/toast": "^0.0.5",
|
|
62
|
+
"@opentui/core": "^0.1.77",
|
|
63
|
+
"@opentui/react": "^0.1.77",
|
|
64
|
+
"@scure/bip39": "^2.0.1",
|
|
49
65
|
"@types/ws": "^8.18.1",
|
|
50
|
-
"@xterm/addon-serialize": "^0.
|
|
51
|
-
"@xterm/headless": "^
|
|
52
|
-
"ansi-escapes": "^7.
|
|
53
|
-
"chalk": "^5.
|
|
54
|
-
"
|
|
66
|
+
"@xterm/addon-serialize": "^0.14.0",
|
|
67
|
+
"@xterm/headless": "^6.0.0",
|
|
68
|
+
"ansi-escapes": "^7.3.0",
|
|
69
|
+
"chalk": "^5.6.2",
|
|
70
|
+
"clipboardy": "^5.2.1",
|
|
71
|
+
"commander": "^12.1.0",
|
|
55
72
|
"conf": "^12.0.0",
|
|
56
|
-
"
|
|
73
|
+
"diff": "^8.0.4",
|
|
74
|
+
"ghostty-opentui": "^1.3.13",
|
|
75
|
+
"hono": "^4.6.0",
|
|
57
76
|
"open": "^11.0.0",
|
|
58
|
-
"ora": "^8.0
|
|
59
|
-
"react": "^19.2.
|
|
60
|
-
"
|
|
61
|
-
"
|
|
77
|
+
"ora": "^8.2.0",
|
|
78
|
+
"react": "^19.2.4",
|
|
79
|
+
"react-dom": "^19.2.4",
|
|
80
|
+
"simple-git": "^3.30.0",
|
|
81
|
+
"ws": "^8.19.0"
|
|
62
82
|
},
|
|
63
83
|
"devDependencies": {
|
|
64
|
-
"@
|
|
65
|
-
"@types/
|
|
66
|
-
"@types/
|
|
84
|
+
"@testing-library/react": "^16.3.2",
|
|
85
|
+
"@types/bun": "^1.3.8",
|
|
86
|
+
"@types/node": "^20.19.32",
|
|
87
|
+
"@types/react": "^19.2.13",
|
|
67
88
|
"@types/react-dom": "^19.2.3",
|
|
68
|
-
"
|
|
69
|
-
"
|
|
89
|
+
"@typescript/native-preview": "^7.0.0-dev.20260302.1",
|
|
90
|
+
"dependency-cruiser": "^17.3.9",
|
|
91
|
+
"eslint": "^8.57.1",
|
|
92
|
+
"happy-dom": "^20.5.0",
|
|
93
|
+
"miniflare": "^3.20250718.3"
|
|
70
94
|
},
|
|
71
95
|
"engines": {
|
|
72
|
-
"bun": ">=1.3.
|
|
96
|
+
"bun": ">=1.3.8"
|
|
73
97
|
},
|
|
74
|
-
"
|
|
98
|
+
"patchedDependencies": {
|
|
99
|
+
"@oh-my-pi/pi-coding-agent@13.17.5": "patches/@oh-my-pi%2Fpi-coding-agent@13.17.5.patch",
|
|
100
|
+
"@oh-my-pi/pi-utils@13.17.5": "patches/@oh-my-pi%2Fpi-utils@13.17.5.patch",
|
|
101
|
+
"markit-ai@0.5.0": "patches/markit-ai@0.5.0.patch",
|
|
102
|
+
"@oh-my-pi/pi-natives@13.17.5": "patches/@oh-my-pi%2Fpi-natives@13.17.5.patch"
|
|
103
|
+
}
|
|
75
104
|
}
|