@mootup/moot-cli 0.5.0 → 0.5.2

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/dist/docker.d.ts CHANGED
@@ -31,15 +31,39 @@ export declare function devcontainerUp(workspace: string, deps?: DockerDeps): Pr
31
31
  /**
32
32
  * Resolve the user `docker exec` should run as for container `cid`.
33
33
  *
34
- * Runs `docker inspect --format '{{.Config.User}}' <cid>` and returns the
35
- * trimmed `Config.User`. Falls back to `'node'` when that value is empty —
36
- * which also covers an inspect failure (a non-zero exit yields empty stdout),
37
- * so a USER-less image or a container that vanished after `requireContainerId`
38
- * degrades to the historical default instead of raising.
34
+ * Prefers the devcontainer's configured `remoteUser` (read from the
35
+ * `devcontainer.metadata` label the devcontainer CLI stamps), then the image's
36
+ * `Config.User`, then `'node'`. The remoteUser must win because the image's
37
+ * `Config.User` is commonly `root` even when the devcontainer runs as a
38
+ * non-root user (e.g. `node`): execing as root would create root-owned files in
39
+ * the bind-mounted workspace and trip git's "dubious ownership" guard against
40
+ * the (user-owned) repo. Falls back gracefully on inspect failure (empty
41
+ * stdout) so a USER-less image or a vanished container degrades to `'node'`.
39
42
  */
40
43
  export declare function getContainerUser(cid: string, deps?: DockerDeps): string;
41
44
  /**
42
- * Run `docker exec --user <user> [-it] <cid> <args...>`. The user defaults to
45
+ * Extract the effective `remoteUser` from a `devcontainer.metadata` label.
46
+ *
47
+ * The label is a JSON array of config fragments (from the devcontainer.json and
48
+ * each feature); the effective value is the LAST fragment that sets one (merge
49
+ * order). Returns null when the label is absent, unparseable, or sets no
50
+ * remoteUser.
51
+ */
52
+ export declare function remoteUserFromMetadata(metadataJson: string): string | null;
53
+ /**
54
+ * Resolve the in-container working directory `docker exec` should run from.
55
+ *
56
+ * The container's `Config.WorkingDir` is `/` for a devcontainer, so a bare
57
+ * `docker exec ... moot up` lands in `/` and the in-container `moot` never finds
58
+ * `moot.toml` (its `find_config()` walks cwd→parents from `/`). The devcontainer
59
+ * CLI bind-mounts the project root to `/workspaces/<name>`, so we read the
60
+ * container's mounts and return that destination. Returns null when no such
61
+ * mount exists or inspect fails — callers then omit `-w` (status-quo behavior).
62
+ */
63
+ export declare function getContainerWorkdir(cid: string, deps?: DockerDeps): string | null;
64
+ /**
65
+ * Run `docker exec --user <user> [-w <workdir>] [-it] <cid> <args...>`. The user
66
+ * defaults to
43
67
  * the container's configured `Config.User` (resolved via {@link getContainerUser}),
44
68
  * so devcontainers with a non-`node` user (e.g. `dev`, `vscode`) work without
45
69
  * per-project patching; pass `options.user` to override (e.g. `'root'`). Streams
@@ -50,6 +74,7 @@ export declare function getContainerUser(cid: string, deps?: DockerDeps): string
50
74
  export declare function execInContainer(cid: string, args: readonly string[], options?: {
51
75
  interactive?: boolean;
52
76
  user?: string;
77
+ workdir?: string;
53
78
  }, deps?: DockerDeps): Promise<number>;
54
79
  /**
55
80
  * Helper: look up cid for cwd or throw the standard "no container" error.
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGzE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,KACnB,WAAW,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KACnE,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,eAAO,MAAM,gBAAgB,EAAE,OAU9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAQ5B,CAAC;AAEL,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAe,GACpB,MAAM,GAAG,IAAI,CAUf;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAM3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,EACtD,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAe,GACpB,MAAM,CASR"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGzE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,GAAG,CACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,KACnB,WAAW,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,KACnE,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,eAAO,MAAM,gBAAgB,EAAE,OAU9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAQ5B,CAAC;AAEL,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAe,GACpB,MAAM,GAAG,IAAI,CAUf;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe,GAAG,MAAM,GAAG,IAAI,CAmBrF;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,EACxE,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,UAAe,GACpB,MAAM,CASR"}
package/dist/docker.js CHANGED
@@ -64,21 +64,95 @@ export async function devcontainerUp(workspace, deps = {}) {
64
64
  /**
65
65
  * Resolve the user `docker exec` should run as for container `cid`.
66
66
  *
67
- * Runs `docker inspect --format '{{.Config.User}}' <cid>` and returns the
68
- * trimmed `Config.User`. Falls back to `'node'` when that value is empty —
69
- * which also covers an inspect failure (a non-zero exit yields empty stdout),
70
- * so a USER-less image or a container that vanished after `requireContainerId`
71
- * degrades to the historical default instead of raising.
67
+ * Prefers the devcontainer's configured `remoteUser` (read from the
68
+ * `devcontainer.metadata` label the devcontainer CLI stamps), then the image's
69
+ * `Config.User`, then `'node'`. The remoteUser must win because the image's
70
+ * `Config.User` is commonly `root` even when the devcontainer runs as a
71
+ * non-root user (e.g. `node`): execing as root would create root-owned files in
72
+ * the bind-mounted workspace and trip git's "dubious ownership" guard against
73
+ * the (user-owned) repo. Falls back gracefully on inspect failure (empty
74
+ * stdout) so a USER-less image or a vanished container degrades to `'node'`.
72
75
  */
