@apart-tech/apart-intelligence 1.1.4 → 1.1.6

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.
@@ -28,7 +28,7 @@ export function duplicatesCommand(program) {
28
28
  console.log(` B: ${chalk.dim(nodeB.id.slice(0, 8))} ${chalk.cyan(nodeB.type)} ${nodeB.title}`);
29
29
  console.log();
30
30
  }
31
- console.log(chalk.dim("Review pairs and use 'tc delete <id>' to remove duplicates.\n"));
31
+ console.log(chalk.dim("Review pairs and use 'ai delete <id>' to remove duplicates.\n"));
32
32
  process.exit(0);
33
33
  });
34
34
  }
@@ -50,7 +50,7 @@ export function healthCommand(program) {
50
50
  warn("Self-loop edges", report.edges.selfLoopCount);
51
51
  warn("Duplicate edges", report.edges.duplicateCount);
52
52
  warn("Duplicate node candidates", report.duplicateCandidates);
53
- console.log(chalk.dim("\nRun 'tc orphans' or 'tc duplicates' to investigate issues.\n"));
53
+ console.log(chalk.dim("\nRun 'ai orphans' or 'ai duplicates' to investigate issues.\n"));
54
54
  process.exit(0);
55
55
  });
56
56
  }
@@ -54,7 +54,7 @@ export function normalizeCommand(program) {
54
54
  const pct = (s.similarity * 100).toFixed(0);
55
55
  console.log(` ${chalk.magenta(`${pct}%`)} similar: ${chalk.yellow(s.fromType)} (${s.fromCount}) → ${chalk.green(s.toType)} (${s.toCount})`);
56
56
  }
57
- console.log(chalk.dim('\nTo apply: tc normalize --apply "old-type:new-type"\n'));
57
+ console.log(chalk.dim('\nTo apply: ai normalize --apply "old-type:new-type"\n'));
58
58
  process.exit(0);
59
59
  });
60
60
  }
@@ -22,7 +22,7 @@ export function orphansCommand(program) {
22
22
  const age = daysSince(node.createdAt);
23
23
  console.log(` ${chalk.dim(node.id.slice(0, 8))} ${statusColor(`[${node.status}]`)} ${chalk.cyan(node.type)} ${node.title} ${chalk.dim(`${age}d ago`)}`);
24
24
  }
25
- console.log(chalk.dim("\nUse 'tc delete <id>' to remove or 'tc link <source> <target>' to connect.\n"));
25
+ console.log(chalk.dim("\nUse 'ai delete <id>' to remove or 'ai link <source> <target>' to connect.\n"));
26
26
  process.exit(0);
27
27
  });
28
28
  }
@@ -35,7 +35,7 @@ export function suggestLinksCommand(program) {
35
35
  console.log(` → ${chalk.dim(target.id.slice(0, 8))} ${chalk.cyan(target.type)} ${target.title}`);
36
36
  console.log();
37
37
  }
38
- console.log(chalk.dim("Use 'tc link <source-id> <target-id> -r relates-to' to create a link.\n"));
38
+ console.log(chalk.dim("Use 'ai link <source-id> <target-id> -r relates-to' to create a link.\n"));
39
39
  process.exit(0);
40
40
  });
41
41
  }
@@ -68,7 +68,7 @@ export function validateCommand(program) {
68
68
  }
69
69
  }
70
70
  }
71
- console.log(chalk.dim("\nUse 'tc delete <id>' on edge IDs to remove problematic edges.\n"));
71
+ console.log(chalk.dim("\nUse 'ai delete <id>' on edge IDs to remove problematic edges.\n"));
72
72
  process.exit(0);
73
73
  });
74
74
  }
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import "dotenv/config";
3
+ import { existsSync, mkdirSync, writeFileSync } from "fs";
4
+ import { homedir } from "os";
5
+ import { join } from "path";
3
6
  import { createRequire } from "module";
4
7
  import { Command } from "commander";
5
8
  import { addCommand } from "./commands/add.js";
@@ -33,6 +36,41 @@ import { piiCommand } from "./commands/pii.js";
33
36
  import { reEmbedCommand } from "./commands/re-embed.js";
