@memnexus-ai/mx-agent-cli 0.1.22 → 0.1.24
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 +104 -0
- package/dist/__tests__/claude-sync.test.js +54 -16
- package/dist/__tests__/claude-sync.test.js.map +1 -1
- package/dist/__tests__/init-validation.test.d.ts +2 -0
- package/dist/__tests__/init-validation.test.d.ts.map +1 -0
- package/dist/__tests__/init-validation.test.js +32 -0
- package/dist/__tests__/init-validation.test.js.map +1 -0
- package/dist/commands/create.js +1 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +16 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.js +1 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/lib/claude.d.ts +9 -0
- package/dist/lib/claude.d.ts.map +1 -1
- package/dist/lib/claude.js +109 -28
- package/dist/lib/claude.js.map +1 -1
- package/dist/lib/project-config.d.ts +7 -0
- package/dist/lib/project-config.d.ts.map +1 -1
- package/dist/lib/project-config.js +3 -2
- package/dist/lib/project-config.js.map +1 -1
- package/dist/lib/templates.d.ts +1 -1
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +107 -24
- package/dist/lib/templates.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# @memnexus-ai/mx-agent-cli
|
|
2
|
+
|
|
3
|
+
`mx-agent` lets you run isolated AI agent teams on any git repository. Each team gets its own git worktree, a roleguide that defines its job, and named MemNexus memories that carry state across sessions — so you can run multiple focused agents in parallel without them stepping on each other.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- **Node 18+**
|
|
8
|
+
- **MemNexus access** — npm scope `@memnexus-ai` requires registry access; contact your MemNexus administrator
|
|
9
|
+
- **`mx` CLI installed** — required by `mx-agent status` and `mx-agent pager`; install from MemNexus
|
|
10
|
+
- **A git repository** — `mx-agent` must be run from inside a git repo
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
**1. Install**
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install -g @memnexus-ai/mx-agent-cli
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**2. Initialise your project**
|
|
21
|
+
|
|
22
|
+
Run this once from the root of your git repository:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
mx-agent init
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Creates `mx-agent.config.json` and the `mx-agent-system/` directory structure including agent permissions config and a `CLAUDE.md.template`.
|
|
29
|
+
|
|
30
|
+
**3. Write a roleguide**
|
|
31
|
+
|
|
32
|
+
A roleguide is a markdown file that acts as the agent's job description — what it works on, how it prioritises, and how it reports status. See [docs/adoption-guide.md](../docs/adoption-guide.md) for a full template and explanation.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Example: create your first roleguide
|
|
36
|
+
vim mx-agent-system/roleguides/my-team-leader.md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**4. Create a team and start a session**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
mx-agent create --roleguide mx-agent-system/roleguides/my-team-leader.md --name my-team
|
|
43
|
+
mx-agent start my-team
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Command Reference
|
|
49
|
+
|
|
50
|
+
| Command | Description | Key options |
|
|
51
|
+
|---------|-------------|-------------|
|
|
52
|
+
| `mx-agent init` | Scaffold `mx-agent-system/` for a new project | `--force`, `--base-branch <branch>`, `--worktree-dir <path>`, `--config-source <path>` |
|
|
53
|
+
| `mx-agent create` | Create a new agent team: worktree + memories + catalog entry | `--roleguide <path>` (required), `--name <slug>` |
|
|
54
|
+
| `mx-agent start <name>` | Start an isolated Claude session for a team | — |
|
|
55
|
+
| `mx-agent list` | List all teams and their worktree status | — |
|
|
56
|
+
| `mx-agent status <name>` | Show a team's current `{name}-leader-state` memory | — |
|
|
57
|
+
| `mx-agent usage [name]` | Show token usage and cost from Claude session logs, broken down by team | `--recent <period>` (default: `30d`; e.g. `7d`, `24h`) |
|
|
58
|
+
| `mx-agent pager` | Watch team states and post Slack alerts when operator attention is needed | `--webhook <url>`, `--interval <seconds>` (default: `300`), `--once` |
|
|
59
|
+
| `mx-agent update` | Update `mx-agent` to the latest version from npm | — |
|
|
60
|
+
| `mx-agent config set <key> <value>` | Set a persistent operator config value (e.g. `slack-webhook`) | — |
|
|
61
|
+
| `mx-agent config get <key>` | Get a config value | — |
|
|
62
|
+
| `mx-agent config list` | List all config values | — |
|
|
63
|
+
| `mx-agent config unset <key>` | Remove a config value | — |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Configuration
|
|
68
|
+
|
|
69
|
+
`mx-agent.config.json` is written to your project root by `mx-agent init`. All fields are optional and fall back to the defaults shown below.
|
|
70
|
+
|
|
71
|
+
| Field | Type | Default | Description |
|
|
72
|
+
|-------|------|---------|-------------|
|
|
73
|
+
| `baseBranch` | `string` | `"main"` | Base branch for git operations. Change to `"develop"` if your default branch isn't `main`. |
|
|
74
|
+
| `worktreeDir` | `string` | `".worktrees"` | Directory under the project root where agent worktrees are stored. |
|
|
75
|
+
| `configSource` | `string` | `"mx-agent-system/agent-config"` | Path to the agent-config directory containing `settings.json`, `CLAUDE.md.template`, and hooks. |
|
|
76
|
+
| `teamsDir` | `string` | `"mx-agent-system/teams"` | Path to the teams catalog directory. |
|
|
77
|
+
| `roleguidesDir` | `string` | `"mx-agent-system/roleguides"` | Path to the roleguides directory. |
|
|
78
|
+
|
|
79
|
+
Values must contain only alphanumeric characters, hyphens, underscores, dots, and forward slashes. Path traversal (`..`) is not permitted.
|
|
80
|
+
|
|
81
|
+
**Example:**
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"baseBranch": "develop",
|
|
86
|
+
"worktreeDir": ".worktrees",
|
|
87
|
+
"configSource": "mx-agent-system/agent-config",
|
|
88
|
+
"teamsDir": "mx-agent-system/teams",
|
|
89
|
+
"roleguidesDir": "mx-agent-system/roleguides"
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Further reading
|
|
96
|
+
|
|
97
|
+
See **[docs/adoption-guide.md](../docs/adoption-guide.md)** for:
|
|
98
|
+
|
|
99
|
+
- Core concepts explained
|
|
100
|
+
- Step-by-step setup walkthrough
|
|
101
|
+
- How to customise agent permissions and `CLAUDE.md.template`
|
|
102
|
+
- Operational workflows (monitoring, cost tracking, team status)
|
|
103
|
+
- Troubleshooting common errors
|
|
104
|
+
- Full roleguide template
|
|
@@ -10,6 +10,7 @@ vi.mock('child_process', () => ({
|
|
|
10
10
|
// Import spawnSync mock handle and the function under test
|
|
11
11
|
import { spawnSync } from 'child_process';
|
|
12
12
|
import { syncClaudeConfig } from '../lib/claude.js';
|
|
13
|
+
import { SETTINGS_JSON_TEMPLATE, WORKTREE_GUARD_SH_TEMPLATE } from '../lib/templates.js';
|
|
13
14
|
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
14
15
|
let tmpRoot;
|
|
15
16
|
beforeEach(() => {
|
|
@@ -45,43 +46,80 @@ describe('syncClaudeConfig — atomic write', () => {
|
|
|
45
46
|
expect(readFileSync(settingsPath, 'utf-8')).toBe('{"allow":[],"deny":[]}');
|
|
46
47
|
expect(readFileSync(guardPath, 'utf-8')).toBe('#!/bin/bash\n# guard script\n');
|
|
47
48
|
});
|
|
48
|
-
it('settings.json
|
|
49
|
+
it('settings.json git show fails — falls back to npm default, both files written', () => {
|
|
49
50
|
mockSpawnSync
|
|
50
51
|
.mockReturnValueOnce(ok()) // git fetch succeeds
|
|
51
|
-
.mockReturnValueOnce(fail())
|
|
52
|
+
.mockReturnValueOnce(fail()) // git show settings.json fails
|
|
53
|
+
.mockReturnValueOnce(ok('#!/bin/bash\n# guard script\n')); // git show worktree-guard.sh succeeds
|
|
52
54
|
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
53
55
|
const settingsPath = join(tmpRoot, '.claude', 'settings.json');
|
|
54
56
|
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
55
|
-
|
|
56
|
-
expect(existsSync(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
expect(mockSpawnSync).toHaveBeenCalledTimes(2);
|
|
57
|
+
// Both files are written — settings falls back to npm default
|
|
58
|
+
expect(existsSync(settingsPath)).toBe(true);
|
|
59
|
+
expect(existsSync(guardPath)).toBe(true);
|
|
60
|
+
expect(readFileSync(settingsPath, 'utf-8')).toBe(SETTINGS_JSON_TEMPLATE);
|
|
60
61
|
});
|
|
61
|
-
it('worktree-guard.sh
|
|
62
|
+
it('worktree-guard.sh git show fails — falls back to npm default, both files written', () => {
|
|
62
63
|
mockSpawnSync
|
|
63
64
|
.mockReturnValueOnce(ok()) // git fetch succeeds
|
|
64
65
|
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json succeeds
|
|
65
66
|
.mockReturnValueOnce(fail()); // git show worktree-guard.sh fails
|
|
66
67
|
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
67
|
-
// Neither file should be written — this is the core atomicity guarantee
|
|
68
68
|
const settingsPath = join(tmpRoot, '.claude', 'settings.json');
|
|
69
69
|
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
70
|
-
|
|
71
|
-
expect(existsSync(
|
|
72
|
-
|
|
73
|
-
expect(
|
|
70
|
+
// Both files are written — guard falls back to npm default
|
|
71
|
+
expect(existsSync(settingsPath)).toBe(true);
|
|
72
|
+
expect(existsSync(guardPath)).toBe(true);
|
|
73
|
+
expect(readFileSync(settingsPath, 'utf-8')).toBe('{"allow":[],"deny":[]}');
|
|
74
|
+
expect(readFileSync(guardPath, 'utf-8')).toBe(WORKTREE_GUARD_SH_TEMPLATE);
|
|
74
75
|
});
|
|
75
|
-
it('git fetch fails —
|
|
76
|
+
it('git fetch fails — falls back to npm defaults, both files still written', () => {
|
|
76
77
|
mockSpawnSync
|
|
77
78
|
.mockReturnValueOnce(fail()); // git fetch fails
|
|
78
79
|
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
79
80
|
const settingsPath = join(tmpRoot, '.claude', 'settings.json');
|
|
80
81
|
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
81
|
-
|
|
82
|
-
expect(existsSync(
|
|
82
|
+
// Fetch failure is non-fatal — npm defaults are used
|
|
83
|
+
expect(existsSync(settingsPath)).toBe(true);
|
|
84
|
+
expect(existsSync(guardPath)).toBe(true);
|
|
85
|
+
expect(readFileSync(settingsPath, 'utf-8')).toBe(SETTINGS_JSON_TEMPLATE);
|
|
86
|
+
expect(readFileSync(guardPath, 'utf-8')).toBe(WORKTREE_GUARD_SH_TEMPLATE);
|
|
83
87
|
// Only the fetch call should have been made — no git show calls
|
|
84
88
|
expect(mockSpawnSync).toHaveBeenCalledTimes(1);
|
|
85
89
|
});
|
|
90
|
+
it('git fetch fails + both files already exist — skips write (SF-4: no downgrade on transient failure)', () => {
|
|
91
|
+
// Pre-create both config files with stronger-than-npm content
|
|
92
|
+
const claudeDir = join(tmpRoot, '.claude');
|
|
93
|
+
const hooksDir = join(claudeDir, 'hooks');
|
|
94
|
+
mkdirSync(hooksDir, { recursive: true });
|
|
95
|
+
const existingSettings = '{"hooks":{},"permissions":{"allow":[],"deny":["Bash(rm -rf *)"]}}';
|
|
96
|
+
const existingGuard = '#!/bin/bash\n# stronger existing guard\nexit 0\n';
|
|
97
|
+
const settingsPath = join(claudeDir, 'settings.json');
|
|
98
|
+
const guardPath = join(hooksDir, 'worktree-guard.sh');
|
|
99
|
+
require('fs').writeFileSync(settingsPath, existingSettings);
|
|
100
|
+
require('fs').writeFileSync(guardPath, existingGuard);
|
|
101
|
+
mockSpawnSync
|
|
102
|
+
.mockReturnValueOnce(fail()); // git fetch fails → npm defaults only
|
|
103
|
+
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
104
|
+
// Files should be untouched — no downgrade to npm defaults
|
|
105
|
+
expect(readFileSync(settingsPath, 'utf-8')).toBe(existingSettings);
|
|
106
|
+
expect(readFileSync(guardPath, 'utf-8')).toBe(existingGuard);
|
|
107
|
+
});
|
|
108
|
+
it('git show fails for settings.json → falls back to npm default (not the old early-return)', () => {
|
|
109
|
+
mockSpawnSync
|
|
110
|
+
.mockReturnValueOnce(ok()) // git fetch succeeds
|
|
111
|
+
.mockReturnValueOnce(fail()) // git show settings.json fails — should NOT exit early
|
|
112
|
+
.mockReturnValueOnce(fail()); // git show worktree-guard.sh also fails — falls back to npm default
|
|
113
|
+
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
114
|
+
const settingsPath = join(tmpRoot, '.claude', 'settings.json');
|
|
115
|
+
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
116
|
+
// Function should NOT have exited early — both files are written
|
|
117
|
+
expect(existsSync(settingsPath)).toBe(true);
|
|
118
|
+
expect(existsSync(guardPath)).toBe(true);
|
|
119
|
+
// settings.json fell back to npm default
|
|
120
|
+
expect(readFileSync(settingsPath, 'utf-8')).toBe(SETTINGS_JSON_TEMPLATE);
|
|
121
|
+
// worktree-guard.sh also fell back to npm default
|
|
122
|
+
expect(readFileSync(guardPath, 'utf-8')).toBe(WORKTREE_GUARD_SH_TEMPLATE);
|
|
123
|
+
});
|
|
86
124
|
});
|
|
87
125
|
//# sourceMappingURL=claude-sync.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/claude-sync.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAE5B,kFAAkF;AAClF,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9B,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;CAClB,CAAC,CAAC,CAAC;AAEJ,2DAA2D;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/claude-sync.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/init-validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { validateProjectConfig } from '../lib/project-config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Tests for the init CLI option validation path (PLAT-032).
|
|
5
|
+
*
|
|
6
|
+
* The mx-agent init command builds a partial ProjectConfig from its CLI opts
|
|
7
|
+
* (--base-branch, --worktree-dir, --config-source) and passes them through
|
|
8
|
+
* validateProjectConfig() before writing mx-agent.config.json.
|
|
9
|
+
*
|
|
10
|
+
* These tests exercise validateProjectConfig() directly with the same values
|
|
11
|
+
* the CLI would pass, confirming that shell metacharacters and path traversal
|
|
12
|
+
* are rejected before any file is written.
|
|
13
|
+
*/
|
|
14
|
+
describe('init CLI option validation (PLAT-032)', () => {
|
|
15
|
+
it('rejects --base-branch value containing a shell metacharacter', () => {
|
|
16
|
+
const configFromOpts = { baseBranch: 'main; rm -rf /' };
|
|
17
|
+
expect(() => validateProjectConfig(configFromOpts)).toThrow(/disallowed characters/);
|
|
18
|
+
});
|
|
19
|
+
it('rejects --config-source value containing path traversal (..)', () => {
|
|
20
|
+
const configFromOpts = { configSource: '../../etc/passwd' };
|
|
21
|
+
expect(() => validateProjectConfig(configFromOpts)).toThrow(/path traversal/);
|
|
22
|
+
});
|
|
23
|
+
it('accepts valid CLI option values without throwing', () => {
|
|
24
|
+
const configFromOpts = {
|
|
25
|
+
baseBranch: 'feature/my-branch',
|
|
26
|
+
worktreeDir: '.worktrees',
|
|
27
|
+
configSource: 'mx-agent-system/agent-config',
|
|
28
|
+
};
|
|
29
|
+
expect(() => validateProjectConfig(configFromOpts)).not.toThrow();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=init-validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-validation.test.js","sourceRoot":"","sources":["../../src/__tests__/init-validation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;;;;;;;GAUG;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,cAAc,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,cAAc,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;QAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,cAAc,GAAG;YACrB,UAAU,EAAE,mBAAmB;YAC/B,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE,8BAA8B;SAC7C,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/commands/create.js
CHANGED
|
@@ -102,7 +102,7 @@ export async function runCreate(options) {
|
|
|
102
102
|
// SF-1 fix: create must install security config so agents launched directly
|
|
103
103
|
// in the worktree (without `agent start`) are still protected by the
|
|
104
104
|
// deny-list and worktree isolation hook.
|
|
105
|
-
syncClaudeConfig(worktreePath, cfg);
|
|
105
|
+
syncClaudeConfig(worktreePath, { ...cfg, projectRoot });
|
|
106
106
|
deployClaudeMd(projectRoot, worktreePath, cfg);
|
|
107
107
|
// ── 6. Generate CLAUDE.local.md ────────────────────────────────────
|
|
108
108
|
const currentBranch = getCurrentBranch(worktreePath) || branch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEnF;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,wBAAwB;IACxB,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,oBAAoB;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC,CAAC;QACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+EAA+E;IAC/E,MAAM,OAAO,GAAG,gCAAgC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4FAA4F,CAAC,CAAC,CAAC;QACvH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,eAAe,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,sEAAsE;IACtE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,gCAAgC,CAAC,CAAC;IACzC,WAAW,CAAC,WAAW,CAAC,CAAC;IAEzB,sEAAsE;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACrE,UAAU,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACpC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAE9C,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,yCAAyC;IACzC,gBAAgB,CAAC,YAAY,EAAE,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IACxD,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IAE/C,sEAAsE;IACtE,MAAM,aAAa,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC;IAC/D,gBAAgB,CAAC;QACf,WAAW;QACX,YAAY;QACZ,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,aAAa;QACrB,IAAI;KACL,CAAC,CAAC;IAEH,qEAAqE;IACrE,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,UAAU,CAAC,kEAAkE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,IAAI,sDAAsD,CAAC,CAAC,CAAC;QACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,IAAI,uDAAuD,CAAC,CAAC,CAAC;QACtH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,IAAI,sDAAsD,CAAC,CAAC,CAAC;IACvH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACpE,eAAe,CAAC,GAAG,IAAI,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7D,eAAe,CAAC,GAAG,IAAI,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/D,eAAe,CAAC,GAAG,IAAI,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7D,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAC3F,CAAC;IAED,sEAAsE;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,gBAAgB,CAAC,WAAW,EAAE;YAC5B,IAAI;YACJ,WAAW;YACX,SAAS;YACT,aAAa,EAAE;gBACb,GAAG,IAAI,eAAe;gBACtB,GAAG,IAAI,gBAAgB;gBACvB,GAAG,IAAI,eAAe;aACvB;SACF,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjB,UAAU,CAAC,yBAAyB,IAAI,KAAK,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,sEAAsE;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,GAAG,IAAI,kBAAkB,IAAI,mBAAmB,IAAI,eAAe,CAAC;IAC1F,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,aAAa,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,aAAa,gCAAgC,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,IAAI,KAAK,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AASH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA2BD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FjE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -21,6 +21,7 @@ import { join } from 'path';
|
|
|
21
21
|
import chalk from 'chalk';
|
|
22
22
|
import { findProjectRoot } from '../lib/worktree.js';
|
|
23
23
|
import { SETTINGS_JSON_TEMPLATE, WORKTREE_GUARD_SH_TEMPLATE, CLAUDE_MD_TEMPLATE } from '../lib/templates.js';
|
|
24
|
+
import { validateProjectConfig } from '../lib/project-config.js';
|
|
24
25
|
function logCreated(path) {
|
|
25
26
|
console.log(chalk.green(' ✓ created ') + chalk.dim(path));
|
|
26
27
|
}
|
|
@@ -53,6 +54,21 @@ export async function runInit(options) {
|
|
|
53
54
|
console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));
|
|
54
55
|
process.exit(1);
|
|
55
56
|
}
|
|
57
|
+
// Validate CLI option values before any file writes
|
|
58
|
+
const configFromOpts = {};
|
|
59
|
+
if (options.baseBranch)
|
|
60
|
+
configFromOpts.baseBranch = options.baseBranch;
|
|
61
|
+
if (options.worktreeDir)
|
|
62
|
+
configFromOpts.worktreeDir = options.worktreeDir;
|
|
63
|
+
if (options.configSource)
|
|
64
|
+
configFromOpts.configSource = options.configSource;
|
|
65
|
+
try {
|
|
66
|
+
validateProjectConfig(configFromOpts);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
56
72
|
// Resolve config values from options (fall back to defaults)
|
|
57
73
|
const baseBranch = options.baseBranch ?? 'main';
|
|
58
74
|
const worktreeDir = options.worktreeDir ?? '.worktrees';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/start.js
CHANGED
|
@@ -91,7 +91,7 @@ export async function runStart(options) {
|
|
|
91
91
|
}
|
|
92
92
|
console.log();
|
|
93
93
|
// ── 5. Sync Claude config from origin/<baseBranch> ────────────────
|
|
94
|
-
syncClaudeConfig(worktreePath, cfg);
|
|
94
|
+
syncClaudeConfig(worktreePath, { ...cfg, projectRoot });
|
|
95
95
|
// ── 5. Deploy fresh CLAUDE.md ─────────────────────────────────────
|
|
96
96
|
deployClaudeMd(projectRoot, worktreePath, cfg);
|
|
97
97
|
// ── 6. Regenerate CLAUDE.local.md ────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAMnF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAEzB,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,eAAe,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjE,sEAAsE;IACtE,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,WAAW,0BAA0B,IAAI,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC;QAChH,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,mFAAmF;IACnF,mCAAmC;IACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE/C,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,qBAAqB;QACrB,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,CAAC,CAAC,kCAAkC;IAC9C,CAAC;IAED,qEAAqE;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,SAAiB,CAAC;IACtB,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC;QACpB,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,sBAAsB;QACtB,SAAS,GAAG,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,YAAY,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,oEAAoE;IACpE,iEAAiE;IACjE,gEAAgE;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE;QACxE,GAAG,EAAE,YAAY;QACjB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,GAAG,CAAC,UAAU,+BAA+B,CAAC,CAAC,CAAC;IACzG,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE;YAC5E,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,4DAA4D;YAC5D,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,GAAG,CAAC,UAAU,2CAA2C,CAAC,CAAC,CAAC;YACzH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,YAAY,kBAAkB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uCAAuC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,qEAAqE;IACrE,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/claude.d.ts
CHANGED
|
@@ -36,15 +36,24 @@ export declare function writeClaudeLocal(opts: {
|
|
|
36
36
|
* Sync .claude/settings.json and .claude/hooks/worktree-guard.sh from the
|
|
37
37
|
* platform team's canonical source: <configSource>/ on origin/<baseBranch>.
|
|
38
38
|
*
|
|
39
|
+
* Config resolution order for each file (3-step):
|
|
40
|
+
* 1. `git show origin/<baseBranch>:<path>` — remote (tamper-resistant)
|
|
41
|
+
* 2. Local <projectRoot>/<configSource>/<file> — offline fallback
|
|
42
|
+
* 3. Embedded npm package template — always available, never fails
|
|
43
|
+
*
|
|
39
44
|
* Uses `git show origin/<baseBranch>:<path>` to read file content directly from
|
|
40
45
|
* the remote object store — no checkout/unstage dance, no staged files left behind.
|
|
41
46
|
*
|
|
42
47
|
* Source of truth for all agent configuration is <configSource>/.
|
|
43
48
|
* Changes to agent permissions or hooks must go through a platform team PR.
|
|
49
|
+
*
|
|
50
|
+
* Atomicity guarantee (PLAT-014): both files are resolved to content before
|
|
51
|
+
* any writes occur — either both are written or neither is.
|
|
44
52
|
*/
|
|
45
53
|
export declare function syncClaudeConfig(worktreePath: string, opts?: {
|
|
46
54
|
baseBranch?: string;
|
|
47
55
|
configSource?: string;
|
|
56
|
+
projectRoot?: string;
|
|
48
57
|
}): void;
|
|
49
58
|
/**
|
|
50
59
|
* Exec into a Claude session in the worktree with the given initial prompt.
|
package/dist/lib/claude.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAExC;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,IAAI,CA8EN;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,IAAI,CAmDP;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9E,IAAI,CAqIN;AAsDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAoCP"}
|
package/dist/lib/claude.js
CHANGED
|
@@ -6,6 +6,7 @@ import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync,
|
|
|
6
6
|
import { join } from 'path';
|
|
7
7
|
import { execSync, spawnSync } from 'child_process';
|
|
8
8
|
import chalk from 'chalk';
|
|
9
|
+
import { CLAUDE_MD_TEMPLATE, SETTINGS_JSON_TEMPLATE, WORKTREE_GUARD_SH_TEMPLATE } from './templates.js';
|
|
9
10
|
// ── Logging helpers ───────────────────────────────────────────────────
|
|
10
11
|
export function logSuccess(msg) {
|
|
11
12
|
console.log(chalk.green(' ✓ ' + msg));
|
|
@@ -86,13 +87,20 @@ export function deployClaudeMd(projectRoot, worktreePath, opts = {}) {
|
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
}
|
|
90
|
+
// Fall back to npm package default
|
|
91
|
+
let fromNpmDefault = false;
|
|
89
92
|
if (!content) {
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
content = CLAUDE_MD_TEMPLATE;
|
|
94
|
+
fromNpmDefault = true;
|
|
92
95
|
}
|
|
93
96
|
try {
|
|
94
97
|
writeFileSync(claudeMdPath, content);
|
|
95
|
-
|
|
98
|
+
if (fromNpmDefault) {
|
|
99
|
+
logSuccess('Deployed CLAUDE.md from npm package default (customize mx-agent-system/agent-config/CLAUDE.md.template to override)');
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
logSuccess('Deployed CLAUDE.md from template');
|
|
103
|
+
}
|
|
96
104
|
}
|
|
97
105
|
catch {
|
|
98
106
|
logWarning('Could not write CLAUDE.md');
|
|
@@ -161,59 +169,132 @@ Today's date is ${new Date().toISOString().slice(0, 10)}.
|
|
|
161
169
|
* Sync .claude/settings.json and .claude/hooks/worktree-guard.sh from the
|
|
162
170
|
* platform team's canonical source: <configSource>/ on origin/<baseBranch>.
|
|
163
171
|
*
|
|
172
|
+
* Config resolution order for each file (3-step):
|
|
173
|
+
* 1. `git show origin/<baseBranch>:<path>` — remote (tamper-resistant)
|
|
174
|
+
* 2. Local <projectRoot>/<configSource>/<file> — offline fallback
|
|
175
|
+
* 3. Embedded npm package template — always available, never fails
|
|
176
|
+
*
|
|
164
177
|
* Uses `git show origin/<baseBranch>:<path>` to read file content directly from
|
|
165
178
|
* the remote object store — no checkout/unstage dance, no staged files left behind.
|
|
166
179
|
*
|
|
167
180
|
* Source of truth for all agent configuration is <configSource>/.
|
|
168
181
|
* Changes to agent permissions or hooks must go through a platform team PR.
|
|
182
|
+
*
|
|
183
|
+
* Atomicity guarantee (PLAT-014): both files are resolved to content before
|
|
184
|
+
* any writes occur — either both are written or neither is.
|
|
169
185
|
*/
|
|
170
186
|
export function syncClaudeConfig(worktreePath, opts = {}) {
|
|
171
187
|
const baseBranch = opts.baseBranch ?? 'main';
|
|
172
188
|
const configSource = opts.configSource ?? 'mx-agent-system/agent-config';
|
|
189
|
+
const projectRoot = opts.projectRoot;
|
|
173
190
|
logDim(`Syncing agent config from ${configSource}/ (origin/${baseBranch})...`);
|
|
174
|
-
// ── 1. Fetch
|
|
191
|
+
// ── 1. Fetch (non-fatal) ──────────────────────────────────────────────
|
|
175
192
|
const fetchR = spawnSync('git', ['fetch', 'origin', baseBranch, '--quiet'], {
|
|
176
193
|
cwd: worktreePath, stdio: 'pipe',
|
|
177
194
|
});
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
195
|
+
const fetchSucceeded = fetchR.status === 0;
|
|
196
|
+
if (!fetchSucceeded) {
|
|
197
|
+
logDim(`Could not fetch origin/${baseBranch} — will use local or npm defaults`);
|
|
181
198
|
}
|
|
182
|
-
// ── 2.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (
|
|
187
|
-
|
|
188
|
-
|
|
199
|
+
// ── 2. Resolve both files (3-step per file) ───────────────────────────
|
|
200
|
+
// settings.json
|
|
201
|
+
let settingsContent = null;
|
|
202
|
+
let settingsSource = 'npm';
|
|
203
|
+
if (fetchSucceeded) {
|
|
204
|
+
const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/settings.json`], {
|
|
205
|
+
cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
|
|
206
|
+
});
|
|
207
|
+
if (r.status === 0 && r.stdout) {
|
|
208
|
+
settingsContent = r.stdout;
|
|
209
|
+
settingsSource = 'remote';
|
|
210
|
+
}
|
|
189
211
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
212
|
+
if (!settingsContent && projectRoot) {
|
|
213
|
+
const localPath = join(projectRoot, configSource, 'settings.json');
|
|
214
|
+
if (existsSync(localPath)) {
|
|
215
|
+
try {
|
|
216
|
+
settingsContent = readFileSync(localPath, 'utf-8');
|
|
217
|
+
settingsSource = 'local';
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// fall through to npm default
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (!settingsContent) {
|
|
225
|
+
settingsContent = SETTINGS_JSON_TEMPLATE;
|
|
226
|
+
settingsSource = 'npm';
|
|
227
|
+
}
|
|
228
|
+
// worktree-guard.sh
|
|
229
|
+
let guardContent = null;
|
|
230
|
+
let guardSource = 'npm';
|
|
231
|
+
if (fetchSucceeded) {
|
|
232
|
+
const r = spawnSync('git', ['show', `origin/${baseBranch}:${configSource}/hooks/worktree-guard.sh`], {
|
|
233
|
+
cwd: worktreePath, encoding: 'utf-8', stdio: 'pipe',
|
|
234
|
+
});
|
|
235
|
+
if (r.status === 0 && r.stdout) {
|
|
236
|
+
guardContent = r.stdout;
|
|
237
|
+
guardSource = 'remote';
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!guardContent && projectRoot) {
|
|
241
|
+
const localPath = join(projectRoot, configSource, 'hooks', 'worktree-guard.sh');
|
|
242
|
+
if (existsSync(localPath)) {
|
|
243
|
+
try {
|
|
244
|
+
guardContent = readFileSync(localPath, 'utf-8');
|
|
245
|
+
guardSource = 'local';
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
// fall through to npm default
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (!guardContent) {
|
|
253
|
+
guardContent = WORKTREE_GUARD_SH_TEMPLATE;
|
|
254
|
+
guardSource = 'npm';
|
|
255
|
+
}
|
|
256
|
+
// Determine log message source label
|
|
257
|
+
// Both files resolve via the same path in the common case; use the highest-priority source seen
|
|
258
|
+
const overallSource = (settingsSource === 'remote' && guardSource === 'remote')
|
|
259
|
+
? 'remote'
|
|
260
|
+
: (settingsSource === 'local' || guardSource === 'local') && settingsSource !== 'remote' && guardSource !== 'remote'
|
|
261
|
+
? 'local'
|
|
262
|
+
: settingsSource === 'npm' && guardSource === 'npm'
|
|
263
|
+
? 'npm'
|
|
264
|
+
: 'mixed';
|
|
265
|
+
// ── 3. Skip if both files already exist and both resolved from npm defaults ──
|
|
266
|
+
// Avoids downgrading an existing stronger config on a transient fetch failure.
|
|
267
|
+
const settingsPath = join(worktreePath, '.claude', 'settings.json');
|
|
268
|
+
const guardPath = join(worktreePath, '.claude', 'hooks', 'worktree-guard.sh');
|
|
269
|
+
const settingsExists = existsSync(settingsPath);
|
|
270
|
+
const guardExists = existsSync(guardPath);
|
|
271
|
+
if (settingsExists && guardExists && settingsSource === 'npm' && guardSource === 'npm') {
|
|
272
|
+
logDim('Agent config already exists — skipping npm defaults (remote fetch unavailable)');
|
|
195
273
|
return;
|
|
196
274
|
}
|
|
197
|
-
//
|
|
198
|
-
const settingsContent = settingsR.stdout;
|
|
199
|
-
const guardContent = guardR.stdout;
|
|
200
|
-
// ── 3. Ensure target directory exists ────────────────────────────────
|
|
275
|
+
// ── 4. Ensure target directory exists ────────────────────────────────
|
|
201
276
|
const claudeDir = join(worktreePath, '.claude');
|
|
202
277
|
const hooksDir = join(claudeDir, 'hooks');
|
|
203
278
|
mkdirSync(hooksDir, { recursive: true });
|
|
204
|
-
// ──
|
|
205
|
-
const settingsPath = join(claudeDir, 'settings.json');
|
|
206
|
-
const guardPath = join(hooksDir, 'worktree-guard.sh');
|
|
279
|
+
// ── 5. Write to .tmp files ────────────────────────────────────────────
|
|
207
280
|
const settingsTmp = settingsPath + '.tmp';
|
|
208
281
|
const guardTmp = guardPath + '.tmp';
|
|
209
282
|
try {
|
|
210
283
|
writeFileSync(settingsTmp, settingsContent);
|
|
211
284
|
writeFileSync(guardTmp, guardContent);
|
|
212
285
|
chmodSync(guardTmp, 0o755);
|
|
213
|
-
// ──
|
|
286
|
+
// ── 6. Atomic rename both into place ─────────────────────────────────
|
|
214
287
|
renameSync(settingsTmp, settingsPath);
|
|
215
288
|
renameSync(guardTmp, guardPath);
|
|
216
|
-
|
|
289
|
+
if (overallSource === 'remote') {
|
|
290
|
+
logSuccess(`Agent config synced from ${configSource}/`);
|
|
291
|
+
}
|
|
292
|
+
else if (overallSource === 'local') {
|
|
293
|
+
logSuccess(`Agent config synced from local ${configSource}/`);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
logSuccess('Agent config synced from npm package defaults');
|
|
297
|
+
}
|
|
217
298
|
}
|
|
218
299
|
catch (err) {
|
|
219
300
|
// Clean up any tmp files that were written
|
package/dist/lib/claude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/lib/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,13 @@ export interface ProjectConfig {
|
|
|
19
19
|
roleguidesDir?: string;
|
|
20
20
|
}
|
|
21
21
|
export declare const PROJECT_CONFIG_DEFAULTS: Required<ProjectConfig>;
|
|
22
|
+
/**
|
|
23
|
+
* Validate that config field values are safe for use in shell commands and path joins.
|
|
24
|
+
* Throws a descriptive error if any field contains disallowed characters.
|
|
25
|
+
* Called by loadProjectConfig before returning, and by the init command to validate
|
|
26
|
+
* CLI option values before writing the config file.
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateProjectConfig(config: ProjectConfig): ProjectConfig;
|
|
22
29
|
/**
|
|
23
30
|
* Read mx-agent.config.json from projectRoot.
|
|
24
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,aAAa,CAM3D,CAAC;
|
|
1
|
+
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,aAAa,CAM3D,CAAC;AAKF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAgB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoB3E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAQrF"}
|
|
@@ -20,9 +20,10 @@ const SHELL_UNSAFE_RE = /[;|&`$(){}!#\\<>\n\r\x00]/;
|
|
|
20
20
|
/**
|
|
21
21
|
* Validate that config field values are safe for use in shell commands and path joins.
|
|
22
22
|
* Throws a descriptive error if any field contains disallowed characters.
|
|
23
|
-
* Called by loadProjectConfig before returning
|
|
23
|
+
* Called by loadProjectConfig before returning, and by the init command to validate
|
|
24
|
+
* CLI option values before writing the config file.
|
|
24
25
|
*/
|
|
25
|
-
function validateProjectConfig(config) {
|
|
26
|
+
export function validateProjectConfig(config) {
|
|
26
27
|
for (const [key, value] of Object.entries(config)) {
|
|
27
28
|
if (typeof value !== 'string')
|
|
28
29
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAe5B,MAAM,CAAC,MAAM,uBAAuB,GAA4B;IAC9D,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,8BAA8B;IAC5C,QAAQ,EAAE,uBAAuB;IACjC,aAAa,EAAE,4BAA4B;CAC5C,CAAC;AAEF,8EAA8E;AAC9E,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/lib/project-config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/templates.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare const SETTINGS_JSON_TEMPLATE: string;
|
|
|
13
13
|
* Stub worktree-guard.sh hook.
|
|
14
14
|
* Blocks branch switching to main and force-pushes.
|
|
15
15
|
*/
|
|
16
|
-
export declare const WORKTREE_GUARD_SH_TEMPLATE = "#!/
|
|
16
|
+
export declare const WORKTREE_GUARD_SH_TEMPLATE = "#!/bin/bash\n# worktree-guard.sh \u2014 Claude Code PreToolUse hook\n# Blocks dangerous git operations and directory escapes in worktrees.\n# Customize for your project's safety requirements.\n#\n# Exit 0 = allow, Exit 2 = block\n\nset -euo pipefail\n\n# Read tool input from stdin (JSON format)\nINPUT=$(cat)\nCOMMAND=$(echo \"$INPUT\" | jq -r '.tool_input.command // .command // empty' 2>/dev/null)\n\nif [[ -z \"$COMMAND\" ]]; then\n exit 0\nfi\n\nWORKTREE_PATH=\"${CLAUDE_WORKTREE_PATH:-}\"\n\n# If no worktree restriction set, allow everything\nif [[ -z \"$WORKTREE_PATH\" ]]; then\n exit 0\nfi\n\nWORKTREE_PATH=\"${WORKTREE_PATH%/}\"\n\n# Block cd outside worktree\nif echo \"$COMMAND\" | grep -qE '(^|&&|;)\\s*cd\\s+'; then\n CD_TARGETS=$(echo \"$COMMAND\" | grep -oE 'cd\\s+[^;&|]+' | sed 's/cd\\s*//' | tr -d '\"'\"'\"' || true)\n for TARGET in $CD_TARGETS; do\n [[ -z \"$TARGET\" ]] && continue\n if [[ \"$TARGET\" == /* ]]; then\n RESOLVED=\"$TARGET\"\n else\n RESOLVED=$(cd \"$(pwd)\" 2>/dev/null && cd \"$TARGET\" 2>/dev/null && pwd) || RESOLVED=\"\"\n fi\n RESOLVED=\"${RESOLVED%/}\"\n [[ \"$RESOLVED\" == /tmp* ]] && continue\n [[ \"$RESOLVED\" == \"$WORKTREE_PATH\"* ]] && continue\n if [[ -n \"$RESOLVED\" ]]; then\n echo \"BLOCKED: Cannot navigate outside worktree (target: $TARGET)\" >&2\n exit 2\n fi\n done\nfi\n\n# Block checkout/switch to main\nif echo \"$COMMAND\" | grep -qE 'git\\s+(checkout|switch)\\s+main(\\s|$)'; then\n echo \"BLOCKED: Cannot switch to main branch\" >&2\n exit 2\nfi\n\n# Block new branch creation\nif echo \"$COMMAND\" | grep -qE 'git\\s+(checkout\\s+-b|switch\\s+(-c|--create))'; then\n echo \"BLOCKED: Cannot create new branches from a worktree\" >&2\n exit 2\nfi\n\n# Block merge\nif echo \"$COMMAND\" | grep -qE 'git\\s+merge\\s'; then\n echo \"BLOCKED: Cannot merge branches directly \u2014 use a PR\" >&2\n exit 2\nfi\n\n# Block push to main\nif echo \"$COMMAND\" | grep -qE 'git\\s+push\\s+.*origin\\s+main'; then\n echo \"BLOCKED: Cannot push to main\" >&2\n exit 2\nfi\n\nexit 0\n";
|
|
17
17
|
/**
|
|
18
18
|
* Stub CLAUDE.md.template — the template that gets deployed into each worktree
|
|
19
19
|
* as CLAUDE.md when running mx-agent create / mx-agent start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QA8DlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,sjEAuEtC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4dAkB9B,CAAC"}
|
package/dist/lib/templates.js
CHANGED
|
@@ -9,22 +9,61 @@
|
|
|
9
9
|
* Grants bash access and restricts to the worktree directory.
|
|
10
10
|
*/
|
|
11
11
|
export const SETTINGS_JSON_TEMPLATE = JSON.stringify({
|
|
12
|
+
hooks: {
|
|
13
|
+
PreToolUse: [
|
|
14
|
+
{
|
|
15
|
+
matcher: 'Bash',
|
|
16
|
+
hooks: [{ type: 'command', command: '.claude/hooks/worktree-guard.sh' }],
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
},
|
|
12
20
|
permissions: {
|
|
13
21
|
allow: [
|
|
14
|
-
'Bash
|
|
15
|
-
'Read
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'Glob
|
|
19
|
-
'Grep
|
|
22
|
+
'Bash',
|
|
23
|
+
'Read',
|
|
24
|
+
'Edit',
|
|
25
|
+
'Write',
|
|
26
|
+
'Glob',
|
|
27
|
+
'Grep',
|
|
28
|
+
'WebFetch',
|
|
29
|
+
'WebSearch',
|
|
30
|
+
'Task',
|
|
31
|
+
'NotebookEdit',
|
|
20
32
|
],
|
|
21
33
|
deny: [
|
|
34
|
+
'Bash(rm -rf /*)',
|
|
35
|
+
'Bash(rm -rf /)',
|
|
36
|
+
'Bash(rm -rf ~)',
|
|
37
|
+
'Bash(rm -rf ~/*)',
|
|
38
|
+
'Bash(dd if=/dev/zero *)',
|
|
39
|
+
'Bash(mkfs *)',
|
|
40
|
+
'Bash(shred *)',
|
|
41
|
+
'Bash(git reset --hard *)',
|
|
42
|
+
'Bash(git clean -fd *)',
|
|
43
|
+
'Bash(git clean -fdx *)',
|
|
22
44
|
'Bash(git checkout main)',
|
|
23
|
-
'Bash(git checkout
|
|
24
|
-
'Bash(git
|
|
25
|
-
'Bash(git push origin master)',
|
|
45
|
+
'Bash(git checkout main *)',
|
|
46
|
+
'Bash(git checkout -)',
|
|
26
47
|
'Bash(git switch main)',
|
|
27
|
-
'Bash(git switch
|
|
48
|
+
'Bash(git switch main *)',
|
|
49
|
+
'Bash(git checkout -b *)',
|
|
50
|
+
'Bash(git switch -c *)',
|
|
51
|
+
'Bash(git switch --create *)',
|
|
52
|
+
'Bash(git branch * *)',
|
|
53
|
+
'Bash(git merge *)',
|
|
54
|
+
'Bash(git push origin main)',
|
|
55
|
+
'Bash(git push origin main *)',
|
|
56
|
+
'Bash(git push -u origin main)',
|
|
57
|
+
'Bash(git push -u origin main *)',
|
|
58
|
+
'Bash(git push --force *)',
|
|
59
|
+
'Bash(git push -f *)',
|
|
60
|
+
],
|
|
61
|
+
ask: [
|
|
62
|
+
'Bash(sudo *)',
|
|
63
|
+
'Bash(chown *)',
|
|
64
|
+
'Bash(docker kill *)',
|
|
65
|
+
'Bash(docker rm *)',
|
|
66
|
+
'Bash(docker rmi *)',
|
|
28
67
|
],
|
|
29
68
|
},
|
|
30
69
|
}, null, 2);
|
|
@@ -32,30 +71,74 @@ export const SETTINGS_JSON_TEMPLATE = JSON.stringify({
|
|
|
32
71
|
* Stub worktree-guard.sh hook.
|
|
33
72
|
* Blocks branch switching to main and force-pushes.
|
|
34
73
|
*/
|
|
35
|
-
export const WORKTREE_GUARD_SH_TEMPLATE = `#!/
|
|
74
|
+
export const WORKTREE_GUARD_SH_TEMPLATE = `#!/bin/bash
|
|
36
75
|
# worktree-guard.sh — Claude Code PreToolUse hook
|
|
37
|
-
# Blocks dangerous git operations in worktrees.
|
|
38
|
-
#
|
|
76
|
+
# Blocks dangerous git operations and directory escapes in worktrees.
|
|
77
|
+
# Customize for your project's safety requirements.
|
|
78
|
+
#
|
|
79
|
+
# Exit 0 = allow, Exit 2 = block
|
|
39
80
|
|
|
40
81
|
set -euo pipefail
|
|
41
82
|
|
|
42
|
-
|
|
43
|
-
|
|
83
|
+
# Read tool input from stdin (JSON format)
|
|
84
|
+
INPUT=$(cat)
|
|
85
|
+
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // .command // empty' 2>/dev/null)
|
|
86
|
+
|
|
87
|
+
if [[ -z "$COMMAND" ]]; then
|
|
88
|
+
exit 0
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
WORKTREE_PATH="\${CLAUDE_WORKTREE_PATH:-}"
|
|
44
92
|
|
|
45
|
-
|
|
93
|
+
# If no worktree restriction set, allow everything
|
|
94
|
+
if [[ -z "$WORKTREE_PATH" ]]; then
|
|
46
95
|
exit 0
|
|
47
96
|
fi
|
|
48
97
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
98
|
+
WORKTREE_PATH="\${WORKTREE_PATH%/}"
|
|
99
|
+
|
|
100
|
+
# Block cd outside worktree
|
|
101
|
+
if echo "$COMMAND" | grep -qE '(^|&&|;)\\s*cd\\s+'; then
|
|
102
|
+
CD_TARGETS=$(echo "$COMMAND" | grep -oE 'cd\\s+[^;&|]+' | sed 's/cd\\s*//' | tr -d '"'"'"' || true)
|
|
103
|
+
for TARGET in $CD_TARGETS; do
|
|
104
|
+
[[ -z "$TARGET" ]] && continue
|
|
105
|
+
if [[ "$TARGET" == /* ]]; then
|
|
106
|
+
RESOLVED="$TARGET"
|
|
107
|
+
else
|
|
108
|
+
RESOLVED=$(cd "$(pwd)" 2>/dev/null && cd "$TARGET" 2>/dev/null && pwd) || RESOLVED=""
|
|
109
|
+
fi
|
|
110
|
+
RESOLVED="\${RESOLVED%/}"
|
|
111
|
+
[[ "$RESOLVED" == /tmp* ]] && continue
|
|
112
|
+
[[ "$RESOLVED" == "$WORKTREE_PATH"* ]] && continue
|
|
113
|
+
if [[ -n "$RESOLVED" ]]; then
|
|
114
|
+
echo "BLOCKED: Cannot navigate outside worktree (target: $TARGET)" >&2
|
|
115
|
+
exit 2
|
|
116
|
+
fi
|
|
117
|
+
done
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# Block checkout/switch to main
|
|
121
|
+
if echo "$COMMAND" | grep -qE 'git\\s+(checkout|switch)\\s+main(\\s|$)'; then
|
|
122
|
+
echo "BLOCKED: Cannot switch to main branch" >&2
|
|
123
|
+
exit 2
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# Block new branch creation
|
|
127
|
+
if echo "$COMMAND" | grep -qE 'git\\s+(checkout\\s+-b|switch\\s+(-c|--create))'; then
|
|
128
|
+
echo "BLOCKED: Cannot create new branches from a worktree" >&2
|
|
129
|
+
exit 2
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
# Block merge
|
|
133
|
+
if echo "$COMMAND" | grep -qE 'git\\s+merge\\s'; then
|
|
134
|
+
echo "BLOCKED: Cannot merge branches directly — use a PR" >&2
|
|
135
|
+
exit 2
|
|
53
136
|
fi
|
|
54
137
|
|
|
55
|
-
# Block
|
|
56
|
-
if echo "
|
|
57
|
-
echo "
|
|
58
|
-
exit
|
|
138
|
+
# Block push to main
|
|
139
|
+
if echo "$COMMAND" | grep -qE 'git\\s+push\\s+.*origin\\s+main'; then
|
|
140
|
+
echo "BLOCKED: Cannot push to main" >&2
|
|
141
|
+
exit 2
|
|
59
142
|
fi
|
|
60
143
|
|
|
61
144
|
exit 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAClD;IACE,WAAW,EAAE;QACX,KAAK,EAAE;YACL,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAClD;IACE,KAAK,EAAE;QACL,UAAU,EAAE;YACV;gBACE,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;aACzE;SACF;KACF;IACD,WAAW,EAAE;QACX,KAAK,EAAE;YACL,MAAM;YACN,MAAM;YACN,MAAM;YACN,OAAO;YACP,MAAM;YACN,MAAM;YACN,UAAU;YACV,WAAW;YACX,MAAM;YACN,cAAc;SACf;QACD,IAAI,EAAE;YACJ,iBAAiB;YACjB,gBAAgB;YAChB,gBAAgB;YAChB,kBAAkB;YAClB,yBAAyB;YACzB,cAAc;YACd,eAAe;YACf,0BAA0B;YAC1B,uBAAuB;YACvB,wBAAwB;YACxB,yBAAyB;YACzB,2BAA2B;YAC3B,sBAAsB;YACtB,uBAAuB;YACvB,yBAAyB;YACzB,yBAAyB;YACzB,uBAAuB;YACvB,6BAA6B;YAC7B,sBAAsB;YACtB,mBAAmB;YACnB,4BAA4B;YAC5B,8BAA8B;YAC9B,+BAA+B;YAC/B,iCAAiC;YACjC,0BAA0B;YAC1B,qBAAqB;SACtB;QACD,GAAG,EAAE;YACH,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,oBAAoB;SACrB;KACF;CACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEzC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;CAkBjC,CAAC"}
|