grounder 0.4.0 → 0.5.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 (138) hide show
  1. package/README.md +148 -270
  2. package/dist/agents/claude.d.ts.map +1 -1
  3. package/dist/agents/claude.js +2 -1
  4. package/dist/agents/claude.js.map +1 -1
  5. package/dist/agents/cursor.d.ts.map +1 -1
  6. package/dist/agents/cursor.js +2 -1
  7. package/dist/agents/cursor.js.map +1 -1
  8. package/dist/agents/hook-runtime.d.ts +3 -3
  9. package/dist/agents/hook-runtime.js +4 -4
  10. package/dist/agents/hook-runtime.js.map +1 -1
  11. package/dist/cli.js +11 -10
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/apply-agent-installs.d.ts +2 -2
  14. package/dist/commands/apply-agent-installs.d.ts.map +1 -1
  15. package/dist/commands/apply-agent-installs.js +1 -1
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +7 -4
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/handoff/list.d.ts +23 -13
  20. package/dist/commands/handoff/list.d.ts.map +1 -1
  21. package/dist/commands/handoff/list.js +28 -16
  22. package/dist/commands/handoff/list.js.map +1 -1
  23. package/dist/commands/handoff.d.ts +2 -0
  24. package/dist/commands/handoff.d.ts.map +1 -1
  25. package/dist/commands/handoff.js +10 -1
  26. package/dist/commands/handoff.js.map +1 -1
  27. package/dist/commands/link.d.ts +12 -0
  28. package/dist/commands/link.d.ts.map +1 -0
  29. package/dist/commands/{repo/init.js → link.js} +35 -27
  30. package/dist/commands/link.js.map +1 -0
  31. package/dist/commands/migrate.js +3 -5
  32. package/dist/commands/migrate.js.map +1 -1
  33. package/dist/commands/note/list.d.ts +17 -9
  34. package/dist/commands/note/list.d.ts.map +1 -1
  35. package/dist/commands/note/list.js +19 -14
  36. package/dist/commands/note/list.js.map +1 -1
  37. package/dist/commands/note.d.ts +2 -0
  38. package/dist/commands/note.d.ts.map +1 -1
  39. package/dist/commands/note.js +10 -1
  40. package/dist/commands/note.js.map +1 -1
  41. package/dist/commands/output.d.ts +22 -2
  42. package/dist/commands/output.d.ts.map +1 -1
  43. package/dist/commands/output.js +18 -6
  44. package/dist/commands/output.js.map +1 -1
  45. package/dist/commands/plan/list.d.ts +20 -12
  46. package/dist/commands/plan/list.d.ts.map +1 -1
  47. package/dist/commands/plan/list.js +22 -17
  48. package/dist/commands/plan/list.js.map +1 -1
  49. package/dist/commands/plan.d.ts +2 -0
  50. package/dist/commands/plan.d.ts.map +1 -1
  51. package/dist/commands/plan.js +12 -2
  52. package/dist/commands/plan.js.map +1 -1
  53. package/dist/commands/require-linked.js +2 -2
  54. package/dist/commands/require-linked.js.map +1 -1
  55. package/dist/commands/search.d.ts +23 -0
  56. package/dist/commands/search.d.ts.map +1 -0
  57. package/dist/commands/search.js +277 -0
  58. package/dist/commands/search.js.map +1 -0
  59. package/dist/commands/{vault/init.d.ts → setup.d.ts} +5 -4
  60. package/dist/commands/setup.d.ts.map +1 -0
  61. package/dist/commands/setup.js +137 -0
  62. package/dist/commands/setup.js.map +1 -0
  63. package/dist/commands/status.d.ts.map +1 -1
  64. package/dist/commands/status.js +24 -15
  65. package/dist/commands/status.js.map +1 -1
  66. package/dist/commands/upgrade-banner.d.ts +2 -2
  67. package/dist/commands/upgrade-banner.js +2 -2
  68. package/dist/connector/home.d.ts +12 -0
  69. package/dist/connector/home.d.ts.map +1 -1
  70. package/dist/connector/home.js +26 -2
  71. package/dist/connector/home.js.map +1 -1
  72. package/dist/connector/state.d.ts +1 -1
  73. package/dist/connector/state.d.ts.map +1 -1
  74. package/dist/connector/vault.d.ts +2 -0
  75. package/dist/connector/vault.d.ts.map +1 -1
  76. package/dist/connector/vault.js +6 -1
  77. package/dist/connector/vault.js.map +1 -1
  78. package/dist/help.d.ts +3 -3
  79. package/dist/help.d.ts.map +1 -1
  80. package/dist/help.js +70 -51
  81. package/dist/help.js.map +1 -1
  82. package/dist/util/frontmatter.d.ts +9 -7
  83. package/dist/util/frontmatter.d.ts.map +1 -1
  84. package/dist/util/frontmatter.js +29 -4
  85. package/dist/util/frontmatter.js.map +1 -1
  86. package/dist/util/path.d.ts +23 -0
  87. package/dist/util/path.d.ts.map +1 -1
  88. package/dist/util/path.js +39 -0
  89. package/dist/util/path.js.map +1 -1
  90. package/dist/vault/list-handoffs.d.ts +3 -1
  91. package/dist/vault/list-handoffs.d.ts.map +1 -1
  92. package/dist/vault/list-handoffs.js +17 -15
  93. package/dist/vault/list-handoffs.js.map +1 -1
  94. package/dist/vault/list-markdown.d.ts +8 -0
  95. package/dist/vault/list-markdown.d.ts.map +1 -0
  96. package/dist/vault/list-markdown.js +35 -0
  97. package/dist/vault/list-markdown.js.map +1 -0
  98. package/dist/vault/list-notes.d.ts +5 -5
  99. package/dist/vault/list-notes.d.ts.map +1 -1
  100. package/dist/vault/list-notes.js +12 -22
  101. package/dist/vault/list-notes.js.map +1 -1
  102. package/dist/vault/list-plans.d.ts +2 -2
  103. package/dist/vault/list-plans.d.ts.map +1 -1
  104. package/dist/vault/list-plans.js +9 -19
  105. package/dist/vault/list-plans.js.map +1 -1
  106. package/dist/vault/search.d.ts +55 -0
  107. package/dist/vault/search.d.ts.map +1 -0
  108. package/dist/vault/search.js +328 -0
  109. package/dist/vault/search.js.map +1 -0
  110. package/dist/vault/write-handoff.d.ts +2 -0
  111. package/dist/vault/write-handoff.d.ts.map +1 -1
  112. package/dist/vault/write-handoff.js +5 -0
  113. package/dist/vault/write-handoff.js.map +1 -1
  114. package/dist/vault/write-note.d.ts +2 -0
  115. package/dist/vault/write-note.d.ts.map +1 -1
  116. package/dist/vault/write-note.js +9 -1
  117. package/dist/vault/write-note.js.map +1 -1
  118. package/dist/vault/write-plan.d.ts +4 -0
  119. package/dist/vault/write-plan.d.ts.map +1 -1
  120. package/dist/vault/write-plan.js +14 -1
  121. package/dist/vault/write-plan.js.map +1 -1
  122. package/package.json +10 -3
  123. package/templates/agents/claude/commands/grounder-note.md +6 -2
  124. package/templates/agents/claude/commands/grounder-plan.md +7 -5
  125. package/templates/agents/claude/commands/grounder-search.md +144 -0
  126. package/templates/agents/claude/commands/grounder-task-handoff.md +5 -1
  127. package/templates/agents/claude/commands/grounder-task.md +2 -2
  128. package/templates/agents/cursor/commands/grounder-note.md +6 -2
  129. package/templates/agents/cursor/commands/grounder-plan.md +7 -5
  130. package/templates/agents/cursor/commands/grounder-search.md +144 -0
  131. package/templates/agents/cursor/commands/grounder-task-handoff.md +5 -1
  132. package/templates/agents/cursor/commands/grounder-task.md +2 -2
  133. package/dist/commands/repo/init.d.ts +0 -11
  134. package/dist/commands/repo/init.d.ts.map +0 -1
  135. package/dist/commands/repo/init.js.map +0 -1
  136. package/dist/commands/vault/init.d.ts.map +0 -1
  137. package/dist/commands/vault/init.js +0 -90
  138. package/dist/commands/vault/init.js.map +0 -1
