popeye-cli 2.0.0 → 2.2.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.
Files changed (161) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/CONTRIBUTING.md +23 -2
  3. package/README.md +47 -18
  4. package/dist/adapters/gemini.js +3 -3
  5. package/dist/adapters/openai.js +2 -2
  6. package/dist/adapters/openai.js.map +1 -1
  7. package/dist/auth/gemini.js +1 -1
  8. package/dist/cli/commands/create.d.ts.map +1 -1
  9. package/dist/cli/commands/create.js +11 -5
  10. package/dist/cli/commands/create.js.map +1 -1
  11. package/dist/cli/commands/resume.d.ts.map +1 -1
  12. package/dist/cli/commands/resume.js +9 -1
  13. package/dist/cli/commands/resume.js.map +1 -1
  14. package/dist/cli/interactive.d.ts.map +1 -1
  15. package/dist/cli/interactive.js +33 -4
  16. package/dist/cli/interactive.js.map +1 -1
  17. package/dist/config/defaults.d.ts.map +1 -1
  18. package/dist/config/defaults.js +7 -2
  19. package/dist/config/defaults.js.map +1 -1
  20. package/dist/config/index.d.ts +1 -7
  21. package/dist/config/index.d.ts.map +1 -1
  22. package/dist/config/popeye-md.d.ts +32 -0
  23. package/dist/config/popeye-md.d.ts.map +1 -0
  24. package/dist/config/popeye-md.js +111 -0
  25. package/dist/config/popeye-md.js.map +1 -0
  26. package/dist/config/schema.d.ts +3 -21
  27. package/dist/config/schema.d.ts.map +1 -1
  28. package/dist/config/schema.js +21 -8
  29. package/dist/config/schema.js.map +1 -1
  30. package/dist/generators/all.d.ts.map +1 -1
  31. package/dist/generators/all.js +23 -1
  32. package/dist/generators/all.js.map +1 -1
  33. package/dist/pipeline/artifact-manager.d.ts.map +1 -1
  34. package/dist/pipeline/artifact-manager.js +3 -0
  35. package/dist/pipeline/artifact-manager.js.map +1 -1
  36. package/dist/pipeline/bridges/review-bridge.d.ts +70 -0
  37. package/dist/pipeline/bridges/review-bridge.d.ts.map +1 -0
  38. package/dist/pipeline/bridges/review-bridge.js +266 -0
  39. package/dist/pipeline/bridges/review-bridge.js.map +1 -0
  40. package/dist/pipeline/consensus/consensus-runner.js +3 -3
  41. package/dist/pipeline/consensus/consensus-runner.js.map +1 -1
  42. package/dist/pipeline/gate-engine.js +1 -1
  43. package/dist/pipeline/gate-engine.js.map +1 -1
  44. package/dist/pipeline/migration.d.ts.map +1 -1
  45. package/dist/pipeline/migration.js +3 -26
  46. package/dist/pipeline/migration.js.map +1 -1
  47. package/dist/pipeline/orchestrator.d.ts +2 -0
  48. package/dist/pipeline/orchestrator.d.ts.map +1 -1
  49. package/dist/pipeline/orchestrator.js +10 -1
  50. package/dist/pipeline/orchestrator.js.map +1 -1
  51. package/dist/pipeline/phases/implementation.d.ts.map +1 -1
  52. package/dist/pipeline/phases/implementation.js +5 -2
  53. package/dist/pipeline/phases/implementation.js.map +1 -1
  54. package/dist/pipeline/phases/intake.d.ts +1 -0
  55. package/dist/pipeline/phases/intake.d.ts.map +1 -1
  56. package/dist/pipeline/phases/intake.js +56 -8
  57. package/dist/pipeline/phases/intake.js.map +1 -1
  58. package/dist/pipeline/phases/recovery-loop.d.ts.map +1 -1
  59. package/dist/pipeline/phases/recovery-loop.js +2 -0
  60. package/dist/pipeline/phases/recovery-loop.js.map +1 -1
  61. package/dist/pipeline/phases/role-planning.d.ts.map +1 -1
  62. package/dist/pipeline/phases/role-planning.js +2 -3
  63. package/dist/pipeline/phases/role-planning.js.map +1 -1
  64. package/dist/pipeline/skills/constitution-generator.d.ts +51 -0
  65. package/dist/pipeline/skills/constitution-generator.d.ts.map +1 -0
  66. package/dist/pipeline/skills/constitution-generator.js +210 -0
  67. package/dist/pipeline/skills/constitution-generator.js.map +1 -0
  68. package/dist/pipeline/skills/generator.d.ts +65 -0
  69. package/dist/pipeline/skills/generator.d.ts.map +1 -0
  70. package/dist/pipeline/skills/generator.js +221 -0
  71. package/dist/pipeline/skills/generator.js.map +1 -0
  72. package/dist/pipeline/skills/role-map.d.ts +38 -0
  73. package/dist/pipeline/skills/role-map.d.ts.map +1 -0
  74. package/dist/pipeline/skills/role-map.js +234 -0
  75. package/dist/pipeline/skills/role-map.js.map +1 -0
  76. package/dist/pipeline/skills/types.d.ts +47 -0
  77. package/dist/pipeline/skills/types.d.ts.map +1 -0
  78. package/dist/pipeline/skills/types.js +5 -0
  79. package/dist/pipeline/skills/types.js.map +1 -0
  80. package/dist/pipeline/type-defs/artifacts.d.ts +10 -0
  81. package/dist/pipeline/type-defs/artifacts.d.ts.map +1 -1
  82. package/dist/pipeline/type-defs/artifacts.js +2 -0
  83. package/dist/pipeline/type-defs/artifacts.js.map +1 -1
  84. package/dist/pipeline/type-defs/audit.d.ts +6 -0
  85. package/dist/pipeline/type-defs/audit.d.ts.map +1 -1
  86. package/dist/pipeline/type-defs/checks.d.ts +2 -0
  87. package/dist/pipeline/type-defs/checks.d.ts.map +1 -1
  88. package/dist/pipeline/type-defs/packets.d.ts +30 -0
  89. package/dist/pipeline/type-defs/packets.d.ts.map +1 -1
  90. package/dist/pipeline/type-defs/state.d.ts +11 -0
  91. package/dist/pipeline/type-defs/state.d.ts.map +1 -1
  92. package/dist/pipeline/type-defs/state.js +2 -0
  93. package/dist/pipeline/type-defs/state.js.map +1 -1
  94. package/dist/types/consensus.d.ts +5 -1
  95. package/dist/types/consensus.d.ts.map +1 -1
  96. package/dist/types/consensus.js +15 -4
  97. package/dist/types/consensus.js.map +1 -1
  98. package/dist/types/index.d.ts +1 -1
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/types/index.js +1 -1
  101. package/dist/types/index.js.map +1 -1
  102. package/dist/types/project.d.ts +1 -1
  103. package/dist/types/project.d.ts.map +1 -1
  104. package/dist/types/project.js +39 -10
  105. package/dist/types/project.js.map +1 -1
  106. package/dist/types/workflow.d.ts +1 -7
  107. package/dist/types/workflow.d.ts.map +1 -1
  108. package/dist/types/workflow.js +1 -1
  109. package/dist/types/workflow.js.map +1 -1
  110. package/dist/upgrade/handlers.js +5 -5
  111. package/dist/upgrade/handlers.js.map +1 -1
  112. package/dist/workflow/index.d.ts.map +1 -1
  113. package/dist/workflow/index.js +18 -14
  114. package/dist/workflow/index.js.map +1 -1
  115. package/dist/workflow/website-strategy.js +1 -1
  116. package/dist/workflow/website-strategy.js.map +1 -1
  117. package/package.json +1 -1
  118. package/src/adapters/gemini.ts +3 -3
  119. package/src/adapters/openai.ts +2 -2
  120. package/src/auth/gemini.ts +1 -1
  121. package/src/cli/commands/create.ts +12 -6
  122. package/src/cli/commands/resume.ts +9 -1
  123. package/src/cli/interactive.ts +36 -4
  124. package/src/config/defaults.ts +7 -2
  125. package/src/config/popeye-md.ts +139 -0
  126. package/src/config/schema.ts +21 -8
  127. package/src/generators/all.ts +23 -1
  128. package/src/pipeline/artifact-manager.ts +3 -0
  129. package/src/pipeline/bridges/review-bridge.ts +371 -0
  130. package/src/pipeline/consensus/consensus-runner.ts +3 -3
  131. package/src/pipeline/gate-engine.ts +1 -1
  132. package/src/pipeline/migration.ts +5 -30
  133. package/src/pipeline/orchestrator.ts +14 -0
  134. package/src/pipeline/phases/implementation.ts +6 -2
  135. package/src/pipeline/phases/intake.ts +73 -10
  136. package/src/pipeline/phases/recovery-loop.ts +2 -0
  137. package/src/pipeline/phases/role-planning.ts +2 -3
  138. package/src/pipeline/skills/constitution-generator.ts +236 -0
  139. package/src/pipeline/skills/generator.ts +287 -0
  140. package/src/pipeline/skills/role-map.ts +248 -0
  141. package/src/pipeline/skills/types.ts +53 -0
  142. package/src/pipeline/type-defs/artifacts.ts +2 -0
  143. package/src/pipeline/type-defs/state.ts +2 -0
  144. package/src/types/consensus.ts +16 -4
  145. package/src/types/index.ts +1 -0
  146. package/src/types/project.ts +39 -10
  147. package/src/types/workflow.ts +1 -1
  148. package/src/upgrade/handlers.ts +5 -5
  149. package/src/workflow/index.ts +18 -14
  150. package/src/workflow/website-strategy.ts +1 -1
  151. package/tests/cli/model-command.test.ts +19 -9
  152. package/tests/config/config.test.ts +3 -3
  153. package/tests/config/popeye-md.test.ts +168 -0
  154. package/tests/pipeline/bridges/review-bridge.test.ts +243 -0
  155. package/tests/pipeline/migration.test.ts +4 -3
  156. package/tests/pipeline/session-guidance.test.ts +205 -0
  157. package/tests/pipeline/skills/constitution-generator.test.ts +201 -0
  158. package/tests/pipeline/skills/generator.test.ts +213 -0
  159. package/tests/pipeline/skills/role-map.test.ts +198 -0
  160. package/tests/types/consensus.test.ts +1 -1
  161. package/tests/workflow/pipeline-bootstrap.test.ts +162 -0
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Project-specific skill generation.
3
+ * Uses a single AI call to generate tailored system prompts for active roles,
4
+ * then writes them as .md files with YAML frontmatter to the project's skills/ dir.
5
+ * Falls back to defaults with project-specific constraints on AI failure.
6
+ */
7
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ import { z } from 'zod';
10
+ import { DEFAULT_SKILLS } from './defaults.js';
11
+ import { inferTechStack, getTemplateConstraints } from './role-map.js';
12
+ // ─── Constants ──────────────────────────────────────────
13
+ const PIPELINE_VERSION = '1.0';
14
+ const MARKER_FILENAME = '.popeye-skills-generated.json';
15
+ /** Zod schema for validating AI-generated skill prompts */
16
+ const SkillPromptsResponseSchema = z.record(z.string(), z.string());
17
+ // ─── Public API ─────────────────────────────────────────
18
+ /**
19
+ * Generate project-specific skill .md files for all active roles.
20
+ * Skips roles that already have a .md file in the skills directory.
21
+ * Stores the raw AI response as a skill_generation_log artifact.
22
+ *
23
+ * @param context - Skill generation context with project details
24
+ * @param artifactManager - Optional artifact manager for logging
25
+ */
26
+ export async function generateProjectSkills(context, artifactManager) {
27
+ const { activeRoles, skillsDir } = context;
28
+ // Ensure skills directory exists
29
+ if (!existsSync(skillsDir)) {
30
+ mkdirSync(skillsDir, { recursive: true });
31
+ }
32
+ // Determine which roles need generation
33
+ const rolesToGenerate = activeRoles.filter((role) => shouldGenerateSkill(skillsDir, role));
34
+ if (rolesToGenerate.length === 0) {
35
+ return;
36
+ }
37
+ // Infer tech stack
38
+ const techStack = inferTechStack(context.language, context.snapshot, context.expandedSpec);
39
+ // Attempt AI generation
40
+ let aiPrompts = {};
41
+ let aiGenerated = false;
42
+ try {
43
+ const prompt = buildSkillGenPrompt(context, rolesToGenerate, techStack);
44
+ const { createClient } = await import('../../adapters/openai.js');
45
+ const client = await createClient();
46
+ const completion = await client.chat.completions.create({
47
+ model: 'gpt-4.1',
48
+ messages: [{ role: 'user', content: prompt }],
49
+ temperature: 0.4,
50
+ max_tokens: 4096,
51
+ });
52
+ const rawResponse = completion.choices[0]?.message?.content ?? '';
53
+ // Store raw AI response as artifact
54
+ if (artifactManager) {
55
+ artifactManager.createAndStoreText('skill_generation_log', rawResponse, 'INTAKE');
56
+ }
57
+ aiPrompts = parseSkillPrompts(rawResponse, rolesToGenerate);
58
+ aiGenerated = Object.keys(aiPrompts).length > 0;
59
+ }
60
+ catch {
61
+ // AI failure is non-fatal — fall through to defaults with project constraints
62
+ aiGenerated = false;
63
+ }
64
+ // Write skill files
65
+ for (const role of rolesToGenerate) {
66
+ const defaultSkill = DEFAULT_SKILLS[role];
67
+ const systemPrompt = aiPrompts[role] ?? defaultSkill?.systemPrompt ?? '';
68
+ const constraints = getTemplateConstraints(role, techStack);
69
+ const allConstraints = [
70
+ ...(defaultSkill?.constraints ?? []),
71
+ ...constraints,
72
+ ];
73
+ // Deduplicate constraints
74
+ const uniqueConstraints = [...new Set(allConstraints)];
75
+ const dependsOn = defaultSkill?.depends_on ?? [];
76
+ const requiredOutputs = defaultSkill?.required_outputs ?? [];
77
+ const markdown = renderSkillMarkdown(role, systemPrompt, uniqueConstraints, requiredOutputs, dependsOn);
78
+ const filePath = join(skillsDir, `${role}.md`);
79
+ writeFileSync(filePath, markdown, 'utf-8');
80
+ }
81
+ // Write generation marker
82
+ const marker = {
83
+ timestamp: new Date().toISOString(),
84
+ pipelineVersion: PIPELINE_VERSION,
85
+ activeRoles: activeRoles.map(String),
86
+ techStack,
87
+ aiGenerated,
88
+ };
89
+ writeGenerationMarker(skillsDir, marker);
90
+ }
91
+ // ─── Skip Logic ─────────────────────────────────────────
92
+ /**
93
+ * Check if a skill file should be generated for a role.
94
+ * Returns false if the role already has a .md file (hand-written or prior run).
95
+ *
96
+ * @param skillsDir - Path to the skills directory
97
+ * @param role - Pipeline role to check
98
+ * @returns true if the role needs a generated skill file
99
+ */
100
+ export function shouldGenerateSkill(skillsDir, role) {
101
+ const mdPath = join(skillsDir, `${role}.md`);
102
+ return !existsSync(mdPath);
103
+ }
104
+ // ─── Prompt Building ────────────────────────────────────
105
+ /**
106
+ * Build the AI prompt that requests system prompts for all roles at once.
107
+ *
108
+ * @param context - Generation context
109
+ * @param roles - Roles needing prompts
110
+ * @param techStack - Inferred tech stack
111
+ * @returns Formatted prompt string
112
+ */
113
+ export function buildSkillGenPrompt(context, roles, techStack) {
114
+ const techDesc = Object.entries(techStack)
115
+ .filter(([, v]) => v)
116
+ .map(([k, v]) => `- ${k}: ${v}`)
117
+ .join('\n');
118
+ const roleDescriptions = roles.map((role) => {
119
+ const defaultSkill = DEFAULT_SKILLS[role];
120
+ return `- ${role}: ${defaultSkill?.systemPrompt.slice(0, 100) ?? 'Pipeline role'}...`;
121
+ }).join('\n');
122
+ return `You are generating project-specific skill definitions for an AI pipeline.
123
+
124
+ ## Project: ${context.projectName}
125
+ ## Tech Stack:
126
+ ${techDesc}
127
+
128
+ ## Expanded Specification (summary):
129
+ ${context.expandedSpec.slice(0, 3000)}
130
+
131
+ ${context.sessionGuidance ? `## Session Guidance:\n${context.sessionGuidance.slice(0, 1000)}\n` : ''}
132
+ ## Roles needing prompts:
133
+ ${roleDescriptions}
134
+
135
+ ## Instructions:
136
+ Generate a tailored system prompt for each role listed above. Each prompt should:
137
+ 1. Reference the specific tech stack (e.g., "FastAPI async endpoints" not "API endpoints")
138
+ 2. Reference the project name
139
+ 3. Be 3-6 sentences
140
+ 4. Focus on the role's responsibilities in this specific project context
141
+
142
+ Respond with ONLY a JSON object mapping role names to their system prompts. Example:
143
+ {"BACKEND_PROGRAMMER": "You are the Backend Programmer for ProjectName. You implement..."}
144
+
145
+ JSON response:`;
146
+ }
147
+ // ─── Response Parsing ───────────────────────────────────
148
+ /**
149
+ * Parse and validate the AI response as a JSON record of role prompts.
150
+ * Falls back per-role: missing or invalid entries are excluded.
151
+ *
152
+ * @param response - Raw AI response text
153
+ * @param expectedRoles - Roles we requested prompts for
154
+ * @returns Validated record of role -> system prompt
155
+ */
156
+ export function parseSkillPrompts(response, expectedRoles) {
157
+ try {
158
+ // Extract JSON from response (may be wrapped in markdown code fences)
159
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
160
+ if (!jsonMatch)
161
+ return {};
162
+ const parsed = JSON.parse(jsonMatch[0]);
163
+ const validated = SkillPromptsResponseSchema.parse(parsed);
164
+ // Filter to only expected roles with non-empty prompts
165
+ const result = {};
166
+ for (const role of expectedRoles) {
167
+ if (validated[role] && validated[role].trim().length > 10) {
168
+ result[role] = validated[role].trim();
169
+ }
170
+ }
171
+ return result;
172
+ }
173
+ catch {
174
+ return {};
175
+ }
176
+ }
177
+ // ─── Markdown Rendering ─────────────────────────────────
178
+ /**
179
+ * Render a skill definition as a Markdown file with YAML frontmatter.
180
+ * Format matches what the SkillLoader's parseSkillMarkdown() expects.
181
+ *
182
+ * @param role - Pipeline role
183
+ * @param systemPrompt - The system prompt body
184
+ * @param constraints - Combined constraint identifiers
185
+ * @param requiredOutputs - Required output types
186
+ * @param dependsOn - Upstream role dependencies
187
+ * @returns Complete markdown string
188
+ */
189
+ export function renderSkillMarkdown(role, systemPrompt, constraints, requiredOutputs, dependsOn) {
190
+ const lines = [
191
+ '---',
192
+ `role: ${role}`,
193
+ 'version: 1.0-project',
194
+ 'required_outputs:',
195
+ ...requiredOutputs.map((o) => ` - ${o}`),
196
+ 'constraints:',
197
+ ...constraints.map((c) => ` - ${c}`),
198
+ ];
199
+ if (dependsOn.length > 0) {
200
+ lines.push('depends_on:');
201
+ for (const dep of dependsOn) {
202
+ lines.push(` - ${dep}`);
203
+ }
204
+ }
205
+ lines.push('---');
206
+ lines.push(systemPrompt);
207
+ lines.push('');
208
+ return lines.join('\n');
209
+ }
210
+ // ─── Marker File ────────────────────────────────────────
211
+ /**
212
+ * Write the generation marker file to track what was generated.
213
+ *
214
+ * @param skillsDir - Path to the skills directory
215
+ * @param marker - Marker data to persist
216
+ */
217
+ export function writeGenerationMarker(skillsDir, marker) {
218
+ const markerPath = join(skillsDir, MARKER_FILENAME);
219
+ writeFileSync(markerPath, JSON.stringify(marker, null, 2), 'utf-8');
220
+ }
221
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/pipeline/skills/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvE,2DAA2D;AAE3D,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAExD,2DAA2D;AAC3D,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEpE,2DAA2D;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA+B,EAC/B,eAAiC;IAEjC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE3C,iCAAiC;IACjC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,wCAAwC;IACxC,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3F,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3F,wBAAwB;IACxB,IAAI,SAAS,GAA2B,EAAE,CAAC;IAC3C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QACxE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACtD,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAElE,oCAAoC;QACpC,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,kBAAkB,CAChC,sBAAsB,EACtB,WAAW,EACX,QAAQ,CACT,CAAC;QACJ,CAAC;QAED,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC5D,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,EAAE,YAAY,IAAI,EAAE,CAAC;QACzE,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG;YACrB,GAAG,CAAC,YAAY,EAAE,WAAW,IAAI,EAAE,CAAC;YACpC,GAAG,WAAW;SACf,CAAC;QACF,0BAA0B;QAC1B,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,YAAY,EAAE,UAAU,IAAI,EAAE,CAAC;QACjD,MAAM,eAAe,GAAG,YAAY,EAAE,gBAAgB,IAAI,EAAE,CAAC;QAE7D,MAAM,QAAQ,GAAG,mBAAmB,CAClC,IAAI,EACJ,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,SAAS,CACV,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAC/C,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAA2B;QACrC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,eAAe,EAAE,gBAAgB;QACjC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QACpC,SAAS;QACT,WAAW;KACZ,CAAC;IACF,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,2DAA2D;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,IAAkB;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,2DAA2D;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA+B,EAC/B,KAAqB,EACrB,SAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACpB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;SAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,KAAK,IAAI,KAAK,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe,KAAK,CAAC;IACxF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;cAEK,OAAO,CAAC,WAAW;;EAE/B,QAAQ;;;EAGR,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;;EAEnC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;EAElG,gBAAgB;;;;;;;;;;;;eAYH,CAAC;AAChB,CAAC;AAED,2DAA2D;AAE3D;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,aAA6B;IAE7B,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3D,uDAAuD;QACvD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,2DAA2D;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAkB,EAClB,YAAoB,EACpB,WAAqB,EACrB,eAAyB,EACzB,SAAyB;IAEzB,MAAM,KAAK,GAAa;QACtB,KAAK;QACL,SAAS,IAAI,EAAE;QACf,sBAAsB;QACtB,mBAAmB;QACnB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,cAAc;QACd,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACtC,CAAC;IAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,2DAA2D;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,MAA8B;IAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACpD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Shared role mapping and tech stack inference.
3
+ * Extracted from migration.ts to be the single source of truth for
4
+ * language-to-role mapping and tech stack detection.
5
+ */
6
+ import type { OutputLanguage } from '../../types/project.js';
7
+ import type { PipelineRole, RepoSnapshot } from '../types.js';
8
+ import type { TechStack } from './types.js';
9
+ /** Roles that always participate regardless of language */
10
+ export declare const SUPPORT_ROLES: PipelineRole[];
11
+ /** All possible implementation roles across all languages */
12
+ export declare const IMPLEMENTATION_ROLES: PipelineRole[];
13
+ /**
14
+ * Determine the active roles for a given language.
15
+ *
16
+ * @param language - The project's output language
17
+ * @returns All roles (support + implementation) active for this language
18
+ */
19
+ export declare function getActiveRoles(language: OutputLanguage): PipelineRole[];
20
+ /**
21
+ * Infer the project's tech stack from available signals.
22
+ * Priority: snapshot deps > spec mentions > language defaults.
23
+ *
24
+ * @param language - The project's output language
25
+ * @param snapshot - Optional repo snapshot with config file data
26
+ * @param expandedSpec - Optional expanded specification text
27
+ * @returns Inferred tech stack
28
+ */
29
+ export declare function inferTechStack(language: OutputLanguage, snapshot?: RepoSnapshot, expandedSpec?: string): TechStack;
30
+ /**
31
+ * Get deterministic template constraints for a role based on tech stack.
32
+ *
33
+ * @param role - Pipeline role
34
+ * @param techStack - Inferred tech stack
35
+ * @returns Array of constraint identifiers
36
+ */
37
+ export declare function getTemplateConstraints(role: PipelineRole, techStack: TechStack): string[];
38
+ //# sourceMappingURL=role-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-map.d.ts","sourceRoot":"","sources":["../../../src/pipeline/skills/role-map.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,2DAA2D;AAC3D,eAAO,MAAM,aAAa,EAAE,YAAY,EAUvC,CAAC;AAcF,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAG9C,CAAC;AAIF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY,EAAE,CAGvE;AAuED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,YAAY,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,SAAS,CAsDX;AA4CD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,CAIzF"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Shared role mapping and tech stack inference.
3
+ * Extracted from migration.ts to be the single source of truth for
4
+ * language-to-role mapping and tech stack detection.
5
+ */
6
+ // ─── Role Categories ────────────────────────────────────
7
+ /** Roles that always participate regardless of language */
8
+ export const SUPPORT_ROLES = [
9
+ 'DISPATCHER',
10
+ 'ARCHITECT',
11
+ 'QA_TESTER',
12
+ 'REVIEWER',
13
+ 'ARBITRATOR',
14
+ 'DEBUGGER',
15
+ 'AUDITOR',
16
+ 'JOURNALIST',
17
+ 'RELEASE_MANAGER',
18
+ ];
19
+ /** Language-specific implementation role sets */
20
+ const IMPLEMENTATION_ROLE_MAP = {
21
+ python: ['DB_EXPERT', 'BACKEND_PROGRAMMER'],
22
+ typescript: ['FRONTEND_PROGRAMMER', 'UI_UX_SPECIALIST'],
23
+ fullstack: ['DB_EXPERT', 'BACKEND_PROGRAMMER', 'FRONTEND_PROGRAMMER', 'UI_UX_SPECIALIST'],
24
+ website: ['WEBSITE_PROGRAMMER', 'UI_UX_SPECIALIST', 'MARKETING_EXPERT', 'SOCIAL_EXPERT'],
25
+ all: [
26
+ 'DB_EXPERT', 'BACKEND_PROGRAMMER', 'FRONTEND_PROGRAMMER',
27
+ 'WEBSITE_PROGRAMMER', 'UI_UX_SPECIALIST', 'MARKETING_EXPERT', 'SOCIAL_EXPERT',
28
+ ],
29
+ };
30
+ /** All possible implementation roles across all languages */
31
+ export const IMPLEMENTATION_ROLES = [
32
+ 'DB_EXPERT', 'BACKEND_PROGRAMMER', 'FRONTEND_PROGRAMMER',
33
+ 'WEBSITE_PROGRAMMER', 'UI_UX_SPECIALIST', 'MARKETING_EXPERT', 'SOCIAL_EXPERT',
34
+ ];
35
+ // ─── Active Role Selection ──────────────────────────────
36
+ /**
37
+ * Determine the active roles for a given language.
38
+ *
39
+ * @param language - The project's output language
40
+ * @returns All roles (support + implementation) active for this language
41
+ */
42
+ export function getActiveRoles(language) {
43
+ const implRoles = IMPLEMENTATION_ROLE_MAP[language] ?? ['BACKEND_PROGRAMMER'];
44
+ return [...SUPPORT_ROLES, ...implRoles];
45
+ }
46
+ // ─── Tech Stack Inference ───────────────────────────────
47
+ /** Framework detection patterns for snapshot config key_fields */
48
+ const FRAMEWORK_PATTERNS = {
49
+ fastapi: { backend: 'FastAPI' },
50
+ django: { backend: 'Django' },
51
+ flask: { backend: 'Flask' },
52
+ express: { backend: 'Express' },
53
+ nestjs: { backend: 'NestJS' },
54
+ 'next': { frontend: 'Next.js' },
55
+ nuxt: { frontend: 'Nuxt' },
56
+ react: { frontend: 'React' },
57
+ vue: { frontend: 'Vue' },
58
+ svelte: { frontend: 'SvelteKit' },
59
+ angular: { frontend: 'Angular' },
60
+ sqlalchemy: { orm: 'SQLAlchemy' },
61
+ prisma: { orm: 'Prisma' },
62
+ drizzle: { orm: 'Drizzle' },
63
+ typeorm: { orm: 'TypeORM' },
64
+ sequelize: { orm: 'Sequelize' },
65
+ postgresql: { database: 'PostgreSQL' },
66
+ postgres: { database: 'PostgreSQL' },
67
+ mysql: { database: 'MySQL' },
68
+ sqlite: { database: 'SQLite' },
69
+ mongodb: { database: 'MongoDB' },
70
+ mongoose: { database: 'MongoDB' },
71
+ pytest: { testing: 'Pytest' },
72
+ vitest: { testing: 'Vitest' },
73
+ jest: { testing: 'Jest' },
74
+ mocha: { testing: 'Mocha' },
75
+ };
76
+ /** Language-based defaults when no signals are available */
77
+ const LANGUAGE_DEFAULTS = {
78
+ python: {
79
+ language: 'Python 3.11+',
80
+ backend: 'FastAPI',
81
+ database: 'PostgreSQL',
82
+ orm: 'SQLAlchemy',
83
+ testing: 'Pytest',
84
+ },
85
+ typescript: {
86
+ language: 'TypeScript 5.x',
87
+ frontend: 'React + Vite',
88
+ testing: 'Vitest',
89
+ },
90
+ fullstack: {
91
+ language: 'TypeScript 5.x / Python 3.11+',
92
+ backend: 'FastAPI',
93
+ frontend: 'React + Vite',
94
+ database: 'PostgreSQL',
95
+ orm: 'SQLAlchemy',
96
+ testing: 'Vitest + Pytest',
97
+ },
98
+ website: {
99
+ language: 'TypeScript 5.x',
100
+ frontend: 'Next.js',
101
+ testing: 'Vitest',
102
+ },
103
+ all: {
104
+ language: 'TypeScript 5.x / Python 3.11+',
105
+ backend: 'FastAPI',
106
+ frontend: 'React + Vite',
107
+ database: 'PostgreSQL',
108
+ orm: 'SQLAlchemy',
109
+ testing: 'Vitest + Pytest',
110
+ },
111
+ };
112
+ /**
113
+ * Infer the project's tech stack from available signals.
114
+ * Priority: snapshot deps > spec mentions > language defaults.
115
+ *
116
+ * @param language - The project's output language
117
+ * @param snapshot - Optional repo snapshot with config file data
118
+ * @param expandedSpec - Optional expanded specification text
119
+ * @returns Inferred tech stack
120
+ */
121
+ export function inferTechStack(language, snapshot, expandedSpec) {
122
+ const defaults = LANGUAGE_DEFAULTS[language] ?? LANGUAGE_DEFAULTS.python;
123
+ const detected = { language: defaults.language };
124
+ // 1. Scan snapshot config_files key_fields for dependency signals
125
+ // Only set each field once — first match wins per field.
126
+ if (snapshot?.config_files) {
127
+ for (const configFile of snapshot.config_files) {
128
+ const keyFieldsStr = JSON.stringify(configFile.key_fields).toLowerCase();
129
+ for (const [pattern, stack] of Object.entries(FRAMEWORK_PATTERNS)) {
130
+ if (keyFieldsStr.includes(pattern)) {
131
+ for (const [key, value] of Object.entries(stack)) {
132
+ if (!detected[key]) {
133
+ detected[key] = value;
134
+ }
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ // 2. Use snapshot test_framework / build_tool if available
141
+ if (snapshot?.test_framework) {
142
+ const tfLower = snapshot.test_framework.toLowerCase();
143
+ for (const [pattern, stack] of Object.entries(FRAMEWORK_PATTERNS)) {
144
+ if (tfLower.includes(pattern) && stack.testing) {
145
+ detected.testing = stack.testing;
146
+ }
147
+ }
148
+ }
149
+ // 3. Scan expandedSpec for framework mentions
150
+ if (expandedSpec) {
151
+ const specLower = expandedSpec.toLowerCase();
152
+ for (const [pattern, stack] of Object.entries(FRAMEWORK_PATTERNS)) {
153
+ if (specLower.includes(pattern)) {
154
+ // Only fill in gaps — snapshot deps take priority
155
+ for (const [key, value] of Object.entries(stack)) {
156
+ if (!detected[key]) {
157
+ detected[key] = value;
158
+ }
159
+ }
160
+ }
161
+ }
162
+ }
163
+ // 4. Fill remaining gaps with language defaults
164
+ for (const [key, value] of Object.entries(defaults)) {
165
+ if (!detected[key] && value) {
166
+ detected[key] = value;
167
+ }
168
+ }
169
+ return detected;
170
+ }
171
+ // ─── Template Constraints ───────────────────────────────
172
+ /** Governance constraints added to every generated skill */
173
+ const GOVERNANCE_CONSTRAINTS = [
174
+ 'must_follow_master_plan',
175
+ 'must_follow_architecture',
176
+ 'conflicts_require_change_request',
177
+ ];
178
+ /** Tech-stack-specific constraints per role */
179
+ const TECH_CONSTRAINTS = {
180
+ BACKEND_PROGRAMMER: (ts) => {
181
+ const c = [];
182
+ if (ts.backend?.includes('FastAPI'))
183
+ c.push('fastapi_async_required', 'pydantic_validation');
184
+ if (ts.backend?.includes('Django'))
185
+ c.push('django_orm_required');
186
+ if (ts.backend?.includes('Express'))
187
+ c.push('express_middleware_pattern');
188
+ if (ts.testing?.includes('Pytest'))
189
+ c.push('pytest_testing');
190
+ if (ts.testing?.includes('Vitest') || ts.testing?.includes('Jest'))
191
+ c.push('unit_test_required');
192
+ return c;
193
+ },
194
+ FRONTEND_PROGRAMMER: (ts) => {
195
+ const c = [];
196
+ if (ts.frontend?.includes('React'))
197
+ c.push('react_component_pattern');
198
+ if (ts.frontend?.includes('Next'))
199
+ c.push('nextjs_app_router');
200
+ if (ts.testing?.includes('Vitest') || ts.testing?.includes('Jest'))
201
+ c.push('component_testing');
202
+ return c;
203
+ },
204
+ DB_EXPERT: (ts) => {
205
+ const c = [];
206
+ if (ts.database?.includes('PostgreSQL'))
207
+ c.push('postgresql_best_practices');
208
+ if (ts.orm?.includes('SQLAlchemy'))
209
+ c.push('sqlalchemy_migrations');
210
+ if (ts.orm?.includes('Prisma'))
211
+ c.push('prisma_schema');
212
+ return c;
213
+ },
214
+ WEBSITE_PROGRAMMER: (ts) => {
215
+ const c = [];
216
+ if (ts.frontend?.includes('Next'))
217
+ c.push('nextjs_ssg_ssr');
218
+ c.push('seo_required', 'responsive_design');
219
+ return c;
220
+ },
221
+ };
222
+ /**
223
+ * Get deterministic template constraints for a role based on tech stack.
224
+ *
225
+ * @param role - Pipeline role
226
+ * @param techStack - Inferred tech stack
227
+ * @returns Array of constraint identifiers
228
+ */
229
+ export function getTemplateConstraints(role, techStack) {
230
+ const techFn = TECH_CONSTRAINTS[role];
231
+ const techConstraints = techFn ? techFn(techStack) : [];
232
+ return [...GOVERNANCE_CONSTRAINTS, ...techConstraints];
233
+ }
234
+ //# sourceMappingURL=role-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-map.js","sourceRoot":"","sources":["../../../src/pipeline/skills/role-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Type definitions for project-specific skill and constitution generation.
3
+ */
4
+ import type { OutputLanguage } from '../../types/project.js';
5
+ import type { PipelineRole, RepoSnapshot } from '../types.js';
6
+ export interface TechStack {
7
+ backend?: string;
8
+ frontend?: string;
9
+ database?: string;
10
+ orm?: string;
11
+ testing?: string;
12
+ language?: string;
13
+ }
14
+ export interface SkillGenerationContext {
15
+ language: OutputLanguage;
16
+ expandedSpec: string;
17
+ snapshot: RepoSnapshot;
18
+ userDocs?: string;
19
+ sessionGuidance?: string;
20
+ brandContext?: {
21
+ logoPath?: string;
22
+ primaryColor?: string;
23
+ };
24
+ activeRoles: PipelineRole[];
25
+ skillsDir: string;
26
+ projectName: string;
27
+ }
28
+ export interface ConstitutionContext {
29
+ language: OutputLanguage;
30
+ projectName: string;
31
+ techStack: TechStack;
32
+ expandedSpec: string;
33
+ sessionGuidance?: string;
34
+ brandContext?: {
35
+ logoPath?: string;
36
+ primaryColor?: string;
37
+ };
38
+ skillsDir: string;
39
+ }
40
+ export interface SkillsGenerationMarker {
41
+ timestamp: string;
42
+ pipelineVersion: string;
43
+ activeRoles: string[];
44
+ techStack: TechStack;
45
+ aiGenerated: boolean;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pipeline/skills/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI9D,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for project-specific skill and constitution generation.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/pipeline/skills/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -27,6 +27,8 @@ export declare const ArtifactTypeSchema: z.ZodEnum<{
27
27
  resolved_commands: "resolved_commands";
28
28
  constitution: "constitution";
29
29
  change_request: "change_request";
30
+ additional_context: "additional_context";
31
+ skill_generation_log: "skill_generation_log";
30
32
  }>;
31
33
  export type ArtifactType = z.infer<typeof ArtifactTypeSchema>;
32
34
  export declare const ContentTypeSchema: z.ZodEnum<{
@@ -65,6 +67,8 @@ export declare const ArtifactRefSchema: z.ZodObject<{
65
67
  resolved_commands: "resolved_commands";
66
68
  constitution: "constitution";
67
69
  change_request: "change_request";
70
+ additional_context: "additional_context";
71
+ skill_generation_log: "skill_generation_log";
68
72
  }>;
69
73
  }, z.core.$strip>;
70
74
  export type ArtifactRef = z.infer<typeof ArtifactRefSchema>;
@@ -96,6 +100,8 @@ export declare const ArtifactEntrySchema: z.ZodObject<{
96
100
  resolved_commands: "resolved_commands";
97
101
  constitution: "constitution";
98
102
  change_request: "change_request";
103
+ additional_context: "additional_context";
104
+ skill_generation_log: "skill_generation_log";
99
105
  }>;
100
106
  phase: z.ZodEnum<{
101
107
  INTAKE: "INTAKE";
@@ -158,6 +164,8 @@ export declare const DependencyEdgeSchema: z.ZodObject<{
158
164
  resolved_commands: "resolved_commands";
159
165
  constitution: "constitution";
160
166
  change_request: "change_request";
167
+ additional_context: "additional_context";
168
+ skill_generation_log: "skill_generation_log";
161
169
  }>;
162
170
  }, z.core.$strip>;
163
171
  to: z.ZodObject<{
@@ -190,6 +198,8 @@ export declare const DependencyEdgeSchema: z.ZodObject<{
190
198
  resolved_commands: "resolved_commands";
191
199
  constitution: "constitution";
192
200
  change_request: "change_request";
201
+ additional_context: "additional_context";
202
+ skill_generation_log: "skill_generation_log";
193
203
  }>;
194
204
  }, z.core.$strip>;
195
205
  relationship: z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/pipeline/type-defs/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;EAyB7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,eAAO,MAAM,iBAAiB;;;EAA+B,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,sDAAsD;AACtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,wDAAwD;AACxD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAY9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,wCAAwC;AACxC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../../src/pipeline/type-defs/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,eAAO,MAAM,iBAAiB;;;EAA+B,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,sDAAsD;AACtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,wDAAwD;AACxD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAY9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAIhE,wCAAwC;AACxC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -29,6 +29,8 @@ export const ArtifactTypeSchema = z.enum([
29
29
  'resolved_commands',
30
30
  'constitution',
31
31
  'change_request',
32
+ 'additional_context',
33
+ 'skill_generation_log',
32
34
  ]);
33
35
  // ─── Content Type ────────────────────────────────────────
34
36
  export const ContentTypeSchema = z.enum(['markdown', 'json']);
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/pipeline/type-defs/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,4DAA4D;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,aAAa;IACb,cAAc;IACd,WAAW;IACX,WAAW;IACX,aAAa;IACb,cAAc;IACd,YAAY;IACZ,sBAAsB;IACtB,eAAe;IACf,YAAY;IACZ,UAAU;IACV,eAAe;IACf,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,cAAc;IACd,gBAAgB;CACjB,CAAC,CAAC;AAGH,4DAA4D;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAG9D,4DAA4D;AAE5D,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,kBAAkB;CACzB,CAAC,CAAC;AAGH,4DAA4D;AAE5D,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,YAAY,EAAE,iBAAiB;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAGH,4DAA4D;AAE5D,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,iBAAiB;IACrB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;CACjE,CAAC,CAAC"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/pipeline/type-defs/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,4DAA4D;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,aAAa;IACb,cAAc;IACd,WAAW;IACX,WAAW;IACX,aAAa;IACb,cAAc;IACd,YAAY;IACZ,sBAAsB;IACtB,eAAe;IACf,YAAY;IACZ,UAAU;IACV,eAAe;IACf,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,cAAc;IACd,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;CACvB,CAAC,CAAC;AAGH,4DAA4D;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAG9D,4DAA4D;AAE5D,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,kBAAkB;CACzB,CAAC,CAAC;AAGH,4DAA4D;AAE5D,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,mBAAmB;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,YAAY,EAAE,iBAAiB;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAGH,4DAA4D;AAE5D,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,iBAAiB;IACrB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;CACjE,CAAC,CAAC"}