chati-dev 4.5.14 → 4.5.15

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.
@@ -1,8 +1,8 @@
1
1
  # chati.dev Configuration
2
- version: "4.5.14"
2
+ version: "4.5.15"
3
3
  installed_at: "2026-02-07T10:00:00Z"
4
4
  updated_at: "2026-08-27T00:00:00Z"
5
- installer_version: "4.5.14"
5
+ installer_version: "4.5.15"
6
6
  project_type: greenfield
7
7
  language: en
8
8
  ides: []
@@ -1,7 +1,7 @@
1
1
  # Chati.dev System Context
2
2
 
3
3
  ## Framework
4
- - **Version**: 4.5.14
4
+ - **Version**: 4.5.15
5
5
  - **Agents**: Specialized discovery and planning agents feeding provider-neutral RAIL execution and a sealed release lane
6
6
  - **Constitution**: 25 Articles + Preamble
7
7
  - **Quality**: 5 pipeline gates + 3-tier verdicts + Fault Vector Protocol (Article XXII)
@@ -100,6 +100,9 @@ installer:
100
100
  system_prerequisites_failed: "System prerequisites not met:"
101
101
  fix_prerequisites: "Fix the issues above and try again."
102
102
  system_check: "System check:"
103
+ system_checking: "Checking system requirements..."
104
+ catalog_resolving: "Loading the signed model catalog..."
105
+ internal_authorizing: "Verifying access to Internal mode..."
103
106
  created_provider_claude: "Created .claude/commands/ (thin router)"
104
107
  created_provider_gemini: "Created .gemini/commands/ (TOML command)"
105
108
  created_provider_codex: "Created .agents/skills/chati/ (Codex skill)"
@@ -114,6 +117,7 @@ installer:
114
117
  license_placeholder: "CHATI-XXXX-XXXX-XXXX"
115
118
  license_skipped: "Skipped. Run: npx chati-dev activate --key=YOUR-KEY when ready."
116
119
  license_activating: "Activating license..."
120
+ license_verifying: "Verifying saved license..."
117
121
  license_activated: "License activated! Plan: {plan}, {days} day(s) remaining."
118
122
  license_activation_failed: "Activation failed: {error}"
119
123
  license_retry: "Run: npx chati-dev activate --key=YOUR-KEY to try again."
@@ -100,6 +100,9 @@ installer:
100
100
  system_prerequisites_failed: "No se cumplen los requisitos previos del sistema:"
101
101
  fix_prerequisites: "Corrija los problemas anteriores e intentelo de nuevo."
102
102
  system_check: "Verificacion del sistema:"
103
+ system_checking: "Verificando los requisitos del sistema..."
104
+ catalog_resolving: "Cargando el catalogo firmado de modelos..."
105
+ internal_authorizing: "Verificando el acceso al modo Internal..."
103
106
  created_provider_claude: "Creado .claude/commands/ (enrutador ligero)"
104
107
  created_provider_gemini: "Creado .gemini/commands/ (comando TOML)"
105
108
  created_provider_codex: "Creado .agents/skills/chati/ (skill de Codex)"
@@ -114,6 +117,7 @@ installer:
114
117
  license_placeholder: "CHATI-XXXX-XXXX-XXXX"
115
118
  license_skipped: "Paso omitido. Cuando quiera, ejecute: npx chati-dev activate --key=SU-CLAVE."
116
119
  license_activating: "Activando la licencia..."
120
+ license_verifying: "Verificando la licencia guardada..."
117
121
  license_activated: "Licencia activada! Plan: {plan}, {days} dia(s) restante(s)."
118
122
  license_activation_failed: "Fallo de activacion: {error}"
119
123
  license_retry: "Ejecute: npx chati-dev activate --key=SU-CLAVE para intentarlo de nuevo."
@@ -100,6 +100,9 @@ installer:
100
100
  system_prerequisites_failed: "Les prerequis systeme ne sont pas satisfaits:"
101
101
  fix_prerequisites: "Corrigez les problemes ci-dessus et reessayez."
102
102
  system_check: "Verification du systeme:"
