metame-cli 1.3.18 → 1.3.22
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/README.md +116 -570
- package/index.js +19 -4
- package/package.json +1 -1
- package/scripts/daemon.js +697 -159
- package/scripts/distill.js +16 -0
- package/scripts/feishu-adapter.js +97 -21
- package/scripts/schema.js +1 -2
- package/scripts/signal-capture.js +5 -0
- package/scripts/skill-evolution.js +792 -0
- package/scripts/test_daemon.js +3818 -0
package/index.js
CHANGED
|
@@ -203,6 +203,21 @@ function spawnDistillBackground() {
|
|
|
203
203
|
} catch { /* stale lock, proceed */ }
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
+
// 4-hour cooldown: check last distill timestamp from profile
|
|
207
|
+
const cooldownMs = 4 * 60 * 60 * 1000;
|
|
208
|
+
try {
|
|
209
|
+
const profilePath = path.join(process.env.HOME || '', '.claude_profile.yaml');
|
|
210
|
+
if (fs.existsSync(profilePath)) {
|
|
211
|
+
const yaml = require('js-yaml');
|
|
212
|
+
const profile = yaml.load(fs.readFileSync(profilePath, 'utf8'));
|
|
213
|
+
const distillLog = profile && profile.evolution && profile.evolution.auto_distill;
|
|
214
|
+
if (Array.isArray(distillLog) && distillLog.length > 0) {
|
|
215
|
+
const lastTs = new Date(distillLog[distillLog.length - 1].ts).getTime();
|
|
216
|
+
if (Date.now() - lastTs < cooldownMs) return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
} catch { /* non-fatal, proceed */ }
|
|
220
|
+
|
|
206
221
|
const hasSignals = shouldDistill();
|
|
207
222
|
const bootstrap = needsBootstrap();
|
|
208
223
|
|
|
@@ -305,7 +320,7 @@ runExpiryCleanup();
|
|
|
305
320
|
if (!fs.existsSync(BRAIN_FILE)) {
|
|
306
321
|
const initialProfile = `identity:
|
|
307
322
|
role: Unknown
|
|
308
|
-
|
|
323
|
+
locale: null
|
|
309
324
|
status:
|
|
310
325
|
focus: Initializing
|
|
311
326
|
`;
|
|
@@ -367,12 +382,12 @@ You are entering **Calibration Mode**. You are not a chatbot; you are a Psycholo
|
|
|
367
382
|
|
|
368
383
|
5. **Shadows (Hidden Fears):** What are you avoiding? What pattern do you keep repeating? What keeps you up at night?
|
|
369
384
|
|
|
370
|
-
6. **Identity (
|
|
385
|
+
6. **Identity (Role + Locale):** Based on everything learned, propose a role summary and confirm their preferred language (locale). Ask if it resonates.
|
|
371
386
|
|
|
372
387
|
**TERMINATION:**
|
|
373
388
|
- After 5-7 exchanges, synthesize everything into \`~/.claude_profile.yaml\`.
|
|
374
389
|
- **LOCK** Core Values with \`# [LOCKED]\`.
|
|
375
|
-
- Announce: "Link Established.
|
|
390
|
+
- Announce: "Link Established. Profile calibrated."
|
|
376
391
|
- Then proceed to **Phase 2** below.
|
|
377
392
|
|
|
378
393
|
**3. SETUP WIZARD (Phase 2 — Optional):**
|
|
@@ -440,7 +455,7 @@ let isKnownUser = false;
|
|
|
440
455
|
try {
|
|
441
456
|
if (fs.existsSync(BRAIN_FILE)) {
|
|
442
457
|
const doc = yaml.load(fs.readFileSync(BRAIN_FILE, 'utf8')) || {};
|
|
443
|
-
if (doc.identity && doc.identity.
|
|
458
|
+
if (doc.identity && doc.identity.locale && doc.identity.locale !== 'null') {
|
|
444
459
|
isKnownUser = true;
|
|
445
460
|
}
|
|
446
461
|
}
|