@mind-fold/open-flow 0.1.11 ā 0.1.13
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/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +25 -40
- package/dist/commands/init.js.map +1 -1
- package/dist/configurators/claude.js +6 -6
- package/dist/configurators/claude.js.map +1 -1
- package/dist/configurators/cursor.js +6 -6
- package/dist/configurators/cursor.js.map +1 -1
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +10 -11
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/utils/file-writer.d.ts +22 -0
- package/dist/utils/file-writer.d.ts.map +1 -0
- package/dist/utils/file-writer.js +101 -0
- package/dist/utils/file-writer.js.map +1 -0
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -21,6 +21,8 @@ program
|
|
|
21
21
|
.option("--claude", "Include Claude Code commands")
|
|
22
22
|
.option("-y, --yes", "Skip prompts and use defaults")
|
|
23
23
|
.option("-u, --user <name>", "Initialize developer identity with specified name")
|
|
24
|
+
.option("-f, --force", "Overwrite existing files without asking")
|
|
25
|
+
.option("-s, --skip-existing", "Skip existing files without asking")
|
|
24
26
|
.action(async (options) => {
|
|
25
27
|
try {
|
|
26
28
|
await init(options);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,iCAAiC;AACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CACX,+EAA+E,CAC/E;KACA,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAEjE,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CACN,mBAAmB,EACnB,mDAAmD,CACnD;KACA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzB,IAAI,CAAC;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,iCAAiC;AACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACL,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CACX,+EAA+E,CAC/E;KACA,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAEjE,OAAO;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;KAC7C,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CACN,mBAAmB,EACnB,mDAAmD,CACnD;KACA,MAAM,CAAC,aAAa,EAAE,yCAAyC,CAAC;KAChE,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACzB,IAAI,CAAC;QACJ,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACZ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC9C,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC,CAAC,CAAC;AAEJ,OAAO;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEJ,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAeA,UAAU,WAAW;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAOD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmI9D"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
|
-
import fs from "node:fs";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import chalk from "chalk";
|
|
5
4
|
import inquirer from "inquirer";
|
|
6
5
|
import { configureClaude } from "../configurators/claude.js";
|
|
7
6
|
import { configureCursor } from "../configurators/cursor.js";
|
|
8
7
|
import { createWorkflowStructure } from "../configurators/workflow.js";
|
|
8
|
+
import { setWriteMode, writeFile, } from "../utils/file-writer.js";
|
|
9
9
|
export async function init(options) {
|
|
10
10
|
const cwd = process.cwd();
|
|
11
11
|
console.log(chalk.cyan("\nš open-flow - AI-assisted development workflow initializer\n"));
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
console.log(chalk.
|
|
12
|
+
// Set write mode based on options
|
|
13
|
+
let writeMode = "ask";
|
|
14
|
+
if (options.force) {
|
|
15
|
+
writeMode = "force";
|
|
16
|
+
console.log(chalk.gray("Mode: Force overwrite existing files\n"));
|
|
17
17
|
}
|
|
18
|
+
else if (options.skipExisting) {
|
|
19
|
+
writeMode = "skip";
|
|
20
|
+
console.log(chalk.gray("Mode: Skip existing files\n"));
|
|
21
|
+
}
|
|
22
|
+
setWriteMode(writeMode);
|
|
18
23
|
let tools;
|
|
19
24
|
if (options.yes) {
|
|
20
25
|
// Default: both Cursor and Claude
|
|
@@ -50,31 +55,17 @@ export async function init(options) {
|
|
|
50
55
|
return;
|
|
51
56
|
}
|
|
52
57
|
console.log(chalk.gray(`\nConfiguring: ${tools.join(", ")}\n`));
|
|
53
|
-
// Create workflow structure
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
// Configure selected tools (skip if exists)
|
|
58
|
+
// Create workflow structure
|
|
59
|
+
console.log(chalk.blue("š Creating workflow structure..."));
|
|
60
|
+
await createWorkflowStructure(cwd);
|
|
61
|
+
// Configure selected tools
|
|
59
62
|
if (tools.includes("cursor")) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
console.log(chalk.yellow("ā ļø .cursor/commands/ already exists, skipping..."));
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
console.log(chalk.blue("š Configuring Cursor commands..."));
|
|
66
|
-
await configureCursor(cwd);
|
|
67
|
-
}
|
|
63
|
+
console.log(chalk.blue("š Configuring Cursor commands..."));
|
|
64
|
+
await configureCursor(cwd);
|
|
68
65
|
}
|
|
69
66
|
if (tools.includes("claude")) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
console.log(chalk.yellow("ā ļø .claude/commands/ already exists, skipping..."));
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
console.log(chalk.blue("š Configuring Claude Code commands..."));
|
|
76
|
-
await configureClaude(cwd);
|
|
77
|
-
}
|
|
67
|
+
console.log(chalk.blue("š Configuring Claude Code commands..."));
|
|
68
|
+
await configureClaude(cwd);
|
|
78
69
|
}
|
|
79
70
|
// Create root files (skip if exists)
|
|
80
71
|
await createRootFiles(cwd);
|
|
@@ -527,14 +518,11 @@ You're doing well if:
|
|
|
527
518
|
|
|
528
519
|
**Ready to start? Follow the Quick Start section at the top!**
|
|
529
520
|
`;
|
|
530
|
-
// Write init-agent.md
|
|
531
|
-
|
|
532
|
-
|
|
521
|
+
// Write init-agent.md
|
|
522
|
+
const initAgentWritten = await writeFile(initAgentPath, initAgentContent);
|
|
523
|
+
if (initAgentWritten) {
|
|
533
524
|
console.log(chalk.blue("š Created init-agent.md"));
|
|
534
525
|
}
|
|
535
|
-
else {
|
|
536
|
-
console.log(chalk.yellow("ā ļø init-agent.md already exists, skipping..."));
|
|
537
|
-
}
|
|
538
526
|
// Create AGENTS.md
|
|
539
527
|
const agentsContent = `<!-- OPEN-FLOW:START -->
|
|
540
528
|
# Open-Flow Instructions
|
|
@@ -555,13 +543,10 @@ Keep this managed block so 'open-flow update' can refresh the instructions.
|
|
|
555
543
|
|
|
556
544
|
<!-- OPEN-FLOW:END -->
|
|
557
545
|
`;
|
|
558
|
-
// Write AGENTS.md
|
|
559
|
-
|
|
560
|
-
|
|
546
|
+
// Write AGENTS.md
|
|
547
|
+
const agentsWritten = await writeFile(agentsPath, agentsContent);
|
|
548
|
+
if (agentsWritten) {
|
|
561
549
|
console.log(chalk.blue("š Created AGENTS.md"));
|
|
562
550
|
}
|
|
563
|
-
else {
|
|
564
|
-
console.log(chalk.yellow("ā ļø AGENTS.md already exists, skipping..."));
|
|
565
|
-
}
|
|
566
551
|
}
|
|
567
552
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getCommandTemplates } from "./templates.js";
|
|
3
|
+
import { writeFile, ensureDir } from "../utils/file-writer.js";
|
|
4
4
|
export async function configureClaude(cwd) {
|
|
5
|
-
const commandsDir = path.join(cwd,
|
|
5
|
+
const commandsDir = path.join(cwd, ".claude", "commands");
|
|
6
6
|
// Create directory
|
|
7
|
-
|
|
7
|
+
ensureDir(commandsDir);
|
|
8
8
|
// Get command templates
|
|
9
9
|
const templates = getCommandTemplates();
|
|
10
10
|
// Write each command file
|
|
11
11
|
for (const [name, content] of Object.entries(templates)) {
|
|
12
12
|
const filePath = path.join(commandsDir, `${name}.md`);
|
|
13
|
-
|
|
13
|
+
await writeFile(filePath, content);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=claude.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/configurators/claude.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/configurators/claude.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAE1D,mBAAmB;IACnB,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvB,wBAAwB;IACxB,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IAExC,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;AACF,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getCommandTemplates } from "./templates.js";
|
|
3
|
+
import { writeFile, ensureDir } from "../utils/file-writer.js";
|
|
4
4
|
export async function configureCursor(cwd) {
|
|
5
|
-
const commandsDir = path.join(cwd,
|
|
5
|
+
const commandsDir = path.join(cwd, ".cursor", "commands");
|
|
6
6
|
// Create directory
|
|
7
|
-
|
|
7
|
+
ensureDir(commandsDir);
|
|
8
8
|
// Get command templates
|
|
9
9
|
const templates = getCommandTemplates();
|
|
10
10
|
// Write each command file
|
|
11
11
|
for (const [name, content] of Object.entries(templates)) {
|
|
12
12
|
const filePath = path.join(commandsDir, `${name}.md`);
|
|
13
|
-
|
|
13
|
+
await writeFile(filePath, content);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=cursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/configurators/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/configurators/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAE1D,mBAAmB;IACnB,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvB,wBAAwB;IACxB,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IAExC,0BAA0B;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AA0BA,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
1
|
import path from "node:path";
|
|
3
2
|
// Import script templates
|
|
4
3
|
import { initDeveloperScript, getDeveloperScript, extractMdHeadingsScript, featureScript, getContextScript, updateIndexScript, addSessionScript, } from "../templates/scripts/index.js";
|
|
5
4
|
// Import markdown templates
|
|
6
5
|
import { agentProgressIndexContent, frontendIndexContent, frontendDocContent, backendIndexContent, backendDocContent, flowMdContent, workflowGitignoreContent, } from "../templates/markdown/index.js";
|
|
6
|
+
import { writeFile, ensureDir } from "../utils/file-writer.js";
|
|
7
7
|
export async function createWorkflowStructure(cwd) {
|
|
8
8
|
// Create directories
|
|
9
9
|
const dirs = [
|
|
@@ -15,7 +15,7 @@ export async function createWorkflowStructure(cwd) {
|
|
|
15
15
|
"workflow/structure/backend",
|
|
16
16
|
];
|
|
17
17
|
for (const dir of dirs) {
|
|
18
|
-
|
|
18
|
+
ensureDir(path.join(cwd, dir));
|
|
19
19
|
}
|
|
20
20
|
// Create scripts
|
|
21
21
|
await createScripts(cwd);
|
|
@@ -40,23 +40,22 @@ async function createScripts(cwd) {
|
|
|
40
40
|
];
|
|
41
41
|
for (const script of scripts) {
|
|
42
42
|
const scriptPath = path.join(cwd, "workflow/scripts", script.name);
|
|
43
|
-
|
|
44
|
-
fs.chmodSync(scriptPath, "755");
|
|
43
|
+
await writeFile(scriptPath, script.content, { executable: true });
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
async function createAgentProgressIndex(cwd) {
|
|
48
|
-
|
|
47
|
+
await writeFile(path.join(cwd, "workflow/agent-progress/index.md"), agentProgressIndexContent);
|
|
49
48
|
}
|
|
50
49
|
async function createStructureTemplates(cwd) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
await writeFile(path.join(cwd, "workflow/structure/frontend/index.md"), frontendIndexContent);
|
|
51
|
+
await writeFile(path.join(cwd, "workflow/structure/frontend/doc.md"), frontendDocContent);
|
|
52
|
+
await writeFile(path.join(cwd, "workflow/structure/backend/index.md"), backendIndexContent);
|
|
53
|
+
await writeFile(path.join(cwd, "workflow/structure/backend/doc.md"), backendDocContent);
|
|
55
54
|
}
|
|
56
55
|
async function createFlowMd(cwd) {
|
|
57
|
-
|
|
56
|
+
await writeFile(path.join(cwd, "workflow/flow.md"), flowMdContent);
|
|
58
57
|
}
|
|
59
58
|
async function createWorkflowGitignore(cwd) {
|
|
60
|
-
|
|
59
|
+
await writeFile(path.join(cwd, "workflow/.gitignore"), workflowGitignoreContent);
|
|
61
60
|
}
|
|
62
61
|
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/configurators/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type WriteMode = "ask" | "force" | "skip";
|
|
2
|
+
export interface WriteOptions {
|
|
3
|
+
mode: WriteMode;
|
|
4
|
+
}
|
|
5
|
+
export declare function setWriteMode(mode: WriteMode): void;
|
|
6
|
+
export declare function getWriteMode(): WriteMode;
|
|
7
|
+
/**
|
|
8
|
+
* Write file with conflict handling
|
|
9
|
+
* - If file doesn't exist: write directly
|
|
10
|
+
* - If file exists and content is identical: skip silently
|
|
11
|
+
* - If file exists and mode is 'force': overwrite
|
|
12
|
+
* - If file exists and mode is 'skip': skip
|
|
13
|
+
* - If file exists and mode is 'ask': prompt user
|
|
14
|
+
*/
|
|
15
|
+
export declare function writeFile(filePath: string, content: string, options?: {
|
|
16
|
+
executable?: boolean;
|
|
17
|
+
}): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Ensure directory exists
|
|
20
|
+
*/
|
|
21
|
+
export declare function ensureDir(dirPath: string): void;
|
|
22
|
+
//# sourceMappingURL=file-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../src/utils/file-writer.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,SAAS,CAAC;CAChB;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAElD;AAED,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,OAAO,CAAC,CAoFlB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import inquirer from "inquirer";
|
|
5
|
+
// Global write mode (set from CLI options)
|
|
6
|
+
let globalWriteMode = "ask";
|
|
7
|
+
export function setWriteMode(mode) {
|
|
8
|
+
globalWriteMode = mode;
|
|
9
|
+
}
|
|
10
|
+
export function getWriteMode() {
|
|
11
|
+
return globalWriteMode;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Write file with conflict handling
|
|
15
|
+
* - If file doesn't exist: write directly
|
|
16
|
+
* - If file exists and content is identical: skip silently
|
|
17
|
+
* - If file exists and mode is 'force': overwrite
|
|
18
|
+
* - If file exists and mode is 'skip': skip
|
|
19
|
+
* - If file exists and mode is 'ask': prompt user
|
|
20
|
+
*/
|
|
21
|
+
export async function writeFile(filePath, content, options) {
|
|
22
|
+
const exists = fs.existsSync(filePath);
|
|
23
|
+
const fileName = path.basename(filePath);
|
|
24
|
+
if (!exists) {
|
|
25
|
+
// File doesn't exist, write directly
|
|
26
|
+
fs.writeFileSync(filePath, content);
|
|
27
|
+
if (options?.executable) {
|
|
28
|
+
fs.chmodSync(filePath, "755");
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
// File exists, check if content is identical
|
|
33
|
+
const existingContent = fs.readFileSync(filePath, "utf-8");
|
|
34
|
+
if (existingContent === content) {
|
|
35
|
+
// Content identical, skip silently
|
|
36
|
+
console.log(chalk.gray(` ā Unchanged: ${fileName}`));
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// File exists with different content, handle based on mode
|
|
40
|
+
const mode = globalWriteMode;
|
|
41
|
+
if (mode === "force") {
|
|
42
|
+
fs.writeFileSync(filePath, content);
|
|
43
|
+
if (options?.executable) {
|
|
44
|
+
fs.chmodSync(filePath, "755");
|
|
45
|
+
}
|
|
46
|
+
console.log(chalk.yellow(` ā» Overwritten: ${fileName}`));
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
if (mode === "skip") {
|
|
50
|
+
console.log(chalk.gray(` ā Skipped: ${fileName} (already exists)`));
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// mode === 'ask': Interactive prompt
|
|
54
|
+
const { action } = await inquirer.prompt([
|
|
55
|
+
{
|
|
56
|
+
type: "list",
|
|
57
|
+
name: "action",
|
|
58
|
+
message: `File "${fileName}" already exists. What would you like to do?`,
|
|
59
|
+
choices: [
|
|
60
|
+
{ name: "Skip (keep existing)", value: "skip" },
|
|
61
|
+
{ name: "Overwrite", value: "overwrite" },
|
|
62
|
+
{ name: "Skip all remaining conflicts", value: "skip-all" },
|
|
63
|
+
{ name: "Overwrite all remaining conflicts", value: "overwrite-all" },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
]);
|
|
67
|
+
if (action === "skip") {
|
|
68
|
+
console.log(chalk.gray(` ā Skipped: ${fileName}`));
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (action === "overwrite") {
|
|
72
|
+
fs.writeFileSync(filePath, content);
|
|
73
|
+
if (options?.executable) {
|
|
74
|
+
fs.chmodSync(filePath, "755");
|
|
75
|
+
}
|
|
76
|
+
console.log(chalk.yellow(` ā» Overwritten: ${fileName}`));
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
if (action === "skip-all") {
|
|
80
|
+
globalWriteMode = "skip";
|
|
81
|
+
console.log(chalk.gray(` ā Skipped: ${fileName}`));
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
if (action === "overwrite-all") {
|
|
85
|
+
globalWriteMode = "force";
|
|
86
|
+
fs.writeFileSync(filePath, content);
|
|
87
|
+
if (options?.executable) {
|
|
88
|
+
fs.chmodSync(filePath, "755");
|
|
89
|
+
}
|
|
90
|
+
console.log(chalk.yellow(` ā» Overwritten: ${fileName}`));
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Ensure directory exists
|
|
97
|
+
*/
|
|
98
|
+
export function ensureDir(dirPath) {
|
|
99
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=file-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-writer.js","sourceRoot":"","sources":["../../src/utils/file-writer.ts"],"names":[],"mappings":"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"}
|