@@ -1,18 +1,18 @@
1
1
  import { withHomeDir } from "../../connector/home.js";
2
2
  import { resolvePlansDir } from "../../connector/vault.js";
3
3
  import { helpExitCode } from "../../help.js";
4
- import { parseArgs } from "../../util/parse-args.js";
4
+ import { flagBool, parseArgs } from "../../util/parse-args.js";
5
5
  import { listPlans } from "../../vault/list-plans.js";
6
6
  import { writeVaultItemList } from "../output.js";
7
7
  import { requireLinkedProject } from "../require-linked.js";
8
8
  const DEFAULT_LIMIT = 5;
9
- const USAGE = "Usage: grounder plan list [--limit <n>]\n";
9
+ const USAGE = "Usage: grounder plan list [--limit <n>] [--markdown]\n";
10
10
  function usageError() {
11
11
  process.stderr.write(USAGE);
12
12
  return 1;
13
13
  }
14
14
  /**
15
- * CLI entry for `grounder plan list [--limit <n>]`.
15
+ * CLI entry for `grounder plan list [--limit <n>] [--markdown]`.
16
16
  * `--limit` must be a positive integer when provided.
17
17
  * @returns Exit code (`0` on success, `1` on usage or config errors).
18
18
  */
@@ -26,7 +26,7 @@ export async function runPlanList(argv) {
26
26
  return usageError();
27
27
  }
