@iamsyr/agentmind 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 (229) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -0
  3. package/README.md +462 -0
  4. package/RELEASING.md +42 -0
  5. package/dist/adapters/cursor.d.ts +2 -0
  6. package/dist/adapters/cursor.d.ts.map +1 -0
  7. package/dist/adapters/cursor.js +39 -0
  8. package/dist/adapters/cursor.js.map +1 -0
  9. package/dist/adapters/index.d.ts +9 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +16 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/types.d.ts +24 -0
  14. package/dist/adapters/types.d.ts.map +1 -0
  15. package/dist/adapters/types.js +66 -0
  16. package/dist/adapters/types.js.map +1 -0
  17. package/dist/adapters/windsurf.d.ts +2 -0
  18. package/dist/adapters/windsurf.d.ts.map +1 -0
  19. package/dist/adapters/windsurf.js +44 -0
  20. package/dist/adapters/windsurf.js.map +1 -0
  21. package/dist/bridge/conflict.d.ts +9 -0
  22. package/dist/bridge/conflict.d.ts.map +1 -0
  23. package/dist/bridge/conflict.js +38 -0
  24. package/dist/bridge/conflict.js.map +1 -0
  25. package/dist/bridge/index.d.ts +5 -0
  26. package/dist/bridge/index.d.ts.map +1 -0
  27. package/dist/bridge/index.js +3 -0
  28. package/dist/bridge/index.js.map +1 -0
  29. package/dist/bridge/state.d.ts +30 -0
  30. package/dist/bridge/state.d.ts.map +1 -0
  31. package/dist/bridge/state.js +130 -0
  32. package/dist/bridge/state.js.map +1 -0
  33. package/dist/cli/commands/agents.d.ts +2 -0
  34. package/dist/cli/commands/agents.d.ts.map +1 -0
  35. package/dist/cli/commands/agents.js +38 -0
  36. package/dist/cli/commands/agents.js.map +1 -0
  37. package/dist/cli/commands/annotate.d.ts +4 -0
  38. package/dist/cli/commands/annotate.d.ts.map +1 -0
  39. package/dist/cli/commands/annotate.js +116 -0
  40. package/dist/cli/commands/annotate.js.map +1 -0
  41. package/dist/cli/commands/behaviors.d.ts +6 -0
  42. package/dist/cli/commands/behaviors.d.ts.map +1 -0
  43. package/dist/cli/commands/behaviors.js +76 -0
  44. package/dist/cli/commands/behaviors.js.map +1 -0
  45. package/dist/cli/commands/bridge.d.ts +15 -0
  46. package/dist/cli/commands/bridge.d.ts.map +1 -0
  47. package/dist/cli/commands/bridge.js +75 -0
  48. package/dist/cli/commands/bridge.js.map +1 -0
  49. package/dist/cli/commands/health.d.ts +4 -0
  50. package/dist/cli/commands/health.d.ts.map +1 -0
  51. package/dist/cli/commands/health.js +382 -0
  52. package/dist/cli/commands/health.js.map +1 -0
  53. package/dist/cli/commands/hooks.d.ts +3 -0
  54. package/dist/cli/commands/hooks.d.ts.map +1 -0
  55. package/dist/cli/commands/hooks.js +59 -0
  56. package/dist/cli/commands/hooks.js.map +1 -0
  57. package/dist/cli/commands/init.d.ts +2 -0
  58. package/dist/cli/commands/init.d.ts.map +1 -0
  59. package/dist/cli/commands/init.js +128 -0
  60. package/dist/cli/commands/init.js.map +1 -0
  61. package/dist/cli/commands/inject.d.ts +6 -0
  62. package/dist/cli/commands/inject.d.ts.map +1 -0
  63. package/dist/cli/commands/inject.js +84 -0
  64. package/dist/cli/commands/inject.js.map +1 -0
  65. package/dist/cli/commands/insights.d.ts +4 -0
  66. package/dist/cli/commands/insights.d.ts.map +1 -0
  67. package/dist/cli/commands/insights.js +124 -0
  68. package/dist/cli/commands/insights.js.map +1 -0
  69. package/dist/cli/commands/learn.d.ts +8 -0
  70. package/dist/cli/commands/learn.d.ts.map +1 -0
  71. package/dist/cli/commands/learn.js +121 -0
  72. package/dist/cli/commands/learn.js.map +1 -0
  73. package/dist/cli/commands/log-behavior.d.ts +14 -0
  74. package/dist/cli/commands/log-behavior.d.ts.map +1 -0
  75. package/dist/cli/commands/log-behavior.js +50 -0
  76. package/dist/cli/commands/log-behavior.js.map +1 -0
  77. package/dist/cli/commands/overlay.d.ts +10 -0
  78. package/dist/cli/commands/overlay.d.ts.map +1 -0
  79. package/dist/cli/commands/overlay.js +303 -0
  80. package/dist/cli/commands/overlay.js.map +1 -0
  81. package/dist/cli/commands/pull.d.ts +4 -0
  82. package/dist/cli/commands/pull.d.ts.map +1 -0
  83. package/dist/cli/commands/pull.js +93 -0
  84. package/dist/cli/commands/pull.js.map +1 -0
  85. package/dist/cli/commands/push.d.ts +5 -0
  86. package/dist/cli/commands/push.d.ts.map +1 -0
  87. package/dist/cli/commands/push.js +71 -0
  88. package/dist/cli/commands/push.js.map +1 -0
  89. package/dist/cli/commands/scan.d.ts +5 -0
  90. package/dist/cli/commands/scan.d.ts.map +1 -0
  91. package/dist/cli/commands/scan.js +134 -0
  92. package/dist/cli/commands/scan.js.map +1 -0
  93. package/dist/cli/commands/serve.d.ts +2 -0
  94. package/dist/cli/commands/serve.d.ts.map +1 -0
  95. package/dist/cli/commands/serve.js +17 -0
  96. package/dist/cli/commands/serve.js.map +1 -0
  97. package/dist/cli/commands/share.d.ts +5 -0
  98. package/dist/cli/commands/share.d.ts.map +1 -0
  99. package/dist/cli/commands/share.js +97 -0
  100. package/dist/cli/commands/share.js.map +1 -0
  101. package/dist/cli/commands/status.d.ts +2 -0
  102. package/dist/cli/commands/status.d.ts.map +1 -0
  103. package/dist/cli/commands/status.js +167 -0
  104. package/dist/cli/commands/status.js.map +1 -0
  105. package/dist/cli/commands/sync.d.ts +6 -0
  106. package/dist/cli/commands/sync.d.ts.map +1 -0
  107. package/dist/cli/commands/sync.js +60 -0
  108. package/dist/cli/commands/sync.js.map +1 -0
  109. package/dist/cli/commands/template.d.ts +5 -0
  110. package/dist/cli/commands/template.d.ts.map +1 -0
  111. package/dist/cli/commands/template.js +98 -0
  112. package/dist/cli/commands/template.js.map +1 -0
  113. package/dist/cli/index.d.ts +3 -0
  114. package/dist/cli/index.d.ts.map +1 -0
  115. package/dist/cli/index.js +172 -0
  116. package/dist/cli/index.js.map +1 -0
  117. package/dist/cli/utils.d.ts +6 -0
  118. package/dist/cli/utils.d.ts.map +1 -0
  119. package/dist/cli/utils.js +49 -0
  120. package/dist/cli/utils.js.map +1 -0
  121. package/dist/hooks/claude.d.ts +6 -0
  122. package/dist/hooks/claude.d.ts.map +1 -0
  123. package/dist/hooks/claude.js +189 -0
  124. package/dist/hooks/claude.js.map +1 -0
  125. package/dist/hooks/codex.d.ts +6 -0
  126. package/dist/hooks/codex.d.ts.map +1 -0
  127. package/dist/hooks/codex.js +120 -0
  128. package/dist/hooks/codex.js.map +1 -0
  129. package/dist/hooks/index.d.ts +5 -0
  130. package/dist/hooks/index.d.ts.map +1 -0
  131. package/dist/hooks/index.js +4 -0
  132. package/dist/hooks/index.js.map +1 -0
  133. package/dist/hooks/template.d.ts +5 -0
  134. package/dist/hooks/template.d.ts.map +1 -0
  135. package/dist/hooks/template.js +176 -0
  136. package/dist/hooks/template.js.map +1 -0
  137. package/dist/index.d.ts +5 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +4 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/learn/analyzer.d.ts +11 -0
  142. package/dist/learn/analyzer.d.ts.map +1 -0
  143. package/dist/learn/analyzer.js +145 -0
  144. package/dist/learn/analyzer.js.map +1 -0
  145. package/dist/learn/generator.d.ts +12 -0
  146. package/dist/learn/generator.d.ts.map +1 -0
  147. package/dist/learn/generator.js +37 -0
  148. package/dist/learn/generator.js.map +1 -0
  149. package/dist/mcp/index.d.ts +2 -0
  150. package/dist/mcp/index.d.ts.map +1 -0
  151. package/dist/mcp/index.js +2 -0
  152. package/dist/mcp/index.js.map +1 -0
  153. package/dist/mcp/server.d.ts +2 -0
  154. package/dist/mcp/server.d.ts.map +1 -0
  155. package/dist/mcp/server.js +325 -0
  156. package/dist/mcp/server.js.map +1 -0
  157. package/dist/router/index.d.ts +3 -0
  158. package/dist/router/index.d.ts.map +1 -0
  159. package/dist/router/index.js +44 -0
  160. package/dist/router/index.js.map +1 -0
  161. package/dist/scanner/classify.d.ts +6 -0
  162. package/dist/scanner/classify.d.ts.map +1 -0
  163. package/dist/scanner/classify.js +101 -0
  164. package/dist/scanner/classify.js.map +1 -0
  165. package/dist/scanner/graph.d.ts +3 -0
  166. package/dist/scanner/graph.d.ts.map +1 -0
  167. package/dist/scanner/graph.js +104 -0
  168. package/dist/scanner/graph.js.map +1 -0
  169. package/dist/scanner/index.d.ts +6 -0
  170. package/dist/scanner/index.d.ts.map +1 -0
  171. package/dist/scanner/index.js +23 -0
  172. package/dist/scanner/index.js.map +1 -0
  173. package/dist/scanner/patterns.d.ts +3 -0
  174. package/dist/scanner/patterns.d.ts.map +1 -0
  175. package/dist/scanner/patterns.js +179 -0
  176. package/dist/scanner/patterns.js.map +1 -0
  177. package/dist/store/db.d.ts +21 -0
  178. package/dist/store/db.d.ts.map +1 -0
  179. package/dist/store/db.js +55 -0
  180. package/dist/store/db.js.map +1 -0
  181. package/dist/store/index.d.ts +3 -0
  182. package/dist/store/index.d.ts.map +1 -0
  183. package/dist/store/index.js +3 -0
  184. package/dist/store/index.js.map +1 -0
  185. package/dist/store/jsonl.d.ts +6 -0
  186. package/dist/store/jsonl.d.ts.map +1 -0
  187. package/dist/store/jsonl.js +55 -0
  188. package/dist/store/jsonl.js.map +1 -0
  189. package/dist/store/schema.d.ts +32 -0
  190. package/dist/store/schema.d.ts.map +1 -0
  191. package/dist/store/schema.js +210 -0
  192. package/dist/store/schema.js.map +1 -0
  193. package/dist/templates/go.d.ts +3 -0
  194. package/dist/templates/go.d.ts.map +1 -0
  195. package/dist/templates/go.js +35 -0
  196. package/dist/templates/go.js.map +1 -0
  197. package/dist/templates/index.d.ts +13 -0
  198. package/dist/templates/index.d.ts.map +1 -0
  199. package/dist/templates/index.js +98 -0
  200. package/dist/templates/index.js.map +1 -0
  201. package/dist/templates/nextjs.d.ts +3 -0
  202. package/dist/templates/nextjs.d.ts.map +1 -0
  203. package/dist/templates/nextjs.js +53 -0
  204. package/dist/templates/nextjs.js.map +1 -0
  205. package/dist/templates/python.d.ts +3 -0
  206. package/dist/templates/python.d.ts.map +1 -0
  207. package/dist/templates/python.js +41 -0
  208. package/dist/templates/python.js.map +1 -0
  209. package/dist/templates/react-native.d.ts +3 -0
  210. package/dist/templates/react-native.d.ts.map +1 -0
  211. package/dist/templates/react-native.js +35 -0
  212. package/dist/templates/react-native.js.map +1 -0
  213. package/dist/templates/registry.d.ts +24 -0
  214. package/dist/templates/registry.d.ts.map +1 -0
  215. package/dist/templates/registry.js +2 -0
  216. package/dist/templates/registry.js.map +1 -0
  217. package/dist/templates/rust.d.ts +3 -0
  218. package/dist/templates/rust.d.ts.map +1 -0
  219. package/dist/templates/rust.js +41 -0
  220. package/dist/templates/rust.js.map +1 -0
  221. package/dist/templates/sst.d.ts +3 -0
  222. package/dist/templates/sst.d.ts.map +1 -0
  223. package/dist/templates/sst.js +35 -0
  224. package/dist/templates/sst.js.map +1 -0
  225. package/dist/types/index.d.ts +92 -0
  226. package/dist/types/index.d.ts.map +1 -0
  227. package/dist/types/index.js +2 -0
  228. package/dist/types/index.js.map +1 -0
  229. package/package.json +62 -0
