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
@@ -11,13 +11,7 @@
11
11
  import { existsSync, readdirSync } from 'fs';
12
12
  import { join, extname, basename } from 'path';
13
13
  import { registerExtension, EXTENSION_POINTS } from './registry.js';
14
-
15
- // ---------------------------------------------------------------------------
16
- // Constants
17
- // ---------------------------------------------------------------------------
18
-
19
- /** Directory relative to project root where extensions are stored. */
20
- const EXTENSIONS_DIR = 'chati.dev/extensions';
14
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
21
15
 
22
16
  /** Required fields in an extension module's default export. */
23
17
  const REQUIRED_FIELDS = ['name', 'point', 'handler'];
@@ -79,7 +73,7 @@ export function discoverExtensions(projectDir) {
79
73
  return { files: [], dir: '' };
80
74
  }
81
75
 
82
- const extDir = join(projectDir, EXTENSIONS_DIR);
76
+ const extDir = join(projectDir, resolveFrameworkDir(projectDir), 'extensions');
83
77
 
84
78
  if (!existsSync(extDir)) {
85
79
  return { files: [], dir: extDir };
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { existsSync, readdirSync } from 'node:fs';
9
9
  import { join } from 'node:path';
10
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
10
11
  import { GateBase } from './gate-base.js';
11
12
  import { loadSession } from '../orchestrator/session-manager.js';
12
13
  import { loadHandoff } from '../tasks/handoff.js';
@@ -37,7 +38,7 @@ export class PlanningCompleteGate extends GateBase {
37
38
  * @returns {object} Evidence about artifact presence, session state, and handoff
38
39
  */
39
40
  _collectEvidence(projectDir) {
40
- const artifactsBase = join(projectDir, 'chati.dev', 'artifacts');
41
+ const artifactsBase = join(projectDir, resolveFrameworkDir(projectDir), 'artifacts');
41
42
  const evidence = {
42
43
  artifacts: {},
43
44
  sessionState: null,
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { existsSync, readdirSync } from 'node:fs';
9
9
  import { join } from 'node:path';
10
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
10
11
  import { GateBase, determineVerdict } from './gate-base.js';
11
12
  import { loadSession } from '../orchestrator/session-manager.js';
12
13
  import { loadHandoff } from '../tasks/handoff.js';
@@ -28,7 +29,7 @@ export class QAPlanningGate extends GateBase {
28
29
  * @returns {object} Evidence about test strategy, coverage plan, risk assessment
29
30
  */
30
31
  _collectEvidence(projectDir) {
31
- const artifactsBase = join(projectDir, 'chati.dev', 'artifacts');
32
+ const artifactsBase = join(projectDir, resolveFrameworkDir(projectDir), 'artifacts');
32
33
  const evidence = {
33
34
  testStrategy: false,
34
35
  coveragePlan: false,
@@ -8,6 +8,7 @@
8
8
 
9
9
  import { existsSync, readdirSync, readFileSync } from 'node:fs';
10
10
  import { join } from 'node:path';
11
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
11
12
  import { GateBase } from './gate-base.js';
12
13
  import { loadSession } from '../orchestrator/session-manager.js';
13
14
  import { loadHandoff } from '../tasks/handoff.js';
@@ -97,7 +98,7 @@ export class ImplementationGate extends GateBase {
97
98
  // Check for security scan results
98
99
  const securityPaths = [
99
100
  join(projectDir, '.security-scan'),
100
- join(projectDir, 'chati.dev', 'artifacts', 'security-report.md'),
101
+ join(projectDir, resolveFrameworkDir(projectDir), 'artifacts', 'security-report.md'),
101
102
  ];
102
103
  for (const secPath of securityPaths) {
103
104
  if (existsSync(secPath)) {
@@ -14,6 +14,7 @@
14
14
 
15
15
  import { existsSync, readFileSync } from 'node:fs';
16
16
  import { join } from 'node:path';
17
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
17
18
  import { GateBase, determineVerdict } from './gate-base.js';
18
19
  import { loadSession } from '../orchestrator/session-manager.js';
19
20
  import { loadHandoff } from '../tasks/handoff.js';
@@ -71,7 +72,7 @@ export class QAImplementationGate extends GateBase {
71
72
 
72
73
  // Check for performance benchmark results — parse content for real findings
73
74
  const perfPaths = [
74
- join(projectDir, 'chati.dev', 'artifacts', 'performance-report.md'),
75
+ join(projectDir, resolveFrameworkDir(projectDir), 'artifacts', 'performance-report.md'),
75
76
  join(projectDir, '.performance-benchmark'),
76
77
  ];
77
78
  for (const perfPath of perfPaths) {
@@ -96,7 +97,7 @@ export class QAImplementationGate extends GateBase {
96
97
 
97
98
  // Check for security scan — parse content for real findings
98
99
  const secPaths = [
99
- join(projectDir, 'chati.dev', 'artifacts', 'security-report.md'),
100
+ join(projectDir, resolveFrameworkDir(projectDir), 'artifacts', 'security-report.md'),
100
101
  join(projectDir, '.security-scan'),
101
102
  ];
102
103
  for (const secPath of secPaths) {
@@ -11,6 +11,7 @@ import { join } from 'node:path';
11
11
  import { GateBase } from './gate-base.js';
12
12
  import { loadSession } from '../orchestrator/session-manager.js';
13
13
  import { loadHandoff } from '../tasks/handoff.js';
14
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
14
15
 
15
16
  export class DeployReadyGate extends GateBase {
16
17
  constructor() {
@@ -75,7 +76,7 @@ export class DeployReadyGate extends GateBase {
75
76
  // Check release notes
76
77
  const releaseNotePaths = [
77
78
  join(projectDir, 'RELEASE.md'),
78
- join(projectDir, 'chati.dev', 'artifacts', 'release-notes.md'),
79
+ join(projectDir, resolveFrameworkDir(projectDir), 'artifacts', 'release-notes.md'),
79
80
  ];
80
81
  for (const rnPath of releaseNotePaths) {
81
82
  if (existsSync(rnPath)) {
@@ -9,6 +9,7 @@
9
9
  import { existsSync, readFileSync } from 'fs';
10
10
  import { join } from 'path';
11
11
  import { isCommandAvailable, parseProviderConfig } from '../utils/config-parser.js';
12
+ import { resolveFrameworkDir } from '../utils/framework-dir.js';
12
13
 
13
14
  // ---------------------------------------------------------------------------
14
15
  // Check Result Types
@@ -45,7 +46,7 @@ import { isCommandAvailable, parseProviderConfig } from '../utils/config-parser.
45
46
  */
46
47
  export async function checkCliAvailability(projectDir) {
47
48
  const start = Date.now();
48
- const configPath = join(projectDir, 'chati.dev', 'config.yaml');
49
+ const configPath = join(projectDir, resolveFrameworkDir(projectDir), 'config.yaml');
49
50
 
50
51
  if (!existsSync(configPath)) {
51
52
  return { name: 'cli-availability', status: 'warn', message: 'No config.yaml found', duration: Date.now() - start };
@@ -76,7 +77,7 @@ export async function checkCliAvailability(projectDir) {
76
77
  */
77
78
  export async function checkFrameworkIntegrity(projectDir) {
78
79
  const start = Date.now();
79
- const registryPath = join(projectDir, 'chati.dev', 'data', 'entity-registry.yaml');
80
+ const registryPath = join(projectDir, resolveFrameworkDir(projectDir), 'data', 'entity-registry.yaml');
80
81
 
81
82
  if (!existsSync(registryPath)) {
82
83
  return { name: 'framework-integrity', status: 'warn', message: 'No entity registry found', duration: Date.now() - start };
@@ -133,7 +134,7 @@ export async function checkSessionState(projectDir) {
133
134
  */
134
135
  export async function checkHooksHealth(projectDir) {
135
136
  const start = Date.now();
136
- const hooksDir = join(projectDir, 'chati.dev', 'hooks');
137
+ const hooksDir = join(projectDir, resolveFrameworkDir(projectDir), 'hooks');
137
138
 
138
139
  if (!existsSync(hooksDir)) {
139
140
  return { name: 'hooks-health', status: 'fail', message: 'Hooks directory not found', duration: Date.now() - start };