28
28
  for (const key of flags.keys()) {
29
- if (key !== "limit") {
29
+ if (key !== "limit" && key !== "markdown") {
30
30
  return usageError();
31
31
  }
32
32
  }
@@ -43,20 +43,22 @@ export async function runPlanList(argv) {
43
43
  }
44
44
  limit = parsed;
45
45
  }
46
- return runPlanListWithOptions({ limit });
46
+ return runPlanListWithOptions({ limit, markdown: flagBool(flags, "markdown") });
47
47
  }
48
48
  /**
49
- * Resolves the linked project, lists recent plans under `plans/` (newest first).
50
- * Prints a count header (blank line after when non-empty), then each plan as a
51
- * numbered two-line block — `N. ` + filename stem (title), then the indented
52
- * absolute path separated by a blank line. The title line ends with two
53
- * trailing spaces (a Markdown hard line break) so agents can relay stdout
54
- * into chat and keep title and path on separate rendered lines. When `plans/`
55
- * is empty, prints `No plans.` only. The number is positional within this
56
- * listing only (not a stable identifier a later `plan list` call may
57
- * renumber if plans change) and exists purely so a human or agent can refer
58
- * to "plan 2" in the same conversation without retyping the path. Same
59
- * vault/link prerequisites as `grounder plan`.
49
+ * Resolves the linked project, lists recent plans under `plans/` recursively
50
+ * (newest first). Prints a count header (blank line after when non-empty), then
51
+ * each plan as a numbered two-line block — `N. ` + bucket-relative stem path
52
+ * (nested files include subfolders), then the indented absolute path
53
+ * separated by a blank line. With `markdown: true`, the title line is
54
+ * `[bucketRelativePath](fileUri)` under `plans/` (`.md` kept; no `plans/`
55
+ * prefix). The title line ends with two trailing spaces (a Markdown hard line
56
+ * break) so agents can relay stdout into chat and keep title and path on
57
+ * separate rendered lines. When `plans/` is empty, prints `No plans.` only. The
58
+ * number is positional within this listing only (not a stable identifier — a
59
+ * later `plan list` call may renumber if plans change) and exists purely so a
60
+ * human or agent can refer to "plan 2" in the same conversation without
61
+ * retyping the path. Same vault/link prerequisites as `grounder plan`.
60
62
  * @returns Exit code (`0` on success, `1` when vault/link is missing).
61
63
  */
62
64
  export async function runPlanListWithOptions(options = {}) {
@@ -68,7 +70,10 @@ export async function runPlanListWithOptions(options = {}) {
68
70
  const limit = options.limit ?? DEFAULT_LIMIT;
69
71
  const plansDir = resolvePlansDir(linked.home, linked.repo);
70
72
  const paths = await listPlans(plansDir, { limit });
71
- writeVaultItemList(paths, limit, { singular: "plan", plural: "plans" });
73
+ writeVaultItemList(paths, limit, { singular: "plan", plural: "plans" }, {
74
+ markdown: options.markdown === true,
75
+ titleRootDir: plansDir,
76
+ });
72
77
  return 0;
73
78
  });
