@prover-coder-ai/docker-git 1.0.16 → 1.0.18

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.
Files changed (65) hide show
  1. package/.package.json.release.bak +1 -1
  2. package/CHANGELOG.md +12 -0
  3. package/README.md +12 -7
  4. package/dist/main.js +24 -7
  5. package/dist/main.js.map +1 -1
  6. package/dist/src/docker-git/cli/parser-auth.js +32 -12
  7. package/dist/src/docker-git/cli/parser.js +1 -1
  8. package/dist/src/docker-git/cli/usage.js +4 -3
  9. package/dist/src/docker-git/menu-actions.js +23 -7
  10. package/dist/src/docker-git/menu-auth-data.js +90 -0
  11. package/dist/src/docker-git/menu-auth-helpers.js +20 -0
  12. package/dist/src/docker-git/menu-auth.js +159 -0
  13. package/dist/src/docker-git/menu-buffer-input.js +9 -0
  14. package/dist/src/docker-git/menu-create.js +5 -9
  15. package/dist/src/docker-git/menu-input-handler.js +70 -28
  16. package/dist/src/docker-git/menu-input-utils.js +47 -0
  17. package/dist/src/docker-git/menu-labeled-env.js +33 -0
  18. package/dist/src/docker-git/menu-project-auth-claude.js +43 -0
  19. package/dist/src/docker-git/menu-project-auth-data.js +165 -0
  20. package/dist/src/docker-git/menu-project-auth.js +124 -0
  21. package/dist/src/docker-git/menu-render-auth.js +45 -0
  22. package/dist/src/docker-git/menu-render-common.js +26 -0
  23. package/dist/src/docker-git/menu-render-layout.js +14 -0
  24. package/dist/src/docker-git/menu-render-project-auth.js +37 -0
  25. package/dist/src/docker-git/menu-render-select.js +11 -4
  26. package/dist/src/docker-git/menu-render.js +4 -13
  27. package/dist/src/docker-git/menu-select-actions.js +66 -0
  28. package/dist/src/docker-git/menu-select-view.js +15 -0
  29. package/dist/src/docker-git/menu-select.js +11 -75
  30. package/dist/src/docker-git/menu-shared.js +86 -17
  31. package/dist/src/docker-git/menu-types.js +3 -1
  32. package/dist/src/docker-git/menu.js +13 -1
  33. package/dist/src/docker-git/program.js +3 -3
  34. package/package.json +1 -1
  35. package/src/docker-git/cli/parser-auth.ts +46 -16
  36. package/src/docker-git/cli/parser-mcp-playwright.ts +0 -1
  37. package/src/docker-git/cli/parser.ts +1 -1
  38. package/src/docker-git/cli/usage.ts +4 -3
  39. package/src/docker-git/menu-actions.ts +31 -12
  40. package/src/docker-git/menu-auth-data.ts +184 -0
  41. package/src/docker-git/menu-auth-helpers.ts +30 -0
  42. package/src/docker-git/menu-auth.ts +311 -0
  43. package/src/docker-git/menu-buffer-input.ts +18 -0
  44. package/src/docker-git/menu-create.ts +5 -11
  45. package/src/docker-git/menu-input-handler.ts +104 -28
  46. package/src/docker-git/menu-input-utils.ts +85 -0
  47. package/src/docker-git/menu-labeled-env.ts +37 -0
  48. package/src/docker-git/menu-project-auth-claude.ts +70 -0
  49. package/src/docker-git/menu-project-auth-data.ts +292 -0
  50. package/src/docker-git/menu-project-auth.ts +271 -0
  51. package/src/docker-git/menu-render-auth.ts +65 -0
  52. package/src/docker-git/menu-render-common.ts +67 -0
  53. package/src/docker-git/menu-render-layout.ts +30 -0
  54. package/src/docker-git/menu-render-project-auth.ts +70 -0
  55. package/src/docker-git/menu-render-select.ts +12 -2
  56. package/src/docker-git/menu-render.ts +5 -29
  57. package/src/docker-git/menu-select-actions.ts +150 -0
  58. package/src/docker-git/menu-select-load.ts +1 -1
  59. package/src/docker-git/menu-select-view.ts +25 -0
  60. package/src/docker-git/menu-select.ts +21 -167
  61. package/src/docker-git/menu-shared.ts +135 -20
  62. package/src/docker-git/menu-types.ts +70 -3
  63. package/src/docker-git/menu.ts +26 -1
  64. package/src/docker-git/program.ts +10 -4
  65. package/tests/docker-git/entrypoint-auth.test.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prover-coder-ai/docker-git",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "Minimal Vite-powered TypeScript console starter using Effect",