103
+ system_checking: "Verification des prerequis du systeme..."
104
+ catalog_resolving: "Chargement du catalogue de modeles signe..."
105
+ internal_authorizing: "Verification de l'acces au mode Internal..."
103
106
  created_provider_claude: "Cree .claude/commands/ (routeur leger)"
104
107
  created_provider_gemini: "Cree .gemini/commands/ (commande TOML)"
105
108
  created_provider_codex: "Cree .agents/skills/chati/ (skill Codex)"
@@ -114,6 +117,7 @@ installer:
114
117
  license_placeholder: "CHATI-XXXX-XXXX-XXXX"
115
118
  license_skipped: "Etape ignoree. Lorsque vous le souhaitez, executez: npx chati-dev activate --key=VOTRE-CLE."
116
119
  license_activating: "Activation de la licence..."
120
+ license_verifying: "Verification de la licence enregistree..."
117
121
  license_activated: "Licence activee! Offre: {plan}, {days} jour(s) restant(s)."
118
122
  license_activation_failed: "Echec de l'activation: {error}"
119
123
  license_retry: "Executez: npx chati-dev activate --key=VOTRE-CLE pour reessayer."
@@ -100,6 +100,9 @@ installer:
100
100
  system_prerequisites_failed: "Os pre-requisitos do sistema nao foram atendidos:"
101
101
  fix_prerequisites: "Corrija os problemas acima e tente novamente."
102
102
  system_check: "Verificacao do sistema:"
103
+ system_checking: "Verificando os requisitos do sistema..."
104
+ catalog_resolving: "Carregando o catalogo assinado de modelos..."
105
+ internal_authorizing: "Validando o acesso ao modo Internal..."
103
106
  created_provider_claude: "Criado .claude/commands/ (roteador leve)"
104
107
  created_provider_gemini: "Criado .gemini/commands/ (comando TOML)"
105
108
  created_provider_codex: "Criado .agents/skills/chati/ (skill do Codex)"
@@ -114,6 +117,7 @@ installer:
114
117
  license_placeholder: "CHATI-XXXX-XXXX-XXXX"
115
118
  license_skipped: "Etapa ignorada. Quando quiser, execute: npx chati-dev activate --key=SUA-CHAVE."
116
119
  license_activating: "Ativando a licenca..."
120
+ license_verifying: "Validando a licenca salva..."
117
121
  license_activated: "Licenca ativada! Plano: {plan}, {days} dia(s) restante(s)."
118
122
  license_activation_failed: "Falha na ativacao: {error}"
119
123
  license_retry: "Execute: npx chati-dev activate --key=SUA-CHAVE para tentar novamente."
@@ -1,5 +1,5 @@
1
1
  {
2
- "createdAt": "2026-08-28T08:29:11.442Z",
2
+ "createdAt": "2026-08-28T08:43:33.218Z",
3
3
  "files": {
4
4
  "agents/build/dev.md": {
5
5
  "hash": "f0dd9bcdf44c57fdf64beca65d3617f0f24467b2f6edc9c0577d721b4922977a",
@@ -97,7 +97,7 @@
97
97
  "type": "md"
98
98
  },
99
99
  "config.yaml": {
100
- "hash": "8c95fbfbb1f751468c309007aaafd784835af8fe7d712313733ca82605f13cf1",
100
+ "hash": "f003820b2a1584a62a033a19b3e64e18c25b2dd7b27990377e54ba4bc373d2e4",
101
101
  "size": 2638,
102
102
  "type": "yaml"
103
103
  },
@@ -122,7 +122,7 @@
122
122
  "type": "md"
123
123
  },
124
124
  "context/root.md": {
125
- "hash": "90f8c75eab767daba5178351e02925c99c201215e9f0ea8ee1bf1991eb1136b0",
125
+ "hash": "771c6ffe5bb5cf2afa3e9346ee522e5287621747aef9b16791d4fcc4d1a24457",
126
126
  "size": 1333,
127
127
  "type": "md"
128
128
  },
@@ -377,23 +377,23 @@
377
377
  "type": "js"
378
378
  },
379
379
  "i18n/en.yaml": {
380
- "hash": "220fc363ed6e523509cd50cab92ad17735cc8de37f60030cb8b26dadca1c88f6",
381
- "size": 8082,
380
+ "hash": "dbaf6e3da9820a933bd6b358e5dcce49057c7b34c7855d6f7f443833202f347a",
381
+ "size": 8307,
382
382
  "type": "yaml"
383
383
  },
