sequant 1.0.0
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/LICENSE +21 -0
- package/README.md +237 -0
- package/dist/bin/cli.d.ts +8 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +70 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +8 -0
- package/dist/src/commands/doctor.d.ts.map +1 -0
- package/dist/src/commands/doctor.js +171 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/init.d.ts +11 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +124 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/run.d.ts +18 -0
- package/dist/src/commands/run.d.ts.map +1 -0
- package/dist/src/commands/run.js +229 -0
- package/dist/src/commands/run.js.map +1 -0
- package/dist/src/commands/status.d.ts +5 -0
- package/dist/src/commands/status.d.ts.map +1 -0
- package/dist/src/commands/status.js +45 -0
- package/dist/src/commands/status.js.map +1 -0
- package/dist/src/commands/update.d.ts +10 -0
- package/dist/src/commands/update.d.ts.map +1 -0
- package/dist/src/commands/update.js +124 -0
- package/dist/src/commands/update.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/fs.d.ts +10 -0
- package/dist/src/lib/fs.d.ts.map +1 -0
- package/dist/src/lib/fs.js +44 -0
- package/dist/src/lib/fs.js.map +1 -0
- package/dist/src/lib/manifest.d.ts +14 -0
- package/dist/src/lib/manifest.d.ts.map +1 -0
- package/dist/src/lib/manifest.js +37 -0
- package/dist/src/lib/manifest.js.map +1 -0
- package/dist/src/lib/stacks.d.ts +22 -0
- package/dist/src/lib/stacks.d.ts.map +1 -0
- package/dist/src/lib/stacks.js +131 -0
- package/dist/src/lib/stacks.js.map +1 -0
- package/dist/src/lib/templates.d.ts +16 -0
- package/dist/src/lib/templates.d.ts.map +1 -0
- package/dist/src/lib/templates.js +118 -0
- package/dist/src/lib/templates.js.map +1 -0
- package/dist/src/lib/workflow/cli-args.d.ts +138 -0
- package/dist/src/lib/workflow/cli-args.d.ts.map +1 -0
- package/dist/src/lib/workflow/cli-args.js +210 -0
- package/dist/src/lib/workflow/cli-args.js.map +1 -0
- package/dist/src/lib/workflow/execute-issues.d.ts +42 -0
- package/dist/src/lib/workflow/execute-issues.d.ts.map +1 -0
- package/dist/src/lib/workflow/execute-issues.js +463 -0
- package/dist/src/lib/workflow/execute-issues.js.map +1 -0
- package/dist/src/lib/workflow/logger.d.ts +168 -0
- package/dist/src/lib/workflow/logger.d.ts.map +1 -0
- package/dist/src/lib/workflow/logger.js +249 -0
- package/dist/src/lib/workflow/logger.js.map +1 -0
- package/dist/src/lib/workflow/types.d.ts +89 -0
- package/dist/src/lib/workflow/types.d.ts.map +1 -0
- package/dist/src/lib/workflow/types.js +23 -0
- package/dist/src/lib/workflow/types.js.map +1 -0
- package/package.json +69 -0
- package/stacks/go.yaml +22 -0
- package/stacks/nextjs.yaml +28 -0
- package/stacks/python.yaml +24 -0
- package/stacks/rust.yaml +23 -0
- package/templates/hooks/post-tool.sh +301 -0
- package/templates/hooks/pre-tool.sh +350 -0
- package/templates/memory/constitution.md +60 -0
- package/templates/scripts/cleanup-worktree.sh +78 -0
- package/templates/scripts/list-worktrees.sh +50 -0
- package/templates/scripts/new-feature.sh +156 -0
- package/templates/settings.json +26 -0
- package/templates/skills/assess/SKILL.md +428 -0
- package/templates/skills/clean/SKILL.md +196 -0
- package/templates/skills/docs/SKILL.md +323 -0
- package/templates/skills/exec/SKILL.md +426 -0
- package/templates/skills/fullsolve/SKILL.md +479 -0
- package/templates/skills/loop/SKILL.md +310 -0
- package/templates/skills/qa/SKILL.md +261 -0
- package/templates/skills/qa/references/code-quality-exemplars.md +112 -0
- package/templates/skills/qa/references/code-review-checklist.md +77 -0
- package/templates/skills/qa/references/quality-gates.md +95 -0
- package/templates/skills/qa/references/testing-requirements.md +109 -0
- package/templates/skills/qa/scripts/quality-checks.sh +109 -0
- package/templates/skills/reflect/SKILL.md +159 -0
- package/templates/skills/reflect/references/documentation-tiers.md +70 -0
- package/templates/skills/reflect/references/phase-reflection.md +95 -0
- package/templates/skills/reflect/scripts/workflow-queries.ts +165 -0
- package/templates/skills/security-review/SKILL.md +344 -0
- package/templates/skills/security-review/references/security-checklists.md +377 -0
- package/templates/skills/solve/SKILL.md +242 -0
- package/templates/skills/spec/SKILL.md +169 -0
- package/templates/skills/spec/references/parallel-groups.md +72 -0
- package/templates/skills/spec/references/verification-criteria.md +104 -0
- package/templates/skills/test/SKILL.md +508 -0
- package/templates/skills/testgen/SKILL.md +561 -0
- package/templates/skills/verify/SKILL.md +266 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest management for tracking installed version
|
|
3
|
+
*/
|
|
4
|
+
import { readFile, writeFile, fileExists } from "./fs.js";
|
|
5
|
+
const MANIFEST_PATH = ".sequant-manifest.json";
|
|
6
|
+
const PACKAGE_VERSION = "0.1.0";
|
|
7
|
+
export async function getManifest() {
|
|
8
|
+
if (!(await fileExists(MANIFEST_PATH))) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const content = await readFile(MANIFEST_PATH);
|
|
13
|
+
return JSON.parse(content);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function createManifest(stack) {
|
|
20
|
+
const manifest = {
|
|
21
|
+
version: PACKAGE_VERSION,
|
|
22
|
+
stack,
|
|
23
|
+
installedAt: new Date().toISOString(),
|
|
24
|
+
files: {},
|
|
25
|
+
};
|
|
26
|
+
await writeFile(MANIFEST_PATH, JSON.stringify(manifest, null, 2));
|
|
27
|
+
}
|
|
28
|
+
export async function updateManifest() {
|
|
29
|
+
const manifest = await getManifest();
|
|
30
|
+
if (!manifest) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
manifest.version = PACKAGE_VERSION;
|
|
34
|
+
manifest.updatedAt = new Date().toISOString();
|
|
35
|
+
await writeFile(MANIFEST_PATH, JSON.stringify(manifest, null, 2));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/lib/manifest.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,eAAe,GAAG,OAAO,CAAC;AAUhC,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,MAAM,QAAQ,GAAa;QACzB,OAAO,EAAE,eAAe;QACxB,KAAK;QACL,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAC;IACnC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE9C,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stack detection and configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface StackConfig {
|
|
5
|
+
name: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
detection: {
|
|
8
|
+
files?: string[];
|
|
9
|
+
packageDeps?: string[];
|
|
10
|
+
};
|
|
11
|
+
commands: {
|
|
12
|
+
test: string;
|
|
13
|
+
build: string;
|
|
14
|
+
lint: string;
|
|
15
|
+
dev?: string;
|
|
16
|
+
};
|
|
17
|
+
variables: Record<string, string>;
|
|
18
|
+
}
|
|
19
|
+
export declare const STACKS: Record<string, StackConfig>;
|
|
20
|
+
export declare function detectStack(): Promise<string | null>;
|
|
21
|
+
export declare function getStackConfig(stack: string): StackConfig;
|
|
22
|
+
//# sourceMappingURL=stacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacks.d.ts","sourceRoot":"","sources":["../../../src/lib/stacks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAsF9C,CAAC;AAEF,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuC1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAEzD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stack detection and configuration
|
|
3
|
+
*/
|
|
4
|
+
import { fileExists, readFile } from "./fs.js";
|
|
5
|
+
export const STACKS = {
|
|
6
|
+
nextjs: {
|
|
7
|
+
name: "nextjs",
|
|
8
|
+
displayName: "Next.js",
|
|
9
|
+
detection: {
|
|
10
|
+
files: ["next.config.js", "next.config.mjs", "next.config.ts"],
|
|
11
|
+
packageDeps: ["next"],
|
|
12
|
+
},
|
|
13
|
+
commands: {
|
|
14
|
+
test: "npm test",
|
|
15
|
+
build: "npm run build",
|
|
16
|
+
lint: "npm run lint",
|
|
17
|
+
dev: "npm run dev",
|
|
18
|
+
},
|
|
19
|
+
variables: {
|
|
20
|
+
TEST_COMMAND: "npm test",
|
|
21
|
+
BUILD_COMMAND: "npm run build",
|
|
22
|
+
LINT_COMMAND: "npm run lint",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
rust: {
|
|
26
|
+
name: "rust",
|
|
27
|
+
displayName: "Rust",
|
|
28
|
+
detection: {
|
|
29
|
+
files: ["Cargo.toml"],
|
|
30
|
+
},
|
|
31
|
+
commands: {
|
|
32
|
+
test: "cargo test",
|
|
33
|
+
build: "cargo build --release",
|
|
34
|
+
lint: "cargo clippy",
|
|
35
|
+
},
|
|
36
|
+
variables: {
|
|
37
|
+
TEST_COMMAND: "cargo test",
|
|
38
|
+
BUILD_COMMAND: "cargo build --release",
|
|
39
|
+
LINT_COMMAND: "cargo clippy",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
python: {
|
|
43
|
+
name: "python",
|
|
44
|
+
displayName: "Python",
|
|
45
|
+
detection: {
|
|
46
|
+
files: ["pyproject.toml", "setup.py", "requirements.txt"],
|
|
47
|
+
},
|
|
48
|
+
commands: {
|
|
49
|
+
test: "pytest",
|
|
50
|
+
build: "python -m build",
|
|
51
|
+
lint: "ruff check .",
|
|
52
|
+
},
|
|
53
|
+
variables: {
|
|
54
|
+
TEST_COMMAND: "pytest",
|
|
55
|
+
BUILD_COMMAND: "python -m build",
|
|
56
|
+
LINT_COMMAND: "ruff check .",
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
go: {
|
|
60
|
+
name: "go",
|
|
61
|
+
displayName: "Go",
|
|
62
|
+
detection: {
|
|
63
|
+
files: ["go.mod"],
|
|
64
|
+
},
|
|
65
|
+
commands: {
|
|
66
|
+
test: "go test ./...",
|
|
67
|
+
build: "go build ./...",
|
|
68
|
+
lint: "golangci-lint run",
|
|
69
|
+
},
|
|
70
|
+
variables: {
|
|
71
|
+
TEST_COMMAND: "go test ./...",
|
|
72
|
+
BUILD_COMMAND: "go build ./...",
|
|
73
|
+
LINT_COMMAND: "golangci-lint run",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
generic: {
|
|
77
|
+
name: "generic",
|
|
78
|
+
displayName: "Generic",
|
|
79
|
+
detection: {},
|
|
80
|
+
commands: {
|
|
81
|
+
test: "echo 'No test command configured'",
|
|
82
|
+
build: "echo 'No build command configured'",
|
|
83
|
+
lint: "echo 'No lint command configured'",
|
|
84
|
+
},
|
|
85
|
+
variables: {
|
|
86
|
+
TEST_COMMAND: "npm test",
|
|
87
|
+
BUILD_COMMAND: "npm run build",
|
|
88
|
+
LINT_COMMAND: "npm run lint",
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
export async function detectStack() {
|
|
93
|
+
// Check for Next.js
|
|
94
|
+
for (const file of STACKS.nextjs.detection.files || []) {
|
|
95
|
+
if (await fileExists(file)) {
|
|
96
|
+
return "nextjs";
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Check package.json for Next.js dependency
|
|
100
|
+
if (await fileExists("package.json")) {
|
|
101
|
+
try {
|
|
102
|
+
const pkg = JSON.parse(await readFile("package.json"));
|
|
103
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
104
|
+
if (deps.next) {
|
|
105
|
+
return "nextjs";
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Ignore parse errors
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Check for Rust
|
|
113
|
+
if (await fileExists("Cargo.toml")) {
|
|
114
|
+
return "rust";
|
|
115
|
+
}
|
|
116
|
+
// Check for Go
|
|
117
|
+
if (await fileExists("go.mod")) {
|
|
118
|
+
return "go";
|
|
119
|
+
}
|
|
120
|
+
// Check for Python
|
|
121
|
+
for (const file of STACKS.python.detection.files || []) {
|
|
122
|
+
if (await fileExists(file)) {
|
|
123
|
+
return "python";
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
export function getStackConfig(stack) {
|
|
129
|
+
return STACKS[stack] || STACKS.generic;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=stacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacks.js","sourceRoot":"","sources":["../../../src/lib/stacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template management - copy and process templates
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* List all template files
|
|
6
|
+
*/
|
|
7
|
+
export declare function listTemplateFiles(): Promise<string[]>;
|
|
8
|
+
/**
|
|
9
|
+
* Get content of a template file
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTemplateContent(templatePath: string): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Copy all templates to .claude/ directory
|
|
14
|
+
*/
|
|
15
|
+
export declare function copyTemplates(stack: string): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgCH;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAwB3D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DhE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template management - copy and process templates
|
|
3
|
+
*/
|
|
4
|
+
import { readdir, chmod } from "fs/promises";
|
|
5
|
+
import { join, dirname, basename } from "path";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
|
+
import { readFile, writeFile, ensureDir, fileExists } from "./fs.js";
|
|
8
|
+
import { getStackConfig } from "./stacks.js";
|
|
9
|
+
// Get the package templates directory
|
|
10
|
+
function getTemplatesDir() {
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
// Compiled structure: dist/src/lib/templates.js
|
|
13
|
+
// So we need ../../../templates to reach project root templates/
|
|
14
|
+
const devPath = join(__dirname, "..", "..", "..", "templates");
|
|
15
|
+
return devPath;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Process template variables in content
|
|
19
|
+
*/
|
|
20
|
+
function processTemplate(content, variables) {
|
|
21
|
+
let result = content;
|
|
22
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
23
|
+
result = result.replace(new RegExp(`\\{\\{${key}\\}\\}`, "g"), value);
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* List all template files
|
|
29
|
+
*/
|
|
30
|
+
export async function listTemplateFiles() {
|
|
31
|
+
const templatesDir = getTemplatesDir();
|
|
32
|
+
const files = [];
|
|
33
|
+
async function walk(dir, prefix = "") {
|
|
34
|
+
try {
|
|
35
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
36
|
+
for (const entry of entries) {
|
|
37
|
+
const relativePath = join(prefix, entry.name);
|
|
38
|
+
const fullPath = join(dir, entry.name);
|
|
39
|
+
if (entry.isDirectory()) {
|
|
40
|
+
await walk(fullPath, relativePath);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
files.push(join("templates", relativePath));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Directory doesn't exist
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
await walk(templatesDir);
|
|
52
|
+
return files;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get content of a template file
|
|
56
|
+
*/
|
|
57
|
+
export async function getTemplateContent(templatePath) {
|
|
58
|
+
const templatesDir = getTemplatesDir();
|
|
59
|
+
const relativePath = templatePath.replace("templates/", "");
|
|
60
|
+
const fullPath = join(templatesDir, relativePath);
|
|
61
|
+
return readFile(fullPath);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Copy all templates to .claude/ directory
|
|
65
|
+
*/
|
|
66
|
+
export async function copyTemplates(stack) {
|
|
67
|
+
const templatesDir = getTemplatesDir();
|
|
68
|
+
const stackConfig = getStackConfig(stack);
|
|
69
|
+
const variables = {
|
|
70
|
+
...stackConfig.variables,
|
|
71
|
+
PROJECT_NAME: basename(process.cwd()) || "project",
|
|
72
|
+
STACK: stack,
|
|
73
|
+
};
|
|
74
|
+
async function copyDir(srcDir, destDir) {
|
|
75
|
+
try {
|
|
76
|
+
const entries = await readdir(srcDir, { withFileTypes: true });
|
|
77
|
+
await ensureDir(destDir);
|
|
78
|
+
for (const entry of entries) {
|
|
79
|
+
const srcPath = join(srcDir, entry.name);
|
|
80
|
+
const destPath = join(destDir, entry.name);
|
|
81
|
+
if (entry.isDirectory()) {
|
|
82
|
+
await copyDir(srcPath, destPath);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Read, process, and write
|
|
86
|
+
let content = await readFile(srcPath);
|
|
87
|
+
content = processTemplate(content, variables);
|
|
88
|
+
await writeFile(destPath, content);
|
|
89
|
+
// Make shell scripts executable
|
|
90
|
+
if (entry.name.endsWith(".sh")) {
|
|
91
|
+
await chmod(destPath, 0o755);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
// Skip if source doesn't exist
|
|
98
|
+
if (error.code !== "ENOENT") {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Copy skills
|
|
104
|
+
await copyDir(join(templatesDir, "skills"), ".claude/skills");
|
|
105
|
+
// Copy hooks
|
|
106
|
+
await copyDir(join(templatesDir, "hooks"), ".claude/hooks");
|
|
107
|
+
// Copy memory (constitution, etc.)
|
|
108
|
+
await copyDir(join(templatesDir, "memory"), ".claude/memory");
|
|
109
|
+
// Copy scripts (worktree helpers, etc.)
|
|
110
|
+
await copyDir(join(templatesDir, "scripts"), "scripts/dev");
|
|
111
|
+
// Copy settings.json
|
|
112
|
+
const settingsPath = join(templatesDir, "settings.json");
|
|
113
|
+
if (await fileExists(settingsPath)) {
|
|
114
|
+
const content = await readFile(settingsPath);
|
|
115
|
+
await writeFile(".claude/settings.json", processTemplate(content, variables));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/lib/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Argument Parser for Pipeline Scripts
|
|
3
|
+
*
|
|
4
|
+
* Typed argument parsing with support for common flags used across all scripts.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { parseArgs } from './lib/cli-args'
|
|
9
|
+
*
|
|
10
|
+
* const args = parseArgs(process.argv.slice(2))
|
|
11
|
+
* console.log(args.city) // 'nashville'
|
|
12
|
+
* console.log(args.limit) // 10
|
|
13
|
+
* console.log(args.dryRun) // true
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Parsed command line arguments with typed fields.
|
|
18
|
+
*/
|
|
19
|
+
export interface ParsedArgs {
|
|
20
|
+
/** City slug (e.g., 'nashville', 'new-york') */
|
|
21
|
+
city?: string;
|
|
22
|
+
/** Limit for number of items to process */
|
|
23
|
+
limit?: number;
|
|
24
|
+
/** Dry run mode - no database writes */
|
|
25
|
+
dryRun: boolean;
|
|
26
|
+
/** Verbose mode - enable debug logging */
|
|
27
|
+
verbose: boolean;
|
|
28
|
+
/** Auto-confirm prompts (skip confirmation) */
|
|
29
|
+
yes: boolean;
|
|
30
|
+
/** Positional arguments (non-flag arguments) */
|
|
31
|
+
positional: string[];
|
|
32
|
+
/** Any additional named arguments */
|
|
33
|
+
[key: string]: string | number | boolean | string[] | undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Default values for parsed arguments.
|
|
37
|
+
*/
|
|
38
|
+
export interface ParseDefaults {
|
|
39
|
+
city?: string;
|
|
40
|
+
limit?: number;
|
|
41
|
+
dryRun?: boolean;
|
|
42
|
+
verbose?: boolean;
|
|
43
|
+
yes?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse command line arguments into a typed object.
|
|
47
|
+
*
|
|
48
|
+
* Supports two flag formats:
|
|
49
|
+
* - `--flag=value` (equals format)
|
|
50
|
+
* - `--flag value` (space-separated format)
|
|
51
|
+
*
|
|
52
|
+
* Boolean flags:
|
|
53
|
+
* - `--dry-run` or `--dryRun` → dryRun: true
|
|
54
|
+
* - `--verbose` or `-v` → verbose: true
|
|
55
|
+
* - `--yes` or `-y` → yes: true
|
|
56
|
+
*
|
|
57
|
+
* @param argv - Command line arguments (typically `process.argv.slice(2)`)
|
|
58
|
+
* @param defaults - Optional default values
|
|
59
|
+
* @returns Parsed arguments object
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* // With default city
|
|
64
|
+
* const args = parseArgs(['--limit', '5'], { city: 'nashville' })
|
|
65
|
+
* // args.city === 'nashville'
|
|
66
|
+
* // args.limit === 5
|
|
67
|
+
*
|
|
68
|
+
* // Boolean flags
|
|
69
|
+
* const args2 = parseArgs(['--dry-run', '--verbose'])
|
|
70
|
+
* // args2.dryRun === true
|
|
71
|
+
* // args2.verbose === true
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function parseArgs(argv: string[], defaults?: ParseDefaults): ParsedArgs;
|
|
75
|
+
/**
|
|
76
|
+
* Normalize a flag key to camelCase.
|
|
77
|
+
* Converts kebab-case to camelCase (e.g., 'dry-run' → 'dryRun').
|
|
78
|
+
*
|
|
79
|
+
* @param key - The flag key to normalize
|
|
80
|
+
* @returns Normalized key in camelCase
|
|
81
|
+
*/
|
|
82
|
+
export declare function normalizeKey(key: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Parse a value based on expected type for known keys.
|
|
85
|
+
* Numbers are parsed for 'limit', 'count', 'max', 'min', 'timeout'.
|
|
86
|
+
*
|
|
87
|
+
* @param key - The normalized key
|
|
88
|
+
* @param value - The string value
|
|
89
|
+
* @returns Parsed value (number or string)
|
|
90
|
+
*/
|
|
91
|
+
export declare function parseValue(key: string, value: string): string | number;
|
|
92
|
+
/**
|
|
93
|
+
* Get a required string argument, throwing an error if missing.
|
|
94
|
+
*
|
|
95
|
+
* @param args - Parsed arguments
|
|
96
|
+
* @param key - Argument key to get
|
|
97
|
+
* @param errorMessage - Custom error message if missing
|
|
98
|
+
* @returns The argument value
|
|
99
|
+
* @throws Error if argument is missing
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const city = getRequiredArg(args, 'city', 'Missing required --city argument')
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function getRequiredArg(args: ParsedArgs, key: keyof ParsedArgs | string, errorMessage?: string): string;
|
|
107
|
+
/**
|
|
108
|
+
* Check if help was requested via --help or -h flag.
|
|
109
|
+
*
|
|
110
|
+
* @param argv - Command line arguments
|
|
111
|
+
* @returns True if help was requested
|
|
112
|
+
*/
|
|
113
|
+
export declare function isHelpRequested(argv: string[]): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Print usage information for a script.
|
|
116
|
+
*
|
|
117
|
+
* @param scriptName - Name of the script
|
|
118
|
+
* @param description - Brief description
|
|
119
|
+
* @param options - Available options with descriptions
|
|
120
|
+
* @param examples - Usage examples
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* if (isHelpRequested(process.argv)) {
|
|
125
|
+
* printUsage('discover-shops', 'Discover matcha shops for a city', {
|
|
126
|
+
* '--city <slug>': 'City slug (required)',
|
|
127
|
+
* '--limit <n>': 'Limit API calls',
|
|
128
|
+
* '--dry-run': 'Preview mode, no database writes',
|
|
129
|
+
* }, [
|
|
130
|
+
* 'npx tsx scripts/discover-shops.ts --city nashville',
|
|
131
|
+
* 'npx tsx scripts/discover-shops.ts --city nashville --limit 5',
|
|
132
|
+
* ])
|
|
133
|
+
* process.exit(0)
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function printUsage(scriptName: string, description: string, options: Record<string, string>, examples?: string[]): void;
|
|
138
|
+
//# sourceMappingURL=cli-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/cli-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAA;IACf,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAA;IAChB,+CAA+C;IAC/C,GAAG,EAAE,OAAO,CAAA;IACZ,gDAAgD;IAChD,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,qCAAqC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,UAAU,CA0E9E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAStE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,UAAU,GAAG,MAAM,EAC9B,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAYR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEvD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,IAAI,CAoBN"}
|