syntra 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +239 -0
- package/dist/adapters/claude.d.ts +3 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +19 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/common.d.ts +14 -0
- package/dist/adapters/common.d.ts.map +1 -0
- package/dist/adapters/common.js +38 -0
- package/dist/adapters/common.js.map +1 -0
- package/dist/adapters/copilot.d.ts +5 -0
- package/dist/adapters/copilot.d.ts.map +1 -0
- package/dist/adapters/copilot.js +25 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/cursor.d.ts +3 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +26 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +27 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/commands/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +154 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/done.d.ts +2 -0
- package/dist/commands/done.d.ts.map +1 -0
- package/dist/commands/done.js +20 -0
- package/dist/commands/done.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +129 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +31 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +51 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/validate.d.ts +6 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +101 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/detectors/cicd.d.ts +2 -0
- package/dist/detectors/cicd.d.ts.map +1 -0
- package/dist/detectors/cicd.js +24 -0
- package/dist/detectors/cicd.js.map +1 -0
- package/dist/detectors/existingAi.d.ts +6 -0
- package/dist/detectors/existingAi.d.ts.map +1 -0
- package/dist/detectors/existingAi.js +10 -0
- package/dist/detectors/existingAi.js.map +1 -0
- package/dist/detectors/framework.d.ts +3 -0
- package/dist/detectors/framework.d.ts.map +1 -0
- package/dist/detectors/framework.js +75 -0
- package/dist/detectors/framework.js.map +1 -0
- package/dist/detectors/index.d.ts +9 -0
- package/dist/detectors/index.d.ts.map +1 -0
- package/dist/detectors/index.js +29 -0
- package/dist/detectors/index.js.map +1 -0
- package/dist/detectors/language.d.ts +3 -0
- package/dist/detectors/language.d.ts.map +1 -0
- package/dist/detectors/language.js +34 -0
- package/dist/detectors/language.js.map +1 -0
- package/dist/detectors/monorepo.d.ts +2 -0
- package/dist/detectors/monorepo.d.ts.map +1 -0
- package/dist/detectors/monorepo.js +31 -0
- package/dist/detectors/monorepo.js.map +1 -0
- package/dist/detectors/packageManager.d.ts +3 -0
- package/dist/detectors/packageManager.d.ts.map +1 -0
- package/dist/detectors/packageManager.js +42 -0
- package/dist/detectors/packageManager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/agents/bugFixer.d.ts +2 -0
- package/dist/templates/agents/bugFixer.d.ts.map +1 -0
- package/dist/templates/agents/bugFixer.js +37 -0
- package/dist/templates/agents/bugFixer.js.map +1 -0
- package/dist/templates/agents/codeGenerator.d.ts +2 -0
- package/dist/templates/agents/codeGenerator.d.ts.map +1 -0
- package/dist/templates/agents/codeGenerator.js +41 -0
- package/dist/templates/agents/codeGenerator.js.map +1 -0
- package/dist/templates/agents/codeReviewer.d.ts +2 -0
- package/dist/templates/agents/codeReviewer.d.ts.map +1 -0
- package/dist/templates/agents/codeReviewer.js +43 -0
- package/dist/templates/agents/codeReviewer.js.map +1 -0
- package/dist/templates/agents/index.d.ts +5 -0
- package/dist/templates/agents/index.d.ts.map +1 -0
- package/dist/templates/agents/index.js +5 -0
- package/dist/templates/agents/index.js.map +1 -0
- package/dist/templates/agents/taskPlanner.d.ts +2 -0
- package/dist/templates/agents/taskPlanner.d.ts.map +1 -0
- package/dist/templates/agents/taskPlanner.js +47 -0
- package/dist/templates/agents/taskPlanner.js.map +1 -0
- package/dist/templates/engine.d.ts +9 -0
- package/dist/templates/engine.d.ts.map +1 -0
- package/dist/templates/engine.js +16 -0
- package/dist/templates/engine.js.map +1 -0
- package/dist/templates/files/index.d.ts +3 -0
- package/dist/templates/files/index.d.ts.map +1 -0
- package/dist/templates/files/index.js +51 -0
- package/dist/templates/files/index.js.map +1 -0
- package/dist/templates/instructions/architecture.d.ts +2 -0
- package/dist/templates/instructions/architecture.d.ts.map +1 -0
- package/dist/templates/instructions/architecture.js +50 -0
- package/dist/templates/instructions/architecture.js.map +1 -0
- package/dist/templates/instructions/deploy.d.ts +2 -0
- package/dist/templates/instructions/deploy.d.ts.map +1 -0
- package/dist/templates/instructions/deploy.js +53 -0
- package/dist/templates/instructions/deploy.js.map +1 -0
- package/dist/templates/instructions/index.d.ts +6 -0
- package/dist/templates/instructions/index.d.ts.map +1 -0
- package/dist/templates/instructions/index.js +6 -0
- package/dist/templates/instructions/index.js.map +1 -0
- package/dist/templates/instructions/security.d.ts +2 -0
- package/dist/templates/instructions/security.d.ts.map +1 -0
- package/dist/templates/instructions/security.js +43 -0
- package/dist/templates/instructions/security.js.map +1 -0
- package/dist/templates/instructions/style.d.ts +2 -0
- package/dist/templates/instructions/style.d.ts.map +1 -0
- package/dist/templates/instructions/style.js +45 -0
- package/dist/templates/instructions/style.js.map +1 -0
- package/dist/templates/instructions/testing.d.ts +2 -0
- package/dist/templates/instructions/testing.d.ts.map +1 -0
- package/dist/templates/instructions/testing.js +61 -0
- package/dist/templates/instructions/testing.js.map +1 -0
- package/dist/templates/registry.d.ts +13 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +89 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/utils/fs.d.ts +16 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +88 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +68 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/prompt.d.ts +9 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +48 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/types.d.ts +68 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/validators/agents.d.ts +3 -0
- package/dist/validators/agents.d.ts.map +1 -0
- package/dist/validators/agents.js +40 -0
- package/dist/validators/agents.js.map +1 -0
- package/dist/validators/config.d.ts +12 -0
- package/dist/validators/config.d.ts.map +1 -0
- package/dist/validators/config.js +114 -0
- package/dist/validators/config.js.map +1 -0
- package/dist/validators/instructions.d.ts +10 -0
- package/dist/validators/instructions.d.ts.map +1 -0
- package/dist/validators/instructions.js +34 -0
- package/dist/validators/instructions.js.map +1 -0
- package/dist/validators/syncStatus.d.ts +9 -0
- package/dist/validators/syncStatus.d.ts.map +1 -0
- package/dist/validators/syncStatus.js +92 -0
- package/dist/validators/syncStatus.js.map +1 -0
- package/dist/validators/tasks.d.ts +3 -0
- package/dist/validators/tasks.d.ts.map +1 -0
- package/dist/validators/tasks.js +72 -0
- package/dist/validators/tasks.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { fsUtils } from '../utils/fs.js';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function detectLanguage(rootPath) {
|
|
4
|
+
// Check for TypeScript/JavaScript
|
|
5
|
+
const packageJsonPath = path.join(rootPath, 'package.json');
|
|
6
|
+
if (fsUtils.exists(packageJsonPath)) {
|
|
7
|
+
try {
|
|
8
|
+
const pkg = fsUtils.readJSON(packageJsonPath);
|
|
9
|
+
if (pkg.devDependencies?.typescript || pkg.dependencies?.typescript) {
|
|
10
|
+
return 'typescript';
|
|
11
|
+
}
|
|
12
|
+
return 'javascript';
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Fall through
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Check for Python
|
|
19
|
+
if (fsUtils.exists(path.join(rootPath, 'pyproject.toml')) ||
|
|
20
|
+
fsUtils.exists(path.join(rootPath, 'setup.py')) ||
|
|
21
|
+
fsUtils.exists(path.join(rootPath, 'requirements.txt'))) {
|
|
22
|
+
return 'python';
|
|
23
|
+
}
|
|
24
|
+
// Check for Go
|
|
25
|
+
if (fsUtils.exists(path.join(rootPath, 'go.mod'))) {
|
|
26
|
+
return 'go';
|
|
27
|
+
}
|
|
28
|
+
// Check for Rust
|
|
29
|
+
if (fsUtils.exists(path.join(rootPath, 'Cargo.toml'))) {
|
|
30
|
+
return 'rust';
|
|
31
|
+
}
|
|
32
|
+
return 'other';
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/detectors/language.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,kCAAkC;IAClC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC5C,IAAK,GAAW,CAAC,eAAe,EAAE,UAAU,IAAK,GAAW,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;gBACxF,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,eAAe;IACf,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monorepo.d.ts","sourceRoot":"","sources":["../../src/detectors/monorepo.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA8BxD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { fsUtils } from '../utils/fs.js';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function detectMonorepo(rootPath) {
|
|
4
|
+
// npm workspaces
|
|
5
|
+
const packageJsonPath = path.join(rootPath, 'package.json');
|
|
6
|
+
if (fsUtils.exists(packageJsonPath)) {
|
|
7
|
+
try {
|
|
8
|
+
const pkg = fsUtils.readJSON(packageJsonPath);
|
|
9
|
+
if (pkg.workspaces) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// Fall through
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// Lerna
|
|
18
|
+
if (fsUtils.exists(path.join(rootPath, 'lerna.json'))) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
// Nx
|
|
22
|
+
if (fsUtils.exists(path.join(rootPath, 'nx.json'))) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
// Turbo
|
|
26
|
+
if (fsUtils.exists(path.join(rootPath, 'turbo.json'))) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=monorepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monorepo.js","sourceRoot":"","sources":["../../src/detectors/monorepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,iBAAiB;IACjB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC9C,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;IACL,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;IACR,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.d.ts","sourceRoot":"","sources":["../../src/detectors/packageManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,gBAAgB,CAAC,CA4ClC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { fsUtils } from '../utils/fs.js';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export function detectPackageManager(rootPath, language) {
|
|
4
|
+
// JavaScript/TypeScript package managers
|
|
5
|
+
if (language === 'typescript' || language === 'javascript') {
|
|
6
|
+
// npm (package-lock.json)
|
|
7
|
+
if (fsUtils.exists(path.join(rootPath, 'package-lock.json'))) {
|
|
8
|
+
return 'npm';
|
|
9
|
+
}
|
|
10
|
+
// yarn (yarn.lock)
|
|
11
|
+
if (fsUtils.exists(path.join(rootPath, 'yarn.lock'))) {
|
|
12
|
+
return 'yarn';
|
|
13
|
+
}
|
|
14
|
+
// pnpm (pnpm-lock.yaml)
|
|
15
|
+
if (fsUtils.exists(path.join(rootPath, 'pnpm-lock.yaml'))) {
|
|
16
|
+
return 'pnpm';
|
|
17
|
+
}
|
|
18
|
+
// bun (bun.lockb)
|
|
19
|
+
if (fsUtils.exists(path.join(rootPath, 'bun.lockb'))) {
|
|
20
|
+
return 'bun';
|
|
21
|
+
}
|
|
22
|
+
// Default to npm if package.json exists
|
|
23
|
+
if (fsUtils.exists(path.join(rootPath, 'package.json'))) {
|
|
24
|
+
return 'npm';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Python package managers
|
|
28
|
+
if (language === 'python') {
|
|
29
|
+
if (fsUtils.exists(path.join(rootPath, 'poetry.lock'))) {
|
|
30
|
+
return 'python';
|
|
31
|
+
}
|
|
32
|
+
if (fsUtils.exists(path.join(rootPath, 'pipenv.lock'))) {
|
|
33
|
+
return 'python';
|
|
34
|
+
}
|
|
35
|
+
if (fsUtils.exists(path.join(rootPath, 'requirements.txt'))) {
|
|
36
|
+
return 'python';
|
|
37
|
+
}
|
|
38
|
+
return 'python';
|
|
39
|
+
}
|
|
40
|
+
return 'other';
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=packageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageManager.js","sourceRoot":"","sources":["../../src/detectors/packageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAoC;IAEpC,yCAAyC;IACzC,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC3D,0BAA0B;QAC1B,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wCAAwC;QACxC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;YAC5D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { initCommand } from './commands/init.js';
|
|
4
|
+
import { addCommand } from './commands/add.js';
|
|
5
|
+
import { doneCommand } from './commands/done.js';
|
|
6
|
+
import { syncCommand } from './commands/sync.js';
|
|
7
|
+
import { validateCommand } from './commands/validate.js';
|
|
8
|
+
import { templateSaveCommand, templateListCommand } from './commands/template.js';
|
|
9
|
+
import { logger } from './utils/logger.js';
|
|
10
|
+
const program = new Command();
|
|
11
|
+
program
|
|
12
|
+
.name('syntra')
|
|
13
|
+
.description('AI-assisted development framework CLI')
|
|
14
|
+
.version('0.1.0');
|
|
15
|
+
// Init command
|
|
16
|
+
program
|
|
17
|
+
.command('init')
|
|
18
|
+
.description('Initialize AI framework in project')
|
|
19
|
+
.action(async () => {
|
|
20
|
+
try {
|
|
21
|
+
await initCommand();
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// Add command
|
|
28
|
+
program
|
|
29
|
+
.command('add <type> [name]')
|
|
30
|
+
.description('Add framework file (instruction, agent, task, skill)')
|
|
31
|
+
.action(async (type, name) => {
|
|
32
|
+
try {
|
|
33
|
+
if (!['instruction', 'agent', 'task', 'skill'].includes(type)) {
|
|
34
|
+
logger.error(`Unknown type: ${type}`);
|
|
35
|
+
logger.info('Valid types: instruction, agent, task, skill');
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
await addCommand(type, name);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// Done command
|
|
45
|
+
program
|
|
46
|
+
.command('done <taskId>')
|
|
47
|
+
.description('Mark task as done')
|
|
48
|
+
.action((taskId) => {
|
|
49
|
+
try {
|
|
50
|
+
doneCommand(taskId);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
logger.error(`Failed: ${e}`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
// Sync command
|
|
58
|
+
program
|
|
59
|
+
.command('sync')
|
|
60
|
+
.description('Sync canonical ai/ files to configured AI tool adapters')
|
|
61
|
+
.option('--copilot', 'Sync only GitHub Copilot adapter')
|
|
62
|
+
.option('--claude', 'Sync only Claude Code adapter')
|
|
63
|
+
.option('--cursor', 'Sync only Cursor adapter')
|
|
64
|
+
.action((options) => {
|
|
65
|
+
try {
|
|
66
|
+
syncCommand(process.cwd(), {
|
|
67
|
+
copilot: options.copilot,
|
|
68
|
+
claude: options.claude,
|
|
69
|
+
cursor: options.cursor,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
logger.error(`Failed: ${e}`);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// Validate command
|
|
78
|
+
program
|
|
79
|
+
.command('validate')
|
|
80
|
+
.description('Validate framework setup and sync status')
|
|
81
|
+
.action(() => {
|
|
82
|
+
try {
|
|
83
|
+
const result = validateCommand(process.cwd());
|
|
84
|
+
if (result.errors > 0) {
|
|
85
|
+
process.exitCode = 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
logger.error(`Failed: ${e}`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// Template commands
|
|
94
|
+
const template = program
|
|
95
|
+
.command('template')
|
|
96
|
+
.description('Manage reusable framework templates');
|
|
97
|
+
template
|
|
98
|
+
.command('save <name>')
|
|
99
|
+
.description('Save current ai/ setup as a reusable template')
|
|
100
|
+
.action((name) => {
|
|
101
|
+
try {
|
|
102
|
+
templateSaveCommand(name, process.cwd());
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
logger.error(`Failed: ${e}`);
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
template
|
|
110
|
+
.command('list')
|
|
111
|
+
.description('List saved templates')
|
|
112
|
+
.action(() => {
|
|
113
|
+
try {
|
|
114
|
+
templateListCommand();
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
logger.error(`Failed: ${e}`);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
program.parse(process.argv);
|
|
122
|
+
if (!process.argv.slice(2).length) {
|
|
123
|
+
program.outputHelp();
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,eAAe;AACf,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,IAAI,CAAC;QACD,MAAM,WAAW,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,cAAc;AACd,OAAO;KACF,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAa,EAAE,EAAE;IAC1C,IAAI,CAAC;QACD,IAAI,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,UAAU,CAAC,IAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,eAAe;AACf,OAAO;KACF,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;IACvB,IAAI,CAAC;QACD,WAAW,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,eAAe;AACf,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,kCAAkC,CAAC;KACvD,MAAM,CAAC,UAAU,EAAE,+BAA+B,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,CAAC,OAAkE,EAAE,EAAE;IAC3E,IAAI,CAAC;QACD,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,mBAAmB;AACnB,OAAO;KACF,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,GAAG,EAAE;IACT,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,oBAAoB;AACpB,MAAM,QAAQ,GAAG,OAAO;KACnB,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,qCAAqC,CAAC,CAAC;AAExD,QAAQ;KACH,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;IACrB,IAAI,CAAC;QACD,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,QAAQ;KACH,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,GAAG,EAAE;IACT,IAAI,CAAC;QACD,mBAAmB,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChC,OAAO,CAAC,UAAU,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const bugFixerTemplate = "# Bug Fixer Agent\n\n## Purpose\nDiagnoses and fixes bugs using project context and instructions.\n\n## Responsibilities\n1. Understand the bug description\n2. Locate the problematic code\n3. Diagnose the root cause\n4. Implement a fix\n5. Verify the fix doesn't break other tests\n6. Document what was wrong and how it was fixed\n\n## Debugging Process\n1. **Reproduce**: Can you reproduce the issue?\n2. **Isolate**: Narrow down which component/function is broken\n3. **Root cause**: Why is it broken?\n4. **Fix**: Implement the smallest fix that works\n5. **Verify**: Does it fix the issue without breaking tests?\n6. **Prevent**: Could we add a test to prevent regression?\n\n## Root Cause Categories\n- **Logic error**: Wrong business logic\n- **Edge case**: Unhandled edge case\n- **Type error**: Type mismatch or incorrect usage\n- **State error**: Wrong state management\n- **Dependency**: Wrong dependency or missing import\n- **Performance**: Too slow or too much memory\n\n## Fix Quality\n- **Minimal change**: Don't refactor unrelated code\n- **No side effects**: Fix should only affect the broken behavior\n- **With test**: Add test that would have caught this bug\n- **Well documented**: Explain what was wrong\n\n";
|
|
2
|
+
//# sourceMappingURL=bugFixer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bugFixer.d.ts","sourceRoot":"","sources":["../../../src/templates/agents/bugFixer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,itCAmC5B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const bugFixerTemplate = `# Bug Fixer Agent
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Diagnoses and fixes bugs using project context and instructions.
|
|
5
|
+
|
|
6
|
+
## Responsibilities
|
|
7
|
+
1. Understand the bug description
|
|
8
|
+
2. Locate the problematic code
|
|
9
|
+
3. Diagnose the root cause
|
|
10
|
+
4. Implement a fix
|
|
11
|
+
5. Verify the fix doesn't break other tests
|
|
12
|
+
6. Document what was wrong and how it was fixed
|
|
13
|
+
|
|
14
|
+
## Debugging Process
|
|
15
|
+
1. **Reproduce**: Can you reproduce the issue?
|
|
16
|
+
2. **Isolate**: Narrow down which component/function is broken
|
|
17
|
+
3. **Root cause**: Why is it broken?
|
|
18
|
+
4. **Fix**: Implement the smallest fix that works
|
|
19
|
+
5. **Verify**: Does it fix the issue without breaking tests?
|
|
20
|
+
6. **Prevent**: Could we add a test to prevent regression?
|
|
21
|
+
|
|
22
|
+
## Root Cause Categories
|
|
23
|
+
- **Logic error**: Wrong business logic
|
|
24
|
+
- **Edge case**: Unhandled edge case
|
|
25
|
+
- **Type error**: Type mismatch or incorrect usage
|
|
26
|
+
- **State error**: Wrong state management
|
|
27
|
+
- **Dependency**: Wrong dependency or missing import
|
|
28
|
+
- **Performance**: Too slow or too much memory
|
|
29
|
+
|
|
30
|
+
## Fix Quality
|
|
31
|
+
- **Minimal change**: Don't refactor unrelated code
|
|
32
|
+
- **No side effects**: Fix should only affect the broken behavior
|
|
33
|
+
- **With test**: Add test that would have caught this bug
|
|
34
|
+
- **Well documented**: Explain what was wrong
|
|
35
|
+
|
|
36
|
+
`;
|
|
37
|
+
//# sourceMappingURL=bugFixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bugFixer.js","sourceRoot":"","sources":["../../../src/templates/agents/bugFixer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC/B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const codeGeneratorTemplate = "# Code Generator Agent\n\n## Purpose\nGenerates code following project instructions, step by step.\n\n## Responsibilities\n1. Understand the task requirements\n2. Review relevant architecture and style instructions\n3. Break down the work into logical steps\n4. Generate code that follows all guidelines\n5. Test the generated code\n6. Provide clear explanations of changes\n\n## Guidelines\n- Always follow the project's architecture instructions\n- Adhere strictly to code style and naming conventions\n- Implement comprehensive error handling\n- Write self-documenting code with clear comments\n- Ensure all generated code is tested\n\n## Before Starting\n- [ ] Review the task description completely\n- [ ] Check architecture instructions\n- [ ] Check style instructions\n- [ ] Check testing instructions\n- [ ] Identify any existing code patterns to follow\n\n## During Implementation\n- [ ] Implement one step at a time\n- [ ] Explain what each step does\n- [ ] Ask for clarification if requirements are unclear\n- [ ] Suggest improvements if you spot issues\n\n## After Implementation\n- [ ] Run tests to verify functionality\n- [ ] Check code against style guidelines\n- [ ] Request human review\n- [ ] Incorporate feedback\n\n";
|
|
2
|
+
//# sourceMappingURL=codeGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeGenerator.d.ts","sourceRoot":"","sources":["../../../src/templates/agents/codeGenerator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,wtCAuCjC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const codeGeneratorTemplate = `# Code Generator Agent
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Generates code following project instructions, step by step.
|
|
5
|
+
|
|
6
|
+
## Responsibilities
|
|
7
|
+
1. Understand the task requirements
|
|
8
|
+
2. Review relevant architecture and style instructions
|
|
9
|
+
3. Break down the work into logical steps
|
|
10
|
+
4. Generate code that follows all guidelines
|
|
11
|
+
5. Test the generated code
|
|
12
|
+
6. Provide clear explanations of changes
|
|
13
|
+
|
|
14
|
+
## Guidelines
|
|
15
|
+
- Always follow the project's architecture instructions
|
|
16
|
+
- Adhere strictly to code style and naming conventions
|
|
17
|
+
- Implement comprehensive error handling
|
|
18
|
+
- Write self-documenting code with clear comments
|
|
19
|
+
- Ensure all generated code is tested
|
|
20
|
+
|
|
21
|
+
## Before Starting
|
|
22
|
+
- [ ] Review the task description completely
|
|
23
|
+
- [ ] Check architecture instructions
|
|
24
|
+
- [ ] Check style instructions
|
|
25
|
+
- [ ] Check testing instructions
|
|
26
|
+
- [ ] Identify any existing code patterns to follow
|
|
27
|
+
|
|
28
|
+
## During Implementation
|
|
29
|
+
- [ ] Implement one step at a time
|
|
30
|
+
- [ ] Explain what each step does
|
|
31
|
+
- [ ] Ask for clarification if requirements are unclear
|
|
32
|
+
- [ ] Suggest improvements if you spot issues
|
|
33
|
+
|
|
34
|
+
## After Implementation
|
|
35
|
+
- [ ] Run tests to verify functionality
|
|
36
|
+
- [ ] Check code against style guidelines
|
|
37
|
+
- [ ] Request human review
|
|
38
|
+
- [ ] Incorporate feedback
|
|
39
|
+
|
|
40
|
+
`;
|
|
41
|
+
//# sourceMappingURL=codeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeGenerator.js","sourceRoot":"","sources":["../../../src/templates/agents/codeGenerator.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCpC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const codeReviewerTemplate = "# Code Reviewer Agent\n\n## Purpose\nReviews code against project instructions and suggests improvements.\n\n## Responsibilities\n1. Review code for architectural compliance\n2. Check adherence to style guidelines\n3. Verify test coverage\n4. Check for security issues\n5. Provide constructive feedback\n6. Suggest refactoring opportunities\n\n## Review Checklist\n- [ ] Does code follow architecture instructions?\n- [ ] Does code follow style conventions?\n- [ ] Are error cases handled properly?\n- [ ] Is there adequate test coverage?\n- [ ] Are there security concerns?\n- [ ] Is the code efficient?\n- [ ] Is the code maintainable?\n\n## Feedback Format\n- **Issue**: Description of the problem\n- **Location**: File and line number\n- **Severity**: Minor / Major / Critical\n- **Suggestion**: How to fix it\n- **Why**: Explanation of why this matters\n\n## Major Issues (Blocker)\n- Security vulnerabilities\n- Breaking architecture rules\n- Missing error handling\n- Failing tests\n\n## Minor Issues (Polish)\n- Style violations\n- Naming inconsistencies\n- Missing documentation\n- Performance improvements\n\n";
|
|
2
|
+
//# sourceMappingURL=codeReviewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeReviewer.d.ts","sourceRoot":"","sources":["../../../src/templates/agents/codeReviewer.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,omCAyChC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const codeReviewerTemplate = `# Code Reviewer Agent
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Reviews code against project instructions and suggests improvements.
|
|
5
|
+
|
|
6
|
+
## Responsibilities
|
|
7
|
+
1. Review code for architectural compliance
|
|
8
|
+
2. Check adherence to style guidelines
|
|
9
|
+
3. Verify test coverage
|
|
10
|
+
4. Check for security issues
|
|
11
|
+
5. Provide constructive feedback
|
|
12
|
+
6. Suggest refactoring opportunities
|
|
13
|
+
|
|
14
|
+
## Review Checklist
|
|
15
|
+
- [ ] Does code follow architecture instructions?
|
|
16
|
+
- [ ] Does code follow style conventions?
|
|
17
|
+
- [ ] Are error cases handled properly?
|
|
18
|
+
- [ ] Is there adequate test coverage?
|
|
19
|
+
- [ ] Are there security concerns?
|
|
20
|
+
- [ ] Is the code efficient?
|
|
21
|
+
- [ ] Is the code maintainable?
|
|
22
|
+
|
|
23
|
+
## Feedback Format
|
|
24
|
+
- **Issue**: Description of the problem
|
|
25
|
+
- **Location**: File and line number
|
|
26
|
+
- **Severity**: Minor / Major / Critical
|
|
27
|
+
- **Suggestion**: How to fix it
|
|
28
|
+
- **Why**: Explanation of why this matters
|
|
29
|
+
|
|
30
|
+
## Major Issues (Blocker)
|
|
31
|
+
- Security vulnerabilities
|
|
32
|
+
- Breaking architecture rules
|
|
33
|
+
- Missing error handling
|
|
34
|
+
- Failing tests
|
|
35
|
+
|
|
36
|
+
## Minor Issues (Polish)
|
|
37
|
+
- Style violations
|
|
38
|
+
- Naming inconsistencies
|
|
39
|
+
- Missing documentation
|
|
40
|
+
- Performance improvements
|
|
41
|
+
|
|
42
|
+
`;
|
|
43
|
+
//# sourceMappingURL=codeReviewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeReviewer.js","sourceRoot":"","sources":["../../../src/templates/agents/codeReviewer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const taskPlannerTemplate = "# Task Planner Agent\n\n## Purpose\nBreaks down features into structured task files that other agents can execute.\n\n## Responsibilities\n1. Understand the feature request or requirement\n2. Break it down into logical, independent tasks\n3. Create task files with clear requirements\n4. Assign relevant instructions and agents\n5. Estimate effort and dependencies\n\n## Task Breakdown Process\n1. **Understand scope**: Read the full requirement\n2. **Identify dependencies**: What must be done first?\n3. **Create chunks**: Break into 2-4 hour work items\n4. **Assign agents**: Which agent should execute each task?\n5. **Link instructions**: Which guidelines apply?\n6. **Define acceptance criteria**: How do we know it's done?\n\n## Good Task Characteristics\n- **Single responsibility**: One clear goal\n- **Independent**: Can be done without waiting for others\n- **Clear requirements**: No ambiguity\n- **Effort**: 2-4 hours of work\n- **Testable**: Acceptance criteria are clear\n- **Estimable**: Team can estimate effort\n\n## Bad Task Characteristics\n- Too large (should be broken down further)\n- Blocked by other work\n- Unclear requirements\n- Missing acceptance criteria\n- Impossible to test\n\n## Task File Structure\nEach task file should include:\n- Task ID and description\n- Context about what this task accomplishes\n- Step-by-step instructions\n- Relevant instruction files to follow\n- Which agent should execute\n- Acceptance criteria\n- Estimated effort\n\n";
|
|
2
|
+
//# sourceMappingURL=taskPlanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskPlanner.d.ts","sourceRoot":"","sources":["../../../src/templates/agents/taskPlanner.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,+8CA6C/B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const taskPlannerTemplate = `# Task Planner Agent
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Breaks down features into structured task files that other agents can execute.
|
|
5
|
+
|
|
6
|
+
## Responsibilities
|
|
7
|
+
1. Understand the feature request or requirement
|
|
8
|
+
2. Break it down into logical, independent tasks
|
|
9
|
+
3. Create task files with clear requirements
|
|
10
|
+
4. Assign relevant instructions and agents
|
|
11
|
+
5. Estimate effort and dependencies
|
|
12
|
+
|
|
13
|
+
## Task Breakdown Process
|
|
14
|
+
1. **Understand scope**: Read the full requirement
|
|
15
|
+
2. **Identify dependencies**: What must be done first?
|
|
16
|
+
3. **Create chunks**: Break into 2-4 hour work items
|
|
17
|
+
4. **Assign agents**: Which agent should execute each task?
|
|
18
|
+
5. **Link instructions**: Which guidelines apply?
|
|
19
|
+
6. **Define acceptance criteria**: How do we know it's done?
|
|
20
|
+
|
|
21
|
+
## Good Task Characteristics
|
|
22
|
+
- **Single responsibility**: One clear goal
|
|
23
|
+
- **Independent**: Can be done without waiting for others
|
|
24
|
+
- **Clear requirements**: No ambiguity
|
|
25
|
+
- **Effort**: 2-4 hours of work
|
|
26
|
+
- **Testable**: Acceptance criteria are clear
|
|
27
|
+
- **Estimable**: Team can estimate effort
|
|
28
|
+
|
|
29
|
+
## Bad Task Characteristics
|
|
30
|
+
- Too large (should be broken down further)
|
|
31
|
+
- Blocked by other work
|
|
32
|
+
- Unclear requirements
|
|
33
|
+
- Missing acceptance criteria
|
|
34
|
+
- Impossible to test
|
|
35
|
+
|
|
36
|
+
## Task File Structure
|
|
37
|
+
Each task file should include:
|
|
38
|
+
- Task ID and description
|
|
39
|
+
- Context about what this task accomplishes
|
|
40
|
+
- Step-by-step instructions
|
|
41
|
+
- Relevant instruction files to follow
|
|
42
|
+
- Which agent should execute
|
|
43
|
+
- Acceptance criteria
|
|
44
|
+
- Estimated effort
|
|
45
|
+
|
|
46
|
+
`;
|
|
47
|
+
//# sourceMappingURL=taskPlanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskPlanner.js","sourceRoot":"","sources":["../../../src/templates/agents/taskPlanner.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ClC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProjectProfile } from '../utils/types.js';
|
|
2
|
+
export interface TemplateData {
|
|
3
|
+
projectProfile: ProjectProfile;
|
|
4
|
+
projectName: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function compileTemplate(template: string, data: TemplateData): string;
|
|
8
|
+
export declare function registerHelper(name: string, fn: (...args: unknown[]) => string): void;
|
|
9
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/templates/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAG5E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,CAErF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import Handlebars from 'handlebars';
|
|
2
|
+
export function compileTemplate(template, data) {
|
|
3
|
+
const compiled = Handlebars.compile(template);
|
|
4
|
+
return compiled(data);
|
|
5
|
+
}
|
|
6
|
+
export function registerHelper(name, fn) {
|
|
7
|
+
Handlebars.registerHelper(name, fn);
|
|
8
|
+
}
|
|
9
|
+
// Register default helpers
|
|
10
|
+
registerHelper('if-equals', (a, b, options) => {
|
|
11
|
+
return a === b ? options.fn({}) : options.inverse({});
|
|
12
|
+
});
|
|
13
|
+
registerHelper('if-includes', (arr, item, options) => {
|
|
14
|
+
return Array.isArray(arr) && arr.includes(item) ? options.fn({}) : options.inverse({});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/templates/engine.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AASpC,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAkB;IAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,EAAkC;IAC7E,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,2BAA2B;AAC3B,cAAc,CAAC,WAAW,EAAE,CAAC,CAAU,EAAE,CAAU,EAAE,OAAY,EAAU,EAAE;IAC3E,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,aAAa,EAAE,CAAC,GAAY,EAAE,IAAa,EAAE,OAAY,EAAU,EAAE;IAClF,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAK,GAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const taskTemplate = "# {{taskId}}: {{description}}\n\n## Context\n<!-- What this task is about and why it's important -->\n\n## References\n{{#each instructions}}\n- [{{this}}.instructions.md](../instructions/{{this}}.instructions.md)\n{{/each}}\n- [{{agent}}.agent.md](../agents/{{agent}}.agent.md)\n\n## Steps\n{{#each steps}}\n{{ @index }. [ ] {{this}}\n{{/each}}\n\n## Acceptance Criteria\n{{#each acceptanceCriteria}}\n- [ ] {{this}}\n{{/each}}\n\n## Status\n- [ ] In progress\n- [ ] Human review\n- [ ] Done\n\n## Notes\n<!-- Add any notes, decisions, or context here -->\n\n";
|
|
2
|
+
export declare const skillTemplate = "# {{skillName}}\n\n## Purpose\n<!-- What this skill does and when to use it -->\n\n## Usage\n```\nHow to invoke or use this skill\n```\n\n## Details\n<!-- Detailed information about this skill -->\n\n## Examples\n<!-- Practical examples of using this skill -->\n\n## Related Skills\n<!-- Links to related skills -->\n\n";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/files/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,qjBA6BxB,CAAC;AAEF,eAAO,MAAM,aAAa,oUAmBzB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export const taskTemplate = `# {{taskId}}: {{description}}
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
<!-- What this task is about and why it's important -->
|
|
5
|
+
|
|
6
|
+
## References
|
|
7
|
+
{{#each instructions}}
|
|
8
|
+
- [{{this}}.instructions.md](../instructions/{{this}}.instructions.md)
|
|
9
|
+
{{/each}}
|
|
10
|
+
- [{{agent}}.agent.md](../agents/{{agent}}.agent.md)
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
{{#each steps}}
|
|
14
|
+
{{ @index }. [ ] {{this}}
|
|
15
|
+
{{/each}}
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
{{#each acceptanceCriteria}}
|
|
19
|
+
- [ ] {{this}}
|
|
20
|
+
{{/each}}
|
|
21
|
+
|
|
22
|
+
## Status
|
|
23
|
+
- [ ] In progress
|
|
24
|
+
- [ ] Human review
|
|
25
|
+
- [ ] Done
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
<!-- Add any notes, decisions, or context here -->
|
|
29
|
+
|
|
30
|
+
`;
|
|
31
|
+
export const skillTemplate = `# {{skillName}}
|
|
32
|
+
|
|
33
|
+
## Purpose
|
|
34
|
+
<!-- What this skill does and when to use it -->
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
\`\`\`
|
|
38
|
+
How to invoke or use this skill
|
|
39
|
+
\`\`\`
|
|
40
|
+
|
|
41
|
+
## Details
|
|
42
|
+
<!-- Detailed information about this skill -->
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
<!-- Practical examples of using this skill -->
|
|
46
|
+
|
|
47
|
+
## Related Skills
|
|
48
|
+
<!-- Links to related skills -->
|
|
49
|
+
|
|
50
|
+
`;
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/files/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;CAmB5B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const architectureTemplate = "# Architecture Instructions\n\n## Project Type\n{{#if-includes projectProfile.language 'typescript'}}\nThis is a {{projectProfile.framework}} project written in TypeScript.\n{{else}}\nThis is a {{projectProfile.framework}} project written in {{projectProfile.language}}.\n{{/if-includes}}\n\n## Language Standards\n{{#if-includes projectProfile.language 'typescript'}}\n- **Language**: TypeScript\n- **Strict Mode**: Enabled\n- **No `any` types**: Unless explicitly justified with a comment\n- **Type Safety**: All public APIs must be fully typed\n{{else if-includes projectProfile.language 'javascript'}}\n- **Language**: JavaScript (Modern ES2020+)\n- **JSDoc**: Use for documenting complex functions\n{{else if-includes projectProfile.language 'python'}}\n- **Language**: Python 3.8+\n- **Type Hints**: Required for all functions and class methods\n- **Docstrings**: Use Google-style docstrings\n{{/if-includes}}\n\n## Project Structure\n<!-- Describe your project's folder structure and conventions -->\n\n```\n{{projectName}}/\n\u251C\u2500\u2500 src/\n\u251C\u2500\u2500 tests/\n\u251C\u2500\u2500 docs/\n\u2514\u2500\u2500 README.md\n```\n\n## Module Organization\n- **Single Responsibility**: Each module has one clear purpose\n- **Clear dependencies**: No circular dependencies\n- **Exports**: Only export what's meant to be public\n\n## Conventions\n<!-- Document any custom conventions for this project -->\n\n## Code Patterns\n- **Error Handling**: [Describe your error handling strategy]\n- **Logging**: [Describe logging conventions]\n- **Configuration**: [Describe how configuration is managed]\n\n";
|
|
2
|
+
//# sourceMappingURL=architecture.d.ts.map
|