384
384
  "i18n/es.yaml": {
385
- "hash": "e088fca0e2525482011e290396b7d242751c97af5b23d49e9e84e6c5b2f854f5",
386
- "size": 8685,
385
+ "hash": "047a14e7fa763179002c265f2df3bf0e9a407d5fc8b8fac0ff05ae92562f11eb",
386
+ "size": 8941,
387
387
  "type": "yaml"
388
388
  },
389
389
  "i18n/fr.yaml": {
390
- "hash": "5245519c4acdd577db0052928e0c6ee7b4677212d8b2808cdf0ea4aa89f67b67",
391
- "size": 8826,
390
+ "hash": "8353e42d8124546109833a123143e905dbb976abe658259d3782aa5d1190d0b4",
391
+ "size": 9090,
392
392
  "type": "yaml"
393
393
  },
394
394
  "i18n/pt.yaml": {
395
- "hash": "0a1e9a905db5a776ee790735fbd442d3b0fce93084f1b8fb3ba9021726b3047b",
396
- "size": 8566,
395
+ "hash": "9286764e634c88b1cf8f49f9239d48ff5a2bbef7fe207d61d69d70c501bdca8b",
396
+ "size": 8812,
397
397
  "type": "yaml"
398
398
  },
399
399
  "intelligence/confidence.yaml": {
@@ -1352,5 +1352,5 @@
1352
1352
  "type": "yaml"
1353
1353
  }
1354
1354
  },
1355
- "version": "4.5.14"
1355
+ "version": "4.5.15"
1356
1356
  }
@@ -1 +1 @@
1
- pPMQq8Hj2U80c5Q0ToefvDYDDokdYPbLnhbB7eXsH4ne15QSk0fHGJHd0QpJbfXKKBEEZlNhBMzMQcoDBbASDw==
1
+ FzKXNObHfbT1CWViyyRa9aPZdEE7IldMN56uz1W0gaBxVA9wvd6bCOfBnYR+FxVlPpfT+XD/OqoCvKqBM6L5BQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chati-dev",
3
- "version": "4.5.14",
3
+ "version": "4.5.15",
4
4
  "description": "AI-Powered Multi-Agent Orchestration System - Structured vibe coding for Full Stack Development",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,6 +13,17 @@ export function createSpinner(text) {
13
13
  });
14
14
  }
15
15
 
16
+ /** Run one automatic operation with a spinner that always stops. */
17
+ export async function withSpinner(text, operation, { spinnerFactory = createSpinner } = {}) {
18
+ const spinner = spinnerFactory(text);
19
+ spinner.start();
20
+ try {
21
+ return await operation();
22
+ } finally {
23
+ spinner.stop();
24
+ }
25
+ }
26
+
16
27
  /**
17
28
  * Show installation progress step
18
29
  */