74
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/plan/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/plan/list.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export interface PlanOptions {
13
13
  planPath?: string;
14
14
  /** When true, overwrite an existing plan (preserving original `created`). */
15
15
  force?: boolean;
16
+ /** Topic keywords for search (`--topics "auth,jwt,middleware"`). */
17
+ topics?: string[];
16
18
  /** Override home dir / `GROUNDER_HOME` (tests). */
17
19
  homeDir?: string;
18
20
  /** Fixed clock for deterministic `created` / `updated` (tests). */
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAeA,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB7D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C9E"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAeA,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B7D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C9E"}
@@ -8,8 +8,8 @@ import { isPathInside, isRealPathInside, resolveUserPath } from "../util/path.js
8
8
  import { sanitizePlanName } from "../util/plan-name.js";
9
9
  import { updatePlanAtPath, writePlan } from "../vault/write-plan.js";
10
10
  import { requireLinkedProject } from "./require-linked.js";
11
- const USAGE = "Usage: grounder plan <text> --title <name> [--force]\n" +
12
- " or: grounder plan <text> --path <file>";
11
+ const USAGE = "Usage: grounder plan <text> --title <name> [--force] [--topics <list>]\n" +
12
+ " or: grounder plan <text> --path <file> [--topics <list>]";
13
13
  /**
14
14
  * CLI entry for `grounder plan <text> (--title <name> [--force] | --path <file>)`.
15
15
  * @returns Exit code (`0` on success, `1` on usage or config errors).
@@ -25,11 +25,19 @@ export async function runPlan(argv) {
25
25
  process.stderr.write(`${USAGE}\n`);
26
26
  return 1;
27
27
  }
28
+ const topicsRaw = flagString(flags, "topics");
29
+ const topics = topicsRaw
30
+ ? topicsRaw
31
+ .split(",")
32
+ .map((t) => t.trim())
33
+ .filter(Boolean)
34
+ : undefined;
28
35
  return runPlanWithOptions({
29
36
  text,
30
37
  title: flagString(flags, "title"),
31
38
  planPath: flagString(flags, "path"),
32
39
  force: flagBool(flags, "force"),
40
+ topics,
33
41
  });
34
42
  }
35
43
  /**
@@ -79,6 +87,7 @@ async function writeByTitle(plansDir, projectId, name, options) {
79
87
  const result = await writePlan(plansDir, name, options.text, {
80
88
  projectId,
81
89
  force: options.force,
90
+ topics: options.topics,
82
91
  now: options.now,
83
92
  });
84
93
  if (result.status === "exists") {
@@ -113,6 +122,7 @@ async function updateByPath(plansDir, projectId, options) {
113
122
  }
114
123
  const result = await updatePlanAtPath(filePath, options.text, {
115
124
  projectId,
125
+ topics: options.topics,
116
126
  now: options.now,
117
127
  });
118
128
  process.stdout.write(`Updated ${result.path}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,10 @@ export async function requireLinkedProject(cwd) {
7
7
  const result = await resolveLinkedProject(cwd);
8
8
  if (!result.ok) {
9
9
  if (result.error === "no-vault") {
10
- process.stderr.write("No vault configured. Run: grounder vault init <path>\n");
10
+ process.stderr.write("No vault configured. Run: grounder setup <path>\n");
11
11
  }
12
12
  else {
13
- process.stderr.write("Folder not linked. Run: grounder init\n");
13
+ process.stderr.write("Folder not linked. Run: grounder link\n");
14
14
  }
15
15
  return null;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"require-linked.js","sourceRoot":"","sources":["../../src/commands/require-linked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW;IACpD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"require-linked.js","sourceRoot":"","sources":["../../src/commands/require-linked.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW;IACpD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /** Options for {@link runSearchWithOptions} (CLI parsing and tests). */