34
37
  const require = createRequire(import.meta.url);
35
38
  const { version } = require("../package.json");
39
+ // Show a welcome banner once per version
40
+ function showWelcomeBanner() {
41
+ const configDir = join(homedir(), ".config", "apart-intelligence");
42
+ const sentinel = join(configDir, `.welcome-${version}`);
43
+ if (existsSync(sentinel))
44
+ return;
45
+ const dim = (s) => `\x1b[2m${s}\x1b[0m`;
46
+ const bold = (s) => `\x1b[1m${s}\x1b[0m`;
47
+ const cyan = (s) => `\x1b[36m${s}\x1b[0m`;
48
+ const green = (s) => `\x1b[32m${s}\x1b[0m`;
49
+ const banner = [
50
+ "",
51
+ cyan(" ╭─────────────────────────────╮"),
52
+ cyan(" │") + bold(" Apart Intelligence ◆ AI ") + cyan("│"),
53
+ cyan(" ╰─────────────────────────────╯"),
54
+ "",
55
+ ` ${green("✔")} Installed ${bold(`v${version}`)}`,
56
+ "",
57
+ ` Get started:`,
58
+ ` ${bold("ai login")} ${dim("Authenticate with your server")}`,
59
+ ` ${bold("ai init")} ${dim("Initialize a new knowledge graph")}`,
60
+ ` ${bold("ai status")} ${dim("Check your graph at a glance")}`,
61
+ ` ${bold("ai --help")} ${dim("See all commands")}`,
62
+ "",
63
+ dim(" https://apartintelligence.com"),
64
+ "",
65
+ ].join("\n");
66
+ process.stderr.write(banner + "\n");
67
+ try {
68
+ mkdirSync(configDir, { recursive: true });
69
+ writeFileSync(sentinel, new Date().toISOString());
70
+ }
71
+ catch { }
72
+ }
73
+ showWelcomeBanner();
36
74
  const program = new Command();
37
75
  program
38
76
  .name("ai")
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apart-tech/apart-intelligence",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "Apart Intelligence — the knowledge graph CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,13 +8,11 @@
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
- "skills",
12
- "postinstall.mjs"
11
+ "skills"
13
12
  ],
14
13
  "publishConfig": {
15
14
  "access": "public"
16
15
  },
17
- "funding": false,
18
16
  "dependencies": {
19
17
  "@prisma/client": "^6.6.0",
20
18
  "@prisma/extension-accelerate": "^3.0.1",
@@ -35,7 +33,6 @@
35
33
  "build": "tsc",
36
34
  "dev": "tsc --watch",
37
35
  "lint": "tsc --noEmit",
38
- "test": "vitest run",
39
- "postinstall": "node postinstall.mjs"
36
+ "test": "vitest run"
40
37
  }
41
38
  }
package/postinstall.mjs DELETED
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // Branded post-install message for Apart Intelligence CLI.
4
- // Uses stderr so npm doesn't swallow the output.
5
-
6
- const dim = (s) => `\x1b[2m${s}\x1b[0m`;
7
- const bold = (s) => `\x1b[1m${s}\x1b[0m`;
8
- const cyan = (s) => `\x1b[36m${s}\x1b[0m`;
9
- const green = (s) => `\x1b[32m${s}\x1b[0m`;
10
-
11
- const logo = [
12
- "",
13
- cyan(" ╭─────────────────────────────╮"),
14
- cyan(" │") + bold(" Apart Intelligence ◆ AI ") + cyan("│"),
15
- cyan(" ╰─────────────────────────────╯"),
16
- "",
17
- ` ${green("✔")} Installed successfully`,
18
- "",
19
- ` Get started:`,
20
- ` ${bold("ai login")} ${dim("Authenticate with your server")}`,
21
- ` ${bold("ai init")} ${dim("Initialize a new knowledge graph")}`,
22
- ` ${bold("ai status")} ${dim("Check your graph at a glance")}`,
23
- ` ${bold("ai --help")} ${dim("See all commands")}`,
24
- "",
25
- dim(" https://apartintelligence.com"),
26
- "",
27
- ];
28
-
29
- process.stderr.write(logo.join("\n") + "\n");