@open-mercato/cli 0.6.5-develop.4629.1.3ef70cd6a4 → 0.6.5-develop.4656.1.5b0d4fd8a6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentic/guides/core.customers.md +1 -1
- package/dist/agentic/shared/AGENTS.md.template +56 -33
- package/dist/agentic/shared/ai/skills/{auto-continue-pr → om-auto-continue-pr}/SKILL.md +19 -19
- package/dist/agentic/shared/ai/skills/{auto-create-pr → om-auto-continue-pr}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-continue-pr-loop → om-auto-continue-pr-loop}/SKILL.md +32 -32
- package/dist/agentic/shared/ai/skills/{auto-create-pr → om-auto-create-pr}/SKILL.md +24 -24
- package/dist/agentic/shared/ai/skills/{auto-fix-github → om-auto-create-pr}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-create-pr-loop → om-auto-create-pr-loop}/SKILL.md +40 -40
- package/dist/agentic/shared/ai/skills/{auto-fix-github → om-auto-fix-github}/SKILL.md +3 -3
- package/dist/agentic/shared/ai/skills/{auto-continue-pr → om-auto-fix-github}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-review-pr → om-auto-review-pr}/SKILL.md +5 -5
- package/dist/agentic/shared/ai/skills/{auto-review-pr → om-auto-review-pr}/STANDALONE.md +1 -1
- package/dist/agentic/shared/ai/skills/{auto-upgrade-0.4.10-to-0.5.0 → om-auto-upgrade-0.4.10-to-0.5.0}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{backend-ui-design → om-backend-ui-design}/SKILL.md +2 -2
- package/dist/agentic/shared/ai/skills/{code-review → om-code-review}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{code-review → om-code-review}/references/review-checklist.md +3 -0
- package/dist/agentic/shared/ai/skills/{data-model-design → om-data-model-design}/SKILL.md +4 -2
- package/dist/agentic/shared/ai/skills/{eject-and-customize → om-eject-and-customize}/SKILL.md +2 -2
- package/dist/agentic/shared/ai/skills/{implement-spec → om-implement-spec}/SKILL.md +6 -6
- package/dist/agentic/shared/ai/skills/{integration-builder → om-integration-builder}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{integration-tests → om-integration-tests}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{module-scaffold → om-module-scaffold}/SKILL.md +2 -2
- package/dist/agentic/shared/ai/skills/{module-scaffold → om-module-scaffold}/references/naming-conventions.md +7 -8
- package/dist/agentic/shared/ai/skills/om-prepare-issue/SKILL.md +202 -0
- package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/SKILL.md +6 -6
- package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/references/spec-checklist.md +3 -3
- package/dist/agentic/shared/ai/skills/{system-extension → om-system-extension}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{trim-unused-modules → om-trim-unused-modules}/SKILL.md +1 -1
- package/dist/agentic/shared/ai/skills/{troubleshooter → om-troubleshooter}/SKILL.md +1 -1
- package/dist/lib/__integration__/TC-INT-008.spec.js +1 -1
- package/dist/lib/__integration__/TC-INT-008.spec.js.map +2 -2
- package/dist/lib/agentic-setup.js +52 -51
- package/dist/lib/agentic-setup.js.map +2 -2
- package/package.json +5 -5
- package/src/lib/__integration__/TC-INT-008.spec.ts +1 -1
- package/src/lib/agentic-setup.ts +52 -51
- /package/dist/agentic/shared/ai/skills/{backend-ui-design → om-backend-ui-design}/references/ui-components.md +0 -0
- /package/dist/agentic/shared/ai/skills/{data-model-design → om-data-model-design}/references/mikro-orm-cheatsheet.md +0 -0
- /package/dist/agentic/shared/ai/skills/{integration-builder → om-integration-builder}/references/adapter-contracts.md +0 -0
- /package/dist/agentic/shared/ai/skills/{module-scaffold → om-module-scaffold}/references/navigation-patterns.md +0 -0
- /package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/references/spec-template.md +0 -0
- /package/dist/agentic/shared/ai/skills/{system-extension → om-system-extension}/references/extension-contracts.md +0 -0
- /package/dist/agentic/shared/ai/skills/{troubleshooter → om-troubleshooter}/references/diagnostic-commands.md +0 -0
|
@@ -31,118 +31,119 @@ function generateShared(config) {
|
|
|
31
31
|
copyFile(srcDir, "ai/lessons.md", join(targetDir, ".ai", "lessons.md"));
|
|
32
32
|
writeTemplate(
|
|
33
33
|
srcDir,
|
|
34
|
-
"ai/skills/spec-writing/SKILL.md",
|
|
35
|
-
join(targetDir, ".ai", "skills", "spec-writing", "SKILL.md"),
|
|
34
|
+
"ai/skills/om-spec-writing/SKILL.md",
|
|
35
|
+
join(targetDir, ".ai", "skills", "om-spec-writing", "SKILL.md"),
|
|
36
36
|
config
|
|
37
37
|
);
|
|
38
38
|
copyFile(
|
|
39
39
|
srcDir,
|
|
40
|
-
"ai/skills/spec-writing/references/spec-template.md",
|
|
41
|
-
join(targetDir, ".ai", "skills", "spec-writing", "references", "spec-template.md")
|
|
40
|
+
"ai/skills/om-spec-writing/references/spec-template.md",
|
|
41
|
+
join(targetDir, ".ai", "skills", "om-spec-writing", "references", "spec-template.md")
|
|
42
42
|
);
|
|
43
43
|
copyFile(
|
|
44
44
|
srcDir,
|
|
45
|
-
"ai/skills/spec-writing/references/spec-checklist.md",
|
|
46
|
-
join(targetDir, ".ai", "skills", "spec-writing", "references", "spec-checklist.md")
|
|
45
|
+
"ai/skills/om-spec-writing/references/spec-checklist.md",
|
|
46
|
+
join(targetDir, ".ai", "skills", "om-spec-writing", "references", "spec-checklist.md")
|
|
47
47
|
);
|
|
48
48
|
copyFile(
|
|
49
49
|
srcDir,
|
|
50
|
-
"ai/skills/backend-ui-design/SKILL.md",
|
|
51
|
-
join(targetDir, ".ai", "skills", "backend-ui-design", "SKILL.md")
|
|
50
|
+
"ai/skills/om-backend-ui-design/SKILL.md",
|
|
51
|
+
join(targetDir, ".ai", "skills", "om-backend-ui-design", "SKILL.md")
|
|
52
52
|
);
|
|
53
53
|
copyFile(
|
|
54
54
|
srcDir,
|
|
55
|
-
"ai/skills/backend-ui-design/references/ui-components.md",
|
|
56
|
-
join(targetDir, ".ai", "skills", "backend-ui-design", "references", "ui-components.md")
|
|
55
|
+
"ai/skills/om-backend-ui-design/references/ui-components.md",
|
|
56
|
+
join(targetDir, ".ai", "skills", "om-backend-ui-design", "references", "ui-components.md")
|
|
57
57
|
);
|
|
58
58
|
copyFile(
|
|
59
59
|
srcDir,
|
|
60
|
-
"ai/skills/code-review/SKILL.md",
|
|
61
|
-
join(targetDir, ".ai", "skills", "code-review", "SKILL.md")
|
|
60
|
+
"ai/skills/om-code-review/SKILL.md",
|
|
61
|
+
join(targetDir, ".ai", "skills", "om-code-review", "SKILL.md")
|
|
62
62
|
);
|
|
63
63
|
copyFile(
|
|
64
64
|
srcDir,
|
|
65
|
-
"ai/skills/code-review/references/review-checklist.md",
|
|
66
|
-
join(targetDir, ".ai", "skills", "code-review", "references", "review-checklist.md")
|
|
65
|
+
"ai/skills/om-code-review/references/review-checklist.md",
|
|
66
|
+
join(targetDir, ".ai", "skills", "om-code-review", "references", "review-checklist.md")
|
|
67
67
|
);
|
|
68
|
-
copyFile(srcDir, "ai/skills/integration-builder/SKILL.md", join(targetDir, ".ai", "skills", "integration-builder", "SKILL.md"));
|
|
68
|
+
copyFile(srcDir, "ai/skills/om-integration-builder/SKILL.md", join(targetDir, ".ai", "skills", "om-integration-builder", "SKILL.md"));
|
|
69
69
|
copyFile(
|
|
70
70
|
srcDir,
|
|
71
|
-
"ai/skills/integration-builder/references/adapter-contracts.md",
|
|
72
|
-
join(targetDir, ".ai", "skills", "integration-builder", "references", "adapter-contracts.md")
|
|
71
|
+
"ai/skills/om-integration-builder/references/adapter-contracts.md",
|
|
72
|
+
join(targetDir, ".ai", "skills", "om-integration-builder", "references", "adapter-contracts.md")
|
|
73
73
|
);
|
|
74
74
|
copyFile(
|
|
75
75
|
srcDir,
|
|
76
|
-
"ai/skills/system-extension/SKILL.md",
|
|
77
|
-
join(targetDir, ".ai", "skills", "system-extension", "SKILL.md")
|
|
76
|
+
"ai/skills/om-system-extension/SKILL.md",
|
|
77
|
+
join(targetDir, ".ai", "skills", "om-system-extension", "SKILL.md")
|
|
78
78
|
);
|
|
79
79
|
copyFile(
|
|
80
80
|
srcDir,
|
|
81
|
-
"ai/skills/system-extension/references/extension-contracts.md",
|
|
82
|
-
join(targetDir, ".ai", "skills", "system-extension", "references", "extension-contracts.md")
|
|
81
|
+
"ai/skills/om-system-extension/references/extension-contracts.md",
|
|
82
|
+
join(targetDir, ".ai", "skills", "om-system-extension", "references", "extension-contracts.md")
|
|
83
83
|
);
|
|
84
84
|
copyFile(
|
|
85
85
|
srcDir,
|
|
86
|
-
"ai/skills/module-scaffold/SKILL.md",
|
|
87
|
-
join(targetDir, ".ai", "skills", "module-scaffold", "SKILL.md")
|
|
86
|
+
"ai/skills/om-module-scaffold/SKILL.md",
|
|
87
|
+
join(targetDir, ".ai", "skills", "om-module-scaffold", "SKILL.md")
|
|
88
88
|
);
|
|
89
89
|
copyFile(
|
|
90
90
|
srcDir,
|
|
91
|
-
"ai/skills/module-scaffold/references/naming-conventions.md",
|
|
92
|
-
join(targetDir, ".ai", "skills", "module-scaffold", "references", "naming-conventions.md")
|
|
91
|
+
"ai/skills/om-module-scaffold/references/naming-conventions.md",
|
|
92
|
+
join(targetDir, ".ai", "skills", "om-module-scaffold", "references", "naming-conventions.md")
|
|
93
93
|
);
|
|
94
94
|
copyFile(
|
|
95
95
|
srcDir,
|
|
96
|
-
"ai/skills/module-scaffold/references/navigation-patterns.md",
|
|
97
|
-
join(targetDir, ".ai", "skills", "module-scaffold", "references", "navigation-patterns.md")
|
|
96
|
+
"ai/skills/om-module-scaffold/references/navigation-patterns.md",
|
|
97
|
+
join(targetDir, ".ai", "skills", "om-module-scaffold", "references", "navigation-patterns.md")
|
|
98
98
|
);
|
|
99
99
|
copyFile(
|
|
100
100
|
srcDir,
|
|
101
|
-
"ai/skills/troubleshooter/SKILL.md",
|
|
102
|
-
join(targetDir, ".ai", "skills", "troubleshooter", "SKILL.md")
|
|
101
|
+
"ai/skills/om-troubleshooter/SKILL.md",
|
|
102
|
+
join(targetDir, ".ai", "skills", "om-troubleshooter", "SKILL.md")
|
|
103
103
|
);
|
|
104
104
|
copyFile(
|
|
105
105
|
srcDir,
|
|
106
|
-
"ai/skills/troubleshooter/references/diagnostic-commands.md",
|
|
107
|
-
join(targetDir, ".ai", "skills", "troubleshooter", "references", "diagnostic-commands.md")
|
|
106
|
+
"ai/skills/om-troubleshooter/references/diagnostic-commands.md",
|
|
107
|
+
join(targetDir, ".ai", "skills", "om-troubleshooter", "references", "diagnostic-commands.md")
|
|
108
108
|
);
|
|
109
109
|
copyFile(
|
|
110
110
|
srcDir,
|
|
111
|
-
"ai/skills/eject-and-customize/SKILL.md",
|
|
112
|
-
join(targetDir, ".ai", "skills", "eject-and-customize", "SKILL.md")
|
|
111
|
+
"ai/skills/om-eject-and-customize/SKILL.md",
|
|
112
|
+
join(targetDir, ".ai", "skills", "om-eject-and-customize", "SKILL.md")
|
|
113
113
|
);
|
|
114
114
|
copyFile(
|
|
115
115
|
srcDir,
|
|
116
|
-
"ai/skills/data-model-design/SKILL.md",
|
|
117
|
-
join(targetDir, ".ai", "skills", "data-model-design", "SKILL.md")
|
|
116
|
+
"ai/skills/om-data-model-design/SKILL.md",
|
|
117
|
+
join(targetDir, ".ai", "skills", "om-data-model-design", "SKILL.md")
|
|
118
118
|
);
|
|
119
119
|
copyFile(
|
|
120
120
|
srcDir,
|
|
121
|
-
"ai/skills/data-model-design/references/mikro-orm-cheatsheet.md",
|
|
122
|
-
join(targetDir, ".ai", "skills", "data-model-design", "references", "mikro-orm-cheatsheet.md")
|
|
121
|
+
"ai/skills/om-data-model-design/references/mikro-orm-cheatsheet.md",
|
|
122
|
+
join(targetDir, ".ai", "skills", "om-data-model-design", "references", "mikro-orm-cheatsheet.md")
|
|
123
123
|
);
|
|
124
124
|
copyFile(
|
|
125
125
|
srcDir,
|
|
126
|
-
"ai/skills/implement-spec/SKILL.md",
|
|
127
|
-
join(targetDir, ".ai", "skills", "implement-spec", "SKILL.md")
|
|
126
|
+
"ai/skills/om-implement-spec/SKILL.md",
|
|
127
|
+
join(targetDir, ".ai", "skills", "om-implement-spec", "SKILL.md")
|
|
128
128
|
);
|
|
129
129
|
copyFile(
|
|
130
130
|
srcDir,
|
|
131
|
-
"ai/skills/integration-tests/SKILL.md",
|
|
132
|
-
join(targetDir, ".ai", "skills", "integration-tests", "SKILL.md")
|
|
131
|
+
"ai/skills/om-integration-tests/SKILL.md",
|
|
132
|
+
join(targetDir, ".ai", "skills", "om-integration-tests", "SKILL.md")
|
|
133
133
|
);
|
|
134
134
|
copyFile(
|
|
135
135
|
srcDir,
|
|
136
|
-
"ai/skills/auto-upgrade-0.4.10-to-0.5.0/SKILL.md",
|
|
137
|
-
join(targetDir, ".ai", "skills", "auto-upgrade-0.4.10-to-0.5.0", "SKILL.md")
|
|
136
|
+
"ai/skills/om-auto-upgrade-0.4.10-to-0.5.0/SKILL.md",
|
|
137
|
+
join(targetDir, ".ai", "skills", "om-auto-upgrade-0.4.10-to-0.5.0", "SKILL.md")
|
|
138
138
|
);
|
|
139
139
|
for (const autoSkill of [
|
|
140
|
-
"auto-create-pr",
|
|
141
|
-
"auto-continue-pr",
|
|
142
|
-
"auto-create-pr-loop",
|
|
143
|
-
"auto-continue-pr-loop",
|
|
144
|
-
"auto-review-pr",
|
|
145
|
-
"auto-fix-github"
|
|
140
|
+
"om-auto-create-pr",
|
|
141
|
+
"om-auto-continue-pr",
|
|
142
|
+
"om-auto-create-pr-loop",
|
|
143
|
+
"om-auto-continue-pr-loop",
|
|
144
|
+
"om-auto-review-pr",
|
|
145
|
+
"om-auto-fix-github",
|
|
146
|
+
"om-prepare-issue"
|
|
146
147
|
]) {
|
|
147
148
|
copyFile(
|
|
148
149
|
srcDir,
|
|
@@ -159,8 +160,8 @@ function generateShared(config) {
|
|
|
159
160
|
}
|
|
160
161
|
copyFile(
|
|
161
162
|
srcDir,
|
|
162
|
-
"ai/skills/trim-unused-modules/SKILL.md",
|
|
163
|
-
join(targetDir, ".ai", "skills", "trim-unused-modules", "SKILL.md")
|
|
163
|
+
"ai/skills/om-trim-unused-modules/SKILL.md",
|
|
164
|
+
join(targetDir, ".ai", "skills", "om-trim-unused-modules", "SKILL.md")
|
|
164
165
|
);
|
|
165
166
|
copyFile(srcDir, "ai/qa/tests/playwright.config.ts", join(targetDir, ".ai", "qa", "tests", "playwright.config.ts"));
|
|
166
167
|
if (existsSync(GUIDES_DIR)) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/lib/agentic-setup.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Agentic setup for the CLI `agentic:init` command.\n *\n * Source files live in packages/create-app/agentic/ and are copied\n * to packages/cli/dist/agentic/ during build (see build.mjs).\n * This module reads those files at runtime \u2014 no embedded string constants.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, symlinkSync, lstatSync, unlinkSync, readdirSync } from 'node:fs'\nimport { join, dirname, basename } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n// In the built output (dist/lib/agentic-setup.js), __dirname is dist/lib/.\n// agentic/ is copied to dist/agentic/ by build.mjs.\nconst AGENTIC_DIR = join(__dirname, '..', 'agentic')\nconst GUIDES_DIR = join(AGENTIC_DIR, 'guides')\n\ntype AskFn = (question: string) => Promise<string>\n\ninterface AgenticSetupOptions {\n tool?: string\n force?: boolean\n}\n\ninterface AgenticConfig {\n projectName: string\n targetDir: string\n}\n\n// \u2500\u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction resolvePlaceholders(content: string, config: AgenticConfig): string {\n return content.replace(/\\{\\{PROJECT_NAME\\}\\}/g, config.projectName)\n}\n\nfunction ensureDir(filePath: string): void {\n const dir = dirname(filePath)\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n}\n\nfunction writeTemplate(srcDir: string, srcRelative: string, destPath: string, config: AgenticConfig): void {\n const srcPath = join(srcDir, srcRelative)\n const content = readFileSync(srcPath, 'utf-8')\n ensureDir(destPath)\n writeFileSync(destPath, resolvePlaceholders(content, config))\n}\n\nfunction copyFile(srcDir: string, srcRelative: string, destPath: string): void {\n const srcPath = join(srcDir, srcRelative)\n ensureDir(destPath)\n copyFileSync(srcPath, destPath)\n}\n\n// \u2500\u2500\u2500 Generators \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction generateShared(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'shared')\n\n // AGENTS.md\n writeTemplate(srcDir, 'AGENTS.md.template', join(targetDir, 'AGENTS.md'), config)\n\n // .ai/ structure\n writeTemplate(srcDir, 'ai/specs/README.md', join(targetDir, '.ai', 'specs', 'README.md'), config)\n copyFile(srcDir, 'ai/specs/SPEC-000-template.md', join(targetDir, '.ai', 'specs', 'SPEC-000-template.md'))\n copyFile(srcDir, 'ai/lessons.md', join(targetDir, '.ai', 'lessons.md'))\n\n // .ai/skills/\n writeTemplate(\n srcDir,\n 'ai/skills/spec-writing/SKILL.md',\n join(targetDir, '.ai', 'skills', 'spec-writing', 'SKILL.md'),\n config,\n )\n copyFile(\n srcDir,\n 'ai/skills/spec-writing/references/spec-template.md',\n join(targetDir, '.ai', 'skills', 'spec-writing', 'references', 'spec-template.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/spec-writing/references/spec-checklist.md',\n join(targetDir, '.ai', 'skills', 'spec-writing', 'references', 'spec-checklist.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/backend-ui-design/SKILL.md',\n join(targetDir, '.ai', 'skills', 'backend-ui-design', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/backend-ui-design/references/ui-components.md',\n join(targetDir, '.ai', 'skills', 'backend-ui-design', 'references', 'ui-components.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/code-review/SKILL.md',\n join(targetDir, '.ai', 'skills', 'code-review', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/code-review/references/review-checklist.md',\n join(targetDir, '.ai', 'skills', 'code-review', 'references', 'review-checklist.md'),\n )\n copyFile(srcDir, 'ai/skills/integration-builder/SKILL.md', join(targetDir, '.ai', 'skills', 'integration-builder', 'SKILL.md'))\n copyFile(\n srcDir,\n 'ai/skills/integration-builder/references/adapter-contracts.md',\n join(targetDir, '.ai', 'skills', 'integration-builder', 'references', 'adapter-contracts.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/system-extension/SKILL.md',\n join(targetDir, '.ai', 'skills', 'system-extension', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/system-extension/references/extension-contracts.md',\n join(targetDir, '.ai', 'skills', 'system-extension', 'references', 'extension-contracts.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/module-scaffold/SKILL.md',\n join(targetDir, '.ai', 'skills', 'module-scaffold', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/module-scaffold/references/naming-conventions.md',\n join(targetDir, '.ai', 'skills', 'module-scaffold', 'references', 'naming-conventions.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/module-scaffold/references/navigation-patterns.md',\n join(targetDir, '.ai', 'skills', 'module-scaffold', 'references', 'navigation-patterns.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/troubleshooter/SKILL.md',\n join(targetDir, '.ai', 'skills', 'troubleshooter', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/troubleshooter/references/diagnostic-commands.md',\n join(targetDir, '.ai', 'skills', 'troubleshooter', 'references', 'diagnostic-commands.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/eject-and-customize/SKILL.md',\n join(targetDir, '.ai', 'skills', 'eject-and-customize', 'SKILL.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/data-model-design/SKILL.md',\n join(targetDir, '.ai', 'skills', 'data-model-design', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/data-model-design/references/mikro-orm-cheatsheet.md',\n join(targetDir, '.ai', 'skills', 'data-model-design', 'references', 'mikro-orm-cheatsheet.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/implement-spec/SKILL.md',\n join(targetDir, '.ai', 'skills', 'implement-spec', 'SKILL.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/integration-tests/SKILL.md',\n join(targetDir, '.ai', 'skills', 'integration-tests', 'SKILL.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/auto-upgrade-0.4.10-to-0.5.0/SKILL.md',\n join(targetDir, '.ai', 'skills', 'auto-upgrade-0.4.10-to-0.5.0', 'SKILL.md'),\n )\n\n for (const autoSkill of [\n 'auto-create-pr',\n 'auto-continue-pr',\n 'auto-create-pr-loop',\n 'auto-continue-pr-loop',\n 'auto-review-pr',\n 'auto-fix-github',\n ]) {\n copyFile(\n srcDir,\n `ai/skills/${autoSkill}/SKILL.md`,\n join(targetDir, '.ai', 'skills', autoSkill, 'SKILL.md'),\n )\n if (existsSync(join(srcDir, 'ai', 'skills', autoSkill, 'STANDALONE.md'))) {\n copyFile(\n srcDir,\n `ai/skills/${autoSkill}/STANDALONE.md`,\n join(targetDir, '.ai', 'skills', autoSkill, 'STANDALONE.md'),\n )\n }\n }\n\n copyFile(\n srcDir,\n 'ai/skills/trim-unused-modules/SKILL.md',\n join(targetDir, '.ai', 'skills', 'trim-unused-modules', 'SKILL.md'),\n )\n\n copyFile(srcDir, 'ai/qa/tests/playwright.config.ts', join(targetDir, '.ai', 'qa', 'tests', 'playwright.config.ts'))\n\n if (existsSync(GUIDES_DIR)) {\n const guidesDestDir = join(targetDir, '.ai', 'guides')\n for (const file of readdirSync(GUIDES_DIR)) {\n if (!file.endsWith('.md')) continue\n const srcPath = join(GUIDES_DIR, file)\n const destPath = join(guidesDestDir, file)\n ensureDir(destPath)\n copyFileSync(srcPath, destPath)\n }\n }\n}\n\nfunction generateClaudeCode(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'claude-code')\n\n writeTemplate(srcDir, 'CLAUDE.md.template', join(targetDir, 'CLAUDE.md'), config)\n copyFile(srcDir, 'settings.json', join(targetDir, '.claude', 'settings.json'))\n copyFile(srcDir, 'hooks/entity-migration-check.ts', join(targetDir, '.claude', 'hooks', 'entity-migration-check.ts'))\n copyFile(srcDir, 'mcp.json.example', join(targetDir, '.mcp.json.example'))\n\n // Symlink .claude/skills \u2192 ../.ai/skills\n ensureSkillsLink(join(targetDir, '.claude', 'skills'), join('..', '.ai', 'skills'))\n}\n\nfunction generateCodex(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'codex')\n\n const agentsPath = join(targetDir, 'AGENTS.md')\n if (existsSync(agentsPath)) {\n const enforcement = readFileSync(join(srcDir, 'enforcement-rules.md'), 'utf-8')\n let agents = readFileSync(agentsPath, 'utf-8')\n const MARKER_START = '<!-- CODEX_ENFORCEMENT_RULES_START -->'\n const MARKER_END = '<!-- CODEX_ENFORCEMENT_RULES_END -->'\n\n if (agents.includes(MARKER_START)) {\n const startIdx = agents.indexOf(MARKER_START)\n const endIdx = agents.indexOf(MARKER_END)\n if (endIdx !== -1) {\n agents = agents.slice(0, startIdx) + enforcement + agents.slice(endIdx + MARKER_END.length)\n }\n } else {\n const firstNewline = agents.indexOf('\\n')\n if (firstNewline !== -1) {\n agents = agents.slice(0, firstNewline + 1) + '\\n' + enforcement + '\\n' + agents.slice(firstNewline + 1)\n } else {\n agents = agents + '\\n\\n' + enforcement\n }\n }\n writeFileSync(agentsPath, agents)\n }\n\n copyFile(srcDir, 'mcp.json.example', join(targetDir, '.codex', 'mcp.json.example'))\n\n // Symlink .codex/skills \u2192 ../.ai/skills\n ensureSkillsLink(join(targetDir, '.codex', 'skills'), join('..', '.ai', 'skills'))\n}\n\nfunction generateCursor(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'cursor')\n\n writeTemplate(srcDir, 'rules/open-mercato.mdc', join(targetDir, '.cursor', 'rules', 'open-mercato.mdc'), config)\n copyFile(srcDir, 'rules/entity-guard.mdc', join(targetDir, '.cursor', 'rules', 'entity-guard.mdc'))\n copyFile(srcDir, 'rules/generated-guard.mdc', join(targetDir, '.cursor', 'rules', 'generated-guard.mdc'))\n copyFile(srcDir, 'hooks.json', join(targetDir, '.cursor', 'hooks.json'))\n copyFile(srcDir, 'hooks/entity-migration-check.mjs', join(targetDir, '.cursor', 'hooks', 'entity-migration-check.mjs'))\n copyFile(srcDir, 'mcp.json.example', join(targetDir, '.cursor', 'mcp.json.example'))\n\n // Symlink .cursor/skills \u2192 ../.ai/skills\n ensureSkillsLink(join(targetDir, '.cursor', 'skills'), join('..', '.ai', 'skills'))\n}\n\nfunction ensureSkillsLink(linkPath: string, target: string): void {\n ensureDir(linkPath)\n if (existsSync(linkPath) && !lstatSync(linkPath).isSymbolicLink()) {\n return\n }\n if (lstatSync(linkPath, { throwIfNoEntry: false })?.isSymbolicLink()) {\n unlinkSync(linkPath)\n }\n symlinkSync(target, linkPath)\n}\n\n// \u2500\u2500\u2500 Wizard \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst TOOLS = [\n { key: '1', label: 'Claude Code (Anthropic)', id: 'claude-code' },\n { key: '2', label: 'Codex (OpenAI)', id: 'codex' },\n { key: '3', label: 'Cursor (Anysphere)', id: 'cursor' },\n { key: '4', label: 'Multiple tools (select individually)', id: 'multiple' },\n { key: '5', label: 'Skip \u2014 set up manually later', id: 'skip' },\n] as const\n\nconst SELECTABLE = TOOLS.filter((t) => t.id !== 'multiple' && t.id !== 'skip')\n\nasync function promptSelection(ask: AskFn): Promise<string[]> {\n console.log('')\n console.log('\uD83E\uDD16 Agentic workflow setup')\n console.log('')\n console.log(' Which AI coding tool will you use with this project?')\n console.log('')\n for (const tool of TOOLS) {\n console.log(` ${tool.key}. ${tool.label}`)\n }\n console.log('')\n\n const answer = (await ask(' Enter number(s) separated by comma [1]: ')).trim() || '1'\n\n if (answer === '5') return ['skip']\n\n if (answer === '4') {\n const selected: string[] = []\n for (const tool of SELECTABLE) {\n const yn = await ask(` Include ${tool.label}? [y/N]: `)\n if (yn.toLowerCase() === 'y' || yn.toLowerCase() === 'yes') {\n selected.push(tool.id)\n }\n }\n return selected.length > 0 ? selected : ['skip']\n }\n\n const keys = answer.split(',').map((s) => s.trim())\n const ids: string[] = []\n for (const key of keys) {\n const tool = TOOLS.find((t) => t.key === key)\n if (tool && tool.id !== 'multiple' && tool.id !== 'skip') {\n ids.push(tool.id)\n }\n }\n return ids.length > 0 ? ids : ['skip']\n}\n\nexport async function runAgenticSetup(\n targetDir: string,\n ask: AskFn,\n options?: AgenticSetupOptions,\n): Promise<void> {\n let selectedIds: string[]\n\n if (options?.tool) {\n selectedIds = options.tool.split(',').map((t) => t.trim())\n } else {\n selectedIds = await promptSelection(ask)\n }\n\n if (selectedIds.includes('skip')) {\n console.log('')\n console.log(' Skipped agentic setup.')\n console.log('')\n return\n }\n\n const config: AgenticConfig = {\n projectName: basename(targetDir),\n targetDir,\n }\n\n generateShared(config)\n if (selectedIds.includes('claude-code')) generateClaudeCode(config)\n if (selectedIds.includes('codex')) generateCodex(config)\n if (selectedIds.includes('cursor')) generateCursor(config)\n\n console.log('')\n console.log(' Agentic setup complete:')\n if (selectedIds.includes('claude-code')) {\n console.log(' \u2713 Claude Code \u2014 CLAUDE.md, .claude/hooks/, .mcp.json.example')\n }\n if (selectedIds.includes('codex')) {\n console.log(' \u2713 Codex \u2014 AGENTS.md enforcement rules, .codex/mcp.json.example')\n }\n if (selectedIds.includes('cursor')) {\n console.log(' \u2713 Cursor \u2014 .cursor/rules/, .cursor/hooks/, .cursor/mcp.json.example')\n }\n console.log('')\n}\n"],
|
|
5
|
-
"mappings": "AAQA,SAAS,YAAY,WAAW,cAAc,eAAe,cAAc,aAAa,WAAW,YAAY,mBAAmB;AAClI,SAAS,MAAM,SAAS,gBAAgB;AACxC,SAAS,qBAAqB;AAE9B,MAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AAGxD,MAAM,cAAc,KAAK,WAAW,MAAM,SAAS;AACnD,MAAM,aAAa,KAAK,aAAa,QAAQ;AAgB7C,SAAS,oBAAoB,SAAiB,QAA+B;AAC3E,SAAO,QAAQ,QAAQ,yBAAyB,OAAO,WAAW;AACpE;AAEA,SAAS,UAAU,UAAwB;AACzC,QAAM,MAAM,QAAQ,QAAQ;AAC5B,MAAI,CAAC,WAAW,GAAG,EAAG,WAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAC1D;AAEA,SAAS,cAAc,QAAgB,aAAqB,UAAkB,QAA6B;AACzG,QAAM,UAAU,KAAK,QAAQ,WAAW;AACxC,QAAM,UAAU,aAAa,SAAS,OAAO;AAC7C,YAAU,QAAQ;AAClB,gBAAc,UAAU,oBAAoB,SAAS,MAAM,CAAC;AAC9D;AAEA,SAAS,SAAS,QAAgB,aAAqB,UAAwB;AAC7E,QAAM,UAAU,KAAK,QAAQ,WAAW;AACxC,YAAU,QAAQ;AAClB,eAAa,SAAS,QAAQ;AAChC;AAIA,SAAS,eAAe,QAA6B;AACnD,QAAM,EAAE,UAAU,IAAI;AACtB,QAAM,SAAS,KAAK,aAAa,QAAQ;AAGzC,gBAAc,QAAQ,sBAAsB,KAAK,WAAW,WAAW,GAAG,MAAM;AAGhF,gBAAc,QAAQ,sBAAsB,KAAK,WAAW,OAAO,SAAS,WAAW,GAAG,MAAM;AAChG,WAAS,QAAQ,iCAAiC,KAAK,WAAW,OAAO,SAAS,sBAAsB,CAAC;AACzG,WAAS,QAAQ,iBAAiB,KAAK,WAAW,OAAO,YAAY,CAAC;AAGtE;AAAA,IACE;AAAA,IACA;AAAA,IACA,KAAK,WAAW,OAAO,UAAU,
|
|
4
|
+
"sourcesContent": ["/**\n * Agentic setup for the CLI `agentic:init` command.\n *\n * Source files live in packages/create-app/agentic/ and are copied\n * to packages/cli/dist/agentic/ during build (see build.mjs).\n * This module reads those files at runtime \u2014 no embedded string constants.\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, symlinkSync, lstatSync, unlinkSync, readdirSync } from 'node:fs'\nimport { join, dirname, basename } from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n// In the built output (dist/lib/agentic-setup.js), __dirname is dist/lib/.\n// agentic/ is copied to dist/agentic/ by build.mjs.\nconst AGENTIC_DIR = join(__dirname, '..', 'agentic')\nconst GUIDES_DIR = join(AGENTIC_DIR, 'guides')\n\ntype AskFn = (question: string) => Promise<string>\n\ninterface AgenticSetupOptions {\n tool?: string\n force?: boolean\n}\n\ninterface AgenticConfig {\n projectName: string\n targetDir: string\n}\n\n// \u2500\u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction resolvePlaceholders(content: string, config: AgenticConfig): string {\n return content.replace(/\\{\\{PROJECT_NAME\\}\\}/g, config.projectName)\n}\n\nfunction ensureDir(filePath: string): void {\n const dir = dirname(filePath)\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true })\n}\n\nfunction writeTemplate(srcDir: string, srcRelative: string, destPath: string, config: AgenticConfig): void {\n const srcPath = join(srcDir, srcRelative)\n const content = readFileSync(srcPath, 'utf-8')\n ensureDir(destPath)\n writeFileSync(destPath, resolvePlaceholders(content, config))\n}\n\nfunction copyFile(srcDir: string, srcRelative: string, destPath: string): void {\n const srcPath = join(srcDir, srcRelative)\n ensureDir(destPath)\n copyFileSync(srcPath, destPath)\n}\n\n// \u2500\u2500\u2500 Generators \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction generateShared(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'shared')\n\n // AGENTS.md\n writeTemplate(srcDir, 'AGENTS.md.template', join(targetDir, 'AGENTS.md'), config)\n\n // .ai/ structure\n writeTemplate(srcDir, 'ai/specs/README.md', join(targetDir, '.ai', 'specs', 'README.md'), config)\n copyFile(srcDir, 'ai/specs/SPEC-000-template.md', join(targetDir, '.ai', 'specs', 'SPEC-000-template.md'))\n copyFile(srcDir, 'ai/lessons.md', join(targetDir, '.ai', 'lessons.md'))\n\n // .ai/skills/\n writeTemplate(\n srcDir,\n 'ai/skills/om-spec-writing/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-spec-writing', 'SKILL.md'),\n config,\n )\n copyFile(\n srcDir,\n 'ai/skills/om-spec-writing/references/spec-template.md',\n join(targetDir, '.ai', 'skills', 'om-spec-writing', 'references', 'spec-template.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-spec-writing/references/spec-checklist.md',\n join(targetDir, '.ai', 'skills', 'om-spec-writing', 'references', 'spec-checklist.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-backend-ui-design/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-backend-ui-design', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-backend-ui-design/references/ui-components.md',\n join(targetDir, '.ai', 'skills', 'om-backend-ui-design', 'references', 'ui-components.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-code-review/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-code-review', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-code-review/references/review-checklist.md',\n join(targetDir, '.ai', 'skills', 'om-code-review', 'references', 'review-checklist.md'),\n )\n copyFile(srcDir, 'ai/skills/om-integration-builder/SKILL.md', join(targetDir, '.ai', 'skills', 'om-integration-builder', 'SKILL.md'))\n copyFile(\n srcDir,\n 'ai/skills/om-integration-builder/references/adapter-contracts.md',\n join(targetDir, '.ai', 'skills', 'om-integration-builder', 'references', 'adapter-contracts.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-system-extension/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-system-extension', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-system-extension/references/extension-contracts.md',\n join(targetDir, '.ai', 'skills', 'om-system-extension', 'references', 'extension-contracts.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-module-scaffold/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-module-scaffold', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-module-scaffold/references/naming-conventions.md',\n join(targetDir, '.ai', 'skills', 'om-module-scaffold', 'references', 'naming-conventions.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-module-scaffold/references/navigation-patterns.md',\n join(targetDir, '.ai', 'skills', 'om-module-scaffold', 'references', 'navigation-patterns.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-troubleshooter/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-troubleshooter', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-troubleshooter/references/diagnostic-commands.md',\n join(targetDir, '.ai', 'skills', 'om-troubleshooter', 'references', 'diagnostic-commands.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-eject-and-customize/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-eject-and-customize', 'SKILL.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-data-model-design/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-data-model-design', 'SKILL.md'),\n )\n copyFile(\n srcDir,\n 'ai/skills/om-data-model-design/references/mikro-orm-cheatsheet.md',\n join(targetDir, '.ai', 'skills', 'om-data-model-design', 'references', 'mikro-orm-cheatsheet.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-implement-spec/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-implement-spec', 'SKILL.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-integration-tests/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-integration-tests', 'SKILL.md'),\n )\n\n copyFile(\n srcDir,\n 'ai/skills/om-auto-upgrade-0.4.10-to-0.5.0/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-auto-upgrade-0.4.10-to-0.5.0', 'SKILL.md'),\n )\n\n for (const autoSkill of [\n 'om-auto-create-pr',\n 'om-auto-continue-pr',\n 'om-auto-create-pr-loop',\n 'om-auto-continue-pr-loop',\n 'om-auto-review-pr',\n 'om-auto-fix-github',\n 'om-prepare-issue',\n ]) {\n copyFile(\n srcDir,\n `ai/skills/${autoSkill}/SKILL.md`,\n join(targetDir, '.ai', 'skills', autoSkill, 'SKILL.md'),\n )\n if (existsSync(join(srcDir, 'ai', 'skills', autoSkill, 'STANDALONE.md'))) {\n copyFile(\n srcDir,\n `ai/skills/${autoSkill}/STANDALONE.md`,\n join(targetDir, '.ai', 'skills', autoSkill, 'STANDALONE.md'),\n )\n }\n }\n\n copyFile(\n srcDir,\n 'ai/skills/om-trim-unused-modules/SKILL.md',\n join(targetDir, '.ai', 'skills', 'om-trim-unused-modules', 'SKILL.md'),\n )\n\n copyFile(srcDir, 'ai/qa/tests/playwright.config.ts', join(targetDir, '.ai', 'qa', 'tests', 'playwright.config.ts'))\n\n if (existsSync(GUIDES_DIR)) {\n const guidesDestDir = join(targetDir, '.ai', 'guides')\n for (const file of readdirSync(GUIDES_DIR)) {\n if (!file.endsWith('.md')) continue\n const srcPath = join(GUIDES_DIR, file)\n const destPath = join(guidesDestDir, file)\n ensureDir(destPath)\n copyFileSync(srcPath, destPath)\n }\n }\n}\n\nfunction generateClaudeCode(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'claude-code')\n\n writeTemplate(srcDir, 'CLAUDE.md.template', join(targetDir, 'CLAUDE.md'), config)\n copyFile(srcDir, 'settings.json', join(targetDir, '.claude', 'settings.json'))\n copyFile(srcDir, 'hooks/entity-migration-check.ts', join(targetDir, '.claude', 'hooks', 'entity-migration-check.ts'))\n copyFile(srcDir, 'mcp.json.example', join(targetDir, '.mcp.json.example'))\n\n // Symlink .claude/skills \u2192 ../.ai/skills\n ensureSkillsLink(join(targetDir, '.claude', 'skills'), join('..', '.ai', 'skills'))\n}\n\nfunction generateCodex(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'codex')\n\n const agentsPath = join(targetDir, 'AGENTS.md')\n if (existsSync(agentsPath)) {\n const enforcement = readFileSync(join(srcDir, 'enforcement-rules.md'), 'utf-8')\n let agents = readFileSync(agentsPath, 'utf-8')\n const MARKER_START = '<!-- CODEX_ENFORCEMENT_RULES_START -->'\n const MARKER_END = '<!-- CODEX_ENFORCEMENT_RULES_END -->'\n\n if (agents.includes(MARKER_START)) {\n const startIdx = agents.indexOf(MARKER_START)\n const endIdx = agents.indexOf(MARKER_END)\n if (endIdx !== -1) {\n agents = agents.slice(0, startIdx) + enforcement + agents.slice(endIdx + MARKER_END.length)\n }\n } else {\n const firstNewline = agents.indexOf('\\n')\n if (firstNewline !== -1) {\n agents = agents.slice(0, firstNewline + 1) + '\\n' + enforcement + '\\n' + agents.slice(firstNewline + 1)\n } else {\n agents = agents + '\\n\\n' + enforcement\n }\n }\n writeFileSync(agentsPath, agents)\n }\n\n copyFile(srcDir, 'mcp.json.example', join(targetDir, '.codex', 'mcp.json.example'))\n\n // Symlink .codex/skills \u2192 ../.ai/skills\n ensureSkillsLink(join(targetDir, '.codex', 'skills'), join('..', '.ai', 'skills'))\n}\n\nfunction generateCursor(config: AgenticConfig): void {\n const { targetDir } = config\n const srcDir = join(AGENTIC_DIR, 'cursor')\n\n writeTemplate(srcDir, 'rules/open-mercato.mdc', join(targetDir, '.cursor', 'rules', 'open-mercato.mdc'), config)\n copyFile(srcDir, 'rules/entity-guard.mdc', join(targetDir, '.cursor', 'rules', 'entity-guard.mdc'))\n copyFile(srcDir, 'rules/generated-guard.mdc', join(targetDir, '.cursor', 'rules', 'generated-guard.mdc'))\n copyFile(srcDir, 'hooks.json', join(targetDir, '.cursor', 'hooks.json'))\n copyFile(srcDir, 'hooks/entity-migration-check.mjs', join(targetDir, '.cursor', 'hooks', 'entity-migration-check.mjs'))\n copyFile(srcDir, 'mcp.json.example', join(targetDir, '.cursor', 'mcp.json.example'))\n\n // Symlink .cursor/skills \u2192 ../.ai/skills\n ensureSkillsLink(join(targetDir, '.cursor', 'skills'), join('..', '.ai', 'skills'))\n}\n\nfunction ensureSkillsLink(linkPath: string, target: string): void {\n ensureDir(linkPath)\n if (existsSync(linkPath) && !lstatSync(linkPath).isSymbolicLink()) {\n return\n }\n if (lstatSync(linkPath, { throwIfNoEntry: false })?.isSymbolicLink()) {\n unlinkSync(linkPath)\n }\n symlinkSync(target, linkPath)\n}\n\n// \u2500\u2500\u2500 Wizard \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst TOOLS = [\n { key: '1', label: 'Claude Code (Anthropic)', id: 'claude-code' },\n { key: '2', label: 'Codex (OpenAI)', id: 'codex' },\n { key: '3', label: 'Cursor (Anysphere)', id: 'cursor' },\n { key: '4', label: 'Multiple tools (select individually)', id: 'multiple' },\n { key: '5', label: 'Skip \u2014 set up manually later', id: 'skip' },\n] as const\n\nconst SELECTABLE = TOOLS.filter((t) => t.id !== 'multiple' && t.id !== 'skip')\n\nasync function promptSelection(ask: AskFn): Promise<string[]> {\n console.log('')\n console.log('\uD83E\uDD16 Agentic workflow setup')\n console.log('')\n console.log(' Which AI coding tool will you use with this project?')\n console.log('')\n for (const tool of TOOLS) {\n console.log(` ${tool.key}. ${tool.label}`)\n }\n console.log('')\n\n const answer = (await ask(' Enter number(s) separated by comma [1]: ')).trim() || '1'\n\n if (answer === '5') return ['skip']\n\n if (answer === '4') {\n const selected: string[] = []\n for (const tool of SELECTABLE) {\n const yn = await ask(` Include ${tool.label}? [y/N]: `)\n if (yn.toLowerCase() === 'y' || yn.toLowerCase() === 'yes') {\n selected.push(tool.id)\n }\n }\n return selected.length > 0 ? selected : ['skip']\n }\n\n const keys = answer.split(',').map((s) => s.trim())\n const ids: string[] = []\n for (const key of keys) {\n const tool = TOOLS.find((t) => t.key === key)\n if (tool && tool.id !== 'multiple' && tool.id !== 'skip') {\n ids.push(tool.id)\n }\n }\n return ids.length > 0 ? ids : ['skip']\n}\n\nexport async function runAgenticSetup(\n targetDir: string,\n ask: AskFn,\n options?: AgenticSetupOptions,\n): Promise<void> {\n let selectedIds: string[]\n\n if (options?.tool) {\n selectedIds = options.tool.split(',').map((t) => t.trim())\n } else {\n selectedIds = await promptSelection(ask)\n }\n\n if (selectedIds.includes('skip')) {\n console.log('')\n console.log(' Skipped agentic setup.')\n console.log('')\n return\n }\n\n const config: AgenticConfig = {\n projectName: basename(targetDir),\n targetDir,\n }\n\n generateShared(config)\n if (selectedIds.includes('claude-code')) generateClaudeCode(config)\n if (selectedIds.includes('codex')) generateCodex(config)\n if (selectedIds.includes('cursor')) generateCursor(config)\n\n console.log('')\n console.log(' Agentic setup complete:')\n if (selectedIds.includes('claude-code')) {\n console.log(' \u2713 Claude Code \u2014 CLAUDE.md, .claude/hooks/, .mcp.json.example')\n }\n if (selectedIds.includes('codex')) {\n console.log(' \u2713 Codex \u2014 AGENTS.md enforcement rules, .codex/mcp.json.example')\n }\n if (selectedIds.includes('cursor')) {\n console.log(' \u2713 Cursor \u2014 .cursor/rules/, .cursor/hooks/, .cursor/mcp.json.example')\n }\n console.log('')\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/cli",
|
|
3
|
-
"version": "0.6.5-develop.
|
|
3
|
+
"version": "0.6.5-develop.4656.1.5b0d4fd8a6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"@mikro-orm/decorators": "^7.1.3",
|
|
60
60
|
"@mikro-orm/migrations": "^7.1.3",
|
|
61
61
|
"@mikro-orm/postgresql": "^7.1.3",
|
|
62
|
-
"@open-mercato/queue": "0.6.5-develop.
|
|
63
|
-
"@open-mercato/shared": "0.6.5-develop.
|
|
62
|
+
"@open-mercato/queue": "0.6.5-develop.4656.1.5b0d4fd8a6",
|
|
63
|
+
"@open-mercato/shared": "0.6.5-develop.4656.1.5b0d4fd8a6",
|
|
64
64
|
"cross-spawn": "^7.0.6",
|
|
65
65
|
"pg": "8.21.0",
|
|
66
66
|
"semver": "^7.8.1",
|
|
@@ -70,10 +70,10 @@
|
|
|
70
70
|
"typescript": "^6.0.3"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
|
-
"@open-mercato/shared": "0.6.5-develop.
|
|
73
|
+
"@open-mercato/shared": "0.6.5-develop.4656.1.5b0d4fd8a6"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@open-mercato/shared": "0.6.5-develop.
|
|
76
|
+
"@open-mercato/shared": "0.6.5-develop.4656.1.5b0d4fd8a6",
|
|
77
77
|
"@types/jest": "^30.0.0",
|
|
78
78
|
"jest": "^30.4.2",
|
|
79
79
|
"ts-jest": "^29.4.11"
|
|
@@ -237,7 +237,7 @@ test.describe('TC-INT-008: CLI agentic init mirrors standalone scaffolding asset
|
|
|
237
237
|
expect(cursorRulesSource).toContain('sample-store')
|
|
238
238
|
|
|
239
239
|
const specWritingSkillSource = fs.readFileSync(
|
|
240
|
-
path.join(appDir, '.ai', 'skills', 'spec-writing', 'SKILL.md'),
|
|
240
|
+
path.join(appDir, '.ai', 'skills', 'om-spec-writing', 'SKILL.md'),
|
|
241
241
|
'utf8',
|
|
242
242
|
)
|
|
243
243
|
expect(specWritingSkillSource).toContain('sample-store')
|
package/src/lib/agentic-setup.ts
CHANGED
|
@@ -69,127 +69,128 @@ function generateShared(config: AgenticConfig): void {
|
|
|
69
69
|
// .ai/skills/
|
|
70
70
|
writeTemplate(
|
|
71
71
|
srcDir,
|
|
72
|
-
'ai/skills/spec-writing/SKILL.md',
|
|
73
|
-
join(targetDir, '.ai', 'skills', 'spec-writing', 'SKILL.md'),
|
|
72
|
+
'ai/skills/om-spec-writing/SKILL.md',
|
|
73
|
+
join(targetDir, '.ai', 'skills', 'om-spec-writing', 'SKILL.md'),
|
|
74
74
|
config,
|
|
75
75
|
)
|
|
76
76
|
copyFile(
|
|
77
77
|
srcDir,
|
|
78
|
-
'ai/skills/spec-writing/references/spec-template.md',
|
|
79
|
-
join(targetDir, '.ai', 'skills', 'spec-writing', 'references', 'spec-template.md'),
|
|
78
|
+
'ai/skills/om-spec-writing/references/spec-template.md',
|
|
79
|
+
join(targetDir, '.ai', 'skills', 'om-spec-writing', 'references', 'spec-template.md'),
|
|
80
80
|
)
|
|
81
81
|
copyFile(
|
|
82
82
|
srcDir,
|
|
83
|
-
'ai/skills/spec-writing/references/spec-checklist.md',
|
|
84
|
-
join(targetDir, '.ai', 'skills', 'spec-writing', 'references', 'spec-checklist.md'),
|
|
83
|
+
'ai/skills/om-spec-writing/references/spec-checklist.md',
|
|
84
|
+
join(targetDir, '.ai', 'skills', 'om-spec-writing', 'references', 'spec-checklist.md'),
|
|
85
85
|
)
|
|
86
86
|
copyFile(
|
|
87
87
|
srcDir,
|
|
88
|
-
'ai/skills/backend-ui-design/SKILL.md',
|
|
89
|
-
join(targetDir, '.ai', 'skills', 'backend-ui-design', 'SKILL.md'),
|
|
88
|
+
'ai/skills/om-backend-ui-design/SKILL.md',
|
|
89
|
+
join(targetDir, '.ai', 'skills', 'om-backend-ui-design', 'SKILL.md'),
|
|
90
90
|
)
|
|
91
91
|
copyFile(
|
|
92
92
|
srcDir,
|
|
93
|
-
'ai/skills/backend-ui-design/references/ui-components.md',
|
|
94
|
-
join(targetDir, '.ai', 'skills', 'backend-ui-design', 'references', 'ui-components.md'),
|
|
93
|
+
'ai/skills/om-backend-ui-design/references/ui-components.md',
|
|
94
|
+
join(targetDir, '.ai', 'skills', 'om-backend-ui-design', 'references', 'ui-components.md'),
|
|
95
95
|
)
|
|
96
96
|
copyFile(
|
|
97
97
|
srcDir,
|
|
98
|
-
'ai/skills/code-review/SKILL.md',
|
|
99
|
-
join(targetDir, '.ai', 'skills', 'code-review', 'SKILL.md'),
|
|
98
|
+
'ai/skills/om-code-review/SKILL.md',
|
|
99
|
+
join(targetDir, '.ai', 'skills', 'om-code-review', 'SKILL.md'),
|
|
100
100
|
)
|
|
101
101
|
copyFile(
|
|
102
102
|
srcDir,
|
|
103
|
-
'ai/skills/code-review/references/review-checklist.md',
|
|
104
|
-
join(targetDir, '.ai', 'skills', 'code-review', 'references', 'review-checklist.md'),
|
|
103
|
+
'ai/skills/om-code-review/references/review-checklist.md',
|
|
104
|
+
join(targetDir, '.ai', 'skills', 'om-code-review', 'references', 'review-checklist.md'),
|
|
105
105
|
)
|
|
106
|
-
copyFile(srcDir, 'ai/skills/integration-builder/SKILL.md', join(targetDir, '.ai', 'skills', 'integration-builder', 'SKILL.md'))
|
|
106
|
+
copyFile(srcDir, 'ai/skills/om-integration-builder/SKILL.md', join(targetDir, '.ai', 'skills', 'om-integration-builder', 'SKILL.md'))
|
|
107
107
|
copyFile(
|
|
108
108
|
srcDir,
|
|
109
|
-
'ai/skills/integration-builder/references/adapter-contracts.md',
|
|
110
|
-
join(targetDir, '.ai', 'skills', 'integration-builder', 'references', 'adapter-contracts.md'),
|
|
109
|
+
'ai/skills/om-integration-builder/references/adapter-contracts.md',
|
|
110
|
+
join(targetDir, '.ai', 'skills', 'om-integration-builder', 'references', 'adapter-contracts.md'),
|
|
111
111
|
)
|
|
112
112
|
|
|
113
113
|
copyFile(
|
|
114
114
|
srcDir,
|
|
115
|
-
'ai/skills/system-extension/SKILL.md',
|
|
116
|
-
join(targetDir, '.ai', 'skills', 'system-extension', 'SKILL.md'),
|
|
115
|
+
'ai/skills/om-system-extension/SKILL.md',
|
|
116
|
+
join(targetDir, '.ai', 'skills', 'om-system-extension', 'SKILL.md'),
|
|
117
117
|
)
|
|
118
118
|
copyFile(
|
|
119
119
|
srcDir,
|
|
120
|
-
'ai/skills/system-extension/references/extension-contracts.md',
|
|
121
|
-
join(targetDir, '.ai', 'skills', 'system-extension', 'references', 'extension-contracts.md'),
|
|
120
|
+
'ai/skills/om-system-extension/references/extension-contracts.md',
|
|
121
|
+
join(targetDir, '.ai', 'skills', 'om-system-extension', 'references', 'extension-contracts.md'),
|
|
122
122
|
)
|
|
123
123
|
|
|
124
124
|
copyFile(
|
|
125
125
|
srcDir,
|
|
126
|
-
'ai/skills/module-scaffold/SKILL.md',
|
|
127
|
-
join(targetDir, '.ai', 'skills', 'module-scaffold', 'SKILL.md'),
|
|
126
|
+
'ai/skills/om-module-scaffold/SKILL.md',
|
|
127
|
+
join(targetDir, '.ai', 'skills', 'om-module-scaffold', 'SKILL.md'),
|
|
128
128
|
)
|
|
129
129
|
copyFile(
|
|
130
130
|
srcDir,
|
|
131
|
-
'ai/skills/module-scaffold/references/naming-conventions.md',
|
|
132
|
-
join(targetDir, '.ai', 'skills', 'module-scaffold', 'references', 'naming-conventions.md'),
|
|
131
|
+
'ai/skills/om-module-scaffold/references/naming-conventions.md',
|
|
132
|
+
join(targetDir, '.ai', 'skills', 'om-module-scaffold', 'references', 'naming-conventions.md'),
|
|
133
133
|
)
|
|
134
134
|
copyFile(
|
|
135
135
|
srcDir,
|
|
136
|
-
'ai/skills/module-scaffold/references/navigation-patterns.md',
|
|
137
|
-
join(targetDir, '.ai', 'skills', 'module-scaffold', 'references', 'navigation-patterns.md'),
|
|
136
|
+
'ai/skills/om-module-scaffold/references/navigation-patterns.md',
|
|
137
|
+
join(targetDir, '.ai', 'skills', 'om-module-scaffold', 'references', 'navigation-patterns.md'),
|
|
138
138
|
)
|
|
139
139
|
|
|
140
140
|
copyFile(
|
|
141
141
|
srcDir,
|
|
142
|
-
'ai/skills/troubleshooter/SKILL.md',
|
|
143
|
-
join(targetDir, '.ai', 'skills', 'troubleshooter', 'SKILL.md'),
|
|
142
|
+
'ai/skills/om-troubleshooter/SKILL.md',
|
|
143
|
+
join(targetDir, '.ai', 'skills', 'om-troubleshooter', 'SKILL.md'),
|
|
144
144
|
)
|
|
145
145
|
copyFile(
|
|
146
146
|
srcDir,
|
|
147
|
-
'ai/skills/troubleshooter/references/diagnostic-commands.md',
|
|
148
|
-
join(targetDir, '.ai', 'skills', 'troubleshooter', 'references', 'diagnostic-commands.md'),
|
|
147
|
+
'ai/skills/om-troubleshooter/references/diagnostic-commands.md',
|
|
148
|
+
join(targetDir, '.ai', 'skills', 'om-troubleshooter', 'references', 'diagnostic-commands.md'),
|
|
149
149
|
)
|
|
150
150
|
|
|
151
151
|
copyFile(
|
|
152
152
|
srcDir,
|
|
153
|
-
'ai/skills/eject-and-customize/SKILL.md',
|
|
154
|
-
join(targetDir, '.ai', 'skills', 'eject-and-customize', 'SKILL.md'),
|
|
153
|
+
'ai/skills/om-eject-and-customize/SKILL.md',
|
|
154
|
+
join(targetDir, '.ai', 'skills', 'om-eject-and-customize', 'SKILL.md'),
|
|
155
155
|
)
|
|
156
156
|
|
|
157
157
|
copyFile(
|
|
158
158
|
srcDir,
|
|
159
|
-
'ai/skills/data-model-design/SKILL.md',
|
|
160
|
-
join(targetDir, '.ai', 'skills', 'data-model-design', 'SKILL.md'),
|
|
159
|
+
'ai/skills/om-data-model-design/SKILL.md',
|
|
160
|
+
join(targetDir, '.ai', 'skills', 'om-data-model-design', 'SKILL.md'),
|
|
161
161
|
)
|
|
162
162
|
copyFile(
|
|
163
163
|
srcDir,
|
|
164
|
-
'ai/skills/data-model-design/references/mikro-orm-cheatsheet.md',
|
|
165
|
-
join(targetDir, '.ai', 'skills', 'data-model-design', 'references', 'mikro-orm-cheatsheet.md'),
|
|
164
|
+
'ai/skills/om-data-model-design/references/mikro-orm-cheatsheet.md',
|
|
165
|
+
join(targetDir, '.ai', 'skills', 'om-data-model-design', 'references', 'mikro-orm-cheatsheet.md'),
|
|
166
166
|
)
|
|
167
167
|
|
|
168
168
|
copyFile(
|
|
169
169
|
srcDir,
|
|
170
|
-
'ai/skills/implement-spec/SKILL.md',
|
|
171
|
-
join(targetDir, '.ai', 'skills', 'implement-spec', 'SKILL.md'),
|
|
170
|
+
'ai/skills/om-implement-spec/SKILL.md',
|
|
171
|
+
join(targetDir, '.ai', 'skills', 'om-implement-spec', 'SKILL.md'),
|
|
172
172
|
)
|
|
173
173
|
|
|
174
174
|
copyFile(
|
|
175
175
|
srcDir,
|
|
176
|
-
'ai/skills/integration-tests/SKILL.md',
|
|
177
|
-
join(targetDir, '.ai', 'skills', 'integration-tests', 'SKILL.md'),
|
|
176
|
+
'ai/skills/om-integration-tests/SKILL.md',
|
|
177
|
+
join(targetDir, '.ai', 'skills', 'om-integration-tests', 'SKILL.md'),
|
|
178
178
|
)
|
|
179
179
|
|
|
180
180
|
copyFile(
|
|
181
181
|
srcDir,
|
|
182
|
-
'ai/skills/auto-upgrade-0.4.10-to-0.5.0/SKILL.md',
|
|
183
|
-
join(targetDir, '.ai', 'skills', 'auto-upgrade-0.4.10-to-0.5.0', 'SKILL.md'),
|
|
182
|
+
'ai/skills/om-auto-upgrade-0.4.10-to-0.5.0/SKILL.md',
|
|
183
|
+
join(targetDir, '.ai', 'skills', 'om-auto-upgrade-0.4.10-to-0.5.0', 'SKILL.md'),
|
|
184
184
|
)
|
|
185
185
|
|
|
186
186
|
for (const autoSkill of [
|
|
187
|
-
'auto-create-pr',
|
|
188
|
-
'auto-continue-pr',
|
|
189
|
-
'auto-create-pr-loop',
|
|
190
|
-
'auto-continue-pr-loop',
|
|
191
|
-
'auto-review-pr',
|
|
192
|
-
'auto-fix-github',
|
|
187
|
+
'om-auto-create-pr',
|
|
188
|
+
'om-auto-continue-pr',
|
|
189
|
+
'om-auto-create-pr-loop',
|
|
190
|
+
'om-auto-continue-pr-loop',
|
|
191
|
+
'om-auto-review-pr',
|
|
192
|
+
'om-auto-fix-github',
|
|
193
|
+
'om-prepare-issue',
|
|
193
194
|
]) {
|
|
194
195
|
copyFile(
|
|
195
196
|
srcDir,
|
|
@@ -207,8 +208,8 @@ function generateShared(config: AgenticConfig): void {
|
|
|
207
208
|
|
|
208
209
|
copyFile(
|
|
209
210
|
srcDir,
|
|
210
|
-
'ai/skills/trim-unused-modules/SKILL.md',
|
|
211
|
-
join(targetDir, '.ai', 'skills', 'trim-unused-modules', 'SKILL.md'),
|
|
211
|
+
'ai/skills/om-trim-unused-modules/SKILL.md',
|
|
212
|
+
join(targetDir, '.ai', 'skills', 'om-trim-unused-modules', 'SKILL.md'),
|
|
212
213
|
)
|
|
213
214
|
|
|
214
215
|
copyFile(srcDir, 'ai/qa/tests/playwright.config.ts', join(targetDir, '.ai', 'qa', 'tests', 'playwright.config.ts'))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/agentic/shared/ai/skills/{spec-writing → om-spec-writing}/references/spec-template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|