Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/rename-packages.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@spawn-dock/cli": patch
"@spawn-dock/runtime": patch
---

feat(cli): rename packages to spawn-dock namespace
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
skip_if_unchanged: true
cancel_on_no_changes: true

release-spawndock-cli:
release-spawndock-runtime:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
Expand All @@ -41,8 +41,8 @@ jobs:
npm_token: ${{ secrets.NPM_KEY }}
ref: ${{ github.event.workflow_run.head_sha }}
branch: ${{ github.event.workflow_run.head_branch }}
package_json_path: packages/spawndock-cli/package.json
pnpm_filter: ./packages/spawndock-cli
package_json_path: packages/spawndock-runtime/package.json
pnpm_filter: ./packages/spawndock-runtime
bump_type: patch
publish_npm: true
publish_github_packages: true
Expand Down
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# docker-git
# spawn-dock

`docker-git` creates a separate Docker environment for each repository, issue, or PR.
By default, projects reside in `~/.docker-git`.
`spawn-dock` creates a separate Docker environment for each repository, issue, or PR.
By default, projects reside in `~/.spawn-dock`.

## Prerequisites

Expand All @@ -12,24 +12,24 @@ By default, projects reside in `~/.docker-git`.
## Installation

```bash
npm i -g @prover-coder-ai/docker-git
docker-git --help
npm i -g @spawn-dock/cli
spawn-dock --help
```

## Authentication

```bash
docker-git auth github login --web
docker-git auth codex login --web
docker-git auth claude login --web
spawn-dock auth github login --web
spawn-dock auth codex login --web
spawn-dock auth claude login --web
```

## Example

You can pass a link to a repository, branch (`/tree/...`), issue, or PR.

```bash
docker-git clone https://github.com/ProverCoderAI/docker-git/issues/122 --force --mcp-playwright
spawn-dock clone https://github.com/SpawnDock/cli/issues/122 --force --mcp-playwright
```

- `--force` recreates the environment and removes the project's volumes.
Expand All @@ -38,7 +38,7 @@ docker-git clone https://github.com/ProverCoderAI/docker-git/issues/122 --force
Automatic agent launch:

```bash
docker-git clone https://github.com/ProverCoderAI/docker-git/issues/122 --force --auto
spawn-dock clone https://github.com/SpawnDock/cli/issues/122 --force --auto
```

- `--auto` selects Claude or Codex based on available authentication. If both are available, the choice is random.
Expand All @@ -47,7 +47,7 @@ docker-git clone https://github.com/ProverCoderAI/docker-git/issues/122 --force

## Details

`docker-git --help`
`spawn-dock --help`

## SpawnDock CLI

