@memnexus-ai/mx-agent-cli 0.1.24 → 0.1.26
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/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/new.d.ts +30 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +144 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/templates.d.ts +5 -0
- package/dist/lib/templates.d.ts.map +1 -1
- package/dist/lib/templates.js +152 -0
- package/dist/lib/templates.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2BD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGjE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -47,12 +47,17 @@ function writeFile(filePath, content, force) {
|
|
|
47
47
|
export async function runInit(options) {
|
|
48
48
|
const { force = false } = options;
|
|
49
49
|
let projectRoot;
|
|
50
|
-
|
|
51
|
-
projectRoot =
|
|
50
|
+
if (options.projectRoot) {
|
|
51
|
+
projectRoot = options.projectRoot;
|
|
52
52
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
else {
|
|
54
|
+
try {
|
|
55
|
+
projectRoot = findProjectRoot();
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
56
61
|
}
|
|
57
62
|
// Validate CLI option values before any file writes
|
|
58
63
|
const configFromOpts = {};
|
|
@@ -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;AAC7G,OAAO,EAAE,qBAAqB,EAAsB,MAAM,0BAA0B,CAAC;
|
|
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;AAC7G,OAAO,EAAE,qBAAqB,EAAsB,MAAM,0BAA0B,CAAC;AAUrF,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe,EAAE,KAAc;IAClE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAElC,IAAI,WAAmB,CAAC;IACxB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,WAAW,GAAG,eAAe,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,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;YACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,MAAM,cAAc,GAAkB,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,UAAU;QAAE,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACvE,IAAI,OAAO,CAAC,WAAW;QAAE,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1E,IAAI,OAAO,CAAC,YAAY;QAAE,cAAc,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC7E,IAAI,CAAC;QACH,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACxC,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,6DAA6D;IAC7D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,8BAA8B,CAAC;IAE5E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACtD,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,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACjE,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,sEAAsE;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAClC;QACE,UAAU;QACV,WAAW;QACX,YAAY;QACZ,QAAQ,EAAE,uBAAuB;QACjC,aAAa,EAAE,4BAA4B;KAC5C,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CAAC;IACT,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAE5C,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IACtE,SAAS,CAAC,YAAY,EAAE,sBAAsB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IAE9D,sEAAsE;IACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;IACnF,SAAS,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAE3D,sEAAsE;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAChF,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;IAC7E,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAEzE,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,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,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,yCAAyC,CAAC,CAAC;IACpH,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;IAC/G,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mx-agent new <project-name>
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds a complete new project from scratch:
|
|
5
|
+
* <project-name>/
|
|
6
|
+
* .devcontainer/
|
|
7
|
+
* Dockerfile
|
|
8
|
+
* devcontainer.json
|
|
9
|
+
* post-create.sh
|
|
10
|
+
* post-start.sh
|
|
11
|
+
* mx-agent.config.json
|
|
12
|
+
* mx-agent-system/
|
|
13
|
+
* agent-config/
|
|
14
|
+
* CLAUDE.md.template
|
|
15
|
+
* settings.json
|
|
16
|
+
* hooks/
|
|
17
|
+
* worktree-guard.sh
|
|
18
|
+
* teams/
|
|
19
|
+
* roleguides/
|
|
20
|
+
* .gitignore
|
|
21
|
+
* (initial git commit)
|
|
22
|
+
*/
|
|
23
|
+
export interface NewOptions {
|
|
24
|
+
baseBranch?: string;
|
|
25
|
+
worktreeDir?: string;
|
|
26
|
+
configSource?: string;
|
|
27
|
+
dir?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function runNew(projectName: string, options: NewOptions): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=new.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAeH,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA4BD,wBAAsB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GpF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mx-agent new <project-name>
|
|
3
|
+
*
|
|
4
|
+
* Scaffolds a complete new project from scratch:
|
|
5
|
+
* <project-name>/
|
|
6
|
+
* .devcontainer/
|
|
7
|
+
* Dockerfile
|
|
8
|
+
* devcontainer.json
|
|
9
|
+
* post-create.sh
|
|
10
|
+
* post-start.sh
|
|
11
|
+
* mx-agent.config.json
|
|
12
|
+
* mx-agent-system/
|
|
13
|
+
* agent-config/
|
|
14
|
+
* CLAUDE.md.template
|
|
15
|
+
* settings.json
|
|
16
|
+
* hooks/
|
|
17
|
+
* worktree-guard.sh
|
|
18
|
+
* teams/
|
|
19
|
+
* roleguides/
|
|
20
|
+
* .gitignore
|
|
21
|
+
* (initial git commit)
|
|
22
|
+
*/
|
|
23
|
+
import { existsSync, mkdirSync, writeFileSync, chmodSync, readdirSync } from 'fs';
|
|
24
|
+
import { join, resolve } from 'path';
|
|
25
|
+
import { spawnSync } from 'child_process';
|
|
26
|
+
import chalk from 'chalk';
|
|
27
|
+
import { runInit } from './init.js';
|
|
28
|
+
import { newProjectDockerfileTemplate, newProjectDevcontainerJsonTemplate, newProjectPostCreateShTemplate, newProjectPostStartShTemplate, newProjectGitignoreTemplate, } from '../lib/templates.js';
|
|
29
|
+
/** Validate project name: letters, digits, hyphens/underscores, 1-50 chars, must start with letter or digit */
|
|
30
|
+
function validateProjectName(name) {
|
|
31
|
+
if (!/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,49}$/.test(name)) {
|
|
32
|
+
throw new Error(`Invalid project name "${name}". Use letters, digits, hyphens, or underscores (1–50 chars, must start with a letter or digit).`);
|
|
33
|
+
}
|
|
34
|
+
// Belt-and-suspenders: explicitly reject shell metacharacters and path
|
|
35
|
+
// traversal even though the allowlist regex above already blocks them.
|
|
36
|
+
// This guard remains meaningful if the allowlist regex is ever relaxed.
|
|
37
|
+
if (/[;|&$`()><]/.test(name) || name.includes('..') || name.includes('/') || name.includes('\\')) {
|
|
38
|
+
throw new Error(`Project name "${name}" contains disallowed characters.`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function logCreated(path) {
|
|
42
|
+
console.log(chalk.green(' ✓ created ') + chalk.dim(path));
|
|
43
|
+
}
|
|
44
|
+
function writeFile(filePath, content) {
|
|
45
|
+
const dir = join(filePath, '..');
|
|
46
|
+
mkdirSync(dir, { recursive: true });
|
|
47
|
+
writeFileSync(filePath, content, 'utf-8');
|
|
48
|
+
logCreated(filePath);
|
|
49
|
+
}
|
|
50
|
+
export async function runNew(projectName, options) {
|
|
51
|
+
// 1. Validate name
|
|
52
|
+
validateProjectName(projectName);
|
|
53
|
+
// 2. Determine output directory
|
|
54
|
+
const outputDir = options.dir ? resolve(options.dir) : resolve(process.cwd(), projectName);
|
|
55
|
+
// 3. Check directory
|
|
56
|
+
if (existsSync(outputDir)) {
|
|
57
|
+
let entries = [];
|
|
58
|
+
try {
|
|
59
|
+
entries = readdirSync(outputDir);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
/* ignore */
|
|
63
|
+
}
|
|
64
|
+
if (entries.length > 0) {
|
|
65
|
+
console.error(chalk.red(`Error: Directory already exists and is not empty: ${outputDir}`));
|
|
66
|
+
console.error(chalk.dim('Use a different project name or remove the existing directory.'));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
console.log();
|
|
71
|
+
console.log(chalk.cyan.bold('Creating new mx-agent project'));
|
|
72
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
73
|
+
console.log(` ${chalk.bold('Project name:')} ${projectName}`);
|
|
74
|
+
console.log(` ${chalk.bold('Directory:')} ${outputDir}`);
|
|
75
|
+
console.log();
|
|
76
|
+
// 4. Create directory
|
|
77
|
+
mkdirSync(outputDir, { recursive: true });
|
|
78
|
+
// 5. git init
|
|
79
|
+
console.log(chalk.dim(' Initialising git repository...'));
|
|
80
|
+
const gitInit = spawnSync('git', ['init', outputDir], { encoding: 'utf-8', stdio: 'pipe' });
|
|
81
|
+
if (gitInit.status !== 0) {
|
|
82
|
+
console.error(chalk.red(`Error: git init failed: ${gitInit.stderr}`));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
console.log(chalk.green(' ✓ git init'));
|
|
86
|
+
// 6. .gitignore
|
|
87
|
+
writeFile(join(outputDir, '.gitignore'), newProjectGitignoreTemplate());
|
|
88
|
+
// 7. .devcontainer/
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(chalk.dim(' Writing devcontainer...'));
|
|
91
|
+
writeFile(join(outputDir, '.devcontainer', 'Dockerfile'), newProjectDockerfileTemplate());
|
|
92
|
+
writeFile(join(outputDir, '.devcontainer', 'devcontainer.json'), newProjectDevcontainerJsonTemplate(projectName));
|
|
93
|
+
const postCreatePath = join(outputDir, '.devcontainer', 'post-create.sh');
|
|
94
|
+
writeFile(postCreatePath, newProjectPostCreateShTemplate(projectName));
|
|
95
|
+
try {
|
|
96
|
+
chmodSync(postCreatePath, 0o755);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
/* non-fatal */
|
|
100
|
+
}
|
|
101
|
+
const postStartPath = join(outputDir, '.devcontainer', 'post-start.sh');
|
|
102
|
+
writeFile(postStartPath, newProjectPostStartShTemplate(projectName));
|
|
103
|
+
try {
|
|
104
|
+
chmodSync(postStartPath, 0o755);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
/* non-fatal */
|
|
108
|
+
}
|
|
109
|
+
// 8. mx-agent-system/ scaffold (reuse runInit with explicit projectRoot)
|
|
110
|
+
console.log();
|
|
111
|
+
console.log(chalk.dim(' Scaffolding mx-agent-system...'));
|
|
112
|
+
await runInit({
|
|
113
|
+
projectRoot: outputDir,
|
|
114
|
+
baseBranch: options.baseBranch,
|
|
115
|
+
worktreeDir: options.worktreeDir,
|
|
116
|
+
configSource: options.configSource,
|
|
117
|
+
force: false,
|
|
118
|
+
});
|
|
119
|
+
// 9. Initial git commit
|
|
120
|
+
console.log();
|
|
121
|
+
console.log(chalk.dim(' Creating initial commit...'));
|
|
122
|
+
spawnSync('git', ['add', '-A'], { cwd: outputDir, stdio: 'pipe' });
|
|
123
|
+
const commit = spawnSync('git', ['commit', '-m', `feat: scaffold ${projectName} with mx-agent`], { cwd: outputDir, encoding: 'utf-8', stdio: 'pipe' });
|
|
124
|
+
if (commit.status === 0) {
|
|
125
|
+
console.log(chalk.green(' ✓ initial commit'));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
console.log(chalk.yellow(' ⚠ initial commit skipped (git commit failed — set up git user config if needed)'));
|
|
129
|
+
}
|
|
130
|
+
// 10. Next steps
|
|
131
|
+
console.log();
|
|
132
|
+
console.log(chalk.green.bold('Project created!'));
|
|
133
|
+
console.log(chalk.dim('─'.repeat(50)));
|
|
134
|
+
console.log();
|
|
135
|
+
console.log(chalk.bold(' Next steps:'));
|
|
136
|
+
console.log(` 1. Open ${chalk.cyan(outputDir)} in VS Code`);
|
|
137
|
+
console.log(` 2. ${chalk.cyan('Dev Containers: Reopen in Container')} (or "Open Folder in Container")`);
|
|
138
|
+
console.log(` 3. Once the container has built, run:`);
|
|
139
|
+
console.log(` ${chalk.cyan('mx-agent start team-builder')}`);
|
|
140
|
+
console.log();
|
|
141
|
+
console.log(chalk.dim(' The team builder will guide you through creating your agent teams.'));
|
|
142
|
+
console.log();
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,4BAA4B,EAC5B,kCAAkC,EAClC,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAS7B,+GAA+G;AAC/G,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,kGAAkG,CAChI,CAAC;IACJ,CAAC;IACD,uEAAuE;IACvE,uEAAuE;IACvE,wEAAwE;IACxE,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,mCAAmC,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,WAAmB,EAAE,OAAmB;IACnE,mBAAmB;IACnB,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEjC,gCAAgC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE3F,qBAAqB;IACrB,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,SAAS,EAAE,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC9D,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,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,sBAAsB;IACtB,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAEzC,gBAAgB;IAChB,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,2BAA2B,EAAE,CAAC,CAAC;IAExE,oBAAoB;IACpB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAC1F,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,mBAAmB,CAAC,EAAE,kCAAkC,CAAC,WAAW,CAAC,CAAC,CAAC;IAElH,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC1E,SAAS,CAAC,cAAc,EAAE,8BAA8B,CAAC,WAAW,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IACxE,SAAS,CAAC,aAAa,EAAE,6BAA6B,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC3D,MAAM,OAAO,CAAC;QACZ,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,wBAAwB;IACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,SAAS,CACtB,KAAK,EACL,CAAC,QAAQ,EAAE,IAAI,EAAE,kBAAkB,WAAW,gBAAgB,CAAC,EAC/D,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CACrD,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,mFAAmF,CACpF,CACF,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClD,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,eAAe,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,kCAAkC,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ import { runUpdate } from './commands/update.js';
|
|
|
24
24
|
import { runPager } from './commands/pager.js';
|
|
25
25
|
import { runConfig } from './commands/config.js';
|
|
26
26
|
import { runInit } from './commands/init.js';
|
|
27
|
+
import { runNew } from './commands/new.js';
|
|
27
28
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
28
29
|
const require = createRequire(import.meta.url);
|
|
29
30
|
const pkg = require(join(__dirname, '../package.json'));
|
|
@@ -125,6 +126,21 @@ program
|
|
|
125
126
|
process.exit(1);
|
|
126
127
|
});
|
|
127
128
|
});
|
|
129
|
+
// ── new ────────────────────────────────────────────────────────────────
|
|
130
|
+
program
|
|
131
|
+
.command('new')
|
|
132
|
+
.description('Create a new project scaffolded with mx-agent and a dev container')
|
|
133
|
+
.argument('<name>', 'Project name (kebab-case)')
|
|
134
|
+
.option('--dir <path>', 'Output directory (default: ./<name>)')
|
|
135
|
+
.option('--base-branch <branch>', 'Base branch (default: main)')
|
|
136
|
+
.option('--worktree-dir <path>', 'Worktrees directory (default: .worktrees)')
|
|
137
|
+
.option('--config-source <path>', 'Agent config path (default: mx-agent-system/agent-config)')
|
|
138
|
+
.action((name, opts) => {
|
|
139
|
+
runNew(name, opts).catch((err) => {
|
|
140
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
141
|
+
process.exit(1);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
128
144
|
// ── config ─────────────────────────────────────────────────────────────
|
|
129
145
|
const configCmd = program
|
|
130
146
|
.command('config')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/templates.d.ts
CHANGED
|
@@ -21,4 +21,9 @@ export declare const WORKTREE_GUARD_SH_TEMPLATE = "#!/bin/bash\n# worktree-guard
|
|
|
21
21
|
* Users should replace this with project-specific instructions.
|
|
22
22
|
*/
|
|
23
23
|
export declare const CLAUDE_MD_TEMPLATE = "# Agent Instructions\n\nThis file is deployed automatically into each agent worktree by `mx-agent`.\nReplace the contents below with your project-specific agent instructions.\n\n## Project Overview\n\n<!-- Describe your project here -->\n\n## Workflow\n\n<!-- Describe the expected workflow for agents -->\n\n## Rules\n\n1. Stay within your worktree directory.\n2. Do not push to the base branch directly \u2014 create a PR.\n3. Follow the project's coding conventions.\n";
|
|
24
|
+
export declare function newProjectDockerfileTemplate(): string;
|
|
25
|
+
export declare function newProjectDevcontainerJsonTemplate(projectName: string): string;
|
|
26
|
+
export declare function newProjectPostCreateShTemplate(projectName: string): string;
|
|
27
|
+
export declare function newProjectPostStartShTemplate(projectName: string): string;
|
|
28
|
+
export declare function newProjectGitignoreTemplate(): string;
|
|
24
29
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -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,QA8DlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,sjEAuEtC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4dAkB9B,CAAC"}
|
|
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;AAIF,wBAAgB,4BAA4B,IAAI,MAAM,CAsBrD;AAED,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiC9E;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsD1E;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiBzE;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAwBpD"}
|
package/dist/lib/templates.js
CHANGED
|
@@ -168,4 +168,156 @@ Replace the contents below with your project-specific agent instructions.
|
|
|
168
168
|
2. Do not push to the base branch directly — create a PR.
|
|
169
169
|
3. Follow the project's coding conventions.
|
|
170
170
|
`;
|
|
171
|
+
// ── Templates for `mx-agent new` ────────────────────────────────────────────
|
|
172
|
+
export function newProjectDockerfileTemplate() {
|
|
173
|
+
return `FROM mcr.microsoft.com/devcontainers/base:ubuntu-22.04
|
|
174
|
+
|
|
175
|
+
# Remove stale Yarn repo (has expired GPG key that breaks apt update)
|
|
176
|
+
RUN rm -f /etc/apt/sources.list.d/yarn.list /usr/share/keyrings/yarn.gpg 2>/dev/null || true
|
|
177
|
+
|
|
178
|
+
# Install Node.js 22 from NodeSource
|
|
179
|
+
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \\
|
|
180
|
+
&& apt-get install -y nodejs \\
|
|
181
|
+
&& npm install -g npm@latest
|
|
182
|
+
|
|
183
|
+
# Install development tools
|
|
184
|
+
RUN apt-get update && apt-get install -y \\
|
|
185
|
+
bubblewrap \\
|
|
186
|
+
gh \\
|
|
187
|
+
jq \\
|
|
188
|
+
socat \\
|
|
189
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
190
|
+
|
|
191
|
+
WORKDIR /workspace
|
|
192
|
+
ENTRYPOINT ["sleep", "infinity"]
|
|
193
|
+
`;
|
|
194
|
+
}
|
|
195
|
+
export function newProjectDevcontainerJsonTemplate(projectName) {
|
|
196
|
+
const safeName = projectName.replace(/[^a-z0-9-]/g, '-');
|
|
197
|
+
return JSON.stringify({
|
|
198
|
+
name: projectName,
|
|
199
|
+
build: {
|
|
200
|
+
dockerfile: 'Dockerfile',
|
|
201
|
+
context: '..',
|
|
202
|
+
},
|
|
203
|
+
overrideCommand: false,
|
|
204
|
+
workspaceFolder: '/workspace',
|
|
205
|
+
workspaceMount: 'source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached',
|
|
206
|
+
mounts: [
|
|
207
|
+
`source=${safeName}-shell-history,target=/commandhistory,type=volume`,
|
|
208
|
+
`source=${safeName}-gh-config,target=/home/vscode/.config/gh,type=volume`,
|
|
209
|
+
`source=${safeName}-claude-config,target=/home/vscode/.claude,type=volume`,
|
|
210
|
+
],
|
|
211
|
+
customizations: {
|
|
212
|
+
vscode: {
|
|
213
|
+
extensions: ['Anthropic.claude-code'],
|
|
214
|
+
settings: {
|
|
215
|
+
'editor.formatOnSave': true,
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
postCreateCommand: 'bash /workspace/.devcontainer/post-create.sh',
|
|
220
|
+
postStartCommand: 'bash /workspace/.devcontainer/post-start.sh',
|
|
221
|
+
remoteUser: 'vscode',
|
|
222
|
+
updateRemoteUserUID: true,
|
|
223
|
+
}, null, 2) + '\n';
|
|
224
|
+
}
|
|
225
|
+
export function newProjectPostCreateShTemplate(projectName) {
|
|
226
|
+
return `#!/bin/bash
|
|
227
|
+
set -e
|
|
228
|
+
|
|
229
|
+
echo "========================================"
|
|
230
|
+
echo " Setting up ${projectName}"
|
|
231
|
+
echo "========================================"
|
|
232
|
+
|
|
233
|
+
# Fix volume permissions (named volumes created as root)
|
|
234
|
+
sudo chown -R \$(id -u):\$(id -g) /home/vscode/.config/gh 2>/dev/null || true
|
|
235
|
+
sudo chown -R \$(id -u):\$(id -g) /home/vscode/.claude 2>/dev/null || true
|
|
236
|
+
|
|
237
|
+
# Configure persistent shell history
|
|
238
|
+
if [ -d /commandhistory ]; then
|
|
239
|
+
touch /commandhistory/.bash_history
|
|
240
|
+
if ! grep -q "HISTFILE=/commandhistory/.bash_history" ~/.bashrc 2>/dev/null; then
|
|
241
|
+
echo 'export HISTFILE=/commandhistory/.bash_history' >> ~/.bashrc
|
|
242
|
+
fi
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
# Configure Git safe.directory for the workspace (required for worktrees)
|
|
246
|
+
echo "Configuring Git..."
|
|
247
|
+
git config --global --add safe.directory /workspace
|
|
248
|
+
|
|
249
|
+
# Install Claude Code CLI
|
|
250
|
+
echo "Installing Claude Code..."
|
|
251
|
+
curl -fsSL https://claude.ai/install.sh | bash
|
|
252
|
+
if [ -f "\$HOME/.claude/bin/claude" ]; then
|
|
253
|
+
if ! grep -q 'export PATH="\$HOME/.claude/bin:\$PATH"' ~/.bashrc 2>/dev/null; then
|
|
254
|
+
echo 'export PATH="\$HOME/.claude/bin:\$PATH"' >> ~/.bashrc
|
|
255
|
+
fi
|
|
256
|
+
export PATH="\$HOME/.claude/bin:\$PATH"
|
|
257
|
+
fi
|
|
258
|
+
|
|
259
|
+
# Install mx-agent CLI
|
|
260
|
+
echo "Installing mx-agent CLI..."
|
|
261
|
+
npm install -g @memnexus-ai/mx-agent-cli
|
|
262
|
+
|
|
263
|
+
# Install MemNexus CLI (mx — required for agent memory operations)
|
|
264
|
+
echo "Installing MemNexus CLI..."
|
|
265
|
+
npm install -g @memnexus-ai/cli
|
|
266
|
+
|
|
267
|
+
echo ""
|
|
268
|
+
echo "========================================"
|
|
269
|
+
echo " Setup complete!"
|
|
270
|
+
echo ""
|
|
271
|
+
echo " Auth (one time per machine):"
|
|
272
|
+
echo " gh auth login # GitHub CLI"
|
|
273
|
+
echo " mx auth login # MemNexus CLI"
|
|
274
|
+
echo ""
|
|
275
|
+
echo " To start building your teams:"
|
|
276
|
+
echo " mx-agent start team-builder"
|
|
277
|
+
echo "========================================"
|
|
278
|
+
`;
|
|
279
|
+
}
|
|
280
|
+
export function newProjectPostStartShTemplate(projectName) {
|
|
281
|
+
return `#!/bin/bash
|
|
282
|
+
|
|
283
|
+
# Configure persistent shell history
|
|
284
|
+
if [ -d /commandhistory ]; then
|
|
285
|
+
touch /commandhistory/.bash_history
|
|
286
|
+
if ! grep -q "HISTFILE=/commandhistory/.bash_history" ~/.bashrc 2>/dev/null; then
|
|
287
|
+
echo 'export HISTFILE=/commandhistory/.bash_history' >> ~/.bashrc
|
|
288
|
+
fi
|
|
289
|
+
fi
|
|
290
|
+
|
|
291
|
+
echo ""
|
|
292
|
+
echo "${projectName} ready"
|
|
293
|
+
echo " Build teams: mx-agent start team-builder"
|
|
294
|
+
echo " List teams: mx-agent list"
|
|
295
|
+
echo ""
|
|
296
|
+
`;
|
|
297
|
+
}
|
|
298
|
+
export function newProjectGitignoreTemplate() {
|
|
299
|
+
return `# Dependencies
|
|
300
|
+
node_modules/
|
|
301
|
+
|
|
302
|
+
# Build outputs
|
|
303
|
+
dist/
|
|
304
|
+
build/
|
|
305
|
+
|
|
306
|
+
# Environment
|
|
307
|
+
.env
|
|
308
|
+
.env.local
|
|
309
|
+
.env.*.local
|
|
310
|
+
|
|
311
|
+
# Editor
|
|
312
|
+
.vscode/settings.json
|
|
313
|
+
.idea/
|
|
314
|
+
|
|
315
|
+
# OS
|
|
316
|
+
.DS_Store
|
|
317
|
+
Thumbs.db
|
|
318
|
+
|
|
319
|
+
# Worktrees (managed by mx-agent)
|
|
320
|
+
.worktrees/
|
|
321
|
+
`;
|
|
322
|
+
}
|
|
171
323
|
//# sourceMappingURL=templates.js.map
|
|
@@ -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,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"}
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"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"}
|