@antomanc/aginit 0.4.0 → 0.5.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/CHANGELOG.md +37 -0
- package/README.md +108 -28
- package/THIRD_PARTY_NOTICES.md +92 -16
- package/dist/adapters/agent-docs.d.ts +32 -0
- package/dist/adapters/agent-docs.d.ts.map +1 -0
- package/dist/adapters/agent-docs.js +146 -0
- package/dist/adapters/agent-docs.js.map +1 -0
- package/dist/adapters/agents-md.d.ts +13 -1
- package/dist/adapters/agents-md.d.ts.map +1 -1
- package/dist/adapters/agents-md.js +137 -120
- package/dist/adapters/agents-md.js.map +1 -1
- package/dist/adapters/e2e.d.ts +15 -0
- package/dist/adapters/e2e.d.ts.map +1 -0
- package/dist/adapters/e2e.js +55 -0
- package/dist/adapters/e2e.js.map +1 -0
- package/dist/adapters/skills.d.ts +5 -0
- package/dist/adapters/skills.d.ts.map +1 -1
- package/dist/adapters/skills.js +17 -0
- package/dist/adapters/skills.js.map +1 -1
- package/dist/adapters/tool-ignores.d.ts +9 -0
- package/dist/adapters/tool-ignores.d.ts.map +1 -0
- package/dist/adapters/tool-ignores.js +121 -0
- package/dist/adapters/tool-ignores.js.map +1 -0
- package/dist/cli/capabilities.d.ts +17 -0
- package/dist/cli/capabilities.d.ts.map +1 -0
- package/dist/cli/capabilities.js +149 -0
- package/dist/cli/capabilities.js.map +1 -0
- package/dist/cli/doctor.d.ts +16 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +104 -70
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/init.js +1 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +123 -20
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/new.d.ts +15 -1
- package/dist/cli/new.d.ts.map +1 -1
- package/dist/cli/new.js +163 -67
- package/dist/cli/new.js.map +1 -1
- package/dist/cli/wizard.d.ts +5 -0
- package/dist/cli/wizard.d.ts.map +1 -1
- package/dist/cli/wizard.js +104 -102
- package/dist/cli/wizard.js.map +1 -1
- package/dist/config/defaults.d.ts +14 -6
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +38 -174
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +14 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/validation.d.ts +1 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +63 -0
- package/dist/config/validation.js.map +1 -1
- package/dist/detect/index.d.ts +18 -0
- package/dist/detect/index.d.ts.map +1 -0
- package/dist/detect/index.js +120 -0
- package/dist/detect/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/presets/cli.d.ts.map +1 -1
- package/dist/presets/cli.js +7 -0
- package/dist/presets/cli.js.map +1 -1
- package/dist/presets/generic.d.ts.map +1 -1
- package/dist/presets/generic.js +4 -1
- package/dist/presets/generic.js.map +1 -1
- package/dist/presets/testing.d.ts +1 -1
- package/dist/presets/testing.d.ts.map +1 -1
- package/dist/presets/testing.js +22 -8
- package/dist/presets/testing.js.map +1 -1
- package/dist/presets/web.d.ts.map +1 -1
- package/dist/presets/web.js +39 -5
- package/dist/presets/web.js.map +1 -1
- package/dist/registry/catalog.d.ts +13 -0
- package/dist/registry/catalog.d.ts.map +1 -0
- package/dist/registry/catalog.js +544 -0
- package/dist/registry/catalog.js.map +1 -0
- package/dist/registry/index.d.ts +84 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +309 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/setup.d.ts +14 -0
- package/dist/registry/setup.d.ts.map +1 -0
- package/dist/registry/setup.js +25 -0
- package/dist/registry/setup.js.map +1 -0
- package/dist/registry/types.d.ts +115 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +2 -0
- package/dist/registry/types.js.map +1 -0
- package/package.json +3 -2
- package/src/adapters/agent-docs.ts +184 -0
- package/src/adapters/agents-md.ts +160 -137
- package/src/adapters/e2e.ts +58 -0
- package/src/adapters/skills.ts +18 -0
- package/src/adapters/tool-ignores.ts +158 -0
- package/src/cli/capabilities.ts +176 -0
- package/src/cli/doctor.ts +100 -66
- package/src/cli/init.ts +1 -1
- package/src/cli/main.ts +130 -20
- package/src/cli/new.ts +199 -73
- package/src/cli/wizard.ts +130 -103
- package/src/config/defaults.ts +57 -179
- package/src/config/schema.ts +15 -0
- package/src/config/validation.ts +56 -0
- package/src/detect/index.ts +134 -0
- package/src/index.ts +5 -0
- package/src/presets/cli.ts +6 -0
- package/src/presets/generic.ts +4 -1
- package/src/presets/testing.ts +29 -12
- package/src/presets/web.ts +39 -5
- package/src/registry/catalog.ts +569 -0
- package/src/registry/index.ts +395 -0
- package/src/registry/setup.ts +40 -0
- package/src/registry/types.ts +109 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB;;;WAGG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN;;;;WAIG;QACH,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,EAAE,EAAE,OAAO,CAAC;KACb,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB;;;WAGG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN;;;;WAIG;QACH,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;QAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,EAAE;QACJ,GAAG,EAAE,OAAO,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,EAAE,EAAE,OAAO,CAAC;KACb,CAAC;IACF,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iFAAiF;IACjF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC9C,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAGD,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC;AAE3C,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,kBAAkB,uBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAkEA,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AACvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { AginitConfig } from './schema.js';
|
|
|
2
2
|
export declare const PRESETS: readonly ['web', 'cli', 'generic'];
|
|
3
3
|
export declare const FRAMEWORKS: readonly ['none', 'vite', 'next', 'existing'];
|
|
4
4
|
export declare const SUPPORTED_PACKAGE_MANAGERS: readonly ['pnpm', 'npm', 'yarn', 'bun'];
|
|
5
|
+
export declare const STACKS: readonly ['node', 'react-native', 'flutter', 'swift', 'kotlin', 'rust', 'python', 'go', 'unknown'];
|
|
5
6
|
export declare function isRecord(value: unknown): value is Record<string, any>;
|
|
6
7
|
export declare function validateProjectName(name: string): void;
|
|
7
8
|
export declare function validateUpstreamArgument(value: unknown, label: string): asserts value is string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkD,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkD,MAAM,aAAa,CAAC;AAI3F,eAAO,MAAM,OAAO,YAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;AAC1D,eAAO,MAAM,UAAU,YAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAU,CAAC;AACxE,eAAO,MAAM,0BAA0B,YAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAClF,eAAO,MAAM,MAAM,YACjB,MAAM,EACN,cAAc,EACd,SAAS,EACT,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,SAAS,CACD,CAAC;AAWX,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAErE;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMtD;AACD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAW/F;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAuE3D;AACD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAYlE;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgB3E"}
|
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { fileExists, readJsonFile } from '../utils/fs.js';
|
|
3
3
|
import { AGINIT_CONFIG_FILENAME, LEGACY_CONFIG_FILENAME } from './schema.js';
|
|
4
|
+
import { CATALOG } from '../registry/catalog.js';
|
|
5
|
+
import { PLATFORMS } from '../registry/index.js';
|
|
4
6
|
export const PRESETS = ['web', 'cli', 'generic'];
|
|
5
7
|
export const FRAMEWORKS = ['none', 'vite', 'next', 'existing'];
|
|
6
8
|
export const SUPPORTED_PACKAGE_MANAGERS = ['pnpm', 'npm', 'yarn', 'bun'];
|
|
9
|
+
export const STACKS = [
|
|
10
|
+
'node',
|
|
11
|
+
'react-native',
|
|
12
|
+
'flutter',
|
|
13
|
+
'swift',
|
|
14
|
+
'kotlin',
|
|
15
|
+
'rust',
|
|
16
|
+
'python',
|
|
17
|
+
'go',
|
|
18
|
+
'unknown'
|
|
19
|
+
];
|
|
20
|
+
const CATEGORIES = [
|
|
21
|
+
'methodology',
|
|
22
|
+
'discipline',
|
|
23
|
+
'design',
|
|
24
|
+
'codebase-graph',
|
|
25
|
+
'ui-driver',
|
|
26
|
+
'testing-engine',
|
|
27
|
+
'context-guard',
|
|
28
|
+
'custom'
|
|
29
|
+
];
|
|
7
30
|
export function isRecord(value) {
|
|
8
31
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
9
32
|
}
|
|
@@ -54,6 +77,46 @@ export function validateConfig(value) {
|
|
|
54
77
|
for (const skill of source.skills)
|
|
55
78
|
validateUpstreamArgument(skill, 'skill name');
|
|
56
79
|
}
|
|
80
|
+
if (value.platform !== undefined && !PLATFORMS.includes(value.platform))
|
|
81
|
+
fail('platform');
|
|
82
|
+
if (value.stack !== undefined && !STACKS.includes(value.stack))
|
|
83
|
+
fail('stack');
|
|
84
|
+
for (const key of ['capabilities', 'disabledCapabilities']) {
|
|
85
|
+
if (value[key] === undefined)
|
|
86
|
+
continue;
|
|
87
|
+
if (!Array.isArray(value[key]))
|
|
88
|
+
fail(key);
|
|
89
|
+
for (const id of value[key])
|
|
90
|
+
validateUpstreamArgument(id, `${key} entry`);
|
|
91
|
+
}
|
|
92
|
+
if (value.customCapabilities !== undefined) {
|
|
93
|
+
if (!Array.isArray(value.customCapabilities))
|
|
94
|
+
fail('customCapabilities');
|
|
95
|
+
const seen = new Set();
|
|
96
|
+
for (const custom of value.customCapabilities) {
|
|
97
|
+
if (!isRecord(custom))
|
|
98
|
+
fail('customCapabilities entry');
|
|
99
|
+
validateUpstreamArgument(custom.id, 'custom capability id');
|
|
100
|
+
if (seen.has(custom.id) || CATALOG.some((entry) => entry.id === custom.id))
|
|
101
|
+
fail(`customCapabilities: duplicate id "${custom.id}"`);
|
|
102
|
+
seen.add(custom.id);
|
|
103
|
+
if (typeof custom.repo !== 'string' || !/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(custom.repo))
|
|
104
|
+
fail(`customCapabilities.${custom.id}.repo (expected owner/repo)`);
|
|
105
|
+
if (custom.skills !== undefined) {
|
|
106
|
+
if (!Array.isArray(custom.skills))
|
|
107
|
+
fail(`customCapabilities.${custom.id}.skills`);
|
|
108
|
+
for (const skill of custom.skills)
|
|
109
|
+
validateUpstreamArgument(skill, 'skill name');
|
|
110
|
+
}
|
|
111
|
+
if (custom.category !== undefined && !CATEGORIES.includes(custom.category))
|
|
112
|
+
fail(`customCapabilities.${custom.id}.category`);
|
|
113
|
+
if (custom.binary !== undefined &&
|
|
114
|
+
(!isRecord(custom.binary) ||
|
|
115
|
+
typeof custom.binary.install !== 'string' ||
|
|
116
|
+
!/^[a-zA-Z0-9._-]+$/.test(String(custom.binary.bin))))
|
|
117
|
+
fail(`customCapabilities.${custom.id}.binary`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
57
120
|
for (const [section, keys] of Object.entries({
|
|
58
121
|
codebase: ['graft'],
|
|
59
122
|
browser: ['visualAgent', 'playwright'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAgB,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PackageManager } from '../config/schema.js';
|
|
2
|
+
import { Platform, ProjectCommands, Stack } from '../registry/types.js';
|
|
3
|
+
export interface DetectedProject {
|
|
4
|
+
/** null when nothing marks the platform (empty directory). */
|
|
5
|
+
platform: Platform | null;
|
|
6
|
+
stack: Stack;
|
|
7
|
+
}
|
|
8
|
+
/** Read the project's markers (pubspec.yaml, Package.swift, gradle, package.json, ...). */
|
|
9
|
+
export declare function detectProject(dir: string): DetectedProject;
|
|
10
|
+
/**
|
|
11
|
+
* The project's own commands: package scripts for Node projects, the host
|
|
12
|
+
* toolchain otherwise. Commands that would be guesses are left out.
|
|
13
|
+
*/
|
|
14
|
+
export declare function projectCommands(dir: string, stack: Stack, options?: {
|
|
15
|
+
packageManager?: PackageManager;
|
|
16
|
+
scripts?: Record<string, string>;
|
|
17
|
+
}): ProjectCommands;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;CACd;AAkCD,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CA4B1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAClF,eAAe,CAiDjB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { readJsonFile, readTextFile } from '../utils/fs.js';
|
|
4
|
+
import { getPackageManagerAdapter } from '../adapters/package-manager.js';
|
|
5
|
+
const WEB_FRAMEWORKS = [
|
|
6
|
+
'next',
|
|
7
|
+
'vite',
|
|
8
|
+
'astro',
|
|
9
|
+
'react',
|
|
10
|
+
'react-dom',
|
|
11
|
+
'vue',
|
|
12
|
+
'nuxt',
|
|
13
|
+
'svelte',
|
|
14
|
+
'@sveltejs/kit',
|
|
15
|
+
'@angular/core',
|
|
16
|
+
'solid-js',
|
|
17
|
+
'@remix-run/react',
|
|
18
|
+
'preact'
|
|
19
|
+
];
|
|
20
|
+
function entries(dir) {
|
|
21
|
+
try {
|
|
22
|
+
return fs.readdirSync(dir);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const hasXcodeProject = (dir) => entries(dir).some((name) => name.endsWith('.xcodeproj'));
|
|
29
|
+
function gradleFiles(dir) {
|
|
30
|
+
return ['build.gradle', 'build.gradle.kts', 'settings.gradle', 'settings.gradle.kts']
|
|
31
|
+
.map((name) => readTextFile(path.join(dir, name)))
|
|
32
|
+
.filter((text) => text !== null);
|
|
33
|
+
}
|
|
34
|
+
/** Read the project's markers (pubspec.yaml, Package.swift, gradle, package.json, ...). */
|
|
35
|
+
export function detectProject(dir) {
|
|
36
|
+
const exists = (file) => fs.existsSync(path.join(dir, file));
|
|
37
|
+
const pkg = readJsonFile(path.join(dir, 'package.json'));
|
|
38
|
+
const deps = { ...pkg?.dependencies, ...pkg?.devDependencies };
|
|
39
|
+
if (exists('pubspec.yaml'))
|
|
40
|
+
return { platform: 'mobile-native', stack: 'flutter' };
|
|
41
|
+
const expoApp = /"expo"\s*:/.test(readTextFile(path.join(dir, 'app.json')) ?? '');
|
|
42
|
+
if (deps['react-native'] || deps.expo || expoApp)
|
|
43
|
+
return { platform: 'mobile-rn', stack: 'react-native' };
|
|
44
|
+
if (exists('Package.swift') || hasXcodeProject(dir) || hasXcodeProject(path.join(dir, 'ios'))) {
|
|
45
|
+
const manifest = readTextFile(path.join(dir, 'Package.swift')) ?? '';
|
|
46
|
+
const apple = !exists('Package.swift') || /\.(iOS|macOS|tvOS|watchOS|visionOS)\(/.test(manifest);
|
|
47
|
+
return { platform: apple ? 'mobile-native' : 'cli', stack: 'swift' };
|
|
48
|
+
}
|
|
49
|
+
const androidGradle = gradleFiles(path.join(dir, 'android'));
|
|
50
|
+
const rootGradle = gradleFiles(dir);
|
|
51
|
+
if (androidGradle.length > 0 || rootGradle.some((text) => /com\.android|android\s*\{/.test(text)))
|
|
52
|
+
return { platform: 'mobile-native', stack: 'kotlin' };
|
|
53
|
+
if (pkg) {
|
|
54
|
+
const web = WEB_FRAMEWORKS.some((name) => deps[name]);
|
|
55
|
+
return { platform: web ? 'web' : 'cli', stack: 'node' };
|
|
56
|
+
}
|
|
57
|
+
if (rootGradle.length > 0)
|
|
58
|
+
return { platform: 'backend', stack: 'kotlin' };
|
|
59
|
+
if (exists('Cargo.toml'))
|
|
60
|
+
return { platform: 'cli', stack: 'rust' };
|
|
61
|
+
if (exists('go.mod'))
|
|
62
|
+
return { platform: 'backend', stack: 'go' };
|
|
63
|
+
if (exists('pyproject.toml') || exists('requirements.txt'))
|
|
64
|
+
return { platform: 'backend', stack: 'python' };
|
|
65
|
+
return { platform: null, stack: 'unknown' };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The project's own commands: package scripts for Node projects, the host
|
|
69
|
+
* toolchain otherwise. Commands that would be guesses are left out.
|
|
70
|
+
*/
|
|
71
|
+
export function projectCommands(dir, stack, options = {}) {
|
|
72
|
+
const exists = (file) => fs.existsSync(path.join(dir, file));
|
|
73
|
+
switch (stack) {
|
|
74
|
+
case 'node':
|
|
75
|
+
case 'react-native': {
|
|
76
|
+
const scripts = options.scripts ??
|
|
77
|
+
readJsonFile(path.join(dir, 'package.json'))?.scripts ??
|
|
78
|
+
{};
|
|
79
|
+
const pm = getPackageManagerAdapter(options.packageManager);
|
|
80
|
+
const run = (name) => (Object.hasOwn(scripts, name) ? pm.runCmd(name) : undefined);
|
|
81
|
+
return {
|
|
82
|
+
dev: run('dev'),
|
|
83
|
+
build: run('build'),
|
|
84
|
+
typecheck: run('typecheck'),
|
|
85
|
+
lint: run('lint'),
|
|
86
|
+
test: run('test'),
|
|
87
|
+
unitTest: run('test:unit'),
|
|
88
|
+
e2e: run('test:e2e')
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
case 'flutter':
|
|
92
|
+
return { lint: 'flutter analyze', test: 'flutter test' };
|
|
93
|
+
case 'swift':
|
|
94
|
+
return exists('Package.swift')
|
|
95
|
+
? { build: 'swift build', test: 'swift test' }
|
|
96
|
+
: {
|
|
97
|
+
build: 'xcodebuild build -scheme <Scheme>',
|
|
98
|
+
test: "xcodebuild test -scheme <Scheme> -destination 'platform=iOS Simulator,name=<Device>'"
|
|
99
|
+
};
|
|
100
|
+
case 'kotlin': {
|
|
101
|
+
const nested = fs.existsSync(path.join(dir, 'android'));
|
|
102
|
+
const android = nested || gradleFiles(dir).some((text) => /com\.android|android\s*\{/.test(text));
|
|
103
|
+
const gradlew = nested ? 'cd android && ./gradlew' : './gradlew';
|
|
104
|
+
return {
|
|
105
|
+
build: `${gradlew} build`,
|
|
106
|
+
...(android ? { lint: `${gradlew} lint` } : {}),
|
|
107
|
+
test: `${gradlew} test`
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
case 'rust':
|
|
111
|
+
return { build: 'cargo build', typecheck: 'cargo check', lint: 'cargo clippy', test: 'cargo test' };
|
|
112
|
+
case 'go':
|
|
113
|
+
return { build: 'go build ./...', lint: 'go vet ./...', test: 'go test ./...' };
|
|
114
|
+
case 'python':
|
|
115
|
+
return { test: exists('uv.lock') ? 'uv run pytest' : 'pytest' };
|
|
116
|
+
case 'unknown':
|
|
117
|
+
return {};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,4 +14,9 @@ export * from './cli/new.js';
|
|
|
14
14
|
export * from './cli/init.js';
|
|
15
15
|
export * from './cli/doctor.js';
|
|
16
16
|
export * from './cli/wizard.js';
|
|
17
|
+
export * from './registry/index.js';
|
|
18
|
+
export * from './detect/index.js';
|
|
19
|
+
export * from './adapters/agent-docs.js';
|
|
20
|
+
export * from './adapters/e2e.js';
|
|
21
|
+
export * from './cli/capabilities.js';
|
|
17
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,4 +14,9 @@ export * from './cli/new.js';
|
|
|
14
14
|
export * from './cli/init.js';
|
|
15
15
|
export * from './cli/doctor.js';
|
|
16
16
|
export * from './cli/wizard.js';
|
|
17
|
+
export * from './registry/index.js';
|
|
18
|
+
export * from './detect/index.js';
|
|
19
|
+
export * from './adapters/agent-docs.js';
|
|
20
|
+
export * from './adapters/e2e.js';
|
|
21
|
+
export * from './cli/capabilities.js';
|
|
17
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/presets/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/presets/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AAM1D,eAAO,MAAM,SAAS,EAAE,aAqIvB,CAAC"}
|
package/dist/presets/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { fileExists, safeWriteFile, writeJsonFile } from '../utils/fs.js';
|
|
|
3
3
|
import { readPackageManifest } from '../config/validation.js';
|
|
4
4
|
import { addTestingDependencies, setupTesting, VITEST_VERSION } from './testing.js';
|
|
5
5
|
import { setupAdr } from './adr.js';
|
|
6
|
+
import { activeIds } from '../registry/index.js';
|
|
6
7
|
export const cliPreset = {
|
|
7
8
|
name: 'cli',
|
|
8
9
|
description: 'AI-first TypeScript CLI application with Commander, Picocolors, and Vitest',
|
|
@@ -11,6 +12,12 @@ export const cliPreset = {
|
|
|
11
12
|
const pm = ctx.config.packageManager || 'pnpm';
|
|
12
13
|
const existing = readPackageManifest(targetDir);
|
|
13
14
|
if (existing) {
|
|
15
|
+
// An existing project keeps its own runner unless Vitest is a selected capability.
|
|
16
|
+
if (!activeIds(ctx.config).has('vitest')) {
|
|
17
|
+
if (ctx.config.docs.adr)
|
|
18
|
+
setupAdr(targetDir, { dryRun, silent });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
14
21
|
const hadVitestScript = Object.values(existing.scripts || {}).some((script) => typeof script === 'string' && /^vitest(?:\s|$)/.test(script));
|
|
15
22
|
addTestingDependencies(existing);
|
|
16
23
|
writeJsonFile(path.join(targetDir, 'package.json'), existing, {
|
package/dist/presets/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/presets/cli.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/presets/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../src/presets/generic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../src/presets/generic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AAK1D,eAAO,MAAM,aAAa,EAAE,aA2B3B,CAAC"}
|
package/dist/presets/generic.js
CHANGED
|
@@ -2,13 +2,16 @@ import path from 'node:path';
|
|
|
2
2
|
import { fileExists, writeJsonFile } from '../utils/fs.js';
|
|
3
3
|
import { addTestingDependencies, setupTesting } from './testing.js';
|
|
4
4
|
import { setupAdr } from './adr.js';
|
|
5
|
+
import { activeIds } from '../registry/index.js';
|
|
5
6
|
export const genericPreset = {
|
|
6
7
|
name: 'generic',
|
|
7
8
|
description: 'Minimal, unopinionated project skeleton with AI skills, Git, and ADR structure',
|
|
8
9
|
async scaffold(ctx) {
|
|
9
10
|
const { targetDir, projectName, dryRun, silent } = ctx;
|
|
11
|
+
// Only a Vitest harness needs a root package.json; Flutter, Swift, Kotlin,
|
|
12
|
+
// Rust, Go and Python projects stay free of Node files.
|
|
10
13
|
const pkgPath = path.join(targetDir, 'package.json');
|
|
11
|
-
if (!fileExists(pkgPath)) {
|
|
14
|
+
if (!fileExists(pkgPath) && activeIds(ctx.config).has('vitest')) {
|
|
12
15
|
const pkg = {
|
|
13
16
|
name: projectName,
|
|
14
17
|
version: '0.1.0',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../src/presets/generic.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../src/presets/generic.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,gFAAgF;IAC7F,KAAK,CAAC,QAAQ,CAAC,GAAkB;QAC/B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAEvD,2EAA2E;QAC3E,wDAAwD;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG;gBACV,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE;oBACP,IAAI,EAAE,YAAY;iBACnB;aACF,CAAC;YACF,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAC5B,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,YAAY,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACxB,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PresetContext } from './types.js';
|
|
2
2
|
export declare const VITEST_VERSION = "^4.1.11";
|
|
3
|
-
export declare function addTestingDependencies(pkg: Record<string, any>, playwright?: boolean): void;
|
|
3
|
+
export declare function addTestingDependencies(pkg: Record<string, any>, playwright?: boolean, vitest?: boolean): void;
|
|
4
4
|
/** A starter harness checks package metadata without assuming application exports. */
|
|
5
5
|
export declare function setupTesting(ctx: PresetContext, preserveViteTestConfig?: boolean): void;
|
|
6
6
|
//# sourceMappingURL=testing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/presets/testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../src/presets/testing.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,UAAU,UAAQ,EAClB,MAAM,UAAO,GACZ,IAAI,CAgBN;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,sBAAsB,UAAQ,GAAG,IAAI,CA2CrF"}
|
package/dist/presets/testing.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import { safeWriteFile, fileExists } from '../utils/fs.js';
|
|
3
4
|
export const VITEST_VERSION = '^4.1.11';
|
|
4
|
-
export function addTestingDependencies(pkg, playwright = false) {
|
|
5
|
+
export function addTestingDependencies(pkg, playwright = false, vitest = true) {
|
|
5
6
|
pkg.scripts ??= {};
|
|
6
7
|
pkg.devDependencies ??= {};
|
|
7
|
-
if (
|
|
8
|
-
pkg.devDependencies.vitest
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
if (vitest) {
|
|
9
|
+
if (!pkg.dependencies?.vitest && !pkg.devDependencies.vitest)
|
|
10
|
+
pkg.devDependencies.vitest = VITEST_VERSION;
|
|
11
|
+
const customTest = pkg.scripts.test && !/^vitest(?:\s|$)/.test(pkg.scripts.test);
|
|
12
|
+
const testScript = customTest ? 'test:unit' : 'test';
|
|
13
|
+
pkg.scripts[testScript] ??= 'vitest run';
|
|
14
|
+
pkg.scripts[customTest ? 'test:unit:watch' : 'test:watch'] ??= 'vitest';
|
|
15
|
+
}
|
|
13
16
|
if (playwright) {
|
|
14
17
|
pkg.scripts['test:e2e'] ??= 'playwright test';
|
|
15
18
|
if (!pkg.dependencies?.['@playwright/test'] && !pkg.devDependencies['@playwright/test'])
|
|
@@ -32,7 +35,18 @@ export function setupTesting(ctx, preserveViteTestConfig = false) {
|
|
|
32
35
|
].some((name) => fileExists(path.join(targetDir, name)));
|
|
33
36
|
if (!hasConfig)
|
|
34
37
|
safeWriteFile(path.join(targetDir, 'vitest.config.mts'), `import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n test: { include: ['tests/**/*.test.{js,ts}'] }\n});\n`, { dryRun, silent });
|
|
35
|
-
|
|
38
|
+
// A project that already has tests needs no placeholder.
|
|
39
|
+
let hasTests = false;
|
|
40
|
+
try {
|
|
41
|
+
hasTests = fs
|
|
42
|
+
.readdirSync(path.join(targetDir, 'tests'))
|
|
43
|
+
.some((name) => /\.(test|spec)\.[cm]?[jt]sx?$/.test(name) && name !== 'aginit.test.js');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// no tests/ directory yet
|
|
47
|
+
}
|
|
48
|
+
if (!hasTests)
|
|
49
|
+
safeWriteFile(path.join(targetDir, 'tests', 'aginit.test.js'), `import { it, expect } from 'vitest';
|
|
36
50
|
import { readFileSync } from 'node:fs';
|
|
37
51
|
|
|
38
52
|
// Starter harness: add application behavior tests as the project takes shape.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/presets/testing.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG3D,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,UAAU,sBAAsB,
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/presets/testing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/presets/web.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/presets/web.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AAmC1D,eAAO,MAAM,SAAS,EAAE,aA6FvB,CAAC"}
|
package/dist/presets/web.js
CHANGED
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { fileExists, safeWriteFile, writeJsonFile } from '../utils/fs.js';
|
|
2
|
+
import { fileExists, readTextFile, safeWriteFile, writeJsonFile } from '../utils/fs.js';
|
|
3
3
|
import { readPackageManifest } from '../config/validation.js';
|
|
4
4
|
import { runExecutable } from '../utils/shell.js';
|
|
5
5
|
import { setupBrowserTesting } from '../adapters/browser.js';
|
|
6
6
|
import { setupAdr } from './adr.js';
|
|
7
7
|
import { scaffoldCommand } from '../adapters/package-manager.js';
|
|
8
8
|
import { addTestingDependencies, setupTesting } from './testing.js';
|
|
9
|
+
import { activeIds } from '../registry/index.js';
|
|
10
|
+
/** Plain tsc cannot resolve framework virtual modules or single-file components,
|
|
11
|
+
* so those frameworks get their own checker (and the package that provides it). */
|
|
12
|
+
function typecheckFor(pkg, targetDir, freshNext) {
|
|
13
|
+
const has = (name) => Boolean(pkg.dependencies?.[name] || pkg.devDependencies?.[name]);
|
|
14
|
+
if (freshNext)
|
|
15
|
+
return { script: 'next typegen && tsc --noEmit' };
|
|
16
|
+
if (has('astro'))
|
|
17
|
+
return { script: 'astro check', checker: ['@astrojs/check', '^0.9.10'] };
|
|
18
|
+
if (has('nuxt'))
|
|
19
|
+
return { script: 'nuxi typecheck', checker: ['vue-tsc', '^3.3.13'] };
|
|
20
|
+
if (has('@sveltejs/kit'))
|
|
21
|
+
return {
|
|
22
|
+
script: 'svelte-kit sync && svelte-check --tsconfig ./tsconfig.json',
|
|
23
|
+
checker: ['svelte-check', '^4.7.6']
|
|
24
|
+
};
|
|
25
|
+
if (has('svelte'))
|
|
26
|
+
return { script: 'svelte-check', checker: ['svelte-check', '^4.7.6'] };
|
|
27
|
+
// A solution-style tsconfig (Vite templates) has no files of its own: only build mode checks
|
|
28
|
+
// the referenced projects.
|
|
29
|
+
const build = /"references"\s*:/.test(readTextFile(path.join(targetDir, 'tsconfig.json')) || '');
|
|
30
|
+
if (has('vue'))
|
|
31
|
+
return {
|
|
32
|
+
script: build ? 'vue-tsc -b --noEmit' : 'vue-tsc --noEmit',
|
|
33
|
+
checker: ['vue-tsc', '^3.3.13']
|
|
34
|
+
};
|
|
35
|
+
return { script: build ? 'tsc -b --noEmit' : 'tsc --noEmit' };
|
|
36
|
+
}
|
|
9
37
|
export const webPreset = {
|
|
10
38
|
name: 'web',
|
|
11
39
|
description: 'Framework-agnostic web project with upstream scaffolding, Vitest and optional Playwright',
|
|
@@ -47,10 +75,15 @@ export const webPreset = {
|
|
|
47
75
|
};
|
|
48
76
|
}
|
|
49
77
|
const hadVitestScript = Object.values(pkg.scripts || {}).some((script) => typeof script === 'string' && /^vitest(?:\s|$)/.test(script));
|
|
50
|
-
|
|
78
|
+
const vitest = activeIds(config).has('vitest');
|
|
79
|
+
addTestingDependencies(pkg, config.browser.playwright, vitest);
|
|
51
80
|
if (fileExists(path.join(targetDir, 'tsconfig.json'))) {
|
|
52
|
-
pkg.scripts.typecheck
|
|
53
|
-
|
|
81
|
+
if (pkg.scripts.typecheck === undefined) {
|
|
82
|
+
const { script, checker } = typecheckFor(pkg, targetDir, fresh && framework === 'next');
|
|
83
|
+
pkg.scripts.typecheck = script;
|
|
84
|
+
if (checker && !pkg.dependencies?.[checker[0]] && !pkg.devDependencies[checker[0]])
|
|
85
|
+
pkg.devDependencies[checker[0]] = checker[1];
|
|
86
|
+
}
|
|
54
87
|
if (!pkg.dependencies?.typescript && !pkg.devDependencies.typescript)
|
|
55
88
|
pkg.devDependencies.typescript = '^5.6.3';
|
|
56
89
|
}
|
|
@@ -74,7 +107,8 @@ export const webPreset = {
|
|
|
74
107
|
writeJsonFile(pkgPath, pkg, { overwrite: true, dryRun, silent });
|
|
75
108
|
if (pm === 'pnpm')
|
|
76
109
|
safeWriteFile(path.join(targetDir, 'pnpm-workspace.yaml'), 'allowBuilds:\n esbuild: true\n', { dryRun, silent });
|
|
77
|
-
|
|
110
|
+
if (vitest)
|
|
111
|
+
setupTesting(ctx, hadVitestScript);
|
|
78
112
|
if (config.browser.playwright)
|
|
79
113
|
setupBrowserTesting(targetDir, { dryRun, silent });
|
|
80
114
|
if (config.docs.adr)
|
package/dist/presets/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/presets/web.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/presets/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CapabilityDescriptor } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The stable skill set from mattpocock/skills installed by default:
|
|
4
|
+
* every skill in the `engineering` and `productivity` categories.
|
|
5
|
+
*
|
|
6
|
+
* The `misc` (rarely used) and `in-progress` categories are deliberately
|
|
7
|
+
* excluded. Re-evaluate when the upstream repository reshuffles categories
|
|
8
|
+
* (`pnpm check:skills` reports drift).
|
|
9
|
+
*/
|
|
10
|
+
export declare const MATT_POCOCK_SKILLS: readonly ['ask-matt', 'code-review', 'codebase-design', 'diagnosing-bugs', 'domain-modeling', 'grill-with-docs', 'implement', 'implement-spec', 'improve-codebase-architecture', 'pr', 'prototype', 'research', 'retro', 'setup-matt-pocock-skills', 'tdd', 'to-spec', 'to-tickets', 'triage', 'wayfinder', 'wizard', 'grill-me', 'grilling', 'handoff', 'teach', 'to-questionnaire', 'wait-what', 'writing-for-agents'];
|
|
11
|
+
export declare const SUPERPOWERS_SKILLS: readonly ['brainstorming', 'dispatching-parallel-agents', 'executing-plans', 'finishing-a-development-branch', 'receiving-code-review', 'requesting-code-review', 'subagent-driven-development', 'systematic-debugging', 'test-driven-development', 'using-git-worktrees', 'using-superpowers', 'verification-before-completion', 'writing-plans', 'writing-skills'];
|
|
12
|
+
export declare const CATALOG: CapabilityDescriptor[];
|
|
13
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/registry/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAgB,MAAM,YAAY,CAAC;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,YAE7B,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,+BAA+B,EAC/B,IAAI,EACJ,WAAW,EACX,UAAU,EACV,OAAO,EACP,0BAA0B,EAC1B,KAAK,EACL,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,QAAQ,EAER,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,oBAAoB,CACZ,CAAC;AAEX,eAAO,MAAM,kBAAkB,YAC7B,eAAe,EACf,6BAA6B,EAC7B,iBAAiB,EACjB,gCAAgC,EAChC,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,eAAe,EACf,gBAAgB,CACR,CAAC;AAUX,eAAO,MAAM,OAAO,EAAE,oBAAoB,EAqfzC,CAAC"}
|