Expand Down
16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@
"packages/api",
"packages/app",
"packages/lib",
"packages/spawndock-cli"
"packages/spawndock-runtime"
],
"scripts": {
"setup:pre-commit-hook": "node scripts/setup-pre-commit-hook.js",
"build": "pnpm --filter ./packages/app build && pnpm --filter ./packages/spawndock-cli build",
"build": "pnpm --filter ./packages/app build && pnpm --filter ./packages/spawndock-runtime build",
"api:build": "pnpm --filter ./packages/api build",
"api:start": "pnpm --filter ./packages/api start",
"api:dev": "pnpm --filter ./packages/api dev",
"api:test": "pnpm --filter ./packages/api test",
"api:typecheck": "pnpm --filter ./packages/api typecheck",
"check": "pnpm --filter ./packages/app check && pnpm --filter ./packages/lib typecheck && pnpm --filter ./packages/spawndock-cli typecheck",
"check": "pnpm --filter ./packages/app check && pnpm --filter ./packages/lib typecheck && pnpm --filter ./packages/spawndock-runtime typecheck",
"changeset": "changeset",
"changeset-publish": "node -e \"if (!process.env.NPM_KEY) { console.log('Skipping publish: NPM_KEY is not set'); process.exit(0); }\" && changeset publish",
"changeset-version": "changeset version",
Expand All @@ -34,8 +34,8 @@
"lint": "pnpm --filter ./packages/app lint && pnpm --filter ./packages/lib lint",
"lint:tests": "pnpm --filter ./packages/app lint:tests",
"lint:effect": "pnpm --filter ./packages/app lint:effect && pnpm --filter ./packages/lib lint:effect",
"test": "pnpm --filter ./packages/app test && pnpm --filter ./packages/lib test && pnpm --filter ./packages/spawndock-cli test",
"typecheck": "pnpm --filter ./packages/app typecheck && pnpm --filter ./packages/lib typecheck && pnpm --filter ./packages/spawndock-cli typecheck",
"test": "pnpm --filter ./packages/app test && pnpm --filter ./packages/lib test && pnpm --filter ./packages/spawndock-runtime test",
"typecheck": "pnpm --filter ./packages/app typecheck && pnpm --filter ./packages/lib typecheck && pnpm --filter ./packages/spawndock-runtime typecheck",
"start": "pnpm --filter ./packages/app start"
},
"devDependencies": {
Expand All @@ -44,12 +44,12 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/ProverCoderAI/effect-template.git"
"url": "git+https://github.com/SpawnDock/cli.git"
},
"bugs": {
"url": "https://github.com/ProverCoderAI/effect-template/issues"
"url": "https://github.com/SpawnDock/cli/issues"
},
"homepage": "https://github.com/ProverCoderAI/effect-template#readme",
"homepage": "https://github.com/SpawnDock/cli#readme",
"license": "ISC",
"pnpm": {
"ignoredBuiltDependencies": [
Expand Down
2 changes: 1 addition & 1 deletion packages/api/tests/schema.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ describe("api schemas", () => {
it.effect("decodes create project payload", () =>
Effect.sync(() => {
const result = Schema.decodeUnknownEither(CreateProjectRequestSchema)({
repoUrl: "https://github.com/ProverCoderAI/docker-git",
repoUrl: "https://github.com/SpawnDock/cli",
repoRef: "main",
up: true,
force: false
Expand Down
2 changes: 1 addition & 1 deletion packages/app/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# @prover-coder-ai/docker-git
# @spawn-dock/cli

## 1.0.68

Expand Down
12 changes: 6 additions & 6 deletions packages/app/package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "@prover-coder-ai/docker-git",
"version": "1.0.68",
"name": "@spawn-dock/cli",
"version": "1.0.69",
"description": "Minimal Vite-powered TypeScript console starter using Effect",
"main": "dist/src/docker-git/main.js",
"bin": {
"docker-git": "dist/src/docker-git/main.js"
"spawn-dock": "dist/src/docker-git/main.js"
},
"files": [
"dist"
Expand Down Expand Up @@ -38,7 +38,7 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/ProverCoderAI/docker-git.git"
"url": "git+https://github.com/SpawnDock/cli.git"
},
"keywords": [
"effect",
Expand All @@ -50,12 +50,12 @@
"license": "ISC",
"type": "module",
"bugs": {
"url": "https://github.com/ProverCoderAI/docker-git/issues"
"url": "https://github.com/SpawnDock/cli/issues"
},
"publishConfig": {
"access": "public"
},
"homepage": "https://github.com/ProverCoderAI/docker-git#readme",
"homepage": "https://github.com/SpawnDock/cli#readme",
"packageManager": "pnpm@10.32.1",
"dependencies": {
"@effect/cli": "^0.75.0",
Expand Down
44 changes: 22 additions & 22 deletions packages/app/src/docker-git/cli/usage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,28 @@ import { Match } from "effect"

import type { ParseError } from "@effect-template/lib/core/domain"

export const usageText = `docker-git menu
docker-git spawn --token <pairing-token> [options]
docker-git create [--repo-url <url>] [options]
docker-git clone <url> [options]
docker-git open [<url>] [options]
docker-git apply [<url>] [options]
docker-git mcp-playwright [<url>] [options]
docker-git attach [<url>] [options]
docker-git panes [<url>] [options]
docker-git scrap <action> [<url>] [options]
docker-git sessions [list] [<url>] [options]
docker-git sessions kill <pid> [<url>] [options]
docker-git sessions logs <pid> [<url>] [options]
docker-git session-gists [list] [options]
docker-git session-gists backup [<url>] [options]
docker-git session-gists view <snapshot-ref>
docker-git session-gists download <snapshot-ref> [options]
docker-git ps
docker-git apply-all [--active]
docker-git down-all
docker-git auth <provider> <action> [options]
docker-git state <action> [options]
export const usageText = `spawn-dock menu
spawn-dock spawn --token <pairing-token> [options]
spawn-dock create [--repo-url <url>] [options]
spawn-dock clone <url> [options]
spawn-dock open [<url>] [options]
spawn-dock apply [<url>] [options]
spawn-dock mcp-playwright [<url>] [options]
spawn-dock attach [<url>] [options]
spawn-dock panes [<url>] [options]
spawn-dock scrap <action> [<url>] [options]
spawn-dock sessions [list] [<url>] [options]
spawn-dock sessions kill <pid> [<url>] [options]
spawn-dock sessions logs <pid> [<url>] [options]
spawn-dock session-gists [list] [options]
spawn-dock session-gists backup [<url>] [options]
spawn-dock session-gists view <snapshot-ref>
spawn-dock session-gists download <snapshot-ref> [options]
spawn-dock ps
spawn-dock apply-all [--active]
spawn-dock down-all
spawn-dock auth <provider> <action> [options]
spawn-dock state <action> [options]

Commands:
menu Interactive menu (default when no args)
Expand Down
10 changes: 5 additions & 5 deletions packages/app/tests/docker-git/menu-select-connect.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ const makeConnectDeps = (events: Array<string>) => ({

const workspaceProject = () =>
makeProjectItem({
projectDir: "/home/dev/provercoderai/docker-git/workspaces/org/repo",
authorizedKeysPath: "/home/dev/provercoderai/docker-git/workspaces/org/repo/.docker-git/authorized_keys",
envGlobalPath: "/home/dev/provercoderai/docker-git/.orch/env/global.env",
envProjectPath: "/home/dev/provercoderai/docker-git/workspaces/org/repo/.orch/env/project.env",
codexAuthPath: "/home/dev/provercoderai/docker-git/.orch/auth/codex"
projectDir: "/home/dev/spawndock/cli/workspaces/org/repo",
authorizedKeysPath: "/home/dev/spawndock/cli/workspaces/org/repo/.docker-git/authorized_keys",
envGlobalPath: "/home/dev/spawndock/cli/.orch/env/global.env",
envProjectPath: "/home/dev/spawndock/cli/workspaces/org/repo/.orch/env/project.env",
codexAuthPath: "/home/dev/spawndock/cli/.orch/auth/codex"
})

describe("menu-select-connect", () => {
Expand Down
6 changes: 3 additions & 3 deletions packages/lib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/ProverCoderAI/effect-template.git"
"url": "git+https://github.com/SpawnDock/cli.git"
},
"keywords": [
"effect",
Expand All @@ -29,9 +29,9 @@
"license": "ISC",
"type": "module",
"bugs": {
"url": "https://github.com/ProverCoderAI/effect-template/issues"
"url": "https://github.com/SpawnDock/cli/issues"
},
"homepage": "https://github.com/ProverCoderAI/effect-template#readme",
"homepage": "https://github.com/SpawnDock/cli#readme",
"packageManager": "pnpm@10.32.1",
"dependencies": {
"@effect/cli": "^0.75.0",
Expand Down
8 changes: 4 additions & 4 deletions packages/lib/tests/shell/docker-auth.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ describe("remapDockerBindHostPathFromMounts", () => {
})

it("prefers the longest matching destination prefix", () => {
const next = remapDockerBindHostPathFromMounts("/home/dev/.docker-git/provercoderai/repo/.orch/auth/gh", [
const next = remapDockerBindHostPathFromMounts("/home/dev/.docker-git/spawndock/repo/.orch/auth/gh", [
{
source: "/home/user/.docker-git",
destination: "/home/dev/.docker-git"
},
{
source: "/srv/docker-git/provercoderai/repo",
destination: "/home/dev/.docker-git/provercoderai/repo"
source: "/srv/docker-git/spawndock/repo",
destination: "/home/dev/.docker-git/spawndock/repo"
}
])

expect(next).toBe("/srv/docker-git/provercoderai/repo/.orch/auth/gh")
expect(next).toBe("/srv/docker-git/spawndock/repo/.orch/auth/gh")
})

it("keeps the original path when no mount matches", () => {
Expand Down
12 changes: 6 additions & 6 deletions packages/lib/tests/usecases/apply.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,15 +228,15 @@ describe("applyProjectConfig", () => {
const path = yield* _(Path.Path)

const projectsRoot = path.join(root, "projects-root")
const projectDir = path.join(projectsRoot, "provercoderai", "docker-git", "issue-72")
const workspaceRepoDir = path.join(root, "workspace", "docker-git")
const initialTargetDir = "/home/dev/workspaces/provercoderai/docker-git"
const updatedTargetDir = "/home/dev/workspaces/provercoderai/docker-git-updated"
const projectDir = path.join(projectsRoot, "spawndock", "cli", "issue-72")
const workspaceRepoDir = path.join(root, "workspace", "cli")
const initialTargetDir = "/home/dev/workspaces/spawndock/cli"
const updatedTargetDir = "/home/dev/workspaces/spawndock/cli-updated"

const globalConfig = makeTemplateConfig(root, projectDir, path, initialTargetDir)
const projectConfig = {
...makeTemplateConfig(root, projectDir, path, initialTargetDir),
repoUrl: "https://github.com/ProverCoderAI/docker-git.git",
repoUrl: "https://github.com/SpawnDock/cli.git",
repoRef: "issue-72"
}

Expand All @@ -257,7 +257,7 @@ describe("applyProjectConfig", () => {
yield* _(runGit(workspaceRepoDir, ["config", "user.name", "test-user"]))
yield* _(runGit(workspaceRepoDir, ["commit", "--allow-empty", "-m", "init"]))
yield* _(runGit(workspaceRepoDir, ["checkout", "-b", "issue-72"]))
yield* _(runGit(workspaceRepoDir, ["remote", "add", "origin", "https://github.com/skulidropek/docker-git.git"]))
yield* _(runGit(workspaceRepoDir, ["remote", "add", "origin", "https://github.com/skulidropek/cli.git"]))

const applied = yield* _(
withPatchedProcess(
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@spawn-dock/cli",
"version": "1.0.0",
"name": "@spawn-dock/runtime",
"version": "1.0.1",
"private": false,
"description": "Minimal SpawnDock runtime launcher for bootstrapped TMA projects",
"type": "module",
Expand All @@ -10,7 +10,7 @@
"README.md"
],
"bin": {
"spawn-dock": "dist/src/main.js"
"spawn-dock-runtime": "dist/src/main.js"
},
"scripts": {
"build": "tsc -p tsconfig.build.json && chmod +x dist/src/main.js",
Expand Down
2 changes: 1 addition & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ packages:
- packages/api
- packages/app
- packages/lib
- packages/spawndock-cli
- packages/spawndock-runtime
Loading