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.
- package/framework/config.yaml +2 -2
- package/framework/context/root.md +1 -1
- package/framework/i18n/en.yaml +4 -0
- package/framework/i18n/es.yaml +4 -0
- package/framework/i18n/fr.yaml +4 -0
- package/framework/i18n/pt.yaml +4 -0
- package/framework/manifest.json +12 -12
- package/framework/manifest.sig +1 -1
- package/package.json +1 -1
- package/src/wizard/feedback.js +11 -0
- package/src/wizard/i18n.js +4 -0
- package/src/wizard/index.js +17 -7
package/framework/config.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Chati.dev System Context
|
|
2
2
|
|
|
3
3
|
## Framework
|
|
4
|
-
- **Version**: 4.5.
|
|
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)
|
package/framework/i18n/en.yaml
CHANGED
|
@@ -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."
|
package/framework/i18n/es.yaml
CHANGED
|
@@ -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."
|
package/framework/i18n/fr.yaml
CHANGED
|
@@ -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."
|
package/framework/i18n/pt.yaml
CHANGED
|
@@ -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."
|
package/framework/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"createdAt": "2026-08-28T08:
|
|
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": "
|
|
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": "
|
|
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": "
|
|
381
|
-
"size":
|
|
380
|
+
"hash": "dbaf6e3da9820a933bd6b358e5dcce49057c7b34c7855d6f7f443833202f347a",
|
|
381
|
+
"size": 8307,
|
|
382
382
|
"type": "yaml"
|
|
383
383
|
},
|
|
384
384
|
"i18n/es.yaml": {
|
|
385
|
-
"hash": "
|
|
386
|
-
"size":
|
|
385
|
+
"hash": "047a14e7fa763179002c265f2df3bf0e9a407d5fc8b8fac0ff05ae92562f11eb",
|
|
386
|
+
"size": 8941,
|
|
387
387
|
"type": "yaml"
|
|
388
388
|
},
|
|
389
389
|
"i18n/fr.yaml": {
|
|
390
|
-
"hash": "
|
|
391
|
-
"size":
|
|
390
|
+
"hash": "8353e42d8124546109833a123143e905dbb976abe658259d3782aa5d1190d0b4",
|
|
391
|
+
"size": 9090,
|
|
392
392
|
"type": "yaml"
|
|
393
393
|
},
|
|
394
394
|
"i18n/pt.yaml": {
|
|
395
|
-
"hash": "
|
|
396
|
-
"size":
|
|
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.
|
|
1355
|
+
"version": "4.5.15"
|
|
1356
1356
|
}
|
package/framework/manifest.sig
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
FzKXNObHfbT1CWViyyRa9aPZdEE7IldMN56uz1W0gaBxVA9wvd6bCOfBnYR+FxVlPpfT+XD/OqoCvKqBM6L5BQ==
|
package/package.json
CHANGED
package/src/wizard/feedback.js
CHANGED
|
@@ -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
|
*/
|
package/src/wizard/i18n.js
CHANGED
|
@@ -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.',
|
package/src/wizard/index.js
CHANGED
|
@@ -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
|
|
132
|
-
|
|
133
|
-
|
|
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
|
|
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
|
|
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) {
|