fivocell 5.1.0 → 5.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.
- package/dist/__tests__/ci-reporter.test.d.ts +2 -0
- package/dist/__tests__/ci-reporter.test.d.ts.map +1 -0
- package/dist/__tests__/ci-reporter.test.js +109 -0
- package/dist/__tests__/ci-reporter.test.js.map +1 -0
- package/dist/__tests__/sync-engine.test.d.ts +2 -0
- package/dist/__tests__/sync-engine.test.d.ts.map +1 -0
- package/dist/__tests__/sync-engine.test.js +127 -0
- package/dist/__tests__/sync-engine.test.js.map +1 -0
- package/dist/walls/06-memory/database/database.d.ts.map +1 -1
- package/dist/walls/06-memory/database/database.js +35 -0
- package/dist/walls/06-memory/database/database.js.map +1 -1
- package/dist/walls/06-memory/stores/ci-reporter.d.ts +68 -0
- package/dist/walls/06-memory/stores/ci-reporter.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/ci-reporter.js +272 -0
- package/dist/walls/06-memory/stores/ci-reporter.js.map +1 -0
- package/dist/walls/06-memory/stores/sync-engine.d.ts +61 -0
- package/dist/walls/06-memory/stores/sync-engine.d.ts.map +1 -0
- package/dist/walls/06-memory/stores/sync-engine.js +253 -0
- package/dist/walls/06-memory/stores/sync-engine.js.map +1 -0
- package/dist/walls/07-runtime/cli/cli.js +289 -0
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +94 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -88,6 +88,12 @@ function parseArgs(argv) {
|
|
|
88
88
|
}
|
|
89
89
|
const args = parseArgs(process.argv.slice(2));
|
|
90
90
|
const cmd = args[0] || '';
|
|
91
|
+
function getArg(name) {
|
|
92
|
+
const idx = args.indexOf(name);
|
|
93
|
+
if (idx === -1)
|
|
94
|
+
return null;
|
|
95
|
+
return args[idx + 1] || null;
|
|
96
|
+
}
|
|
91
97
|
// Module-level state for watch-editor (must be declared before switch)
|
|
92
98
|
let activeMonitor = null;
|
|
93
99
|
let monitorStateFile = null;
|
|
@@ -195,6 +201,12 @@ switch (cmd) {
|
|
|
195
201
|
case 'memory':
|
|
196
202
|
doMemory();
|
|
197
203
|
break;
|
|
204
|
+
case 'ci':
|
|
205
|
+
doCI();
|
|
206
|
+
break;
|
|
207
|
+
case 'sync':
|
|
208
|
+
doSync();
|
|
209
|
+
break;
|
|
198
210
|
case 'cross-project':
|
|
199
211
|
doCrossProject();
|
|
200
212
|
break;
|
|
@@ -4095,6 +4107,45 @@ function doMemory() {
|
|
|
4095
4107
|
console.log();
|
|
4096
4108
|
return;
|
|
4097
4109
|
}
|
|
4110
|
+
if (sub === 'export') {
|
|
4111
|
+
console.log(C.bold(' ── Memory Export ──\n'));
|
|
4112
|
+
try {
|
|
4113
|
+
const { exportMemory } = require('../../06-memory/stores/sync-engine');
|
|
4114
|
+
const { detectProject } = require('../setup/setup');
|
|
4115
|
+
const project = detectProject(cwd).name;
|
|
4116
|
+
const payload = exportMemory(project);
|
|
4117
|
+
const outPath = args[2] || `fivo-memory-${project}-${Date.now()}.json`;
|
|
4118
|
+
require('fs').writeFileSync(outPath, JSON.stringify(payload, null, 2));
|
|
4119
|
+
console.log(C.success(` Exported ${payload.eventCount} events → ${outPath}`));
|
|
4120
|
+
}
|
|
4121
|
+
catch (e) {
|
|
4122
|
+
console.log(C.warn(` Export failed: ${e?.message || String(e)}`));
|
|
4123
|
+
}
|
|
4124
|
+
console.log();
|
|
4125
|
+
return;
|
|
4126
|
+
}
|
|
4127
|
+
if (sub === 'import') {
|
|
4128
|
+
console.log(C.bold(' ── Memory Import ──\n'));
|
|
4129
|
+
try {
|
|
4130
|
+
const srcPath = args[2] || '';
|
|
4131
|
+
if (!srcPath) {
|
|
4132
|
+
console.log(C.warn(' Usage: cell memory import <file.json>'));
|
|
4133
|
+
console.log();
|
|
4134
|
+
return;
|
|
4135
|
+
}
|
|
4136
|
+
const payload = JSON.parse(require('fs').readFileSync(srcPath, 'utf-8'));
|
|
4137
|
+
const { importMemory } = require('../../06-memory/stores/sync-engine');
|
|
4138
|
+
const { detectProject } = require('../setup/setup');
|
|
4139
|
+
const project = detectProject(cwd).name;
|
|
4140
|
+
const result = importMemory(payload, project);
|
|
4141
|
+
console.log(C.success(` Added: ${result.added}, Skipped: ${result.skipped}, Errors: ${result.errors.length}`));
|
|
4142
|
+
}
|
|
4143
|
+
catch (e) {
|
|
4144
|
+
console.log(C.warn(` Import failed: ${e?.message || String(e)}`));
|
|
4145
|
+
}
|
|
4146
|
+
console.log();
|
|
4147
|
+
return;
|
|
4148
|
+
}
|
|
4098
4149
|
console.log(C.bold(' Cell Memory'));
|
|
4099
4150
|
console.log(C.dim(' ──────────'));
|
|
4100
4151
|
console.log(C.dim(' cell memory search <query> Search memory events'));
|
|
@@ -4121,6 +4172,244 @@ function doMemory() {
|
|
|
4121
4172
|
console.log(C.dim(' cell memory compress [mode] Compress context'));
|
|
4122
4173
|
console.log(C.dim(' cell memory export Export to JSON'));
|
|
4123
4174
|
console.log(C.dim(' cell memory stats Show memory stats'));
|
|
4175
|
+
console.log(C.dim(' cell memory export Export memory archive'));
|
|
4176
|
+
console.log(C.dim(' cell memory import Import memory archive'));
|
|
4177
|
+
console.log();
|
|
4178
|
+
}
|
|
4179
|
+
function doCI() {
|
|
4180
|
+
const sub = args[1] || '';
|
|
4181
|
+
const cwd = process.cwd();
|
|
4182
|
+
if (sub === 'report' || sub === 'r') {
|
|
4183
|
+
const buildId = getArg('--build-id') || `local-${Date.now()}`;
|
|
4184
|
+
const status = getArg('--status') || 'success';
|
|
4185
|
+
const stage = getArg('--stage') || 'build';
|
|
4186
|
+
const commit = getArg('--commit') || '';
|
|
4187
|
+
const message = getArg('--message') || '';
|
|
4188
|
+
const author = getArg('--author') || '';
|
|
4189
|
+
const platform = getArg('--platform') || 'local';
|
|
4190
|
+
const branch = getArg('--branch') || '';
|
|
4191
|
+
const duration = parseInt(getArg('--duration') || '0', 10);
|
|
4192
|
+
const logSnippet = getArg('--log') || '';
|
|
4193
|
+
console.log(C.bold(` ── CI Report Build ──\n`));
|
|
4194
|
+
try {
|
|
4195
|
+
const { reportCIBuild } = require('../../06-memory/stores/ci-reporter');
|
|
4196
|
+
const { detectProject } = require('../setup/setup');
|
|
4197
|
+
const project = detectProject(cwd).name;
|
|
4198
|
+
const id = reportCIBuild({
|
|
4199
|
+
project,
|
|
4200
|
+
branch,
|
|
4201
|
+
buildId,
|
|
4202
|
+
status: status,
|
|
4203
|
+
duration,
|
|
4204
|
+
stage,
|
|
4205
|
+
commitHash: commit,
|
|
4206
|
+
commitMessage: message,
|
|
4207
|
+
author,
|
|
4208
|
+
timestamp: new Date().toISOString(),
|
|
4209
|
+
logSnippet,
|
|
4210
|
+
ciPlatform: platform,
|
|
4211
|
+
});
|
|
4212
|
+
console.log(C.success(` Build reported (event #${id}): ${status} [${stage}]`));
|
|
4213
|
+
}
|
|
4214
|
+
catch (e) {
|
|
4215
|
+
console.log(C.warn(` Report failed: ${e?.message || String(e)}`));
|
|
4216
|
+
}
|
|
4217
|
+
console.log();
|
|
4218
|
+
return;
|
|
4219
|
+
}
|
|
4220
|
+
if (sub === 'report-test' || sub === 'rt') {
|
|
4221
|
+
const buildId = getArg('--build-id') || `local-${Date.now()}`;
|
|
4222
|
+
const total = parseInt(getArg('--total') || '0', 10);
|
|
4223
|
+
const passed = parseInt(getArg('--passed') || '0', 10);
|
|
4224
|
+
const failed = parseInt(getArg('--failed') || '0', 10);
|
|
4225
|
+
const skipped = parseInt(getArg('--skipped') || '0', 10);
|
|
4226
|
+
const duration = parseInt(getArg('--duration') || '0', 10);
|
|
4227
|
+
const coverage = getArg('--coverage') ? parseFloat(getArg('--coverage')) : undefined;
|
|
4228
|
+
const branch = getArg('--branch') || '';
|
|
4229
|
+
console.log(C.bold(` ── CI Report Tests ──\n`));
|
|
4230
|
+
try {
|
|
4231
|
+
const { reportCITest } = require('../../06-memory/stores/ci-reporter');
|
|
4232
|
+
const { detectProject } = require('../setup/setup');
|
|
4233
|
+
const project = detectProject(cwd).name;
|
|
4234
|
+
const failedTests = [];
|
|
4235
|
+
const id = reportCITest({
|
|
4236
|
+
project,
|
|
4237
|
+
branch,
|
|
4238
|
+
buildId,
|
|
4239
|
+
totalTests: total,
|
|
4240
|
+
passed,
|
|
4241
|
+
failed,
|
|
4242
|
+
skipped,
|
|
4243
|
+
duration,
|
|
4244
|
+
failedTests,
|
|
4245
|
+
coverage,
|
|
4246
|
+
timestamp: new Date().toISOString(),
|
|
4247
|
+
});
|
|
4248
|
+
const color = failed > 0 ? C.warn : C.success;
|
|
4249
|
+
console.log(color(` Tests reported (event #${id}): ${passed}/${total} passed`));
|
|
4250
|
+
}
|
|
4251
|
+
catch (e) {
|
|
4252
|
+
console.log(C.warn(` Report failed: ${e?.message || String(e)}`));
|
|
4253
|
+
}
|
|
4254
|
+
console.log();
|
|
4255
|
+
return;
|
|
4256
|
+
}
|
|
4257
|
+
if (sub === 'report-deploy' || sub === 'rd') {
|
|
4258
|
+
const env = getArg('--env') || 'local';
|
|
4259
|
+
const status = getArg('--status') || 'success';
|
|
4260
|
+
const version = getArg('--version') || '0.0.0';
|
|
4261
|
+
const duration = parseInt(getArg('--duration') || '0', 10);
|
|
4262
|
+
console.log(C.bold(` ── CI Report Deploy ──\n`));
|
|
4263
|
+
try {
|
|
4264
|
+
const { reportCIDeploy } = require('../../06-memory/stores/ci-reporter');
|
|
4265
|
+
const { detectProject } = require('../setup/setup');
|
|
4266
|
+
const project = detectProject(cwd).name;
|
|
4267
|
+
const id = reportCIDeploy({
|
|
4268
|
+
project,
|
|
4269
|
+
environment: env,
|
|
4270
|
+
status: status,
|
|
4271
|
+
version,
|
|
4272
|
+
duration,
|
|
4273
|
+
timestamp: new Date().toISOString(),
|
|
4274
|
+
});
|
|
4275
|
+
const color = status === 'success' ? C.success : C.warn;
|
|
4276
|
+
console.log(color(` Deploy reported (event #${id}): ${status} ${version} → ${env}`));
|
|
4277
|
+
}
|
|
4278
|
+
catch (e) {
|
|
4279
|
+
console.log(C.warn(` Report failed: ${e?.message || String(e)}`));
|
|
4280
|
+
}
|
|
4281
|
+
console.log();
|
|
4282
|
+
return;
|
|
4283
|
+
}
|
|
4284
|
+
if (sub === 'summary' || sub === 's') {
|
|
4285
|
+
const days = parseInt(args[2] || '30', 10);
|
|
4286
|
+
console.log(C.bold(` ── CI/CD Summary (${days} days) ──\n`));
|
|
4287
|
+
try {
|
|
4288
|
+
const { getCISummary, formatCISummary } = require('../../06-memory/stores/ci-reporter');
|
|
4289
|
+
const { detectProject } = require('../setup/setup');
|
|
4290
|
+
const project = detectProject(cwd).name;
|
|
4291
|
+
const summary = getCISummary(project, days);
|
|
4292
|
+
console.log(formatCISummary(summary));
|
|
4293
|
+
}
|
|
4294
|
+
catch (e) {
|
|
4295
|
+
console.log(C.warn(` CI summary failed: ${e?.message || String(e)}`));
|
|
4296
|
+
}
|
|
4297
|
+
console.log();
|
|
4298
|
+
return;
|
|
4299
|
+
}
|
|
4300
|
+
if (sub === 'failures' || sub === 'f') {
|
|
4301
|
+
const days = parseInt(args[2] || '30', 10);
|
|
4302
|
+
console.log(C.bold(` ── CI Failure Patterns (${days} days) ──\n`));
|
|
4303
|
+
try {
|
|
4304
|
+
const { detectCIFailurePatterns } = require('../../06-memory/stores/ci-reporter');
|
|
4305
|
+
const { detectProject } = require('../setup/setup');
|
|
4306
|
+
const project = detectProject(cwd).name;
|
|
4307
|
+
const patterns = detectCIFailurePatterns(project, days);
|
|
4308
|
+
if (patterns.length === 0) {
|
|
4309
|
+
console.log(C.dim(' No failure patterns detected.'));
|
|
4310
|
+
}
|
|
4311
|
+
else {
|
|
4312
|
+
for (const p of patterns) {
|
|
4313
|
+
const sevColor = p.severity === 'critical' ? C.warn : p.severity === 'warning' ? C.primary : C.dim;
|
|
4314
|
+
console.log(` ${sevColor(`[${p.severity}]`)} ${p.pattern}`);
|
|
4315
|
+
console.log(C.dim(` Count: ${p.count} | Branches: ${p.affectedBranches.join(', ')}`));
|
|
4316
|
+
console.log(C.dim(` Suggestion: ${p.suggestion}`));
|
|
4317
|
+
}
|
|
4318
|
+
}
|
|
4319
|
+
}
|
|
4320
|
+
catch (e) {
|
|
4321
|
+
console.log(C.warn(` CI failures failed: ${e?.message || String(e)}`));
|
|
4322
|
+
}
|
|
4323
|
+
console.log();
|
|
4324
|
+
return;
|
|
4325
|
+
}
|
|
4326
|
+
console.log(C.bold(' Cell CI/CD'));
|
|
4327
|
+
console.log(C.dim(' ──────────'));
|
|
4328
|
+
console.log(C.dim(' cell ci report Report build result'));
|
|
4329
|
+
console.log(C.dim(' cell ci report-test Report test results'));
|
|
4330
|
+
console.log(C.dim(' cell ci report-deploy Report deployment'));
|
|
4331
|
+
console.log(C.dim(' cell ci summary [days] CI/CD summary'));
|
|
4332
|
+
console.log(C.dim(' cell ci failures [days] Failure patterns'));
|
|
4333
|
+
console.log(C.dim(''));
|
|
4334
|
+
console.log(C.dim(' Options:'));
|
|
4335
|
+
console.log(C.dim(' --build-id ID Build identifier'));
|
|
4336
|
+
console.log(C.dim(' --status STATUS success|failure|cancelled'));
|
|
4337
|
+
console.log(C.dim(' --stage STAGE build|test|lint|deploy'));
|
|
4338
|
+
console.log(C.dim(' --commit HASH Commit hash'));
|
|
4339
|
+
console.log(C.dim(' --branch NAME Branch name'));
|
|
4340
|
+
console.log(C.dim(' --platform NAME github-actions|gitlab-ci|jenkins|local'));
|
|
4341
|
+
console.log(C.dim(' --duration MS Build duration in ms'));
|
|
4342
|
+
console.log(C.dim(' --env ENV staging|production|preview'));
|
|
4343
|
+
console.log(C.dim(' --version VER Version string'));
|
|
4344
|
+
console.log(C.dim(' --total N Total tests'));
|
|
4345
|
+
console.log(C.dim(' --passed N Passed tests'));
|
|
4346
|
+
console.log(C.dim(' --failed N Failed tests'));
|
|
4347
|
+
console.log(C.dim(' --coverage N Coverage percentage'));
|
|
4348
|
+
console.log();
|
|
4349
|
+
}
|
|
4350
|
+
function doSync() {
|
|
4351
|
+
const sub = args[1] || '';
|
|
4352
|
+
const cwd = process.cwd();
|
|
4353
|
+
if (sub === 'status' || sub === 'st') {
|
|
4354
|
+
console.log(C.bold(' ── Sync Status ──\n'));
|
|
4355
|
+
try {
|
|
4356
|
+
const { getSyncStatus } = require('../../06-memory/stores/sync-engine');
|
|
4357
|
+
const { detectProject } = require('../setup/setup');
|
|
4358
|
+
const project = detectProject(cwd).name;
|
|
4359
|
+
const status = getSyncStatus(project);
|
|
4360
|
+
console.log(` Last sync: ${status.lastSyncAt ? C.dim(status.lastSyncAt) : C.warn('never')}`);
|
|
4361
|
+
console.log(` Pending up: ${status.pendingUpload > 0 ? C.warn(status.pendingUpload) : C.success(status.pendingUpload)}`);
|
|
4362
|
+
console.log(` Conflicts: ${status.conflicts > 0 ? C.warn(status.conflicts) : C.success(status.conflicts)}`);
|
|
4363
|
+
}
|
|
4364
|
+
catch (e) {
|
|
4365
|
+
console.log(C.warn(` Sync status failed: ${e?.message || String(e)}`));
|
|
4366
|
+
}
|
|
4367
|
+
console.log();
|
|
4368
|
+
return;
|
|
4369
|
+
}
|
|
4370
|
+
if (sub === 'diff') {
|
|
4371
|
+
console.log(C.bold(' ── Sync Diff ──\n'));
|
|
4372
|
+
try {
|
|
4373
|
+
const { getSyncStatus } = require('../../06-memory/stores/sync-engine');
|
|
4374
|
+
const { detectProject } = require('../setup/setup');
|
|
4375
|
+
const project = detectProject(cwd).name;
|
|
4376
|
+
const status = getSyncStatus(project);
|
|
4377
|
+
const localOnly = status.pendingUpload;
|
|
4378
|
+
console.log(` Local-only events: ${localOnly > 0 ? C.warn(localOnly) : C.success(localOnly)}`);
|
|
4379
|
+
console.log(C.dim(' To diff against a remote file, use:'));
|
|
4380
|
+
console.log(C.dim(' cell memory export → creates export file'));
|
|
4381
|
+
console.log(C.dim(' then compare manually or use API.'));
|
|
4382
|
+
}
|
|
4383
|
+
catch (e) {
|
|
4384
|
+
console.log(C.warn(` Diff failed: ${e?.message || String(e)}`));
|
|
4385
|
+
}
|
|
4386
|
+
console.log();
|
|
4387
|
+
return;
|
|
4388
|
+
}
|
|
4389
|
+
if (sub === 'snapshot') {
|
|
4390
|
+
console.log(C.bold(' ── Sync Snapshot ──\n'));
|
|
4391
|
+
try {
|
|
4392
|
+
const { saveSyncSnapshot } = require('../../06-memory/stores/sync-engine');
|
|
4393
|
+
const { detectProject } = require('../setup/setup');
|
|
4394
|
+
const project = detectProject(cwd).name;
|
|
4395
|
+
saveSyncSnapshot(project);
|
|
4396
|
+
console.log(C.success(' Snapshot saved'));
|
|
4397
|
+
}
|
|
4398
|
+
catch (e) {
|
|
4399
|
+
console.log(C.warn(` Snapshot failed: ${e?.message || String(e)}`));
|
|
4400
|
+
}
|
|
4401
|
+
console.log();
|
|
4402
|
+
return;
|
|
4403
|
+
}
|
|
4404
|
+
console.log(C.bold(' Cell Sync'));
|
|
4405
|
+
console.log(C.dim(' ─────────'));
|
|
4406
|
+
console.log(C.dim(' cell sync status Show sync status'));
|
|
4407
|
+
console.log(C.dim(' cell sync diff Show pending changes'));
|
|
4408
|
+
console.log(C.dim(' cell sync snapshot Save a sync snapshot'));
|
|
4409
|
+
console.log(C.dim(''));
|
|
4410
|
+
console.log(C.dim(' Also available via memory subcommands:'));
|
|
4411
|
+
console.log(C.dim(' cell memory export Export memory archive'));
|
|
4412
|
+
console.log(C.dim(' cell memory import Import memory archive'));
|
|
4124
4413
|
console.log();
|
|
4125
4414
|
}
|
|
4126
4415
|
//# sourceMappingURL=cli.js.map
|