2
+ export interface SearchCommandOptions {
3
+ cwd?: string;
4
+ homeDir?: string;
5
+ query: string;
6
+ terms?: string[];
7
+ limit?: number;
8
+ maxHits?: number;
9
+ context?: number;
10
+ since?: Date;
11
+ markdown?: boolean;
12
+ json?: boolean;
13
+ }
14
+ /**
15
+ * CLI entry for `grounder search <query>`.
16
+ * @returns Exit code (`0` on success, `1` on usage or config errors).
17
+ */
18
+ export declare function runSearch(argv: string[]): Promise<number>;
19
+ /**
20
+ * Resolves the linked project, searches its vault root, prints formatted hits.
21
+ */
22
+ export declare function runSearchWithOptions(options: SearchCommandOptions): Promise<number>;
23
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAUA,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyMD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuE/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCzF"}
@@ -0,0 +1,277 @@
1
+ import path from "node:path";
2
+ import { withHomeDir } from "../connector/home.js";
3
+ import { resolveProjectVaultRoot } from "../connector/vault.js";
4
+ import { helpExitCode } from "../help.js";
5
+ import { fileExists } from "../util/fs.js";
6
+ import { flagBool, flagString, parseArgs } from "../util/parse-args.js";
7
+ import { formatMarkdownFileLink, toFileUri, vaultRelativePath } from "../util/path.js";
8
+ import { searchVault } from "../vault/search.js";
9
+ import { requireLinkedProject } from "./require-linked.js";
10
+ const DEFAULT_LIMIT = 10;
11
+ const DEFAULT_MAX_HITS = 50;
12
+ const USAGE = "Usage: grounder search <query> [--terms <csv>] [--limit <n>] [--max-hits <n>] [--context <n>] [--since <date>] [--markdown] [--json]\n";
13
+ function usageError() {
14
+ process.stderr.write(USAGE);
15
+ return 1;
16
+ }
17
+ function parseIntFlag(raw, label, min) {
18
+ if (raw === undefined) {
19
+ return null;
20
+ }
21
+ if (typeof raw !== "string") {
22
+ return null;
23
+ }
24
+ const trimmed = raw.trim();
25
+ const parsed = Number.parseInt(trimmed, 10);
26
+ const desc = min === 0 ? "a non-negative integer" : "a positive integer";
27
+ if (!/^\d+$/.test(trimmed) || Number.isNaN(parsed) || parsed < min) {
28
+ process.stderr.write(`Invalid ${label}: must be ${desc}.\n`);
29
+ return null;
30
+ }
31
+ return parsed;
32
+ }
33
+ /**
34
+ * Parses `--since` / `--after`: calendar date (`2026-08-01` = local midnight),
35
+ * ISO datetime, or relative (`7d`, `30d`). Returns `null` on invalid input
36
+ * (after writing an error message).
37
+ */
38
+ function parseSinceDate(raw) {
39
+ if (raw === undefined) {
40
+ return undefined;
41
+ }
42
+ if (typeof raw !== "string") {
43
+ process.stderr.write("Invalid --since: expected a date string.\n");
44
+ return null;
45
+ }
46
+ const trimmed = raw.trim();
47
+ const relMatch = /^(\d+)d$/i.exec(trimmed);
48
+ if (relMatch) {
49
+ const days = Number.parseInt(relMatch[1], 10);
50
+ const d = new Date();
51
+ d.setDate(d.getDate() - days);
52
+ d.setHours(0, 0, 0, 0);
53
+ return d;
54
+ }
55
+ const isoDay = /^(\d{4})-(\d{2})-(\d{2})$/.exec(trimmed);
56
+ if (isoDay) {
57
+ const year = Number.parseInt(isoDay[1], 10);
58
+ const month = Number.parseInt(isoDay[2], 10);
59
+ const day = Number.parseInt(isoDay[3], 10);
60
+ const parsed = new Date(year, month - 1, day);
61
+ if (parsed.getFullYear() !== year ||
62
+ parsed.getMonth() !== month - 1 ||
63
+ parsed.getDate() !== day) {
64
+ process.stderr.write(`Invalid --since: "${trimmed}" is not a valid date (use YYYY-MM-DD or Nd).\n`);
65
+ return null;
66
+ }
67
+ parsed.setHours(0, 0, 0, 0);
68
+ return parsed;
69
+ }
70
+ const parsed = new Date(trimmed);
71
+ if (Number.isNaN(parsed.getTime())) {
72
+ process.stderr.write(`Invalid --since: "${trimmed}" is not a valid date (use YYYY-MM-DD or Nd).\n`);
73
+ return null;
74
+ }
75
+ return parsed;
76
+ }
77
+ function parseTermsCsv(raw) {
78
+ if (!raw) {
79
+ return [];
80
+ }
81
+ return raw
82
+ .split(",")
83
+ .map((part) => part.trim())
84
+ .filter((part) => part.length > 0);
85
+ }
86
+ function fileStem(filePath) {
87
+ return path.basename(filePath, ".md");
88
+ }
89
+ function formatSummary(outcome) {
90
+ if (outcome.totalMatchCount === 0) {
91
+ return `No matches for "${outcome.query}".`;
92
+ }
93
+ if (outcome.truncated) {
94
+ return `Found ${outcome.totalMatchCount} matches in ${outcome.totalFileCount} files (showing ${outcome.files.length}).`;
95
+ }
96
+ return `Found ${outcome.totalMatchCount} matches in ${outcome.totalFileCount} files.`;
97
+ }
98
+ function writePlainOutput(outcome) {
99
+ process.stdout.write(`${formatSummary(outcome)}\n`);
100
+ if (outcome.totalMatchCount === 0) {
101
+ return;
102
+ }
103
+ if (outcome.truncated) {
104
+ process.stdout.write(`Showing top ${outcome.files.length} of ${outcome.totalFileCount} files.\n`);
105
+ }
106
+ process.stdout.write("\n");
107
+ outcome.files.forEach((file, index) => {
108
+ if (index > 0) {
109
+ process.stdout.write("\n");
110
+ }
111
+ const label = fileStem(file.filePath);
112
+ const topicTag = file.topicsMatch ? " [topics]" : "";
113
+ process.stdout.write(`${index + 1}. ${label}${topicTag} \n ${file.filePath}\n`);
114
+ for (const hit of file.hits) {
115
+ const snippet = hit.snippet.replace(/\s+/g, " ").trim();
116
+ process.stdout.write(` L${hit.line} (${hit.matchedTerm}): ${snippet}\n`);
117
+ }
118
+ });
119
+ }
120
+ function formatSnippetBlock(snippet) {
121
+ let fence = "```";
122
+ while (snippet.includes(fence)) {
123
+ fence += "`";
124
+ }
125
+ return `${fence}\n${snippet}\n${fence}\n`;
126
+ }
127
+ function writeMarkdownOutput(outcome) {
128
+ process.stdout.write(`${formatSummary(outcome)}\n`);
129
+ if (outcome.totalMatchCount === 0) {
130
+ return;
131
+ }
132
+ if (outcome.truncated) {
133
+ process.stdout.write(`Showing top ${outcome.files.length} of ${outcome.totalFileCount} files.\n`);
134
+ }
135
+ process.stdout.write("\n");
136
+ for (const file of outcome.files) {
137
+ const label = fileStem(file.filePath);
138
+ process.stdout.write(`### ${formatMarkdownFileLink(label, file.filePath)}\n\n`);
139
+ for (const hit of file.hits) {
140
+ process.stdout.write(`L${hit.line} (${hit.matchedTerm}):\n\n`);
141
+ process.stdout.write(formatSnippetBlock(hit.snippet));
142
+ process.stdout.write("\n");
143
+ }
144
+ }
145
+ }
146
+ function alsoMatchedHint(filePath, matchedTerms) {
147
+ const stem = fileStem(filePath);
148
+ return `${stem} — ${matchedTerms.slice(0, 2).join(", ")}`;
149
+ }
150
+ function writeJsonOutput(outcome, rootDir) {
151
+ const payload = {
152
+ query: outcome.query,
153
+ terms: outcome.terms,
154
+ termHitCounts: outcome.termHitCounts,
155
+ summary: formatSummary(outcome),
156
+ truncated: outcome.truncated,
157
+ totalMatchCount: outcome.totalMatchCount,
158
+ totalFileCount: outcome.totalFileCount,
159
+ hits: outcome.files.map((file) => ({
160
+ file: file.filePath,
161
+ relativePath: vaultRelativePath(rootDir, file.filePath),
162
+ fileUri: toFileUri(file.filePath),
163
+ alsoMatchedHint: alsoMatchedHint(file.filePath, file.matchedTerms),
164
+ mtimeMs: file.mtimeMs,
165
+ topicsMatch: file.topicsMatch,
166
+ matches: file.hits.map((hit) => ({
167
+ line: hit.line,
168
+ term: hit.matchedTerm,
169
+ snippet: hit.snippet,
170
+ })),
171
+ })),
172
+ };
173
+ process.stdout.write(`${JSON.stringify(payload)}\n`);
174
+ }
175
+ /**
176
+ * CLI entry for `grounder search <query>`.
177
+ * @returns Exit code (`0` on success, `1` on usage or config errors).
178
+ */
179
+ export async function runSearch(argv) {
180
+ const helpCode = helpExitCode(argv, "search");
181
+ if (helpCode !== null) {
182
+ return helpCode;
183
+ }
184
+ const { positional, flags } = parseArgs(argv);
185
+ if (positional.length === 0) {
186
+ return usageError();
187
+ }
188
+ const allowedFlags = new Set([
189
+ "terms",
190
+ "limit",
191
+ "max-hits",
192
+ "context",
193
+ "since",
194
+ "after",
195
+ "markdown",
196
+ "json",
197
+ ]);
198
+ for (const key of flags.keys()) {
199
+ if (!allowedFlags.has(key)) {
200
+ return usageError();
201
+ }
202
+ }
203
+ const markdown = flagBool(flags, "markdown");
204
+ const json = flagBool(flags, "json");
205
+ if (markdown && json) {
206
+ process.stderr.write("Use only one of --markdown or --json.\n");
207
+ return 1;
208
+ }
209
+ const limit = parseIntFlag(flags.get("limit"), "--limit", 1);
210
+ if (limit === null && flags.has("limit")) {
211
+ return 1;
212
+ }
213
+ const maxHits = parseIntFlag(flags.get("max-hits"), "--max-hits", 1);
214
+ if (maxHits === null && flags.has("max-hits")) {
215
+ return 1;
216
+ }
217
+ const context = parseIntFlag(flags.get("context"), "--context", 0);
218
+ if (context === null && flags.has("context")) {
219
+ return 1;
220
+ }
221
+ const sinceRaw = flags.get("since") ?? flags.get("after");
222
+ const since = parseSinceDate(sinceRaw);
223
+ if (since === null) {
224
+ return 1;
225
+ }
226
+ const query = positional.join(" ").trim();
227
+ if (!query) {
228
+ return usageError();
229
+ }
230
+ return runSearchWithOptions({
231
+ query,
232
+ terms: parseTermsCsv(flagString(flags, "terms")),
233
+ limit: limit ?? undefined,
234
+ maxHits: maxHits ?? undefined,
235
+ context: context ?? undefined,
236
+ since: since ?? undefined,
237
+ markdown,
238
+ json,
239
+ });
240
+ }
241
+ /**
242
+ * Resolves the linked project, searches its vault root, prints formatted hits.
243
+ */
244
+ export async function runSearchWithOptions(options) {
245
+ return withHomeDir(options.homeDir, async () => {
246
+ const linked = await requireLinkedProject(options.cwd ?? process.cwd());
247
+ if (!linked) {
248
+ return 1;
249
+ }
250
+ const rootDir = resolveProjectVaultRoot(linked.home, linked.repo);
251
+ if (!(await fileExists(rootDir))) {
252
+ process.stderr.write(`Project vault root not found: ${rootDir}\n`);
253
+ process.stderr.write("Run: grounder setup <vault-path>\n");
254
+ return 1;
255
+ }
256
+ const outcome = await searchVault({
257
+ rootDir,
258
+ query: options.query,
259
+ terms: options.terms,
260
+ limit: options.limit ?? DEFAULT_LIMIT,
261
+ maxHits: options.maxHits ?? DEFAULT_MAX_HITS,
262
+ ...(options.context !== undefined ? { context: options.context } : {}),
263
+ ...(options.since !== undefined ? { since: options.since } : {}),
264
+ });
265
+ if (options.json) {
266
+ writeJsonOutput(outcome, rootDir);
267
+ }
268
+ else if (options.markdown) {
269
+ writeMarkdownOutput(outcome);
270
+ }
271
+ else {
272
+ writePlainOutput(outcome);
273
+ }
274
+ return 0;
275
+ });
276
+ }
277
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
- export interface VaultInitOptions {
1
+ export interface SetupOptions {
2
2
  vaultPath: string;
3
3
  yes?: boolean;
4
4
  force?: boolean;
5
5
  /** Also install session-start teaser hooks for adapters that support them. */
6
6
  hooks?: boolean;
7
+ dryRun?: boolean;
7
8
  homeDir?: string;
8
9
  /** Agent ids to install for. Defaults to auto-detecting installed agents. */
9
10
  agents?: string[];
10
11
  }
11
- export declare function runVaultInit(argv: string[]): Promise<number>;
12
- export declare function runVaultInitWithOptions(options: VaultInitOptions): Promise<number>;
13
- //# sourceMappingURL=init.d.ts.map
12
+ export declare function runSetup(argv: string[]): Promise<number>;
13
+ export declare function runSetupWithOptions(options: SetupOptions): Promise<number>;
14
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAyBD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B9D;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA6FhF"}