@datacore-one/cli 1.0.3 → 1.0.4
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 +114 -183
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8005,7 +8005,7 @@ function checkGitLfs(platform2) {
|
|
|
8005
8005
|
const installed = commandExists("git-lfs");
|
|
8006
8006
|
return {
|
|
8007
8007
|
name: "git-lfs",
|
|
8008
|
-
required:
|
|
8008
|
+
required: false,
|
|
8009
8009
|
installed,
|
|
8010
8010
|
version: installed ? getVersion("git-lfs") : undefined,
|
|
8011
8011
|
installCommand: installed ? undefined : getInstallCommand("git-lfs", platform2) ?? undefined
|
|
@@ -8651,8 +8651,6 @@ function startOperation(operation, params = {}) {
|
|
|
8651
8651
|
}
|
|
8652
8652
|
|
|
8653
8653
|
// src/lib/animation.ts
|
|
8654
|
-
var SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
8655
|
-
var MATRIX_CHARS = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン0123456789";
|
|
8656
8654
|
var c = {
|
|
8657
8655
|
reset: "\x1B[0m",
|
|
8658
8656
|
bright: "\x1B[1m",
|
|
@@ -8688,111 +8686,11 @@ ${c.green}${c.bright}
|
|
|
8688
8686
|
╚═══════════════════════════════════════════════════════════════╝
|
|
8689
8687
|
${c.reset}
|
|
8690
8688
|
`;
|
|
8691
|
-
function sleep(ms) {
|
|
8692
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
8693
|
-
}
|
|
8694
|
-
async function typewrite(text, speed = 30) {
|
|
8695
|
-
for (const char of text) {
|
|
8696
|
-
process.stdout.write(char);
|
|
8697
|
-
await sleep(speed);
|
|
8698
|
-
}
|
|
8699
|
-
console.log();
|
|
8700
|
-
}
|
|
8701
|
-
class Spinner {
|
|
8702
|
-
interval = null;
|
|
8703
|
-
frame = 0;
|
|
8704
|
-
message;
|
|
8705
|
-
constructor(message) {
|
|
8706
|
-
this.message = message;
|
|
8707
|
-
}
|
|
8708
|
-
start() {
|
|
8709
|
-
process.stdout.write("\x1B[?25l");
|
|
8710
|
-
this.interval = setInterval(() => {
|
|
8711
|
-
const spinner = SPINNER_FRAMES[this.frame % SPINNER_FRAMES.length];
|
|
8712
|
-
process.stdout.write(`\r${c.cyan}${spinner}${c.reset} ${this.message}`);
|
|
8713
|
-
this.frame++;
|
|
8714
|
-
}, 80);
|
|
8715
|
-
}
|
|
8716
|
-
update(message) {
|
|
8717
|
-
this.message = message;
|
|
8718
|
-
}
|
|
8719
|
-
succeed(message) {
|
|
8720
|
-
this.stop();
|
|
8721
|
-
console.log(`\r${c.green}✓${c.reset} ${message || this.message}`);
|
|
8722
|
-
}
|
|
8723
|
-
fail(message) {
|
|
8724
|
-
this.stop();
|
|
8725
|
-
console.log(`\r${c.yellow}✗${c.reset} ${message || this.message}`);
|
|
8726
|
-
}
|
|
8727
|
-
stop() {
|
|
8728
|
-
if (this.interval) {
|
|
8729
|
-
clearInterval(this.interval);
|
|
8730
|
-
this.interval = null;
|
|
8731
|
-
}
|
|
8732
|
-
process.stdout.write("\x1B[?25h");
|
|
8733
|
-
process.stdout.write("\r" + " ".repeat(this.message.length + 10) + "\r");
|
|
8734
|
-
}
|
|
8735
|
-
}
|
|
8736
|
-
function step(num, total, message) {
|
|
8737
|
-
console.log(`${c.dim}[${num}/${total}]${c.reset} ${message}`);
|
|
8738
|
-
}
|
|
8739
8689
|
function section(title) {
|
|
8740
8690
|
console.log();
|
|
8741
8691
|
console.log(`${c.cyan}${c.bright}▸ ${title}${c.reset}`);
|
|
8742
8692
|
console.log(`${c.dim}${"─".repeat(50)}${c.reset}`);
|
|
8743
8693
|
}
|
|
8744
|
-
async function matrixRain(duration = 500) {
|
|
8745
|
-
const cols = process.stdout.columns || 80;
|
|
8746
|
-
const rows = 3;
|
|
8747
|
-
const drops = Array(cols).fill(0).map(() => Math.floor(Math.random() * rows));
|
|
8748
|
-
const startTime = Date.now();
|
|
8749
|
-
while (Date.now() - startTime < duration) {
|
|
8750
|
-
let frame = "";
|
|
8751
|
-
for (let y = 0;y < rows; y++) {
|
|
8752
|
-
for (let x = 0;x < cols; x++) {
|
|
8753
|
-
const drop = drops[x] ?? 0;
|
|
8754
|
-
if (drop === y) {
|
|
8755
|
-
frame += `${c.green}${c.bright}${MATRIX_CHARS[Math.floor(Math.random() * MATRIX_CHARS.length)]}${c.reset}`;
|
|
8756
|
-
} else if (drop === y - 1) {
|
|
8757
|
-
frame += `${c.green}${MATRIX_CHARS[Math.floor(Math.random() * MATRIX_CHARS.length)]}${c.reset}`;
|
|
8758
|
-
} else {
|
|
8759
|
-
frame += " ";
|
|
8760
|
-
}
|
|
8761
|
-
}
|
|
8762
|
-
frame += `
|
|
8763
|
-
`;
|
|
8764
|
-
}
|
|
8765
|
-
process.stdout.write(frame);
|
|
8766
|
-
for (let i = 0;i < drops.length; i++) {
|
|
8767
|
-
if (Math.random() > 0.9)
|
|
8768
|
-
drops[i] = 0;
|
|
8769
|
-
else
|
|
8770
|
-
drops[i] = (drops[i] ?? 0) + 1;
|
|
8771
|
-
}
|
|
8772
|
-
await sleep(50);
|
|
8773
|
-
process.stdout.write(`\x1B[${rows}A`);
|
|
8774
|
-
}
|
|
8775
|
-
for (let y = 0;y < rows; y++) {
|
|
8776
|
-
console.log(" ".repeat(cols));
|
|
8777
|
-
}
|
|
8778
|
-
process.stdout.write(`\x1B[${rows}A`);
|
|
8779
|
-
}
|
|
8780
|
-
async function bootSequence() {
|
|
8781
|
-
const lines = [
|
|
8782
|
-
"Initializing neural pathways...",
|
|
8783
|
-
"Loading cognitive frameworks...",
|
|
8784
|
-
"Establishing knowledge graph...",
|
|
8785
|
-
"Calibrating AI agents...",
|
|
8786
|
-
"Synchronizing memory banks..."
|
|
8787
|
-
];
|
|
8788
|
-
for (const line of lines) {
|
|
8789
|
-
process.stdout.write(`${c.dim}> ${line}${c.reset}`);
|
|
8790
|
-
await sleep(100 + Math.random() * 200);
|
|
8791
|
-
process.stdout.write(` ${c.green}OK${c.reset}
|
|
8792
|
-
`);
|
|
8793
|
-
await sleep(50);
|
|
8794
|
-
}
|
|
8795
|
-
}
|
|
8796
8694
|
|
|
8797
8695
|
// src/lib/init.ts
|
|
8798
8696
|
var DATA_DIR4 = join6(process.env.HOME || "~", "Data");
|
|
@@ -8816,26 +8714,48 @@ async function initDatacore(options = {}) {
|
|
|
8816
8714
|
if (isTTY) {
|
|
8817
8715
|
console.clear();
|
|
8818
8716
|
console.log(BANNER);
|
|
8819
|
-
|
|
8820
|
-
await matrixRain(400);
|
|
8821
|
-
await bootSequence();
|
|
8822
|
-
await sleep(300);
|
|
8717
|
+
console.log();
|
|
8823
8718
|
}
|
|
8824
8719
|
const TOTAL_STEPS = 6;
|
|
8825
8720
|
op.addStep("check_dependencies");
|
|
8826
8721
|
op.startStep("check_dependencies");
|
|
8827
8722
|
if (!skipChecks) {
|
|
8828
|
-
let spinner = null;
|
|
8829
8723
|
if (isTTY) {
|
|
8830
|
-
section("
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
await sleep(800);
|
|
8724
|
+
section("Checking Dependencies");
|
|
8725
|
+
console.log(" \x1B[90mDatacore requires a few tools to manage your knowledge system.\x1B[0m");
|
|
8726
|
+
console.log();
|
|
8834
8727
|
}
|
|
8835
8728
|
const doctor = runDoctor();
|
|
8729
|
+
const depInfo = {
|
|
8730
|
+
git: "Version control for your knowledge repos",
|
|
8731
|
+
"git-lfs": "Large file support (PDFs, images, videos)",
|
|
8732
|
+
node: "Runtime for CLI tools and automation",
|
|
8733
|
+
python: "Powers AI agents and data processing",
|
|
8734
|
+
claude: "Claude Code AI assistant integration"
|
|
8735
|
+
};
|
|
8736
|
+
if (isTTY) {
|
|
8737
|
+
for (const dep of doctor.dependencies) {
|
|
8738
|
+
const info2 = depInfo[dep.name] || "";
|
|
8739
|
+
if (dep.installed) {
|
|
8740
|
+
console.log(` \x1B[32m✓\x1B[0m ${dep.name} ${dep.version ? `\x1B[90m(${dep.version})\x1B[0m` : ""}`);
|
|
8741
|
+
console.log(` \x1B[90m${info2}\x1B[0m`);
|
|
8742
|
+
} else if (dep.required) {
|
|
8743
|
+
console.log(` \x1B[31m✗\x1B[0m ${dep.name} \x1B[31m(required)\x1B[0m`);
|
|
8744
|
+
console.log(` \x1B[90m${info2}\x1B[0m`);
|
|
8745
|
+
if (dep.installCommand) {
|
|
8746
|
+
console.log(` \x1B[33mInstall: ${dep.installCommand}\x1B[0m`);
|
|
8747
|
+
}
|
|
8748
|
+
} else {
|
|
8749
|
+
console.log(` \x1B[33m○\x1B[0m ${dep.name} \x1B[90m(optional)\x1B[0m`);
|
|
8750
|
+
console.log(` \x1B[90m${info2}\x1B[0m`);
|
|
8751
|
+
if (dep.installCommand) {
|
|
8752
|
+
console.log(` \x1B[90mInstall later: ${dep.installCommand}\x1B[0m`);
|
|
8753
|
+
}
|
|
8754
|
+
}
|
|
8755
|
+
}
|
|
8756
|
+
console.log();
|
|
8757
|
+
}
|
|
8836
8758
|
if (doctor.status === "missing_required") {
|
|
8837
|
-
if (spinner)
|
|
8838
|
-
spinner.fail("Missing required dependencies");
|
|
8839
8759
|
const missing = doctor.dependencies.filter((d) => d.required && !d.installed);
|
|
8840
8760
|
for (const dep of missing) {
|
|
8841
8761
|
result.errors.push(`Missing required dependency: ${dep.name}`);
|
|
@@ -8847,23 +8767,10 @@ async function initDatacore(options = {}) {
|
|
|
8847
8767
|
op.fail("Missing required dependencies");
|
|
8848
8768
|
return result;
|
|
8849
8769
|
}
|
|
8850
|
-
if (spinner) {
|
|
8851
|
-
spinner.succeed(`Found ${doctor.dependencies.filter((d) => d.installed).length} dependencies`);
|
|
8852
|
-
}
|
|
8853
8770
|
if (doctor.status === "missing_recommended") {
|
|
8854
8771
|
const missing = doctor.dependencies.filter((d) => !d.required && !d.installed);
|
|
8855
8772
|
for (const dep of missing) {
|
|
8856
|
-
result.warnings.push(`
|
|
8857
|
-
}
|
|
8858
|
-
}
|
|
8859
|
-
if (isTTY) {
|
|
8860
|
-
for (const dep of doctor.dependencies) {
|
|
8861
|
-
if (dep.installed) {
|
|
8862
|
-
console.log(` \x1B[32m✓\x1B[0m ${dep.name} ${dep.version ? `\x1B[90m(${dep.version})\x1B[0m` : ""}`);
|
|
8863
|
-
} else {
|
|
8864
|
-
console.log(` \x1B[33m○\x1B[0m ${dep.name} \x1B[90m(not installed)\x1B[0m`);
|
|
8865
|
-
}
|
|
8866
|
-
await sleep(100);
|
|
8773
|
+
result.warnings.push(`Optional: ${dep.name} - install for full functionality`);
|
|
8867
8774
|
}
|
|
8868
8775
|
}
|
|
8869
8776
|
}
|
|
@@ -8871,53 +8778,49 @@ async function initDatacore(options = {}) {
|
|
|
8871
8778
|
op.addStep("create_data_dir");
|
|
8872
8779
|
op.startStep("create_data_dir");
|
|
8873
8780
|
if (isTTY) {
|
|
8874
|
-
section("
|
|
8781
|
+
section("Setting Up ~/Data");
|
|
8782
|
+
console.log(" \x1B[90mThis is your central knowledge directory. Everything lives here.\x1B[0m");
|
|
8783
|
+
console.log();
|
|
8875
8784
|
}
|
|
8876
8785
|
if (!existsSync6(DATA_DIR4)) {
|
|
8877
|
-
if (isTTY) {
|
|
8878
|
-
step(1, TOTAL_STEPS, "Allocating neural storage...");
|
|
8879
|
-
await sleep(300);
|
|
8880
|
-
}
|
|
8881
8786
|
mkdirSync4(DATA_DIR4, { recursive: true });
|
|
8882
8787
|
result.created.push(DATA_DIR4);
|
|
8883
8788
|
if (isTTY)
|
|
8884
|
-
console.log(` \x1B[32m
|
|
8789
|
+
console.log(` \x1B[32m✓\x1B[0m Created ${DATA_DIR4}`);
|
|
8885
8790
|
} else if (isTTY) {
|
|
8886
|
-
|
|
8791
|
+
console.log(` \x1B[32m✓\x1B[0m Found existing ${DATA_DIR4}`);
|
|
8887
8792
|
}
|
|
8888
8793
|
op.completeStep("create_data_dir");
|
|
8889
8794
|
op.addStep("create_datacore_dir");
|
|
8890
8795
|
op.startStep("create_datacore_dir");
|
|
8796
|
+
if (isTTY) {
|
|
8797
|
+
console.log();
|
|
8798
|
+
section("Creating .datacore");
|
|
8799
|
+
console.log(" \x1B[90mSystem configuration, agents, and modules live here.\x1B[0m");
|
|
8800
|
+
console.log();
|
|
8801
|
+
}
|
|
8891
8802
|
if (!existsSync6(DATACORE_DIR)) {
|
|
8892
|
-
if (isTTY) {
|
|
8893
|
-
step(2, TOTAL_STEPS, "Building core matrix...");
|
|
8894
|
-
}
|
|
8895
8803
|
const dirs = [
|
|
8896
|
-
{ path: "",
|
|
8897
|
-
{ path: "commands",
|
|
8898
|
-
{ path: "agents",
|
|
8899
|
-
{ path: "modules",
|
|
8900
|
-
{ path: "specs",
|
|
8901
|
-
{ path: "lib",
|
|
8902
|
-
{ path: "env",
|
|
8903
|
-
{ path: "state",
|
|
8904
|
-
{ path: "registry",
|
|
8804
|
+
{ path: "", desc: "Core configuration" },
|
|
8805
|
+
{ path: "commands", desc: "Slash commands (e.g., /today, /sync)" },
|
|
8806
|
+
{ path: "agents", desc: "AI agents for task automation" },
|
|
8807
|
+
{ path: "modules", desc: "Optional extensions (CRM, meetings, etc.)" },
|
|
8808
|
+
{ path: "specs", desc: "System documentation" },
|
|
8809
|
+
{ path: "lib", desc: "Shared utilities" },
|
|
8810
|
+
{ path: "env", desc: "Secrets and API keys (gitignored)" },
|
|
8811
|
+
{ path: "state", desc: "Runtime state (gitignored)" },
|
|
8812
|
+
{ path: "registry", desc: "Agent and command discovery" }
|
|
8905
8813
|
];
|
|
8906
|
-
for (const { path: dir,
|
|
8814
|
+
for (const { path: dir, desc } of dirs) {
|
|
8907
8815
|
const path = join6(DATACORE_DIR, dir);
|
|
8908
8816
|
if (!existsSync6(path)) {
|
|
8909
8817
|
mkdirSync4(path, { recursive: true });
|
|
8910
8818
|
result.created.push(path);
|
|
8911
|
-
if (isTTY) {
|
|
8912
|
-
console.log(` \x1B[
|
|
8913
|
-
await sleep(80);
|
|
8819
|
+
if (isTTY && dir) {
|
|
8820
|
+
console.log(` \x1B[32m✓\x1B[0m ${dir}/ \x1B[90m- ${desc}\x1B[0m`);
|
|
8914
8821
|
}
|
|
8915
8822
|
}
|
|
8916
8823
|
}
|
|
8917
|
-
if (isTTY) {
|
|
8918
|
-
step(3, TOTAL_STEPS, "Configuring neural pathways...");
|
|
8919
|
-
await sleep(200);
|
|
8920
|
-
}
|
|
8921
8824
|
writeFileSync4(join6(DATACORE_DIR, "settings.yaml"), `# Datacore Settings
|
|
8922
8825
|
# Override in settings.local.yaml
|
|
8923
8826
|
|
|
@@ -8949,62 +8852,82 @@ agents: []
|
|
|
8949
8852
|
commands: []
|
|
8950
8853
|
`);
|
|
8951
8854
|
result.created.push(join6(DATACORE_DIR, "registry", "commands.yaml"));
|
|
8952
|
-
if (isTTY)
|
|
8953
|
-
console.log(
|
|
8855
|
+
if (isTTY) {
|
|
8856
|
+
console.log();
|
|
8857
|
+
console.log(` \x1B[32m✓\x1B[0m Created settings.yaml`);
|
|
8858
|
+
console.log(" \x1B[90mCustomize in settings.local.yaml (gitignored)\x1B[0m");
|
|
8859
|
+
}
|
|
8954
8860
|
} else if (isTTY) {
|
|
8955
|
-
|
|
8956
|
-
step(3, TOTAL_STEPS, "Configuration loaded");
|
|
8861
|
+
console.log(` \x1B[32m✓\x1B[0m Found existing .datacore/`);
|
|
8957
8862
|
}
|
|
8958
8863
|
op.completeStep("create_datacore_dir");
|
|
8959
8864
|
op.addStep("create_personal_space");
|
|
8960
8865
|
op.startStep("create_personal_space");
|
|
8866
|
+
if (isTTY) {
|
|
8867
|
+
console.log();
|
|
8868
|
+
section("Creating Personal Space");
|
|
8869
|
+
console.log(" \x1B[90mSpaces are separate knowledge areas (personal, work, projects).\x1B[0m");
|
|
8870
|
+
console.log(" \x1B[90mEach space has its own GTD inbox, notes, and journals.\x1B[0m");
|
|
8871
|
+
console.log();
|
|
8872
|
+
}
|
|
8961
8873
|
const spaces = listSpaces();
|
|
8962
8874
|
if (spaces.length === 0) {
|
|
8963
|
-
if (isTTY) {
|
|
8964
|
-
step(4, TOTAL_STEPS, "Spawning personal consciousness...");
|
|
8965
|
-
await sleep(400);
|
|
8966
|
-
}
|
|
8967
8875
|
try {
|
|
8968
8876
|
const space = createSpace("personal", "personal");
|
|
8969
8877
|
result.created.push(space.path);
|
|
8970
|
-
if (isTTY)
|
|
8971
|
-
console.log(` \x1B[
|
|
8878
|
+
if (isTTY) {
|
|
8879
|
+
console.log(` \x1B[32m✓\x1B[0m Created 0-personal/`);
|
|
8880
|
+
console.log(" \x1B[90morg/inbox.org - Capture tasks here\x1B[0m");
|
|
8881
|
+
console.log(" \x1B[90mnotes/ - Your knowledge base\x1B[0m");
|
|
8882
|
+
console.log(" \x1B[90mjournal/ - Daily entries\x1B[0m");
|
|
8883
|
+
}
|
|
8972
8884
|
} catch (err) {
|
|
8973
8885
|
result.warnings.push(`Could not create personal space: ${err.message}`);
|
|
8974
8886
|
}
|
|
8975
8887
|
} else if (isTTY) {
|
|
8976
|
-
|
|
8888
|
+
console.log(` \x1B[32m✓\x1B[0m Found ${spaces.length} existing space(s):`);
|
|
8889
|
+
for (const space of spaces) {
|
|
8890
|
+
console.log(` \x1B[90m${space.name}/\x1B[0m`);
|
|
8891
|
+
}
|
|
8977
8892
|
}
|
|
8978
8893
|
op.completeStep("create_personal_space");
|
|
8979
8894
|
op.addStep("create_claude_symlink");
|
|
8980
8895
|
op.startStep("create_claude_symlink");
|
|
8896
|
+
if (isTTY) {
|
|
8897
|
+
console.log();
|
|
8898
|
+
section("Linking Claude Code");
|
|
8899
|
+
console.log(" \x1B[90mClaude Code looks for .claude/ to find project context.\x1B[0m");
|
|
8900
|
+
console.log(" \x1B[90mThis symlink connects it to your Datacore configuration.\x1B[0m");
|
|
8901
|
+
console.log();
|
|
8902
|
+
}
|
|
8981
8903
|
const claudeDir = join6(DATA_DIR4, ".claude");
|
|
8982
8904
|
if (!existsSync6(claudeDir)) {
|
|
8983
|
-
if (isTTY) {
|
|
8984
|
-
step(5, TOTAL_STEPS, "Establishing AI link...");
|
|
8985
|
-
await sleep(300);
|
|
8986
|
-
}
|
|
8987
8905
|
try {
|
|
8988
8906
|
symlinkSync(DATACORE_DIR, claudeDir);
|
|
8989
8907
|
result.created.push(claudeDir);
|
|
8990
8908
|
if (isTTY)
|
|
8991
|
-
console.log(` \x1B[32m
|
|
8909
|
+
console.log(` \x1B[32m✓\x1B[0m Created .claude -> .datacore symlink`);
|
|
8992
8910
|
} catch {
|
|
8993
8911
|
result.warnings.push("Could not create .claude symlink");
|
|
8912
|
+
if (isTTY)
|
|
8913
|
+
console.log(` \x1B[33m○\x1B[0m Could not create symlink (run manually if needed)`);
|
|
8994
8914
|
}
|
|
8995
8915
|
} else if (isTTY) {
|
|
8996
|
-
|
|
8916
|
+
console.log(` \x1B[32m✓\x1B[0m Found existing .claude/`);
|
|
8997
8917
|
}
|
|
8998
8918
|
op.completeStep("create_claude_symlink");
|
|
8999
8919
|
op.addStep("create_claude_md");
|
|
9000
8920
|
op.startStep("create_claude_md");
|
|
8921
|
+
if (isTTY) {
|
|
8922
|
+
console.log();
|
|
8923
|
+
section("Creating CLAUDE.md");
|
|
8924
|
+
console.log(" \x1B[90mThis file tells Claude Code about your Datacore system.\x1B[0m");
|
|
8925
|
+
console.log(" \x1B[90mIt auto-loads when you run `claude` in ~/Data.\x1B[0m");
|
|
8926
|
+
console.log();
|
|
8927
|
+
}
|
|
9001
8928
|
const claudeMd = join6(DATA_DIR4, "CLAUDE.md");
|
|
9002
8929
|
const claudeBaseMd = join6(DATA_DIR4, "CLAUDE.base.md");
|
|
9003
8930
|
if (!existsSync6(claudeMd) && !existsSync6(claudeBaseMd)) {
|
|
9004
|
-
if (isTTY) {
|
|
9005
|
-
step(6, TOTAL_STEPS, "Writing consciousness manifest...");
|
|
9006
|
-
await sleep(300);
|
|
9007
|
-
}
|
|
9008
8931
|
writeFileSync4(claudeBaseMd, `# Datacore
|
|
9009
8932
|
|
|
9010
8933
|
AI-powered second brain built on GTD methodology.
|
|
@@ -9033,9 +8956,9 @@ See .datacore/specs/ for detailed documentation.
|
|
|
9033
8956
|
`);
|
|
9034
8957
|
result.created.push(claudeBaseMd);
|
|
9035
8958
|
if (isTTY)
|
|
9036
|
-
console.log(` \x1B[32m✓\x1B[0m CLAUDE.md
|
|
8959
|
+
console.log(` \x1B[32m✓\x1B[0m Created CLAUDE.base.md`);
|
|
9037
8960
|
} else if (isTTY) {
|
|
9038
|
-
|
|
8961
|
+
console.log(` \x1B[32m✓\x1B[0m Found existing CLAUDE.md`);
|
|
9039
8962
|
}
|
|
9040
8963
|
op.completeStep("create_claude_md");
|
|
9041
8964
|
result.success = true;
|
|
@@ -9044,11 +8967,19 @@ See .datacore/specs/ for detailed documentation.
|
|
|
9044
8967
|
"Start working: `cd ~/Data && claude`"
|
|
9045
8968
|
];
|
|
9046
8969
|
if (isTTY) {
|
|
9047
|
-
|
|
8970
|
+
console.log();
|
|
9048
8971
|
console.log(INIT_COMPLETE);
|
|
9049
|
-
await typewrite(" Your second brain is ready.", 25);
|
|
9050
8972
|
console.log();
|
|
9051
|
-
console.log(" \x1B[
|
|
8973
|
+
console.log(" \x1B[1mNext steps:\x1B[0m");
|
|
8974
|
+
console.log();
|
|
8975
|
+
console.log(" 1. \x1B[36mcd ~/Data && claude\x1B[0m");
|
|
8976
|
+
console.log(" \x1B[90mStart using your second brain with AI assistance\x1B[0m");
|
|
8977
|
+
console.log();
|
|
8978
|
+
console.log(" 2. \x1B[36mdatacore doctor\x1B[0m");
|
|
8979
|
+
console.log(" \x1B[90mVerify everything is set up correctly\x1B[0m");
|
|
8980
|
+
console.log();
|
|
8981
|
+
console.log(" 3. Add tasks to \x1B[36m0-personal/org/inbox.org\x1B[0m");
|
|
8982
|
+
console.log(" \x1B[90mYour GTD capture inbox - process daily\x1B[0m");
|
|
9052
8983
|
console.log();
|
|
9053
8984
|
}
|
|
9054
8985
|
op.complete();
|
|
@@ -9202,7 +9133,7 @@ import { execSync as execSync5 } from "child_process";
|
|
|
9202
9133
|
import { join as join8 } from "path";
|
|
9203
9134
|
var DATA_DIR6 = join8(process.env.HOME || "~", "Data");
|
|
9204
9135
|
var LOCK_FILE = join8(DATA_DIR6, "datacore.lock.yaml");
|
|
9205
|
-
var CLI_VERSION = "1.0.
|
|
9136
|
+
var CLI_VERSION = "1.0.4";
|
|
9206
9137
|
function getGitInfo(path) {
|
|
9207
9138
|
if (!existsSync8(join8(path, ".git"))) {
|
|
9208
9139
|
return {};
|
|
@@ -9421,7 +9352,7 @@ function restoreFromSnapshot(snapshot, options = {}) {
|
|
|
9421
9352
|
}
|
|
9422
9353
|
|
|
9423
9354
|
// src/index.ts
|
|
9424
|
-
var VERSION = "1.0.
|
|
9355
|
+
var VERSION = "1.0.4";
|
|
9425
9356
|
var args = process.argv.slice(2);
|
|
9426
9357
|
var parsed = parseArgs(args);
|
|
9427
9358
|
async function handleMeta(command, cmdArgs, flags, format) {
|