@@ -106,6 +106,9 @@ const FALLBACK_EN = {
106
106
  system_prerequisites_failed: 'System prerequisites not met:',
107
107
  fix_prerequisites: 'Fix the issues above and try again.',
108
108
  system_check: 'System check:',
109
+ system_checking: 'Checking system requirements...',
110
+ catalog_resolving: 'Loading the signed model catalog...',
111
+ internal_authorizing: 'Verifying access to Internal mode...',
109
112
  created_provider_claude: 'Created .claude/commands/ (thin router)',
110
113
  created_provider_gemini: 'Created .gemini/commands/ (TOML command)',
111
114
  created_provider_codex: 'Created .agents/skills/chati/ (Codex skill)',
@@ -120,6 +123,7 @@ const FALLBACK_EN = {
120
123
  license_placeholder: 'CHATI-XXXX-XXXX-XXXX',
121
124
  license_skipped: 'Skipped. Run: npx chati-dev activate --key=YOUR-KEY when ready.',
122
125
  license_activating: 'Activating license...',
126
+ license_verifying: 'Verifying saved license...',
123
127
  license_activated: 'License activated! Plan: {plan}, {days} day(s) remaining.',
124
128
  license_activation_failed: 'Activation failed: {error}',
125
129
  license_retry: 'Run: npx chati-dev activate --key=YOUR-KEY to try again.',
@@ -4,7 +4,7 @@ import { join, dirname, basename } from 'path';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { logBanner } from '../utils/logger.js';
6
6
  import { WIZARD_BACK, stepLanguage, stepProjectType, stepProviderSelection, stepInstallationMode, stepConfirmation, stepTermsOfUse } from './questions.js';
7
- import { createSpinner, showStep, showValidation, showQuickStart } from './feedback.js';
7
+ import { createSpinner, withSpinner, showStep, showValidation, showQuickStart } from './feedback.js';
8
8
  import { installFramework } from '../installer/core.js';
9
9
  import { INSTALLATION_ARTIFACT_PATH, dryRunV2, installV2, reconfigureV2 } from '../installer-v2/index.js';
10
10
  import { buildWizardV2InstallationInput } from '../installer-v2/wizard-installation.js';
@@ -48,7 +48,7 @@ export async function runWizard(targetDir, options = {}) {
48
48
 
49
49
  // Preflight: validate system prerequisites (Node >= 20, npm, Git, Playwright)
50
50
  const { runPreflightCheck } = await import('../installer/preflight.js');
51
- const preflight = await runPreflightCheck();
51
+ const preflight = await withSpinner(t('installer.system_checking'), () => runPreflightCheck());
52
52
  const preflightFmt = preflight.checks.map(c => {
53
53
  const icon = c.status === 'pass' ? '✓' : c.status === 'warn' ? '⚠' : '✗';
54
54
  return ` ${icon} ${c.message}`;
@@ -128,9 +128,13 @@ export async function runWizard(targetDir, options = {}) {
128
128
  continue;
129
129
  }
130
130
  selectedProviders = value;
131
- catalogResolution ??= options.signedCapabilityCatalogEnvelope
132
- ? { source: 'provided-signed', catalog: verifySignedCapabilityCatalog(options.signedCapabilityCatalogEnvelope, { publicKeyPem: options.catalogPublicKeyPem }) }
133
- : await resolveCapabilityCatalog({ projectDir: targetDir, catalogUrl: options.catalogUrl, fetchImpl: options.catalogFetch });
131
+ if (!catalogResolution) {
132
+ catalogResolution = await withSpinner(t('installer.catalog_resolving'), async () => (
133
+ options.signedCapabilityCatalogEnvelope
134
+ ? { source: 'provided-signed', catalog: verifySignedCapabilityCatalog(options.signedCapabilityCatalogEnvelope, { publicKeyPem: options.catalogPublicKeyPem }) }
135
+ : resolveCapabilityCatalog({ projectDir: targetDir, catalogUrl: options.catalogUrl, fetchImpl: options.catalogFetch })
136
+ ));
137
+ }
134
138
  // Provider selection defines the permitted routing pool. Model discovery
135
139
  // and task-specific choice stay inside the control plane.
136
140
  modelSelections = options.modelSelections;
@@ -149,7 +153,10 @@ export async function runWizard(targetDir, options = {}) {
149
153
  installationMode = value;
150
154
  if (installationMode === 'internal') {
151
155
  try {
152
- await requireLicenseEntitlement('internal', { validate: options.licenseValidator });
156
+ await withSpinner(
157
+ t('installer.internal_authorizing'),
158
+ () => requireLicenseEntitlement('internal', { validate: options.licenseValidator }),
159
+ );
153
160
  } catch (error) {
154
161
  if (options.installationMode !== undefined) throw error;
155
162
  p.log.error(error.message);
@@ -328,7 +335,10 @@ async function runLicenseActivationStep() {
328
335
  const existingKey = getLicenseKey();
329
336
  if (existingKey) {
330
337
  try {
331
- const status = await ensureCurrentMachineLicense({ key: existingKey });
338
+ const status = await withSpinner(
339
+ t('installer.license_verifying'),
340
+ () => ensureCurrentMachineLicense({ key: existingKey }),
341
+ );
332
342
  if (status.status === 'VALID') return;
333
343
  p.log.warn(t('installer.license_saved_invalid', { reason: status.reason || status.status }));
334
344
  } catch (error) {