chati-dev 4.2.2 → 4.3.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 (220) hide show
  1. package/README.md +80 -53
  2. package/bin/chati.js +150 -5
  3. package/framework/agents/build/dev.md +509 -76
  4. package/framework/agents/deploy/devops.md +40 -25
  5. package/framework/agents/discover/brief.md +156 -22
  6. package/framework/agents/discover/brownfield-wu.md +24 -14
  7. package/framework/agents/discover/greenfield-wu.md +100 -14
  8. package/framework/agents/plan/architect-data-engineer.md +6 -6
  9. package/framework/agents/plan/architect-system.md +46 -12
  10. package/framework/agents/plan/architect.md +40 -20
  11. package/framework/agents/plan/detail.md +36 -24
  12. package/framework/agents/plan/phases.md +36 -26
  13. package/framework/agents/plan/tasks.md +114 -33
  14. package/framework/agents/plan/ux-brand-architect.md +240 -8
  15. package/framework/agents/plan/ux-component-engineer.md +28 -13
  16. package/framework/agents/plan/ux-researcher.md +7 -6
  17. package/framework/agents/plan/ux.md +55 -22
  18. package/framework/agents/quality/qa-implementation.md +143 -74
  19. package/framework/agents/quality/qa-planning.md +115 -42
  20. package/framework/agents/quality/qa-visual.md +439 -0
  21. package/framework/agents/shared/visualizer.md +128 -0
  22. package/framework/config.yaml +7 -6
  23. package/framework/constitution.md +127 -44
  24. package/framework/context/governance.md +12 -7
  25. package/framework/context/quality.md +6 -5
  26. package/framework/context/root.md +6 -6
  27. package/framework/data/entity-registry.yaml +377 -4
  28. package/framework/data/model-limits.json +19 -0
  29. package/framework/domains/agents/qa-visual.yaml +74 -0
  30. package/framework/domains/constitution.yaml +46 -2
  31. package/framework/domains/workflows/greenfield-fullstack.yaml +2 -2
  32. package/framework/hooks/advance-trigger.js +131 -0
  33. package/framework/hooks/brief-validator.js +83 -0
  34. package/framework/hooks/constitution-guard.js +24 -5
  35. package/framework/hooks/license-guard.js +62 -27
  36. package/framework/hooks/mode-governance.js +13 -2
  37. package/framework/hooks/model-governance.js +1 -0
  38. package/framework/hooks/post-dev.js +207 -0
  39. package/framework/hooks/prism-engine.js +274 -105
  40. package/framework/hooks/reasoning-escalator.js +371 -0
  41. package/framework/hooks/reference-trigger.js +117 -0
  42. package/framework/hooks/session-digest.js +50 -1
  43. package/framework/hooks/settings.json +32 -1
  44. package/framework/hooks/style-guard.js +25 -6
  45. package/framework/hooks/team-quality-gate.js +19 -12
  46. package/framework/hooks/undercover-guard.js +4 -2
  47. package/framework/i18n/en.yaml +3 -3
  48. package/framework/i18n/es.yaml +3 -3
  49. package/framework/i18n/fr.yaml +3 -3
  50. package/framework/i18n/pt.yaml +3 -3
  51. package/framework/intelligence/context-engine.md +4 -5
  52. package/framework/intelligence/decision-engine.md +1 -1
  53. package/framework/intelligence/hooks-performance.md +3 -3
  54. package/framework/migrations/v1.0-to-v1.1.yaml +1 -1
  55. package/framework/migrations/v1.4-to-v2.0.yaml +11 -11
  56. package/framework/migrations/v4.0-to-v4.1.yaml +2 -2
  57. package/framework/migrations/v4.2-to-v4.3.yaml +29 -0
  58. package/framework/orchestrator/chati-router.js +387 -0
  59. package/framework/orchestrator/chati-update.md +40 -40
  60. package/framework/orchestrator/chati.md +294 -94
  61. package/framework/scaffold/motion-premium/README.md +89 -0
  62. package/framework/scaffold/motion-premium/app/globals.css.template +400 -0
  63. package/framework/scaffold/motion-premium/app/layout.tsx.template +110 -0
  64. package/framework/scaffold/motion-premium/components/animation/BackgroundCrossfadeProvider.tsx.template +170 -0
  65. package/framework/scaffold/motion-premium/components/animation/LenisProvider.tsx.template +49 -0
  66. package/framework/scaffold/motion-premium/components/animation/PageTransitionWrapper.tsx.template +83 -0
  67. package/framework/scaffold/motion-premium/components/animation/Preloader.tsx.template +171 -0
  68. package/framework/scaffold/motion-premium/components/ui/Container.tsx.template +69 -0
  69. package/framework/scaffold/motion-premium/components/ui/PageSection.tsx.template +74 -0
  70. package/framework/scaffold/motion-premium/lib/animations/gsap.ts.template +112 -0
  71. package/framework/scaffold/motion-premium/lib/animations/refreshCoordinator.ts.template +75 -0
  72. package/framework/scaffold/motion-premium/lib/animations/tokens.ts.template +119 -0
  73. package/framework/scaffold/motion-premium/lib/animations/useGsapContext.ts.template +92 -0
  74. package/framework/scaffold/motion-premium/lib/animations/useScrollSnapStepper.ts.template +265 -0
  75. package/framework/scaffold/motion-premium/lib/animations/useSmoothScroll.ts.template +67 -0
  76. package/framework/scaffold/motion-premium/lib/brand.ts.template +43 -0
  77. package/framework/scaffold/motion-premium/scaffold.yaml +174 -0
  78. package/framework/scaffold/motion-premium-3d/README.md +80 -0
  79. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/ScrollDemoCanvas.tsx.template +81 -0
  80. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/ScrollDemoClient.tsx.template +75 -0
  81. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/page.tsx.template +26 -0
  82. package/framework/scaffold/motion-premium-3d/components/3d/CameraRig.tsx.template +100 -0
  83. package/framework/scaffold/motion-premium-3d/components/3d/CanvasProvider.tsx.template +85 -0
  84. package/framework/scaffold/motion-premium-3d/components/3d/InvalidateOnScroll.tsx.template +51 -0
  85. package/framework/scaffold/motion-premium-3d/components/3d/MeshCrossfade.tsx.template +79 -0
  86. package/framework/scaffold/motion-premium-3d/components/3d/ScrollCrossfade.tsx.template +88 -0
  87. package/framework/scaffold/motion-premium-3d/components/3d/ScrollScene.tsx.template +121 -0
  88. package/framework/scaffold/motion-premium-3d/components/webgl/SceneFallback.tsx.template +65 -0
  89. package/framework/scaffold/motion-premium-3d/components/webgl/WebGLContext.tsx.template +68 -0
  90. package/framework/scaffold/motion-premium-3d/lib/webgl/detect.ts.template +69 -0
  91. package/framework/scaffold/motion-premium-3d/scaffold.yaml +133 -0
  92. package/framework/schemas/session.schema.json +109 -21
  93. package/framework/scripts/reference-capture.js +430 -0
  94. package/framework/scripts/visual-qa.js +674 -0
  95. package/framework/tasks/orchestrator-handoff.md +1 -1
  96. package/framework/tasks/orchestrator-resume.md +1 -1
  97. package/framework/tasks/orchestrator-route.md +1 -1
  98. package/framework/tasks/orchestrator-status.md +3 -3
  99. package/framework/tasks/qa-planning-gate-define.md +1 -1
  100. package/framework/templates/brandbook-html-tmpl.md +1 -1
  101. package/framework/templates/brandbook-tmpl.yaml +1 -1
  102. package/framework/templates/component-spec-tmpl.yaml +1 -1
  103. package/framework/templates/design-token-tmpl.yaml +1 -1
  104. package/framework/templates/icon-system-tmpl.yaml +1 -1
  105. package/framework/templates/team-planning-tasks.yaml +6 -5
  106. package/framework/workflows/brownfield-discovery.yaml +2 -2
  107. package/framework/workflows/brownfield-fullstack.yaml +15 -11
  108. package/framework/workflows/brownfield-service.yaml +14 -10
  109. package/framework/workflows/brownfield-ui.yaml +15 -11
  110. package/framework/workflows/greenfield-fullstack.yaml +16 -13
  111. package/framework/workflows/quick-flow.yaml +3 -3
  112. package/framework/workflows/standard-flow.yaml +12 -9
  113. package/package.json +10 -5
  114. package/src/autonomy/autonomous-gate.js +1 -0
  115. package/src/autonomy/build-state.js +1 -2
  116. package/src/autonomy/progress-reporter.js +1 -1
  117. package/src/config/agent-customizer.js +11 -3
  118. package/src/config/claude-settings-generator.js +27 -7
  119. package/src/config/context-file-generator.js +41 -21
  120. package/src/config/framework-adapter.js +1 -0
  121. package/src/config/gemini-hooks-generator.js +19 -7
  122. package/src/config/mcp-configs.js +1 -0
  123. package/src/context/layers/l1-global.js +2 -1
  124. package/src/dashboard/data-reader.js +4 -3
  125. package/src/dashboard/layout.js +2 -1
  126. package/src/decision/analyzer.js +6 -30
  127. package/src/decision/engine.js +4 -28
  128. package/src/decision/registry-healer.js +3 -2
  129. package/src/decision/registry-updater.js +23 -14
  130. package/src/extensions/loader.js +2 -8
  131. package/src/gates/g1-planning-complete.js +2 -1
  132. package/src/gates/g2-qa-planning.js +2 -1
  133. package/src/gates/g3-implementation.js +2 -1
  134. package/src/gates/g4-qa-implementation.js +3 -2
  135. package/src/gates/g5-deploy-ready.js +2 -1
  136. package/src/health/engine.js +4 -3
  137. package/src/installer/core.js +422 -81
  138. package/src/installer/preflight.js +131 -0
  139. package/src/installer/provider-overlay.js +3 -3
  140. package/src/installer/scaffold-applier.js +358 -0
  141. package/src/installer/templates.js +46 -29
  142. package/src/installer/validator.js +17 -12
  143. package/src/intelligence/registry-manager.js +22 -29
  144. package/src/intelligence/timeline.js +11 -6
  145. package/src/license/commands.js +1 -1
  146. package/src/license/wait.js +102 -0
  147. package/src/memory/agent-memory.js +81 -0
  148. package/src/memory/dream.js +32 -1
  149. package/src/merger/replace-merger.js +28 -15
  150. package/src/orchestrator/agent-selector.js +2 -1
  151. package/src/orchestrator/cli.js +1869 -71
  152. package/src/orchestrator/doctor.js +270 -0
  153. package/src/orchestrator/handoff-engine.js +4 -3
  154. package/src/orchestrator/index.js +2 -0
  155. package/src/orchestrator/pipeline-manager.js +306 -15
  156. package/src/orchestrator/session-manager.js +331 -6
  157. package/src/tasks/handoff.js +3 -2
  158. package/src/telemetry/config.js +4 -3
  159. package/src/telemetry/schema.js +1 -0
  160. package/src/terminal/collector.js +3 -2
  161. package/src/terminal/index.js +1 -2
  162. package/src/terminal/isolation.js +52 -18
  163. package/src/terminal/prompt-builder.js +42 -25
  164. package/src/terminal/run-parallel.js +1 -1
  165. package/src/terminal/run-team.js +3 -3
  166. package/src/terminal/team-task-list.js +43 -4
  167. package/src/upgrade/backup.js +3 -2
  168. package/src/upgrade/checker.js +3 -2
  169. package/src/upgrade/migrator.js +65 -7
  170. package/src/upgrade/tracked-files-detector.js +86 -0
  171. package/src/upgrade/user-messages.js +94 -0
  172. package/src/utils/config-parser.js +2 -1
  173. package/src/utils/feature-flags.js +2 -1
  174. package/src/utils/flatten-entities.js +69 -0
  175. package/src/utils/framework-dir.js +16 -0
  176. package/src/utils/model-id.js +85 -0
  177. package/src/utils/provider-limits.js +84 -23
  178. package/src/utils/schema-validator.js +1 -1
  179. package/src/wizard/i18n.js +5 -4
  180. package/src/wizard/index.js +14 -0
  181. package/assets/logo - c/303/263pia.png +0 -0
  182. package/assets/logo.svg +0 -42
  183. package/assets/logo2.png +0 -0
  184. package/assets/social-preview.png +0 -0
  185. package/scripts/bundle-framework.js +0 -69
  186. package/scripts/changelog-generator.js +0 -222
  187. package/scripts/codebase-mapper.js +0 -728
  188. package/scripts/commit-message-generator.js +0 -167
  189. package/scripts/coverage-analyzer.js +0 -260
  190. package/scripts/dependency-analyzer.js +0 -280
  191. package/scripts/doctor/checks/agents.js +0 -77
  192. package/scripts/doctor/checks/constitution.js +0 -41
  193. package/scripts/doctor/checks/domain-alignment.js +0 -58
  194. package/scripts/doctor/checks/prism-layers.js +0 -84
  195. package/scripts/doctor/checks/registry.js +0 -55
  196. package/scripts/doctor/checks/schemas.js +0 -61
  197. package/scripts/doctor/fixes/reference-fix.js +0 -100
  198. package/scripts/doctor/fixes/registry-fix.js +0 -56
  199. package/scripts/doctor/index.js +0 -212
  200. package/scripts/framework-analyzer.js +0 -308
  201. package/scripts/generate-constitution-domain.js +0 -253
  202. package/scripts/generate-signing-key.js +0 -33
  203. package/scripts/health-check.js +0 -481
  204. package/scripts/ide-sync.js +0 -326
  205. package/scripts/performance-analyzer.js +0 -325
  206. package/scripts/plan-tracker.js +0 -278
  207. package/scripts/populate-entity-registry.js +0 -481
  208. package/scripts/pr-review.js +0 -317
  209. package/scripts/rollback-manager.js +0 -310
  210. package/scripts/semantic-lint.js +0 -328
  211. package/scripts/sign-manifest.js +0 -53
  212. package/scripts/stuck-detector.js +0 -343
  213. package/scripts/test-quality-assessment.js +0 -257
  214. package/scripts/validate-agents.js +0 -368
  215. package/scripts/validate-package.js +0 -505
  216. package/scripts/validate-tasks.js +0 -465
  217. package/src/autonomy/worktree-manager.js +0 -250
  218. package/src/intelligence/decision-engine.js +0 -256
  219. package/src/intelligence/document-sharder.js +0 -221
  220. package/src/intelligence/elicitation.js +0 -265