73
76
  export function getContainerUser(cid, deps = {}) {
74
77
  const spawnFn = deps.spawnSyncFn ?? defaultSpawnSync;
78
+ const meta = spawnFn('docker', [
79
+ 'inspect', '--format', '{{index .Config.Labels "devcontainer.metadata"}}', cid,
80
+ ]);
81
+ if (meta.status === 0) {
82
+ const remoteUser = remoteUserFromMetadata(meta.stdout);
83
+ if (remoteUser)
84
+ return remoteUser;
85
+ }
75
86
  const result = spawnFn('docker', [
76
87
  'inspect', '--format', '{{.Config.User}}', cid,
77
88
  ]);
78
89
  return result.stdout.trim() || 'node';
79
90
  }
80
91
  /**
81
- * Run `docker exec --user <user> [-it] <cid> <args...>`. The user defaults to
92
+ * Extract the effective `remoteUser` from a `devcontainer.metadata` label.
93
+ *
94
+ * The label is a JSON array of config fragments (from the devcontainer.json and
95
+ * each feature); the effective value is the LAST fragment that sets one (merge
96
+ * order). Returns null when the label is absent, unparseable, or sets no
97
+ * remoteUser.
98
+ */
99
+ export function remoteUserFromMetadata(metadataJson) {
100
+ const trimmed = metadataJson.trim();
101
+ if (!trimmed)
102
+ return null;
103
+ let parsed;
104
+ try {
105
+ parsed = JSON.parse(trimmed);
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ const fragments = Array.isArray(parsed) ? parsed : [parsed];
111
+ let user = null;
112
+ for (const frag of fragments) {
113
+ if (frag && typeof frag === 'object') {
114
+ const ru = frag.remoteUser;
115
+ if (typeof ru === 'string' && ru)
116
+ user = ru; // last one wins
117
+ }
118
+ }
119
+ return user;
120
+ }
121
+ /**
122
+ * Resolve the in-container working directory `docker exec` should run from.
123
+ *
124
+ * The container's `Config.WorkingDir` is `/` for a devcontainer, so a bare
125
+ * `docker exec ... moot up` lands in `/` and the in-container `moot` never finds
126
+ * `moot.toml` (its `find_config()` walks cwd→parents from `/`). The devcontainer
127
+ * CLI bind-mounts the project root to `/workspaces/<name>`, so we read the
128
+ * container's mounts and return that destination. Returns null when no such
129
+ * mount exists or inspect fails — callers then omit `-w` (status-quo behavior).
130
+ */
131
+ export function getContainerWorkdir(cid, deps = {}) {
132
+ const spawnFn = deps.spawnSyncFn ?? defaultSpawnSync;
133
+ const result = spawnFn('docker', [
134
+ 'inspect', '--format', '{{json .Mounts}}', cid,
135
+ ]);
136
+ if (result.status !== 0)
137
+ return null;
138
+ let mounts;
139
+ try {
140
+ mounts = JSON.parse(result.stdout);
141
+ }
142
+ catch {
143
+ return null;
144
+ }
145
+ // Prefer the shortest /workspaces/* destination so the top-level workspace
146
+ // wins over any nested bind (e.g. a separately-mounted .worktrees path).
147
+ const dests = mounts
148
+ .map((m) => m.Destination)
149
+ .filter((d) => typeof d === 'string' && d.startsWith('/workspaces/'))
150
+ .sort((a, b) => a.length - b.length);
151
+ return dests[0] ?? null;
152
+ }
153
+ /**
154
+ * Run `docker exec --user <user> [-w <workdir>] [-it] <cid> <args...>`. The user
155
+ * defaults to
82
156
  * the container's configured `Config.User` (resolved via {@link getContainerUser}),
83
157
  * so devcontainers with a non-`node` user (e.g. `dev`, `vscode`) work without
84
158
  * per-project patching; pass `options.user` to override (e.g. `'root'`). Streams
@@ -89,11 +163,18 @@ export function getContainerUser(cid, deps = {}) {
89
163
  export async function execInContainer(cid, args, options = {}, deps = {}) {
90
164
  const spawnFn = deps.spawnAsyncFn ?? defaultSpawnAsync;
91
165
  const user = options.user ?? getContainerUser(cid, deps);
166
+ // Resolve the workspace folder so the in-container `moot` runs where
167
+ // moot.toml lives (the container's WorkingDir is `/`). An explicit
168
+ // options.workdir wins; otherwise auto-detect from the container's mounts.
169
+ const workdir = options.workdir ?? getContainerWorkdir(cid, deps);
92
170
  const dockerArgs = ['exec'];
93
171
  if (options.interactive) {
94
172
  dockerArgs.push('-it');
95
173
  }
96
174
  dockerArgs.push('--user', user);
175
+ if (workdir) {
176
+ dockerArgs.push('-w', workdir);
177
+ }
97
178
  if (options.interactive) {
98
179
  dockerArgs.push('-e', 'TERM=xterm-256color', '-e', 'LANG=C.UTF-8');
99
180
  const colorterm = process.env.COLORTERM;
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mootup/moot-cli",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Host-side operator CLI for the Moot agent team workflow. Wraps devcontainer launch and delegates in-container work to the Python moot CLI via docker exec.",
5
5
  "license": "MIT",
6
6
  "repository": {