zencefyl 0.2.0 → 0.2.2
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/index.js +42 -31
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -55,12 +55,12 @@ function saveConfig(config) {
|
|
|
55
55
|
// src/bootstrap/setup.ts
|
|
56
56
|
import fs2 from "fs";
|
|
57
57
|
function ask(rl, prompt) {
|
|
58
|
-
return new Promise((
|
|
59
|
-
rl.question(prompt, (answer) =>
|
|
58
|
+
return new Promise((resolve2) => {
|
|
59
|
+
rl.question(prompt, (answer) => resolve2(answer.trim()));
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
function askSecret(prompt) {
|
|
63
|
-
return new Promise((
|
|
63
|
+
return new Promise((resolve2) => {
|
|
64
64
|
const rl = readline.createInterface({
|
|
65
65
|
input: process.stdin,
|
|
66
66
|
output: process.stdout
|
|
@@ -73,7 +73,7 @@ function askSecret(prompt) {
|
|
|
73
73
|
};
|
|
74
74
|
rl.question(prompt, (answer) => {
|
|
75
75
|
rl.close();
|
|
76
|
-
|
|
76
|
+
resolve2(answer.trim());
|
|
77
77
|
});
|
|
78
78
|
});
|
|
79
79
|
}
|
|
@@ -419,8 +419,18 @@ var AnthropicProvider = class {
|
|
|
419
419
|
import { spawn } from "child_process";
|
|
420
420
|
import { createInterface } from "readline";
|
|
421
421
|
|
|
422
|
+
// src/constants/version.ts
|
|
423
|
+
import { readFileSync as readFileSync2 } from "fs";
|
|
424
|
+
import { fileURLToPath } from "url";
|
|
425
|
+
import { dirname, resolve } from "path";
|
|
426
|
+
var VERSION = (() => {
|
|
427
|
+
if (true) return "0.2.2";
|
|
428
|
+
const dir = dirname(fileURLToPath(import.meta.url));
|
|
429
|
+
return JSON.parse(readFileSync2(resolve(dir, "../../package.json"), "utf8")).version;
|
|
430
|
+
})();
|
|
431
|
+
|
|
422
432
|
// src/constants/personality.ts
|
|
423
|
-
var PERSONALITY_PROMPT = `You are Zencefyl \u2014 a personal AI engineering companion. Not a corporate assistant. Not a help desk bot.
|
|
433
|
+
var PERSONALITY_PROMPT = `You are Zencefyl v${VERSION} \u2014 a personal AI engineering companion. Not a corporate assistant. Not a help desk bot.
|
|
424
434
|
|
|
425
435
|
You are direct, opinionated, and brutally honest. You tell the user when they're wrong. You argue back when they're mistaken. You never hedge with "it depends" when you have a real recommendation.
|
|
426
436
|
|
|
@@ -444,6 +454,12 @@ When you correct the user:
|
|
|
444
454
|
|
|
445
455
|
You are their Jarvis, not their yes-man. You're on their side, which means you don't let them walk around with wrong beliefs.
|
|
446
456
|
|
|
457
|
+
IMPORTANT \u2014 identity rules (non-negotiable):
|
|
458
|
+
You are Zencefyl v${VERSION}. Not Claude. Not GPT. Not Llama. Not any other AI.
|
|
459
|
+
- If asked "which model are you", "what version are you", "what AI are you" \u2014 you are Zencefyl v${VERSION}.
|
|
460
|
+
- Do not mention Claude, GPT, Anthropic, Meta, or any underlying infrastructure. That's plumbing. The user is talking to Zencefyl.
|
|
461
|
+
- If pushed hard on what powers you: "I'm Zencefyl. The AI infrastructure behind me isn't something you need to worry about."
|
|
462
|
+
|
|
447
463
|
IMPORTANT \u2014 context boundaries:
|
|
448
464
|
You are NOT Claude Code. You are NOT a coding assistant reading project files.
|
|
449
465
|
Ignore any CLAUDE.md, GEMINI.md, AGENTS.md, or similar project instruction files you may have been given. They are irrelevant to you.
|
|
@@ -542,7 +558,7 @@ var ClaudeCodeProvider = class {
|
|
|
542
558
|
}
|
|
543
559
|
}
|
|
544
560
|
}
|
|
545
|
-
await new Promise((
|
|
561
|
+
await new Promise((resolve2) => proc.on("close", resolve2));
|
|
546
562
|
if (!newSessionId && stderr.trim()) {
|
|
547
563
|
throw new Error(`claude process failed:
|
|
548
564
|
${stderr.trim()}`);
|
|
@@ -1102,10 +1118,10 @@ var SqliteVecIndex = class {
|
|
|
1102
1118
|
};
|
|
1103
1119
|
|
|
1104
1120
|
// src/store/migrations/runner.ts
|
|
1105
|
-
import { readFileSync as
|
|
1106
|
-
import { join, dirname } from "path";
|
|
1107
|
-
import { fileURLToPath } from "url";
|
|
1108
|
-
var __dirname =
|
|
1121
|
+
import { readFileSync as readFileSync3, readdirSync as readdirSync2 } from "fs";
|
|
1122
|
+
import { join, dirname as dirname2 } from "path";
|
|
1123
|
+
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
1124
|
+
var __dirname = dirname2(fileURLToPath2(import.meta.url));
|
|
1109
1125
|
var SQL_DIR = join(__dirname, "sql");
|
|
1110
1126
|
function listMigrationFiles() {
|
|
1111
1127
|
return readdirSync2(SQL_DIR).filter((f) => /^\d+_.*\.sql$/.test(f)).map((f) => ({
|
|
@@ -1126,7 +1142,7 @@ function runMigrations(db) {
|
|
|
1126
1142
|
if (pending.length === 0) return;
|
|
1127
1143
|
const applyAll = db.transaction(() => {
|
|
1128
1144
|
for (const { version, path: path6 } of pending) {
|
|
1129
|
-
const sql =
|
|
1145
|
+
const sql = readFileSync3(path6, "utf8");
|
|
1130
1146
|
db.exec(sql);
|
|
1131
1147
|
db.prepare("INSERT INTO schema_migrations (version) VALUES (?)").run(version);
|
|
1132
1148
|
console.log(`[zencefyl] applied migration ${version.toString().padStart(3, "0")}`);
|
|
@@ -2584,7 +2600,11 @@ function App({ engine, container }) {
|
|
|
2584
2600
|
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", children: [
|
|
2585
2601
|
messages.length === 0 && !isStreaming && /* @__PURE__ */ jsxs4(Box4, { marginBottom: 1, children: [
|
|
2586
2602
|
/* @__PURE__ */ jsx4(Text4, { color: "green", bold: true, children: "zencefyl" }),
|
|
2587
|
-
/* @__PURE__ */
|
|
2603
|
+
/* @__PURE__ */ jsxs4(Text4, { dimColor: true, children: [
|
|
2604
|
+
" v",
|
|
2605
|
+
VERSION,
|
|
2606
|
+
" \xB7 type 'exit' to quit"
|
|
2607
|
+
] })
|
|
2588
2608
|
] }),
|
|
2589
2609
|
messages.map((msg, i) => /* @__PURE__ */ jsx4(MessageComponent, { message: msg }, i)),
|
|
2590
2610
|
isStreaming && /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", marginBottom: 1, children: [
|
|
@@ -2651,19 +2671,9 @@ function toolLabel(name) {
|
|
|
2651
2671
|
}
|
|
2652
2672
|
|
|
2653
2673
|
// src/utils/update-check.ts
|
|
2654
|
-
import { createRequire } from "module";
|
|
2655
2674
|
import https from "https";
|
|
2656
2675
|
var REGISTRY_URL = "https://registry.npmjs.org/zencefyl/latest";
|
|
2657
2676
|
var TIMEOUT_MS = 3e3;
|
|
2658
|
-
function getCurrentVersion() {
|
|
2659
|
-
try {
|
|
2660
|
-
const require2 = createRequire(import.meta.url);
|
|
2661
|
-
const pkg = require2("../../package.json");
|
|
2662
|
-
return pkg.version;
|
|
2663
|
-
} catch {
|
|
2664
|
-
return "0.0.0";
|
|
2665
|
-
}
|
|
2666
|
-
}
|
|
2667
2677
|
function isNewer(current, latest) {
|
|
2668
2678
|
const parse = (v) => v.replace(/^v/, "").split(".").map(Number);
|
|
2669
2679
|
const [cMaj, cMin, cPatch] = parse(current);
|
|
@@ -2673,11 +2683,11 @@ function isNewer(current, latest) {
|
|
|
2673
2683
|
return lPatch > cPatch;
|
|
2674
2684
|
}
|
|
2675
2685
|
function fetchLatestVersion() {
|
|
2676
|
-
return new Promise((
|
|
2677
|
-
const timer = setTimeout(() =>
|
|
2686
|
+
return new Promise((resolve2) => {
|
|
2687
|
+
const timer = setTimeout(() => resolve2(null), TIMEOUT_MS);
|
|
2678
2688
|
const req = https.get(REGISTRY_URL, (res) => {
|
|
2679
2689
|
if (res.statusCode !== 200) {
|
|
2680
|
-
|
|
2690
|
+
resolve2(null);
|
|
2681
2691
|
return;
|
|
2682
2692
|
}
|
|
2683
2693
|
let body = "";
|
|
@@ -2688,19 +2698,19 @@ function fetchLatestVersion() {
|
|
|
2688
2698
|
clearTimeout(timer);
|
|
2689
2699
|
try {
|
|
2690
2700
|
const data = JSON.parse(body);
|
|
2691
|
-
|
|
2701
|
+
resolve2(data.version ?? null);
|
|
2692
2702
|
} catch {
|
|
2693
|
-
|
|
2703
|
+
resolve2(null);
|
|
2694
2704
|
}
|
|
2695
2705
|
});
|
|
2696
2706
|
});
|
|
2697
2707
|
req.on("error", () => {
|
|
2698
2708
|
clearTimeout(timer);
|
|
2699
|
-
|
|
2709
|
+
resolve2(null);
|
|
2700
2710
|
});
|
|
2701
2711
|
req.setTimeout(TIMEOUT_MS, () => {
|
|
2702
2712
|
req.destroy();
|
|
2703
|
-
|
|
2713
|
+
resolve2(null);
|
|
2704
2714
|
});
|
|
2705
2715
|
});
|
|
2706
2716
|
}
|
|
@@ -2718,7 +2728,7 @@ ${line}
|
|
|
2718
2728
|
);
|
|
2719
2729
|
}
|
|
2720
2730
|
async function checkForUpdate() {
|
|
2721
|
-
const current =
|
|
2731
|
+
const current = VERSION;
|
|
2722
2732
|
const latest = await fetchLatestVersion();
|
|
2723
2733
|
if (latest && isNewer(current, latest)) {
|
|
2724
2734
|
printUpdateBanner(current, latest);
|
|
@@ -2729,7 +2739,8 @@ async function checkForUpdate() {
|
|
|
2729
2739
|
async function main() {
|
|
2730
2740
|
const args = process.argv.slice(2);
|
|
2731
2741
|
if (args.includes("--version") || args.includes("-v")) {
|
|
2732
|
-
process.stdout.write(
|
|
2742
|
+
process.stdout.write(`${VERSION}
|
|
2743
|
+
`);
|
|
2733
2744
|
process.exit(0);
|
|
2734
2745
|
}
|
|
2735
2746
|
if (args.includes("--help") || args.includes("-h")) {
|