@apart-tech/apart-intelligence 0.1.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.
Files changed (141) hide show
  1. package/dist/analyzers/python-analyzer.d.ts +3 -0
  2. package/dist/analyzers/python-analyzer.d.ts.map +1 -0
  3. package/dist/analyzers/python-analyzer.js +127 -0
  4. package/dist/analyzers/python-analyzer.js.map +1 -0
  5. package/dist/analyzers/types.d.ts +18 -0
  6. package/dist/analyzers/types.d.ts.map +1 -0
  7. package/dist/analyzers/types.js +2 -0
  8. package/dist/analyzers/types.js.map +1 -0
  9. package/dist/analyzers/typescript-analyzer.d.ts +3 -0
  10. package/dist/analyzers/typescript-analyzer.d.ts.map +1 -0
  11. package/dist/analyzers/typescript-analyzer.js +131 -0
  12. package/dist/analyzers/typescript-analyzer.js.map +1 -0
  13. package/dist/api-client/api-provider.d.ts +3 -0
  14. package/dist/api-client/api-provider.d.ts.map +1 -0
  15. package/dist/api-client/api-provider.js +85 -0
  16. package/dist/api-client/api-provider.js.map +1 -0
  17. package/dist/api-client/credentials.d.ts +6 -0
  18. package/dist/api-client/credentials.d.ts.map +1 -0
  19. package/dist/api-client/credentials.js +34 -0
  20. package/dist/api-client/credentials.js.map +1 -0
  21. package/dist/api-client/direct-provider.d.ts +3 -0
  22. package/dist/api-client/direct-provider.d.ts.map +1 -0
  23. package/dist/api-client/direct-provider.js +149 -0
  24. package/dist/api-client/direct-provider.js.map +1 -0
  25. package/dist/api-client/http-client.d.ts +11 -0
  26. package/dist/api-client/http-client.d.ts.map +1 -0
  27. package/dist/api-client/http-client.js +37 -0
  28. package/dist/api-client/http-client.js.map +1 -0
  29. package/dist/api-client/index.d.ts +5 -0
  30. package/dist/api-client/index.d.ts.map +1 -0
  31. package/dist/api-client/index.js +12 -0
  32. package/dist/api-client/index.js.map +1 -0
  33. package/dist/api-client/types.d.ts +93 -0
  34. package/dist/api-client/types.d.ts.map +1 -0
  35. package/dist/api-client/types.js +2 -0
  36. package/dist/api-client/types.js.map +1 -0
  37. package/dist/commands/add.d.ts +3 -0
  38. package/dist/commands/add.d.ts.map +1 -0
  39. package/dist/commands/add.js +50 -0
  40. package/dist/commands/add.js.map +1 -0
  41. package/dist/commands/context.d.ts +3 -0
  42. package/dist/commands/context.d.ts.map +1 -0
  43. package/dist/commands/context.js +40 -0
  44. package/dist/commands/context.js.map +1 -0
  45. package/dist/commands/delete.d.ts +3 -0
  46. package/dist/commands/delete.d.ts.map +1 -0
  47. package/dist/commands/delete.js +45 -0
  48. package/dist/commands/delete.js.map +1 -0
  49. package/dist/commands/domains.d.ts +3 -0
  50. package/dist/commands/domains.d.ts.map +1 -0
  51. package/dist/commands/domains.js +61 -0
  52. package/dist/commands/domains.js.map +1 -0
  53. package/dist/commands/drafts.d.ts +3 -0
  54. package/dist/commands/drafts.d.ts.map +1 -0
  55. package/dist/commands/drafts.js +29 -0
  56. package/dist/commands/drafts.js.map +1 -0
  57. package/dist/commands/duplicates.d.ts +3 -0
  58. package/dist/commands/duplicates.d.ts.map +1 -0
  59. package/dist/commands/duplicates.js +39 -0
  60. package/dist/commands/duplicates.js.map +1 -0
  61. package/dist/commands/get.d.ts +3 -0
  62. package/dist/commands/get.d.ts.map +1 -0
  63. package/dist/commands/get.js +43 -0
  64. package/dist/commands/get.js.map +1 -0
  65. package/dist/commands/graph.d.ts +3 -0
  66. package/dist/commands/graph.d.ts.map +1 -0
  67. package/dist/commands/graph.js +368 -0
  68. package/dist/commands/graph.js.map +1 -0
  69. package/dist/commands/health.d.ts +3 -0
  70. package/dist/commands/health.d.ts.map +1 -0
  71. package/dist/commands/health.js +61 -0
  72. package/dist/commands/health.js.map +1 -0
  73. package/dist/commands/init.d.ts +3 -0
  74. package/dist/commands/init.d.ts.map +1 -0
  75. package/dist/commands/init.js +336 -0
  76. package/dist/commands/init.js.map +1 -0
  77. package/dist/commands/islands.d.ts +3 -0
  78. package/dist/commands/islands.d.ts.map +1 -0
  79. package/dist/commands/islands.js +70 -0
  80. package/dist/commands/islands.js.map +1 -0
  81. package/dist/commands/link.d.ts +3 -0
  82. package/dist/commands/link.d.ts.map +1 -0
  83. package/dist/commands/link.js +40 -0
  84. package/dist/commands/link.js.map +1 -0
  85. package/dist/commands/login.d.ts +3 -0
  86. package/dist/commands/login.d.ts.map +1 -0
  87. package/dist/commands/login.js +72 -0
  88. package/dist/commands/login.js.map +1 -0
  89. package/dist/commands/logout.d.ts +3 -0
  90. package/dist/commands/logout.d.ts.map +1 -0
  91. package/dist/commands/logout.js +18 -0
  92. package/dist/commands/logout.js.map +1 -0
  93. package/dist/commands/map.d.ts +3 -0
  94. package/dist/commands/map.d.ts.map +1 -0
  95. package/dist/commands/map.js +127 -0
  96. package/dist/commands/map.js.map +1 -0
  97. package/dist/commands/normalize.d.ts +3 -0
  98. package/dist/commands/normalize.d.ts.map +1 -0
  99. package/dist/commands/normalize.js +67 -0
  100. package/dist/commands/normalize.js.map +1 -0
  101. package/dist/commands/orphans.d.ts +3 -0
  102. package/dist/commands/orphans.d.ts.map +1 -0
  103. package/dist/commands/orphans.js +36 -0
  104. package/dist/commands/orphans.js.map +1 -0
  105. package/dist/commands/search.d.ts +3 -0
  106. package/dist/commands/search.d.ts.map +1 -0
  107. package/dist/commands/search.js +44 -0
  108. package/dist/commands/search.js.map +1 -0
  109. package/dist/commands/status.d.ts +3 -0
  110. package/dist/commands/status.d.ts.map +1 -0
  111. package/dist/commands/status.js +25 -0
  112. package/dist/commands/status.js.map +1 -0
  113. package/dist/commands/suggest-links.d.ts +3 -0
  114. package/dist/commands/suggest-links.d.ts.map +1 -0
  115. package/dist/commands/suggest-links.js +44 -0
  116. package/dist/commands/suggest-links.js.map +1 -0
  117. package/dist/commands/types.d.ts +3 -0
  118. package/dist/commands/types.d.ts.map +1 -0
  119. package/dist/commands/types.js +30 -0
  120. package/dist/commands/types.js.map +1 -0
  121. package/dist/commands/update.d.ts +3 -0
  122. package/dist/commands/update.d.ts.map +1 -0
  123. package/dist/commands/update.js +55 -0
  124. package/dist/commands/update.js.map +1 -0
  125. package/dist/commands/validate.d.ts +3 -0
  126. package/dist/commands/validate.d.ts.map +1 -0
  127. package/dist/commands/validate.js +79 -0
  128. package/dist/commands/validate.js.map +1 -0
  129. package/dist/commands/whoami.d.ts +3 -0
  130. package/dist/commands/whoami.d.ts.map +1 -0
  131. package/dist/commands/whoami.js +21 -0
  132. package/dist/commands/whoami.js.map +1 -0
  133. package/dist/index.d.ts +3 -0
  134. package/dist/index.d.ts.map +1 -0
  135. package/dist/index.js +59 -0
  136. package/dist/index.js.map +1 -0
  137. package/dist/utils.d.ts +3 -0
  138. package/dist/utils.d.ts.map +1 -0
  139. package/dist/utils.js +7 -0
  140. package/dist/utils.js.map +1 -0
  141. package/package.json +37 -0