5
5
  "main": "dist/src/docker-git/main.js",
6
6
  "bin": {
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @prover-coder-ai/docker-git
2
2
 
3
+ ## 1.0.18
4
+
5
+ ### Patch Changes
6
+
7
+ - chore: automated version bump
8
+
9
+ ## 1.0.17
10
+
11
+ ### Patch Changes
12
+
13
+ - chore: automated version bump
14
+
3
15
  ## 1.0.16
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -5,6 +5,7 @@
5
5
  Key goals:
6
6
  - Functional Core, Imperative Shell implementation (pure templates + typed orchestration).
7
7
  - Per-project `.orch/` directory (env + local state), while still allowing shared credentials across containers.
8
+ - Shared package caches (`pnpm`/`npm`/`yarn`) across all project containers.
8
9
  - Optional Playwright MCP + Chromium sidecar so Codex can do browser automation.
9
10
 
10
11
  ## Quickstart
@@ -44,7 +45,6 @@ Force modes:
44
45
 
45
46
  Agent context for issue workspaces:
46
47
  - Global `${CODEX_HOME}/AGENTS.md` includes workspace path + issue/PR context.
47
- - For `issue-*` workspaces, docker-git creates `${TARGET_DIR}/AGENTS.md` (if missing) with issue context and auto-adds it to `.git/info/exclude`.
48
48
 
49
49
  ## Projects Root Layout
50
50
 
@@ -59,10 +59,13 @@ Structure (simplified):
59
59
  authorized_keys
60
60
  .orch/
61
61
  env/
62
- global.env
62
+ global.env # shared tokens/keys (GitHub, Git, Claude) with labels
63
63
  auth/
64
- codex/ # shared Codex auth cache (credentials)
65
- gh/ # shared GitHub auth (optional)
64
+ codex/ # shared Codex auth/config (when CODEX_SHARE_AUTH=1)
65
+ gh/ # GH CLI auth cache for OAuth login container
66
+ .cache/
67
+ git-mirrors/ # shared git clone mirrors
68
+ packages/ # shared pnpm/npm/yarn caches
66
69
  <owner>/<repo>/
67
70
  docker-compose.yml
68
71
  Dockerfile
@@ -70,7 +73,6 @@ Structure (simplified):
70
73
  docker-git.json
71
74
  .orch/
72
75
  env/
73
- global.env # copied/synced from root .orch/env/global.env
74
76
  project.env # per-project env knobs (see below)
75
77
  auth/
76
78
  codex/ # project-local Codex state (sessions/logs/tmp/etc)
@@ -79,7 +81,7 @@ Structure (simplified):
79
81
  ## Codex Auth: Shared Credentials, Per-Project Sessions
80
82
 
81
83
  Default behavior:
82
- - Shared credentials live in `/home/dev/.codex-shared/auth.json` (mounted from projects root).
84
+ - Shared credentials live in `/home/dev/.codex-shared/auth.json` (mounted from `<projectsRoot>/.orch/auth/codex`).
83
85
  - Each project keeps its own Codex state under `/home/dev/.codex/` (mounted from project `.orch/auth/codex`).
84
86
  - The entrypoint links `/home/dev/.codex/auth.json -> /home/dev/.codex-shared/auth.json`.
85
87
 
@@ -116,6 +118,9 @@ Common toggles:
116
118
  - `DOCKER_GIT_ZSH_AUTOSUGGEST=1|0` (default: `1`)
117
119
  - `MCP_PLAYWRIGHT_ISOLATED=1|0` (default: `1`)
118
120
  - `MCP_PLAYWRIGHT_CDP_ENDPOINT=http://...` (override CDP endpoint if needed)
121
+ - `PNPM_STORE_DIR=/home/dev/.docker-git/.cache/packages/pnpm/store` (default shared store)
122
+ - `NPM_CONFIG_CACHE=/home/dev/.docker-git/.cache/packages/npm` (default shared cache)
123
+ - `YARN_CACHE_FOLDER=/home/dev/.docker-git/.cache/packages/yarn` (default shared cache)
119
124
 
120
125
  ## Troubleshooting
121
126
 
@@ -160,7 +165,7 @@ Clone auth error (`Invalid username or token`):
160
165
  ```bash
161
166
  pnpm run docker-git auth github status
162
167
  pnpm run docker-git auth github logout
163
- pnpm run docker-git auth github login --token '<GITHUB_TOKEN>'
168
+ pnpm run docker-git auth github login --web
164
169
  pnpm run docker-git auth github status
165
170
  ```
166
171
  - Token requirements:
package/dist/main.js CHANGED
@@ -702,13 +702,24 @@ const resolveGithubToken = (fs, path, root) => Effect.gen(function* (_) {
702
702
  if (fromEnv !== null) {
703
703
  return fromEnv;
704
704
  }
705
- const envPath = path.join(root, ".orch", "env", "global.env");
706
- const exists = yield* _(fs.exists(envPath));
707
- if (!exists) {
708
- return null;
705
+ const candidates = [
706
+ // Canonical layout: ~/.docker-git/.orch/env/global.env
707
+ path.join(root, ".orch", "env", "global.env"),
708
+ // Legacy layout (kept for backward compatibility): ~/.docker-git/secrets/global.env
709
+ path.join(root, "secrets", "global.env")
710
+ ];
711
+ for (const envPath of candidates) {
712
+ const exists = yield* _(fs.exists(envPath));
713
+ if (!exists) {
714
+ continue;
715
+ }
716
+ const text = yield* _(fs.readFileString(envPath));
717
+ const token = findTokenInEnvEntries(parseEnvEntries(text));
718
+ if (token !== null) {
719
+ return token;
720
+ }
709
721
  }
710
- const text = yield* _(fs.readFileString(envPath));
711
- return findTokenInEnvEntries(parseEnvEntries(text));
722
+ return null;
712
723
  });
713
724
  const withGithubAskpassEnv = (token, use) => Effect.scoped(Effect.gen(function* (_) {
714
725
  const fs = yield* _(FileSystem.FileSystem);
@@ -770,7 +781,7 @@ Effect.gen(function* (_) {
770
781
  }
771
782
  const originUrl = yield* _(gitCapture(root, ["remote", "get-url", "origin"], gitBaseEnv).pipe(Effect.map((value) => value.trim())));
772
783
  const token = yield* _(resolveGithubToken(fs, path, root));
773
- const effect = token && token.length > 0 && isGithubHttpsRemote(originUrl) ? withGithubAskpassEnv(token, (env) => git(root, ["push", "-u", "origin", "HEAD"], env)) : git(root, ["push", "-u", "origin", "HEAD"], gitBaseEnv);
784
+ const effect = token && token.length > 0 && isGithubHttpsRemote(originUrl) ? withGithubAskpassEnv(token, (env) => pipe(gitCapture(root, ["rev-parse", "--abbrev-ref", "HEAD"], env), Effect.map((value) => value.trim()), Effect.map((branch) => branch === "HEAD" ? "main" : branch), Effect.flatMap((branch) => git(root, ["push", "--no-verify", originUrl, `HEAD:refs/heads/${branch}`], env)))) : git(root, ["push", "--no-verify", "-u", "origin", "HEAD"], gitBaseEnv);
774
785
  yield* _(effect);
775
786
  }).pipe(Effect.asVoid);
776
787
  pipe(loadProjectIndex(), Effect.flatMap((index) => index === null ? Effect.void : forEachProjectStatus(index.configPaths, (status) => pipe(Effect.log(renderProjectStatusHeader(status)), Effect.zipRight(runDockerComposeDown(status.projectDir).pipe(Effect.catchTag("DockerCommandError", (error) => Effect.logWarning(`docker compose down failed for ${status.projectDir}: ${renderError(error)}`))))))), Effect.asVoid);
@@ -818,6 +829,12 @@ Effect.asVoid(withProjectIndexAndSsh((index, sshKey) => forEachProjectStatus(ind
818
829
  onSuccess: () => Effect.void
819
830
  })))))));
820
831
  Duration.seconds(1);
832
+ const ClaudeAuthStatusSchema = Schema.Struct({
833
+ loggedIn: Schema.Boolean,
834
+ authMethod: Schema.optional(Schema.String),
835
+ apiProvider: Schema.optional(Schema.String)
836
+ });
837
+ Schema.parseJson(ClaudeAuthStatusSchema);
821
838
  const ChunkManifestSchema = Schema.Struct({
822
839
  original: Schema.String,
823
840
  originalSize: Schema.Number,