chati-dev 4.2.2 → 4.3.1

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 (221) hide show
  1. package/README.md +80 -53
  2. package/bin/chati.js +170 -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 +158 -22
  6. package/framework/agents/discover/brownfield-wu.md +26 -14
  7. package/framework/agents/discover/greenfield-wu.md +102 -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 +38 -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 +448 -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 +441 -0
  59. package/framework/orchestrator/chati-update.md +40 -40
  60. package/framework/orchestrator/chati.md +295 -94
  61. package/framework/rules/human-writing-style.md +47 -0
  62. package/framework/scaffold/motion-premium/README.md +99 -0
  63. package/framework/scaffold/motion-premium/app/globals.css.template +400 -0
  64. package/framework/scaffold/motion-premium/app/layout.tsx.template +110 -0
  65. package/framework/scaffold/motion-premium/components/animation/BackgroundCrossfadeProvider.tsx.template +170 -0
  66. package/framework/scaffold/motion-premium/components/animation/LenisProvider.tsx.template +49 -0
  67. package/framework/scaffold/motion-premium/components/animation/PageTransitionWrapper.tsx.template +83 -0
  68. package/framework/scaffold/motion-premium/components/animation/Preloader.tsx.template +171 -0
  69. package/framework/scaffold/motion-premium/components/ui/Container.tsx.template +69 -0
  70. package/framework/scaffold/motion-premium/components/ui/PageSection.tsx.template +74 -0
  71. package/framework/scaffold/motion-premium/lib/animations/gsap.ts.template +112 -0
  72. package/framework/scaffold/motion-premium/lib/animations/refreshCoordinator.ts.template +75 -0
  73. package/framework/scaffold/motion-premium/lib/animations/tokens.ts.template +119 -0
  74. package/framework/scaffold/motion-premium/lib/animations/useGsapContext.ts.template +92 -0
  75. package/framework/scaffold/motion-premium/lib/animations/useScrollSnapStepper.ts.template +265 -0
  76. package/framework/scaffold/motion-premium/lib/animations/useSmoothScroll.ts.template +67 -0
  77. package/framework/scaffold/motion-premium/lib/brand.ts.template +43 -0
  78. package/framework/scaffold/motion-premium/scaffold.yaml +178 -0
  79. package/framework/scaffold/motion-premium-3d/README.md +90 -0
  80. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/ScrollDemoCanvas.tsx.template +81 -0
  81. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/ScrollDemoClient.tsx.template +75 -0
  82. package/framework/scaffold/motion-premium-3d/app/(3d)/scroll-demo/page.tsx.template +26 -0
  83. package/framework/scaffold/motion-premium-3d/components/3d/CameraRig.tsx.template +100 -0
  84. package/framework/scaffold/motion-premium-3d/components/3d/CanvasProvider.tsx.template +85 -0
  85. package/framework/scaffold/motion-premium-3d/components/3d/InvalidateOnScroll.tsx.template +51 -0
  86. package/framework/scaffold/motion-premium-3d/components/3d/MeshCrossfade.tsx.template +79 -0
  87. package/framework/scaffold/motion-premium-3d/components/3d/ScrollCrossfade.tsx.template +88 -0
  88. package/framework/scaffold/motion-premium-3d/components/3d/ScrollScene.tsx.template +121 -0
  89. package/framework/scaffold/motion-premium-3d/components/webgl/SceneFallback.tsx.template +65 -0
  90. package/framework/scaffold/motion-premium-3d/components/webgl/WebGLContext.tsx.template +68 -0
  91. package/framework/scaffold/motion-premium-3d/lib/webgl/detect.ts.template +69 -0
  92. package/framework/scaffold/motion-premium-3d/scaffold.yaml +136 -0
  93. package/framework/schemas/session.schema.json +109 -21
  94. package/framework/scripts/reference-capture.js +430 -0
  95. package/framework/scripts/visual-qa.js +686 -0
  96. package/framework/tasks/orchestrator-handoff.md +1 -1
  97. package/framework/tasks/orchestrator-resume.md +1 -1
  98. package/framework/tasks/orchestrator-route.md +1 -1
  99. package/framework/tasks/orchestrator-status.md +3 -3
  100. package/framework/tasks/qa-planning-gate-define.md +1 -1
  101. package/framework/templates/brandbook-html-tmpl.md +2 -2
  102. package/framework/templates/brandbook-tmpl.yaml +1 -1
  103. package/framework/templates/component-spec-tmpl.yaml +1 -1
  104. package/framework/templates/design-token-tmpl.yaml +1 -1
  105. package/framework/templates/icon-system-tmpl.yaml +1 -1
  106. package/framework/templates/team-planning-tasks.yaml +6 -5
  107. package/framework/workflows/brownfield-discovery.yaml +2 -2
  108. package/framework/workflows/brownfield-fullstack.yaml +15 -11
  109. package/framework/workflows/brownfield-service.yaml +14 -10
  110. package/framework/workflows/brownfield-ui.yaml +15 -11
  111. package/framework/workflows/greenfield-fullstack.yaml +16 -13
  112. package/framework/workflows/quick-flow.yaml +3 -3
  113. package/framework/workflows/standard-flow.yaml +12 -9
  114. package/package.json +12 -6
  115. package/src/autonomy/autonomous-gate.js +1 -0
  116. package/src/autonomy/build-state.js +1 -2
  117. package/src/autonomy/progress-reporter.js +1 -1
  118. package/src/config/agent-customizer.js +11 -3
  119. package/src/config/claude-settings-generator.js +27 -7
  120. package/src/config/context-file-generator.js +41 -21
  121. package/src/config/framework-adapter.js +1 -0
  122. package/src/config/gemini-hooks-generator.js +19 -7
  123. package/src/config/mcp-configs.js +1 -0
  124. package/src/context/layers/l1-global.js +2 -1
  125. package/src/dashboard/data-reader.js +4 -3
  126. package/src/dashboard/layout.js +2 -1
  127. package/src/decision/analyzer.js +6 -30
  128. package/src/decision/engine.js +4 -28
  129. package/src/decision/registry-healer.js +3 -2
  130. package/src/decision/registry-updater.js +23 -14
  131. package/src/extensions/loader.js +2 -8
  132. package/src/gates/g1-planning-complete.js +2 -1
  133. package/src/gates/g2-qa-planning.js +2 -1
  134. package/src/gates/g3-implementation.js +2 -1
  135. package/src/gates/g4-qa-implementation.js +3 -2
  136. package/src/gates/g5-deploy-ready.js +2 -1
  137. package/src/health/engine.js +4 -3
  138. package/src/installer/core.js +431 -81
  139. package/src/installer/preflight.js +131 -0
  140. package/src/installer/provider-overlay.js +3 -3
  141. package/src/installer/scaffold-applier.js +358 -0
  142. package/src/installer/templates.js +46 -29
  143. package/src/installer/validator.js +17 -12
  144. package/src/intelligence/registry-manager.js +22 -29
  145. package/src/intelligence/timeline.js +11 -6
  146. package/src/license/commands.js +1 -1
  147. package/src/license/wait.js +102 -0
  148. package/src/memory/agent-memory.js +81 -0
  149. package/src/memory/dream.js +32 -1
  150. package/src/merger/replace-merger.js +28 -15
  151. package/src/orchestrator/agent-selector.js +2 -1
  152. package/src/orchestrator/cli.js +1880 -71
  153. package/src/orchestrator/doctor.js +270 -0
  154. package/src/orchestrator/handoff-engine.js +4 -3
  155. package/src/orchestrator/index.js +2 -0
  156. package/src/orchestrator/pipeline-manager.js +306 -15
  157. package/src/orchestrator/session-manager.js +339 -6
  158. package/src/tasks/handoff.js +3 -2
  159. package/src/telemetry/config.js +4 -3
  160. package/src/telemetry/schema.js +1 -0
  161. package/src/terminal/collector.js +3 -2
  162. package/src/terminal/index.js +1 -2
  163. package/src/terminal/isolation.js +52 -18
  164. package/src/terminal/prompt-builder.js +42 -25
  165. package/src/terminal/run-parallel.js +1 -1
  166. package/src/terminal/run-team.js +3 -3
  167. package/src/terminal/team-task-list.js +43 -4
  168. package/src/upgrade/backup.js +3 -2
  169. package/src/upgrade/checker.js +3 -2
  170. package/src/upgrade/migrator.js +65 -7
  171. package/src/upgrade/tracked-files-detector.js +86 -0
  172. package/src/upgrade/user-messages.js +94 -0
  173. package/src/utils/config-parser.js +2 -1
  174. package/src/utils/feature-flags.js +2 -1
  175. package/src/utils/flatten-entities.js +69 -0
  176. package/src/utils/framework-dir.js +16 -0
  177. package/src/utils/model-id.js +85 -0
  178. package/src/utils/provider-limits.js +84 -23
  179. package/src/utils/schema-validator.js +1 -1
  180. package/src/wizard/i18n.js +5 -4
  181. package/src/wizard/index.js +14 -0
  182. package/assets/logo - c/303/263pia.png +0 -0
  183. package/assets/logo.svg +0 -42
  184. package/assets/logo2.png +0 -0
  185. package/assets/social-preview.png +0 -0
  186. package/scripts/bundle-framework.js +0 -69
  187. package/scripts/changelog-generator.js +0 -222
  188. package/scripts/codebase-mapper.js +0 -728
  189. package/scripts/commit-message-generator.js +0 -167
  190. package/scripts/coverage-analyzer.js +0 -260
  191. package/scripts/dependency-analyzer.js +0 -280
  192. package/scripts/doctor/checks/agents.js +0 -77
  193. package/scripts/doctor/checks/constitution.js +0 -41
  194. package/scripts/doctor/checks/domain-alignment.js +0 -58
  195. package/scripts/doctor/checks/prism-layers.js +0 -84
  196. package/scripts/doctor/checks/registry.js +0 -55
  197. package/scripts/doctor/checks/schemas.js +0 -61
  198. package/scripts/doctor/fixes/reference-fix.js +0 -100
  199. package/scripts/doctor/fixes/registry-fix.js +0 -56
  200. package/scripts/doctor/index.js +0 -212
  201. package/scripts/framework-analyzer.js +0 -308
  202. package/scripts/generate-constitution-domain.js +0 -253
  203. package/scripts/generate-signing-key.js +0 -33
  204. package/scripts/health-check.js +0 -481
  205. package/scripts/ide-sync.js +0 -326
  206. package/scripts/performance-analyzer.js +0 -325
  207. package/scripts/plan-tracker.js +0 -278
  208. package/scripts/populate-entity-registry.js +0 -481
  209. package/scripts/pr-review.js +0 -317
  210. package/scripts/rollback-manager.js +0 -310
  211. package/scripts/semantic-lint.js +0 -328
  212. package/scripts/sign-manifest.js +0 -53
  213. package/scripts/stuck-detector.js +0 -343
  214. package/scripts/test-quality-assessment.js +0 -257
  215. package/scripts/validate-agents.js +0 -368
  216. package/scripts/validate-package.js +0 -505
  217. package/scripts/validate-tasks.js +0 -465
  218. package/src/autonomy/worktree-manager.js +0 -250
  219. package/src/intelligence/decision-engine.js +0 -256
  220. package/src/intelligence/document-sharder.js +0 -221
  221. 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
- }