@@ -1,222 +0,0 @@
1
- /**
2
- * Changelog Generator — Produces markdown changelogs from conventional commits.
3
- *
4
- * Reads git history, parses conventional commit messages, groups them by type,
5
- * and formats the output as a structured markdown document.
6
- *
7
- * @module scripts/changelog-generator
8
- */
9
-
10
- import { execFileSync } from 'node:child_process';
11
-
12
- /**
13
- * @typedef {Object} ParsedCommit
14
- * @property {string} type
15
- * @property {string|null} scope
16
- * @property {string} description
17
- * @property {boolean} breaking
18
- */
19
-
20
- /**
21
- * @typedef {Object} GitCommit
22
- * @property {string} hash
23
- * @property {string} message
24
- * @property {string} date
25
- * @property {string} author
26
- */
27
-
28
- const TYPE_LABELS = {
29
- feat: 'Features',
30
- fix: 'Bug Fixes',
31
- docs: 'Documentation',
32
- chore: 'Chores',
33
- refactor: 'Refactoring',
34
- test: 'Tests',
35
- ci: 'CI/CD',
36
- perf: 'Performance',
37
- style: 'Style',
38
- build: 'Build',
39
- revert: 'Reverts',
40
- };
41
-
42
- const TYPE_ORDER = ['feat', 'fix', 'perf', 'refactor', 'docs', 'test', 'ci', 'chore', 'style', 'build', 'revert'];
43
-
44
- /**
45
- * Parses a conventional commit message.
46
- *
47
- * Format: type(scope): description
48
- * Breaking: type(scope)!: description OR BREAKING CHANGE: in body
49
- *
50
- * @param {string} message
51
- * @returns {ParsedCommit|null}
52
- */
53
- export function parseConventionalCommit(message) {
54
- if (!message || typeof message !== 'string') return null;
55
-
56
- // Match: type(scope)!: description or type!: description or type(scope): description or type: description
57
- const regex = /^(\w+)(?:\(([^)]*)\))?(!)?\s*:\s*(.+)/;
58
- const match = message.trim().match(regex);
59
-
60
- if (!match) return null;
61
-
62
- const [, type, scope, bang, description] = match;
63
- const breaking = bang === '!' || /\bBREAKING[\s-]CHANGE\b/i.test(message);
64
-
65
- return {
66
- type: type.toLowerCase(),
67
- scope: scope || null,
68
- description: description.trim(),
69
- breaking,
70
- };
71
- }
72
-
73
- /**
74
- * Retrieves git commits since a given ref (tag, commit, or date).
75
- * If `since` is null, returns all commits.
76
- *
77
- * @param {string|null} since — git ref or null for all
78
- * @param {string} [cwd=process.cwd()]
79
- * @returns {GitCommit[]}
80
- */
81
- export function getGitCommits(since = null, cwd = process.cwd()) {
82
- const range = since ? `${since}..HEAD` : 'HEAD';
83
- const format = '%H||%s||%ai||%an';
84
-
85
- let output;
86
- try {
87
- output = execFileSync('git', ['log', range, `--pretty=format:${format}`], {
88
- cwd,
89
- encoding: 'utf-8',
90
- stdio: ['pipe', 'pipe', 'pipe'],
91
- });
92
- } catch {
93
- return [];
94
- }
95
-
96
- if (!output.trim()) return [];
97
-
98
- return output
99
- .trim()
100
- .split('\n')
101
- .filter(Boolean)
102
- .map((line) => {
103
- const parts = line.split('||');
104
- return {
105
- hash: (parts[0] || '').trim(),
106
- message: (parts[1] || '').trim(),
107
- date: (parts[2] || '').trim(),
108
- author: (parts[3] || '').trim(),
109
- };
110
- });
111
- }
112
-
113
- /**
114
- * Groups parsed commits by their conventional type.
115
- *
116
- * @param {GitCommit[]} commits
117
- * @returns {Record<string, Array<{ commit: GitCommit, parsed: ParsedCommit }>>}
118
- */
119
- export function groupCommits(commits) {
120
- const groups = {};
121
-
122
- for (const commit of commits) {
123
- const parsed = parseConventionalCommit(commit.message);
124
- if (!parsed) {
125
- // Put non-conventional commits under 'other'
126
- if (!groups.other) groups.other = [];
127
- groups.other.push({ commit, parsed: { type: 'other', scope: null, description: commit.message, breaking: false } });
128
- continue;
129
- }
130
- const type = parsed.type;
131
- if (!groups[type]) groups[type] = [];
132
- groups[type].push({ commit, parsed });
133
- }
134
-
135
- return groups;
136
- }
137
-
138
- /**
139
- * Formats a single changelog section for a version.
140
- *
141
- * @param {string} version
142
- * @param {string} date
143
- * @param {Record<string, Array<{ commit: GitCommit, parsed: ParsedCommit }>>} grouped
144
- * @returns {string}
145
- */
146
- export function formatChangelogSection(version, date, grouped) {
147
- const lines = [];
148
- lines.push(`## ${version} (${date})`);
149
- lines.push('');
150
-
151
- // Breaking changes first
152
- const breakingChanges = [];
153
- for (const entries of Object.values(grouped)) {
154
- for (const { commit, parsed } of entries) {
155
- if (parsed.breaking) {
156
- const scope = parsed.scope ? `**${parsed.scope}**: ` : '';
157
- breakingChanges.push(`- ${scope}${parsed.description} (${commit.hash.slice(0, 7)})`);
158
- }
159
- }
160
- }
161
-
162
- if (breakingChanges.length > 0) {
163
- lines.push('### BREAKING CHANGES');
164
- lines.push('');
165
- lines.push(...breakingChanges);
166
- lines.push('');
167
- }
168
-
169
- // Sections in defined order
170
- for (const type of TYPE_ORDER) {
171
- const entries = grouped[type];
172
- if (!entries || entries.length === 0) continue;
173
-
174
- const label = TYPE_LABELS[type] || type;
175
- lines.push(`### ${label}`);
176
- lines.push('');
177
-
178
- for (const { commit, parsed } of entries) {
179
- if (parsed.breaking) continue; // already listed above
180
- const scope = parsed.scope ? `**${parsed.scope}**: ` : '';
181
- lines.push(`- ${scope}${parsed.description} (${commit.hash.slice(0, 7)})`);
182
- }
183
-
184
- lines.push('');
185
- }
186
-
187
- // Other (non-conventional) commits
188
- if (grouped.other && grouped.other.length > 0) {
189
- lines.push('### Other');
190
- lines.push('');
191
- for (const { commit } of grouped.other) {
192
- lines.push(`- ${commit.message} (${commit.hash.slice(0, 7)})`);
193
- }
194
- lines.push('');
195
- }
196
-
197
- return lines.join('\n');
198
- }
199
-
200
- /**
201
- * Generates a full changelog string.
202
- *
203
- * @param {Object} [options]
204
- * @param {string} [options.since] — git ref to start from (tag or commit)
205
- * @param {string} [options.version] — version label (default: 'Unreleased')
206
- * @param {string} [options.cwd] — working directory
207
- * @returns {string}
208
- */
209
- export function generateChangelog(options = {}) {
210
- const cwd = options.cwd || process.cwd();
211
- const since = options.since || null;
212
- const version = options.version || 'Unreleased';
213
- const date = new Date().toISOString().slice(0, 10);
214
-
215
- const commits = getGitCommits(since, cwd);
216
- if (commits.length === 0) {
217
- return `## ${version} (${date})\n\nNo changes.\n`;
218
- }
219
-
220
- const grouped = groupCommits(commits);
221
- return formatChangelogSection(version, date, grouped);
222
- }