@@ -0,0 +1,76 @@
1
+ import chalk from "chalk";
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ import { ContextStore } from "../../store/schema.js";
5
+ export async function showBehaviors(options) {
6
+ const projectRoot = process.cwd();
7
+ const storePath = path.join(projectRoot, ".agentmind", "context.db");
8
+ if (!fs.existsSync(storePath)) {
9
+ console.error(chalk.red("\n agentmind is not initialized in this project."));
10
+ console.error(chalk.gray(" Run `agentmind init` first.\n"));
11
+ process.exit(1);
12
+ }
13
+ const store = new ContextStore(projectRoot);
14
+ try {
15
+ const limit = parseInt(options.limit ?? "20", 10);
16
+ const rows = store.getDb()
17
+ .query("SELECT * FROM behavior_log ORDER BY timestamp DESC LIMIT ?")
18
+ .all(limit);
19
+ if (rows.length === 0) {
20
+ console.log(chalk.gray("\n No behavior entries yet.\n"));
21
+ return;
22
+ }
23
+ console.log("");
24
+ console.log(chalk.bold(" Recent agent behavior"));
25
+ console.log(chalk.gray(" " + "\u2500".repeat(72)));
26
+ console.log("");
27
+ const actionWidth = 24;
28
+ const fileWidth = 36;
29
+ const statusWidth = 8;
30
+ const header = " " +
31
+ chalk.gray.dim("TIMESTAMP".padEnd(20)) +
32
+ " " +
33
+ chalk.gray.dim(truncate("ACTION", actionWidth).padEnd(actionWidth)) +
34
+ " " +
35
+ chalk.gray.dim(truncate("FILE", fileWidth).padEnd(fileWidth)) +
36
+ " " +
37
+ chalk.gray.dim("STATUS".padEnd(statusWidth));
38
+ console.log(header);
39
+ console.log(chalk.gray(" " + "\u2500".repeat(72)));
40
+ for (const row of rows) {
41
+ const timestamp = formatTimestamp(row.timestamp);
42
+ const action = truncate(row.action, actionWidth);
43
+ const filePath = truncate(row.file_path ?? "-", fileWidth);
44
+ const status = row.success
45
+ ? chalk.green("ok")
46
+ : chalk.red("fail");
47
+ console.log(" " +
48
+ chalk.gray(timestamp.padEnd(20)) +
49
+ " " +
50
+ action.padEnd(actionWidth) +
51
+ " " +
52
+ chalk.gray(filePath.padEnd(fileWidth)) +
53
+ " " +
54
+ status);
55
+ }
56
+ console.log("");
57
+ console.log(chalk.gray(` Showing ${rows.length} entries. Use --limit to see more.`));
58
+ console.log("");
59
+ }
60
+ catch (error) {
61
+ console.error(chalk.red(" Error reading behavior log:"), error);
62
+ process.exit(1);
63
+ }
64
+ finally {
65
+ store.close();
66
+ }
67
+ }
68
+ function truncate(s, maxLen) {
69
+ if (s.length <= maxLen)
70
+ return s;
71
+ return "..." + s.slice(s.length - maxLen + 3);
72
+ }
73
+ function formatTimestamp(ts) {
74
+ return ts.replace("T", " ").slice(0, 19);
75
+ }
76
+ //# sourceMappingURL=behaviors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behaviors.js","sourceRoot":"","sources":["../../../src/cli/commands/behaviors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare function register(opts: {
2
+ id: string;
3
+ tool: string;
4
+ }): Promise<void>;
5
+ export declare function claim(opts: {
6
+ id: string;
7
+ files: string[];
8
+ }): Promise<void>;
9
+ export declare function release(opts: {
10
+ id: string;
11
+ files: string[];
12
+ }): Promise<void>;
13
+ export declare function bridgeStatus(): Promise<void>;
14
+ export declare function conflicts(): Promise<void>;
15
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bridge.ts"],"names":[],"mappings":"AAOA,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BlD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB/C"}
@@ -0,0 +1,75 @@
1
+ import chalk from "chalk";
2
+ import { AgentBridge, detectAllConflicts } from "../../bridge/index.js";
3
+ function getBridge() {
4
+ return new AgentBridge(process.cwd());
5
+ }
6
+ export async function register(opts) {
7
+ const bridge = getBridge();
8
+ bridge.register(opts.id, opts.tool);
9
+ console.log(`registered ${opts.id} (${opts.tool})`);
10
+ }
11
+ export async function claim(opts) {
12
+ const bridge = getBridge();
13
+ bridge.claimFiles(opts.id, opts.files);
14
+ const conflicts = opts.files.flatMap((f) => {
15
+ const editing = bridge.whoIsEditing(f).filter((a) => a.agentId !== opts.id);
16
+ if (editing.length === 0)
17
+ return [];
18
+ return [{ filePath: f, agents: editing.map((a) => a.agentId) }];
19
+ });
20
+ console.log(`${opts.id} claimed ${opts.files.length} file(s)`);
21
+ if (conflicts.length > 0) {
22
+ console.log(chalk.yellow("\nconflicts:"));
23
+ for (const c of conflicts) {
24
+ console.log(chalk.yellow(` ${c.filePath} — also edited by ${c.agents.join(", ")}`));
25
+ }
26
+ }
27
+ }
28
+ export async function release(opts) {
29
+ const bridge = getBridge();
30
+ bridge.releaseFiles(opts.id, opts.files);
31
+ console.log(`${opts.id} released ${opts.files.length} file(s)`);
32
+ }
33
+ export async function bridgeStatus() {
34
+ const bridge = getBridge();
35
+ const agents = bridge.getActiveAgents();
36
+ if (agents.length === 0) {
37
+ console.log("no active agents");
38
+ return;
39
+ }
40
+ console.log(chalk.bold(`\n active agents (${agents.length})\n`));
41
+ for (const a of agents) {
42
+ const ago = Math.round((Date.now() - a.lastHeartbeat) / 1000);
43
+ const files = a.editingFiles.length > 0
44
+ ? a.editingFiles.map((f) => `\n ${chalk.gray(f)}`).join("")
45
+ : "\n (no files claimed)";
46
+ console.log(` ${chalk.bold(a.agentId)} ${chalk.gray(a.tool)} ${chalk.gray(`${ago}s ago`)}`);
47
+ console.log(files);
48
+ }
49
+ const conflicts = detectAllConflicts(bridge);
50
+ if (conflicts.length > 0) {
51
+ console.log(chalk.yellow(`\n conflicts (${conflicts.length})\n`));
52
+ for (const c of conflicts) {
53
+ const label = c.severity === "critical" ? chalk.red("CRITICAL") : chalk.yellow("WARN");
54
+ console.log(` ${label} ${c.filePath}`);
55
+ console.log(chalk.gray(` agents: ${c.conflictingAgents.join(", ")}`));
56
+ }
57
+ }
58
+ console.log("");
59
+ }
60
+ export async function conflicts() {
61
+ const bridge = getBridge();
62
+ const all = detectAllConflicts(bridge);
63
+ if (all.length === 0) {
64
+ console.log("no conflicts");
65
+ return;
66
+ }
67
+ console.log(chalk.bold(`\n conflicts (${all.length})\n`));
68
+ for (const c of all) {
69
+ const label = c.severity === "critical" ? chalk.red("CRITICAL") : chalk.yellow("WARN");
70
+ console.log(` ${label} ${c.filePath}`);
71
+ console.log(chalk.gray(` agents: ${c.conflictingAgents.join(", ")}`));
72
+ }
73
+ console.log("");
74
+ }
75
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/cli/commands/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function health(opts: {
2
+ json?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"AAkDA,wBAAsB,MAAM,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDpE"}
@@ -0,0 +1,382 @@
1
+ import chalk from "chalk";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { classify } from "../../scanner/classify.js";
5
+ import { ContextStore } from "../../store/schema.js";
6
+ // ── Main ───────────────────────────────────────────────
7
+ export async function health(opts) {
8
+ const cwd = process.cwd();
9
+ const agentmindDir = path.join(cwd, ".agentmind");
10
+ const dbPath = path.join(agentmindDir, "context.db");
11
+ if (!fs.existsSync(agentmindDir)) {
12
+ console.error(chalk.red("\n agentmind is not initialized in this project."));
13
+ console.error(chalk.gray(" Run `agentmind init` first.\n"));
14
+ process.exit(1);
15
+ }
16
+ if (!fs.existsSync(dbPath)) {
17
+ console.error(chalk.yellow("\n No context store found. Run `agentmind scan` first.\n"));
18
+ process.exit(1);
19
+ }
20
+ const store = new ContextStore(cwd);
21
+ const db = store.getDb();
22
+ const scan = await classify(cwd);
23
+ const data = {
24
+ dirCoverage: [],
25
+ classifications: [],
26
+ totalFiles: 0,
27
+ stale: [],
28
+ behavior: null,
29
+ recommendations: [],
30
+ };
31
+ try {
32
+ // ── Section 1: Directory coverage ──
33
+ data.dirCoverage = computeDirCoverage(scan.files, scan.classifications, db);
34
+ // ── Section 2: File classification ──
35
+ const classificationResult = computeClassifications(scan.classifications);
36
+ data.classifications = classificationResult.counts;
37
+ data.totalFiles = classificationResult.total;
38
+ // ── Section 3: Staleness ──
39
+ data.stale = computeStaleness(db);
40
+ // ── Section 4: Behavior ──
41
+ data.behavior = computeBehavior(db);
42
+ // ── Section 5: Recommendations ──
43
+ data.recommendations = computeRecommendations(data);
44
+ }
45
+ finally {
46
+ store.close();
47
+ }
48
+ if (opts.json) {
49
+ console.log(JSON.stringify(data, null, 2));
50
+ return;
51
+ }
52
+ renderDashboard(data);
53
+ }
54
+ // ── Data queries ───────────────────────────────────────
55
+ function computeDirCoverage(files, classifications, db) {
56
+ const rows = db.query(`
57
+ SELECT DISTINCT file_path
58
+ FROM context_entries
59
+ WHERE type IN ('rule', 'annotation')
60
+ AND file_path IS NOT NULL AND file_path != ''
61
+ `).all();
62
+ const coveredPaths = new Set(rows.map((row) => row.file_path.replace(/\\/g, "/")));
63
+ const dirMap = new Map();
64
+ for (const file of files) {
65
+ const cls = classifications.get(file.path) ?? "data";
66
+ if (cls === "vendor" || cls === "generated" || cls === "build")
67
+ continue;
68
+ const dir = extractDir(file.path);
69
+ if (!dir)
70
+ continue;
71
+ let bucket = dirMap.get(dir);
72
+ if (!bucket) {
73
+ bucket = { total: new Set(), covered: new Set() };
74
+ dirMap.set(dir, bucket);
75
+ }
76
+ bucket.total.add(file.path);
77
+ if (coveredPaths.has(file.path)) {
78
+ bucket.covered.add(file.path);
79
+ }
80
+ }
81
+ const results = [];
82
+ for (const [dir, counts] of dirMap) {
83
+ const total = counts.total.size;
84
+ const covered = counts.covered.size;
85
+ results.push({
86
+ dir,
87
+ total,
88
+ covered,
89
+ pct: total > 0 ? Math.round((covered / total) * 100) : 0,
90
+ });
91
+ }
92
+ // Sort: lowest coverage first (most actionable)
93
+ results.sort((a, b) => a.pct - b.pct || b.total - a.total);
94
+ return results;
95
+ }
96
+ function computeClassifications(classifications) {
97
+ const counts = new Map();
98
+ let total = 0;
99
+ for (const cls of classifications.values()) {
100
+ if (cls === "vendor" || cls === "generated" || cls === "build")
101
+ continue;
102
+ counts.set(cls, (counts.get(cls) ?? 0) + 1);
103
+ total++;
104
+ }
105
+ // Add zero-count types for display
106
+ const allTypes = ["source", "data", "config", "test", "docs", "asset", "build", "generated", "vendor"];
107
+ for (const t of allTypes) {
108
+ if (!counts.has(t))
109
+ counts.set(t, 0);
110
+ }
111
+ const sorted = [...counts.entries()]
112
+ .filter(([, c]) => c > 0)
113
+ .sort((a, b) => b[1] - a[1])
114
+ .map(([type, count]) => ({ type, count }));
115
+ // Append zero-count types that are commonly interesting
116
+ const displayTypes = new Set(sorted.map((s) => s.type));
117
+ for (const t of ["test", "docs"]) {
118
+ if (!displayTypes.has(t) && counts.get(t) === 0) {
119
+ sorted.push({ type: t, count: 0 });
120
+ }
121
+ }
122
+ return { counts: sorted, total };
123
+ }
124
+ function computeStaleness(db) {
125
+ const rows = db.query(`
126
+ SELECT
127
+ file_path,
128
+ CAST(julianday('now') - julianday(updated_at) AS INTEGER) AS days_ago
129
+ FROM context_entries
130
+ WHERE type IN ('rule', 'annotation')
131
+ AND file_path IS NOT NULL AND file_path != ''
132
+ AND updated_at < datetime('now', '-30 days')
133
+ GROUP BY file_path
134
+ ORDER BY days_ago DESC
135
+ `).all();
136
+ return rows.map((r) => ({
137
+ path: r.file_path,
138
+ daysAgo: r.days_ago,
139
+ }));
140
+ }
141
+ function computeBehavior(db) {
142
+ const totalRow = db.query(`
143
+ SELECT COUNT(*) as c FROM behavior_log
144
+ WHERE timestamp >= datetime('now', '-7 days')
145
+ `).get();
146
+ if (totalRow.c === 0)
147
+ return null;
148
+ const successRow = db.query(`
149
+ SELECT SUM(success) as s FROM behavior_log
150
+ WHERE timestamp >= datetime('now', '-7 days')
151
+ `).get();
152
+ const totalEvents = totalRow.c;
153
+ const totalSuccesses = successRow.s ?? 0;
154
+ const successRate = totalEvents > 0 ? totalSuccesses / totalEvents : 0;
155
+ // Most edited file
156
+ const mostEditedRow = db.query(`
157
+ SELECT file_path, COUNT(*) as edits
158
+ FROM behavior_log
159
+ WHERE timestamp >= datetime('now', '-7 days')
160
+ AND file_path IS NOT NULL AND file_path != ''
161
+ GROUP BY file_path
162
+ ORDER BY edits DESC
163
+ LIMIT 1
164
+ `).get();
165
+ // Most failed file
166
+ const mostFailedRow = db.query(`
167
+ SELECT file_path, SUM(CASE WHEN success = 0 THEN 1 ELSE 0 END) as failures
168
+ FROM behavior_log
169
+ WHERE timestamp >= datetime('now', '-7 days')
170
+ AND file_path IS NOT NULL AND file_path != ''
171
+ GROUP BY file_path
172
+ HAVING failures > 0
173
+ ORDER BY failures DESC
174
+ LIMIT 1
175
+ `).get();
176
+ return {
177
+ successRate,
178
+ totalSuccesses,
179
+ totalEvents,
180
+ mostEdited: mostEditedRow ? { path: mostEditedRow.file_path, edits: mostEditedRow.edits } : null,
181
+ mostFailed: mostFailedRow ? { path: mostFailedRow.file_path, failures: mostFailedRow.failures } : null,
182
+ };
183
+ }
184
+ function computeRecommendations(data) {
185
+ const recs = [];
186
+ // Directories with 0% coverage
187
+ const zeroCoverage = data.dirCoverage.filter((d) => d.pct === 0);
188
+ for (const d of zeroCoverage.slice(0, 3)) {
189
+ recs.push({
190
+ message: `Annotate ${d.dir} (0% coverage, ${d.total} file${d.total !== 1 ? "s" : ""})`,
191
+ priority: "high",
192
+ });
193
+ }
194
+ // Directories with low coverage (< 50%)
195
+ const lowCoverage = data.dirCoverage.filter((d) => d.pct > 0 && d.pct < 50);
196
+ for (const d of lowCoverage.slice(0, 2)) {
197
+ recs.push({
198
+ message: `Improve coverage in ${d.dir} (${d.pct}%, ${d.covered}/${d.total} files)`,
199
+ priority: "medium",
200
+ });
201
+ }
202
+ // Files with failures
203
+ if (data.behavior?.mostFailed) {
204
+ const mf = data.behavior.mostFailed;
205
+ recs.push({
206
+ message: `Fix failures in ${mf.path} (${mf.failures} failure${mf.failures !== 1 ? "s" : ""})`,
207
+ priority: "high",
208
+ });
209
+ }
210
+ // Stale entries
211
+ if (data.stale.length > 0) {
212
+ const topStale = data.stale[0];
213
+ recs.push({
214
+ message: `Rescan stale entries (${data.stale.length} file${data.stale.length !== 1 ? "s" : ""} not updated in 30+ days, oldest: ${topStale.path})`,
215
+ priority: "low",
216
+ });
217
+ }
218
+ return recs;
219
+ }
220
+ // ── Rendering ──────────────────────────────────────────
221
+ function renderDashboard(data) {
222
+ const W = 55;
223
+ const hr = chalk.gray(" " + "\u2500".repeat(W));
224
+ console.log("");
225
+ console.log(chalk.bold(" agentmind health"));
226
+ console.log(hr);
227
+ console.log("");
228
+ renderCoverage(data.dirCoverage);
229
+ console.log("");
230
+ renderClassifications(data.classifications, data.totalFiles);
231
+ console.log("");
232
+ renderStaleness(data.stale);
233
+ console.log("");
234
+ renderBehavior(data.behavior);
235
+ console.log("");
236
+ renderRecommendations(data.recommendations);
237
+ console.log("");
238
+ }
239
+ function renderCoverage(dirs) {
240
+ console.log(chalk.bold(" Coverage by directory"));
241
+ console.log(chalk.gray(" " + "\u2500".repeat(55)));
242
+ if (dirs.length === 0) {
243
+ console.log(chalk.dim(" No files in context store yet."));
244
+ return;
245
+ }
246
+ const maxBarWidth = 18;
247
+ const maxDirLen = Math.max(...dirs.map((d) => d.dir.length), 5);
248
+ for (const d of dirs) {
249
+ const colorFn = d.pct >= 80 ? chalk.green
250
+ : d.pct >= 50 ? chalk.yellow
251
+ : d.pct > 0 ? chalk.red
252
+ : chalk.dim;
253
+ const filled = Math.round((d.pct / 100) * maxBarWidth);
254
+ const empty = maxBarWidth - filled;
255
+ const bar = "\u2588".repeat(filled) + "\u2591".repeat(empty);
256
+ const dirLabel = d.dir.padEnd(maxDirLen);
257
+ const pctLabel = String(d.pct).padStart(3) + "%";
258
+ const fileLabel = `${d.covered}/${d.total} files`;
259
+ console.log(` ${chalk.dim(dirLabel)} ${colorFn(bar)} ${colorFn(pctLabel)} ${chalk.dim(fileLabel)}`);
260
+ }
261
+ }
262
+ function renderClassifications(counts, total) {
263
+ console.log(chalk.bold(" File types"));
264
+ console.log(chalk.gray(" " + "\u2500".repeat(55)));
265
+ if (counts.length === 0) {
266
+ console.log(chalk.dim(" No classified files yet."));
267
+ return;
268
+ }
269
+ const maxCount = Math.max(...counts.map((c) => c.count), 1);
270
+ const maxBarWidth = 28;
271
+ const maxLabelLen = Math.max(...counts.map((c) => c.type.length), 4);
272
+ for (const c of counts) {
273
+ const pct = total > 0 ? Math.round((c.count / total) * 100) : 0;
274
+ const filled = Math.round((c.count / maxCount) * maxBarWidth);
275
+ const empty = maxBarWidth - filled;
276
+ const bar = "\u2588".repeat(filled) + "\u2591".repeat(empty);
277
+ const label = c.type.padEnd(maxLabelLen);
278
+ const numLabel = String(c.count).padStart(3);
279
+ const pctLabel = `(${pct}%)`;
280
+ console.log(` ${chalk.dim(label)} ${chalk.cyan(bar)} ${chalk.bold(numLabel)} ${chalk.dim(pctLabel)}`);
281
+ }
282
+ }
283
+ function renderStaleness(stale) {
284
+ console.log(chalk.bold(" Stale entries (not updated in 30+ days)"));
285
+ console.log(chalk.gray(" " + "\u2500".repeat(55)));
286
+ if (stale.length === 0) {
287
+ console.log(chalk.green(" (none \u2014 all fresh!)"));
288
+ return;
289
+ }
290
+ const maxPathLen = Math.min(Math.max(...stale.map((s) => s.path.length)), 40);
291
+ for (const s of stale) {
292
+ const displayPath = s.path.length > 40 ? "..." + s.path.slice(-37) : s.path;
293
+ const daysLabel = `${s.daysAgo} day${s.daysAgo !== 1 ? "s" : ""} ago`;
294
+ console.log(` ${chalk.yellow("\u26A0")} ${displayPath.padEnd(maxPathLen)} ${chalk.dim("last updated " + daysLabel)}`);
295
+ }
296
+ }
297
+ function renderBehavior(behavior) {
298
+ console.log(chalk.bold(" Agent behavior (last 7 days)"));
299
+ console.log(chalk.gray(" " + "\u2500".repeat(55)));
300
+ if (!behavior) {
301
+ console.log(chalk.dim(" No behavior data recorded yet."));
302
+ return;
303
+ }
304
+ const pct = Math.round(behavior.successRate * 100);
305
+ const colorFn = pct >= 80 ? chalk.green : pct >= 50 ? chalk.yellow : chalk.red;
306
+ console.log(` Success rate: ${colorFn(pct + "%")} ${chalk.dim(`(${behavior.totalSuccesses}/${behavior.totalEvents})`)}`);
307
+ if (behavior.mostEdited) {
308
+ console.log(` Most edited: ${chalk.white(behavior.mostEdited.path)} ${chalk.dim(`(${behavior.mostEdited.edits} edit${behavior.mostEdited.edits !== 1 ? "s" : ""})`)}`);
309
+ }
310
+ if (behavior.mostFailed) {
311
+ console.log(` Most failed: ${chalk.red(behavior.mostFailed.path)} ${chalk.dim(`(${behavior.mostFailed.failures} failure${behavior.mostFailed.failures !== 1 ? "s" : ""})`)}`);
312
+ }
313
+ if (!behavior.mostEdited && !behavior.mostFailed) {
314
+ console.log(chalk.dim(" No file-specific behavior recorded."));
315
+ }
316
+ }
317
+ function renderRecommendations(recs) {
318
+ console.log(chalk.bold(" Recommendations"));
319
+ console.log(chalk.gray(" " + "\u2500".repeat(55)));
320
+ if (recs.length === 0) {
321
+ console.log(chalk.green(" Everything looks good! No immediate actions needed."));
322
+ return;
323
+ }
324
+ for (const r of recs) {
325
+ console.log(` ${chalk.cyan("\u2192")} ${r.message}`);
326
+ }
327
+ }
328
+ // ── Helpers ────────────────────────────────────────────
329
+ function extractDir(filePath) {
330
+ const normalized = filePath.replace(/\\/g, "/");
331
+ const firstSlash = normalized.indexOf("/");
332
+ if (firstSlash === -1)
333
+ return "";
334
+ // Show up to 2 levels for readability
335
+ const secondSlash = normalized.indexOf("/", firstSlash + 1);
336
+ const dir = secondSlash !== -1 ? normalized.slice(0, secondSlash) : normalized.slice(0, firstSlash);
337
+ // Ensure trailing slash for visual clarity
338
+ return dir + "/";
339
+ }
340
+ function classifyFromPath(p) {
341
+ const pathMatchers = [
342
+ [/(^|\/)node_modules\//, "vendor"],
343
+ [/\.agentmind\//, "generated"],
344
+ [/(^|\/)(dist|\.next|coverage|build|out|\.output)\//, "build"],
345
+ [/\.min\.(js|css)$/, "generated"],
346
+ [/(^|\/)(__tests__|test|tests|spec|specs)\//, "test"],
347
+ [/\.(test|spec)\.(ts|tsx|js|jsx|py|go|rs)$/, "test"],
348
+ [/_test\.(go|rs)$/, "test"],
349
+ [/\.md$/, "docs"],
350
+ [/(^|\/)docs\//, "docs"],
351
+ [/LICENSE|CHANGELOG|CONTRIBUTING/, "docs"],
352
+ [/\.(css|scss|sass|less|styled|module\.css)$/, "asset"],
353
+ [/\.(json|yaml|yml|toml|xml|csv|proto|graphql|gql)$/, "data"],
354
+ [/\.(sql|prisma|drizzle)$/, "data"],
355
+ [/\.config\.(ts|js|mjs|cjs)$/, "config"],
356
+ [/^\.github\//, "config"],
357
+ [/^Dockerfile/, "config"],
358
+ [/^docker-compose/, "config"],
359
+ [/^tsconfig/, "config"],
360
+ [/^\.env/, "config"],
361
+ [/\.(lock|lockfile)$/, "config"],
362
+ [/^(package\.json|turbo\.json|nx\.json|lerna\.json|pnpm-workspace\.yaml)$/, "config"],
363
+ [/\.(png|jpg|jpeg|gif|svg|ico|webp|avif|mp4|mp3|woff2?|ttf|eot)$/, "asset"],
364
+ ];
365
+ for (const [re, cls] of pathMatchers) {
366
+ if (re.test(p))
367
+ return cls;
368
+ }
369
+ const sourceExts = new Set([
370
+ ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
371
+ ".py", ".rb", ".go", ".rs", ".java", ".kt", ".swift", ".c", ".cpp", ".h", ".hpp",
372
+ ".cs", ".scala", ".clj", ".ex", ".exs", ".erl", ".hs", ".ml", ".vim", ".el",
373
+ ".sh", ".bash", ".zsh", ".fish",
374
+ ".html", ".htm", ".vue", ".svelte",
375
+ ".zig", ".nim", ".lua", ".php",
376
+ ]);
377
+ const ext = p.slice(p.lastIndexOf("."));
378
+ if (sourceExts.has(ext))
379
+ return "source";
380
+ return "data";
381
+ }
382
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/cli/commands/health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function hooks(agent: string): Promise<void>;
2
+ export declare function unhook(agent: string): Promise<void>;
3
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hooks.ts"],"names":[],"mappings":"AASA,wBAAsB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCxD;AAED,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BzD"}