@@ -0,0 +1,79 @@
1
+ import chalk from "chalk";
2
+ import { loadConfig, getTenantDb, CleaningService } from "@apart-tech/intelligence-core";
3
+ import { resolveTenant } from "../utils.js";
4
+ export function validateCommand(program) {
5
+ program
6
+ .command("validate")
7
+ .description("Validate edge integrity and detect issues")
8
+ .option("--low-relevance <n>", "Similarity threshold below which edges are flagged", "0.3")
9
+ .option("--rare-type <n>", "Flag relationship types used this many times or fewer", "1")
10
+ .option("-f, --format <format>", "Output format: text, json", "text")
11
+ .action(async (opts) => {
12
+ const config = loadConfig();
13
+ const tenant = resolveTenant(config);
14
+ const db = getTenantDb(config.database.url, tenant);
15
+ const cleaning = new CleaningService(db, tenant);
16
+ const report = await cleaning.validateEdges({
17
+ lowRelevanceThreshold: parseFloat(opts.lowRelevance),
18
+ rareTypeThreshold: parseInt(opts.rareType),
19
+ });
20
+ if (opts.format === "json") {
21
+ console.log(JSON.stringify(report, null, 2));
22
+ process.exit(0);
23
+ }
24
+ console.log(chalk.bold.underline(`\nEdge Validation Report\n`));
25
+ console.log(` Edges checked: ${chalk.cyan(report.totalEdgesChecked)}`);
26
+ console.log(` Issues found: ${report.totalIssues > 0 ? chalk.red(report.totalIssues) : chalk.green(0)}\n`);
27
+ // Summary
28
+ const categoryLabels = {
29
+ "self-loop": "Self-loops",
30
+ "duplicate-edge": "Duplicate edges",
31
+ "low-relevance": "Low-relevance connections",
32
+ "contradictory": "Contradictory edges",
33
+ "rare-relationship-type": "Rare relationship types",
34
+ };
35
+ for (const [category, count] of Object.entries(report.summary)) {
36
+ const color = count > 0 ? chalk.red : chalk.green;
37
+ const icon = count > 0 ? "!" : "✓";
38
+ console.log(` ${color(icon)} ${categoryLabels[category] ?? category}: ${color(count)}`);
39
+ }
40
+ if (report.totalIssues === 0) {
41
+ console.log(chalk.green("\nNo issues found.\n"));
42
+ process.exit(0);
43
+ }
44
+ // Group issues by category
45
+ const grouped = new Map();
46
+ for (const issue of report.issues) {
47
+ if (!grouped.has(issue.category))
48
+ grouped.set(issue.category, []);
49
+ grouped.get(issue.category).push(issue);
50
+ }
51
+ for (const [category, issues] of grouped) {
52
+ console.log(chalk.bold(`\n${categoryLabels[category] ?? category}:`));
53
+ for (const issue of issues) {
54
+ const severityColor = issue.severity === "error"
55
+ ? chalk.red
56
+ : issue.severity === "warning"
57
+ ? chalk.yellow
58
+ : chalk.blue;
59
+ console.log(` ${severityColor(`[${issue.severity}]`)} ${issue.message}`);
60
+ if (issue.sourceNode && issue.targetNode && issue.sourceNode.id !== issue.targetNode.id) {
61
+ console.log(` ${chalk.dim(issue.sourceNode.id.slice(0, 8))} ${issue.sourceNode.title}`);
62
+ console.log(` ${chalk.dim(issue.targetNode.id.slice(0, 8))} ${issue.targetNode.title}`);
63
+ }
64
+ else if (issue.sourceNode) {
65
+ console.log(` ${chalk.dim(issue.sourceNode.id.slice(0, 8))} ${issue.sourceNode.title}`);
66
+ }
67
+ if (issue.similarity !== undefined) {
68
+ console.log(` Similarity: ${chalk.magenta(`${(issue.similarity * 100).toFixed(1)}%`)}`);
69
+ }
70
+ for (const edge of issue.edges) {
71
+ console.log(chalk.dim(` edge: ${edge.id.slice(0, 8)} [${edge.relationshipType}]`));
72
+ }
73
+ }
74
+ }
75
+ console.log(chalk.dim("\nUse 'tc delete <id>' on edge IDs to remove problematic edges.\n"));
76
+ process.exit(0);
77
+ });
78
+ }
79
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function whoamiCommand(program: Command): void;
3
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAyB7C"}
@@ -0,0 +1,21 @@
1
+ import chalk from "chalk";
2
+ import { loadCredentials, getCredentialsPath, } from "../api-client/index.js";
3
+ export function whoamiCommand(program) {
4
+ program
5
+ .command("whoami")
6
+ .description("Show current login info")
7
+ .action(async () => {
8
+ const creds = loadCredentials();
9
+ if (!creds) {
10
+ console.log(chalk.yellow("Not logged in (using direct database mode)"));
11
+ console.log(chalk.dim(`Credentials file: ${getCredentialsPath()}`));
12
+ process.exit(0);
13
+ }
14
+ console.log(chalk.bold("Apart Intelligence"));
15
+ console.log(` Server: ${chalk.cyan(creds.server)}`);
16
+ console.log(` API Key: ${chalk.dim(creds.apiKey.slice(0, 12) + "...")}`);
17
+ console.log(` Mode: ${chalk.green("API")}`);
18
+ process.exit(0);
19
+ });
20
+ }
21
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAC3D,CAAC;YACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,qBAAqB,kBAAkB,EAAE,EAAE,CAAC,CACvD,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CACT,cAAc,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAC7D,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import "dotenv/config";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env node
2
+ import "dotenv/config";
3
+ import { Command } from "commander";
4
+ import { addCommand } from "./commands/add.js";
5
+ import { searchCommand } from "./commands/search.js";
6
+ import { contextCommand } from "./commands/context.js";
7
+ import { getCommand } from "./commands/get.js";
8
+ import { linkCommand } from "./commands/link.js";
9
+ import { statusCommand } from "./commands/status.js";
10
+ import { draftsCommand } from "./commands/drafts.js";
11
+ import { typesCommand } from "./commands/types.js";
12
+ import { domainsCommand } from "./commands/domains.js";
13
+ import { updateCommand } from "./commands/update.js";
14
+ import { deleteCommand } from "./commands/delete.js";
15
+ import { graphCommand } from "./commands/graph.js";
16
+ import { healthCommand } from "./commands/health.js";
17
+ import { orphansCommand } from "./commands/orphans.js";
18
+ import { duplicatesCommand } from "./commands/duplicates.js";
19
+ import { suggestLinksCommand } from "./commands/suggest-links.js";
20
+ import { islandsCommand } from "./commands/islands.js";
21
+ import { validateCommand } from "./commands/validate.js";
22
+ import { normalizeCommand } from "./commands/normalize.js";
23
+ import { mapCommand } from "./commands/map.js";
24
+ import { initCommand } from "./commands/init.js";
25
+ import { loginCommand } from "./commands/login.js";
26
+ import { logoutCommand } from "./commands/logout.js";
27
+ import { whoamiCommand } from "./commands/whoami.js";
28
+ const program = new Command();
29
+ program
30
+ .name("ai")
31
+ .description("Apart Intelligence — the knowledge graph for your company")
32
+ .version("0.1.0");
33
+ // Register commands
34
+ addCommand(program);
35
+ searchCommand(program);
36
+ contextCommand(program);
37
+ getCommand(program);
38
+ linkCommand(program);
39
+ statusCommand(program);
40
+ draftsCommand(program);
41
+ typesCommand(program);
42
+ domainsCommand(program);
43
+ updateCommand(program);
44
+ deleteCommand(program);
45
+ graphCommand(program);
46
+ healthCommand(program);
47
+ orphansCommand(program);
48
+ duplicatesCommand(program);
49
+ suggestLinksCommand(program);
50
+ islandsCommand(program);
51
+ validateCommand(program);
52
+ normalizeCommand(program);
53
+ mapCommand(program);
54
+ initCommand(program);
55
+ loginCommand(program);
56
+ logoutCommand(program);
57
+ whoamiCommand(program);
58
+ program.parse();
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ApartConfig, TenantContext } from "@apart-tech/intelligence-core";
2
+ export declare function resolveTenant(config: ApartConfig): TenantContext;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGhF,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAKhE"}
package/dist/utils.js ADDED
@@ -0,0 +1,7 @@
1
+ import { SINGLE_TENANT_ORG_ID } from "@apart-tech/intelligence-core";
2
+ export function resolveTenant(config) {
3
+ return {
4
+ organizationId: config.tenancy.organizationId ?? SINGLE_TENANT_ORG_ID,
5
+ };
6
+ }
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC/C,OAAO;QACL,cAAc,EACZ,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,oBAAoB;KACxD,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@apart-tech/apart-intelligence",
3
+ "version": "0.1.0",
4
+ "description": "Apart Intelligence — the knowledge graph CLI",
5
+ "type": "module",
6
+ "bin": {
7
+ "ai": "dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "lint": "tsc --noEmit",
19
+ "test": "vitest run"
20
+ },
21
+ "dependencies": {
22
+ "@prisma/client": "^6.6.0",
23
+ "@prisma/extension-accelerate": "^3.0.1",
24
+ "@apart-tech/intelligence-core": "workspace:*",
25
+ "chalk": "^5.4.0",
26
+ "commander": "^13.0.0",
27
+ "prompts": "^2.4.2",
28
+ "yaml": "^2.6.0"
29
+ },
30
+ "devDependencies": {
31
+ "@types/node": "^25.5.0",
32
+ "@types/prompts": "^2.4.9",
33
+ "dotenv": "^17.3.1",
34
+ "typescript": "^5.7.0",
35
+ "vitest": "^3.0.0"
36
+ }
37
+ }