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 +1 @@
1
- {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAgB3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,qBAAqB,CAAC;QAC3B,IAAI;QACJ,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAuB;IACjE,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QACvC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;YAC5D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM;YACN,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAkB3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,SAAS;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,qBAAqB,CAAC;QAC3B,IAAI;QACJ,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QACjC,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAuB;IACjE,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QACvC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClE,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;YAC5D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface LinkOptions {
2
+ cwd?: string;
3
+ yes?: boolean;
4
+ force?: boolean;
5
+ dryRun?: boolean;
6
+ id?: string;
7
+ vault?: string;
8
+ homeDir?: string;
9
+ }
10
+ export declare function runLink(argv: string[]): Promise<number>;
11
+ export declare function runLinkWithOptions(options?: LinkOptions): Promise<number>;
12
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7D;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsFnF"}
@@ -1,37 +1,39 @@
1
1
  import { mkdir } from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { findGitRoot } from "../../connector/git.js";
4
- import { readHomeConfig, withHomeDir } from "../../connector/home.js";
5
- import { detectProjectId, formatProjectIdSource } from "../../connector/project-id.js";
6
- import { readRepoConfig, repoConfigPath, writeRepoConfig } from "../../connector/repo.js";
7
- import { resolveLogsDir, resolveNotesDir, resolvePlansDir, resolveVaultRoot, } from "../../connector/vault.js";
8
- import { helpExitCode } from "../../help.js";
9
- import { flagBool, flagString, parseArgs } from "../../util/parse-args.js";
10
- import { resolveUserPath } from "../../util/path.js";
11
- import { confirm } from "../../util/prompt.js";
12
- export async function runRepoInit(argv) {
13
- const helpCode = helpExitCode(argv, "init");
3
+ import { findGitRoot } from "../connector/git.js";
4
+ import { readHomeConfig, withHomeDir } from "../connector/home.js";
5
+ import { detectProjectId, formatProjectIdSource } from "../connector/project-id.js";
6
+ import { readRepoConfig, repoConfigPath, writeRepoConfig } from "../connector/repo.js";
7
+ import { resolveLogsDir, resolveNotesDir, resolvePlansDir, resolveVaultRoot, } from "../connector/vault.js";
8
+ import { helpExitCode } from "../help.js";
9
+ import { flagBool, flagString, parseArgs } from "../util/parse-args.js";
10
+ import { resolveUserPath } from "../util/path.js";
11
+ import { confirm } from "../util/prompt.js";
12
+ export async function runLink(argv) {
13
+ const helpCode = helpExitCode(argv, "link");
14
14
  if (helpCode !== null) {
15
15
  return helpCode;
16
16
  }
17
17
  const { flags } = parseArgs(argv);
18
- return runRepoInitWithOptions({
18
+ return runLinkWithOptions({
19
19
  yes: flagBool(flags, "yes", "y"),
20
20
  force: flagBool(flags, "force", "f"),
21
+ dryRun: flagBool(flags, "dry-run"),
21
22
  id: flagString(flags, "id"),
22
23
  vault: flagString(flags, "vault"),
23
24
  });
24
25
  }
25
- export async function runRepoInitWithOptions(options = {}) {
26
+ export async function runLinkWithOptions(options = {}) {
26
27
  return withHomeDir(options.homeDir, async () => {
27
28
  const cwd = path.resolve(options.cwd ?? process.cwd());
28
29
  const yes = options.yes ?? false;
29
30
  const force = options.force ?? false;
31
+ const dryRun = options.dryRun ?? false;
30
32
  const gitRoot = await findGitRoot(cwd);
31
33
  let home = await readHomeConfig();
32
34
  if (!home) {
33
35
  if (!options.vault) {
34
- process.stderr.write("No vault configured. Run: grounder vault init <path>\n");
36
+ process.stderr.write("No vault configured. Run: grounder setup <path>\n");
35
37
  return 1;
36
38
  }
37
39
  home = { vaultRoot: resolveUserPath(options.vault) };
@@ -52,11 +54,28 @@ export async function runRepoInitWithOptions(options = {}) {
52
54
  const notesDirRelative = path.relative(vaultRoot, notesDir);
53
55
  const logsDirRelative = path.relative(vaultRoot, logsDir);
54
56
  const plansDirRelative = path.relative(vaultRoot, plansDir);
55
- process.stdout.write("Will create:\n");
57
+ if (existingRepo && !force) {
58
+ if (existingRepo.projectId === detected.id) {
59
+ process.stdout.write(dryRun ? "Already linked (would skip).\n" : "✓ Already linked (skipped)\n");
60
+ if (!dryRun) {
61
+ await mkdir(notesDir, { recursive: true });
62
+ await mkdir(logsDir, { recursive: true });
63
+ await mkdir(plansDir, { recursive: true });
64
+ }
65
+ return 0;
66
+ }
67
+ process.stderr.write(`Folder already linked as ${existingRepo.projectId}. Use --force to overwrite.\n`);
68
+ return 1;
69
+ }
70
+ process.stdout.write("Link this project inside the markdown vault (once per project).\n");
71
+ process.stdout.write(dryRun ? "Would create:\n" : "Will create:\n");
56
72
  process.stdout.write(` link ${repoConfigPath(cwd)}\n`);
57
73
  process.stdout.write(` vault ${notesDirRelative}/\n`);
58
74
  process.stdout.write(` vault ${logsDirRelative}/\n`);
59
75
  process.stdout.write(` vault ${plansDirRelative}/\n`);
76
+ if (dryRun) {
77
+ return 0;
78
+ }
60
79
  if (!yes) {
61
80
  const proceed = await confirm("Proceed?");
62
81
  if (!proceed) {
@@ -64,17 +83,6 @@ export async function runRepoInitWithOptions(options = {}) {
64
83
  return 0;
65
84
  }
66
85
  }
67
- if (existingRepo && !force) {
68
- if (existingRepo.projectId === detected.id) {
69
- process.stdout.write("✓ Already linked (skipped)\n");
70
- await mkdir(notesDir, { recursive: true });
71
- await mkdir(logsDir, { recursive: true });
72
- await mkdir(plansDir, { recursive: true });
73
- return 0;
74
- }
75
- process.stderr.write(`Folder already linked as ${existingRepo.projectId}. Use --force to overwrite.\n`);
76
- return 1;
77
- }
78
86
  await writeRepoConfig(cwd, { version: 1, projectId: detected.id });
79
87
  await mkdir(notesDir, { recursive: true });
80
88
  await mkdir(logsDir, { recursive: true });
@@ -86,4 +94,4 @@ export async function runRepoInitWithOptions(options = {}) {
86
94
  return 0;
87
95
  });
88
96
  }
89
- //# sourceMappingURL=init.js.map
97
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ export async function runMigrateWithOptions(options = {}) {
53
53
  const dryRun = options.dryRun ?? false;
54
54
  const home = await readHomeConfig();
55
55
  if (!home) {
56
- process.stderr.write("No home config found. Run `grounder vault init <path>` first.\n");
56
+ process.stderr.write("No home config found. Run `grounder setup <path>` first.\n");
57
57
  return 1;
58
58
  }
59
59
  const agents = await resolveMigrateAgents(options.agents, homeDir);
@@ -69,10 +69,8 @@ export async function runMigrateWithOptions(options = {}) {
69
69
  throw error;
70
70
  }
71
71
  process.stdout.write(`Vault root: ${home.vaultRoot}\n`);
72
- if (dryRun) {
73
- process.stdout.write("Dry run no files will be written.\n");
74
- }
75
- process.stdout.write("Will refresh:\n");
72
+ process.stdout.write("Refresh Grounder after an upgrade (slash commands/hooks; vault path unchanged).\n");
73
+ process.stdout.write(dryRun ? "Would refresh:\n" : "Will refresh:\n");
76
74
  if (agents.length === 0) {
77
75
  process.stdout.write(" (no agents recorded or detected)\n");
78
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
@@ -4,24 +4,32 @@ export interface NoteListOptions {
4
4
  cwd?: string;
5
5
  /** Max notes to print, newest first (default: 5). */
6
6
  limit?: number;
7
+ /**
8
+ * Agent relay: `[bucketRelativePath](fileUri)` on the title line (default:
9
+ * plain bucket-relative stem path). Absolute path stays indented beneath
10
+ * either way.
11
+ */
12
+ markdown?: boolean;
7
13
  /** Override home dir / `GROUNDER_HOME` (tests). */
8
14
  homeDir?: string;
9
15
  }
10
16
  /**
11
- * CLI entry for `grounder note list [--limit <n>]`.
17
+ * CLI entry for `grounder note list [--limit <n>] [--markdown]`.
12
18
  * `--limit` must be a positive integer when provided.
13
19
  * @returns Exit code (`0` on success, `1` on usage or config errors).
14
20
  */
15
21
  export declare function runNoteList(argv: string[]): Promise<number>;
16
22
  /**
17
- * Resolves the linked project, lists recent notes under `notes/` (newest first).
18
- * Prints a count header (blank line after when non-empty), then each note as a
19
- * numbered two-line block — `N. ` + full filename stem (including any date
20
- * prefix), then the indented absolute path — separated by a blank line. The
21
- * title line ends with two trailing spaces (a Markdown hard line break) so
22
- * agents can relay stdout into chat and keep title and path on separate
23
- * rendered lines. When `notes/` is empty, prints `No notes.` only. Same
24
- * vault/link prerequisites as `grounder note`.
23
+ * Resolves the linked project, lists recent notes under `notes/` recursively
24
+ * (newest first). Prints a count header (blank line after when non-empty), then
25
+ * each note as a numbered two-line block — `N. ` + bucket-relative stem path
26
+ * (nested files include subfolders), then the indented absolute path —
27
+ * separated by a blank line. With `markdown: true`, the title line is
28
+ * `[bucketRelativePath](fileUri)` under `notes/` (`.md` kept; no `notes/`
29
+ * prefix). The title line ends with two trailing spaces (a Markdown hard line
30
+ * break) so agents can relay stdout into chat and keep title and path on
31
+ * separate rendered lines. When `notes/` is empty, prints `No notes.` only.
32
+ * Same vault/link prerequisites as `grounder note`.
25
33
  * @returns Exit code (`0` on success, `1` when vault/link is missing).
26
34
  */
27
35
  export declare function runNoteListWithOptions(options?: NoteListOptions): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/note/list.ts"],"names":[],"mappings":"AAUA,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCjE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAa3F"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/note/list.ts"],"names":[],"mappings":"AAUA,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB3F"}
@@ -1,18 +1,18 @@
1
1
  import { withHomeDir } from "../../connector/home.js";
2
2
  import { resolveNotesDir } 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 { listNotes } from "../../vault/list-notes.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 note list [--limit <n>]\n";
9
+ const USAGE = "Usage: grounder note 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 note list [--limit <n>]`.
15
+ * CLI entry for `grounder note 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 runNoteList(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,17 +43,19 @@ export async function runNoteList(argv) {
43
43
  }
44
44
  limit = parsed;
45
45
  }
46
- return runNoteListWithOptions({ limit });
46
+ return runNoteListWithOptions({ limit, markdown: flagBool(flags, "markdown") });
47
47
  }
48
48
  /**
49
- * Resolves the linked project, lists recent notes under `notes/` (newest first).
50
- * Prints a count header (blank line after when non-empty), then each note as a
51
- * numbered two-line block — `N. ` + full filename stem (including any date
52
- * prefix), then the indented absolute path — separated by a blank line. The
53
- * title line ends with two trailing spaces (a Markdown hard line break) so
54
- * agents can relay stdout into chat and keep title and path on separate
55
- * rendered lines. When `notes/` is empty, prints `No notes.` only. Same
56
- * vault/link prerequisites as `grounder note`.
49
+ * Resolves the linked project, lists recent notes under `notes/` recursively
50
+ * (newest first). Prints a count header (blank line after when non-empty), then
51
+ * each note 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 `notes/` (`.md` kept; no `notes/`
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 `notes/` is empty, prints `No notes.` only.
58
+ * Same vault/link prerequisites as `grounder note`.
57
59
  * @returns Exit code (`0` on success, `1` when vault/link is missing).
58
60
  */
59
61
  export async function runNoteListWithOptions(options = {}) {
@@ -65,7 +67,10 @@ export async function runNoteListWithOptions(options = {}) {
65
67
  const limit = options.limit ?? DEFAULT_LIMIT;
66
68
  const notesDir = resolveNotesDir(linked.home, linked.repo);
67
69
  const paths = await listNotes(notesDir, { limit });
68
- writeVaultItemList(paths, limit, { singular: "note", plural: "notes" });
70
+ writeVaultItemList(paths, limit, { singular: "note", plural: "notes" }, {
71
+ markdown: options.markdown === true,
72
+ titleRootDir: notesDir,
73
+ });
69
74
  return 0;
70
75
  });
71
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/note/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/note/list.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ export interface NoteOptions {
2
2
  cwd?: string;
3
3
  text: string;
4
4
  title?: string;
5
+ /** Topic keywords for search (`--topics "auth,jwt,middleware"`). */
6
+ topics?: string[];
5
7
  homeDir?: string;
6
8
  now?: Date;
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/commands/note.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB7D;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB9E"}
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/commands/note.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B7D;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB9E"}
@@ -12,12 +12,20 @@ export async function runNote(argv) {
12
12
  const { positional, flags } = parseArgs(argv);
13
13
  const text = positional.join(" ").trim();
14
14
  if (!text) {
15
- process.stderr.write("Usage: grounder note <text> [--title <slug>]\n");
15
+ process.stderr.write("Usage: grounder note <text> [--title <slug>] [--topics <list>]\n");
16
16
  return 1;
17
17
  }
18
+ const topicsRaw = flagString(flags, "topics");
19
+ const topics = topicsRaw
20
+ ? topicsRaw
21
+ .split(",")
22
+ .map((t) => t.trim())
23
+ .filter(Boolean)
24
+ : undefined;
18
25
  return runNoteWithOptions({
19
26
  text,
20
27
  title: flagString(flags, "title"),
28
+ topics,
21
29
  });
22
30
  }
23
31
  export async function runNoteWithOptions(options) {
@@ -29,6 +37,7 @@ export async function runNoteWithOptions(options) {
29
37
  const notesDir = resolveNotesDir(linked.home, linked.repo);
30
38
  const writtenPath = await writeNote(notesDir, options.text, {
31
39
  title: options.title,
40
+ topics: options.topics,
32
41
  now: options.now,
33
42
  });
34
43
  process.stdout.write(`Wrote ${writtenPath}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/commands/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAU3D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,kBAAkB,CAAC;QACxB,IAAI;QACJ,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAoB;IAC3D,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;YAC1D,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/commands/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAY3D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACzF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,SAAS;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,kBAAkB,CAAC;QACxB,IAAI;QACJ,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;QACjC,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAoB;IAC3D,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;YAC1D,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,WAAW,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -7,6 +7,21 @@ export type VaultItemListNoun = {
7
7
  singular: string;
8
8
  plural: string;
9
9
  };
10
+ /** Options for {@link writeVaultItemList} / {@link writeVaultItemListEntries}. */
11
+ export type VaultItemListFormatOptions = {
12
+ /**
13
+ * Agent relay: first line is `[bucketRelativePath](fileUri)` (keeps `.md`);
14
+ * absolute path stays indented beneath for `--path` / Read matching.
15
+ * Requires `titleRootDir`.
16
+ */
17
+ markdown?: boolean;
18
+ /**
19
+ * Bucket dir (`notes/` / `logs/` / `plans/`) for titles — nested files show
20
+ * as `subdir/stem` (plain) or `subdir/name.md` (markdown) instead of a
21
+ * colliding bare name. Required when `markdown` is set.
22
+ */
23
+ titleRootDir?: string;
24
+ };
10
25
  /**
11
26
  * Lead line for note/handoff/plan list stdout: truncation signal when
12
27
  * `count === limit`, complete inventory when fewer, or empty-dir notice.
@@ -17,11 +32,16 @@ export declare function formatVaultItemListHeader(count: number, limit: number,
17
32
  * Each title line ends with two trailing spaces (a Markdown hard line break)
18
33
  * so agents can relay stdout into chat and keep title and path on separate
19
34
  * rendered lines.
35
+ *
36
+ * Titles are bucket-relative under `titleRootDir` when set (nested files keep
37
+ * subfolders; no `notes/` / `logs/` / `plans/` prefix). With `markdown: true`,
38
+ * the title line is `[bucketRelativePath](fileUri)` (`.md` kept); plain mode
39
+ * strips the extension.
20
40
  */
21
- export declare function writeVaultItemListEntries(paths: readonly string[]): void;
41
+ export declare function writeVaultItemListEntries(paths: readonly string[], options?: VaultItemListFormatOptions): void;
22
42
  /**
23
43
  * Count header + numbered title/path blocks for vault item lists.
24
44
  * When `paths` is empty, prints only the empty-dir notice from the header.
25
45
  */
26
- export declare function writeVaultItemList(paths: readonly string[], limit: number, noun: VaultItemListNoun): void;
46
+ export declare function writeVaultItemList(paths: readonly string[], limit: number, noun: VaultItemListNoun, options?: VaultItemListFormatOptions): void;
27
47
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/commands/output.ts"],"names":[],"mappings":"AAEA,sEAAsE;AAEtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CASxE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAGN"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/commands/output.ts"],"names":[],"mappings":"AAEA,sEAAsE;AAEtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wDAAwD;AACxD,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,8EAA8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAMF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,MAAM,CASR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE,0BAA+B,GACvC,IAAI,CAiBN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,0BAA+B,GACvC,IAAI,CAGN"}
@@ -1,4 +1,4 @@
1
- import path from "node:path";
1
+ import { formatMarkdownFileLink, vaultItemPlainTitle, vaultRelativePath } from "../util/path.js";
2
2
  /** Shared checklist/snapshot formatting for `doctor` and `status`. */
3
3
  export function writeSection(title) {
4
4
  process.stdout.write(`${title}\n`);
@@ -29,23 +29,35 @@ export function formatVaultItemListHeader(count, limit, noun) {
29
29
  * Each title line ends with two trailing spaces (a Markdown hard line break)
30
30
  * so agents can relay stdout into chat and keep title and path on separate
31
31
  * rendered lines.
32
+ *
33
+ * Titles are bucket-relative under `titleRootDir` when set (nested files keep
34
+ * subfolders; no `notes/` / `logs/` / `plans/` prefix). With `markdown: true`,
35
+ * the title line is `[bucketRelativePath](fileUri)` (`.md` kept); plain mode
36
+ * strips the extension.
32
37
  */
33
- export function writeVaultItemListEntries(paths) {
38
+ export function writeVaultItemListEntries(paths, options = {}) {
39
+ const markdown = options.markdown === true;
40
+ const titleRootDir = options.titleRootDir;
41
+ if (markdown && titleRootDir === undefined) {
42
+ throw new Error("titleRootDir is required when markdown is true");
43
+ }
34
44
  paths.forEach((filePath, index) => {
35
45
  if (index > 0) {
36
46
  process.stdout.write("\n");
37
47
  }
38
- const stem = path.basename(filePath, ".md");
48
+ const title = markdown
49
+ ? formatMarkdownFileLink(vaultRelativePath(titleRootDir, filePath), filePath)
50
+ : vaultItemPlainTitle(filePath, titleRootDir);
39
51
  // Two trailing spaces: Markdown hard break when stdout is relayed into chat.
40
- process.stdout.write(`${index + 1}. ${stem} \n ${filePath}\n`);
52
+ process.stdout.write(`${index + 1}. ${title} \n ${filePath}\n`);
41
53
  });
42
54
  }
43
55
  /**
44
56
  * Count header + numbered title/path blocks for vault item lists.
45
57
  * When `paths` is empty, prints only the empty-dir notice from the header.
46
58
  */
47
- export function writeVaultItemList(paths, limit, noun) {
59
+ export function writeVaultItemList(paths, limit, noun, options = {}) {
48
60
  process.stdout.write(formatVaultItemListHeader(paths.length, limit, noun));
49
- writeVaultItemListEntries(paths);
61
+ writeVaultItemListEntries(paths, options);
50
62
  }
51
63
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/commands/output.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,sEAAsE;AAEtE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAQD,SAAS,aAAa,CAAC,KAAa,EAAE,IAAuB;IAC3D,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,KAAa,EACb,IAAuB;IAEvB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,eAAe,KAAK,IAAI,KAAK,2BAA2B,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAwB;IAChE,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAChC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,6EAA6E;QAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,QAAQ,IAAI,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAwB,EACxB,KAAa,EACb,IAAuB;IAEvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/commands/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEjG,sEAAsE;AAEtE,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC;AAwBD,SAAS,aAAa,CAAC,KAAa,EAAE,IAAuB;IAC3D,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,KAAa,EACb,IAAuB;IAEvB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,MAAM,IAAI,CAAC,MAAM,KAAK,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,eAAe,KAAK,IAAI,KAAK,2BAA2B,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,KAAK,IAAI,KAAK,OAAO,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAwB,EACxB,UAAsC,EAAE;IAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1C,IAAI,QAAQ,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAChC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ;YACpB,CAAC,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,YAAsB,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;YACvF,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChD,6EAA6E;QAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,SAAS,QAAQ,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAwB,EACxB,KAAa,EACb,IAAuB,EACvB,UAAsC,EAAE;IAExC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC"}
@@ -4,27 +4,35 @@ export interface PlanListOptions {
4
4
  cwd?: string;
5
5
  /** Max plans to print, newest first (default: 5). */
6
6
  limit?: number;
7
+ /**
8
+ * Agent relay: `[bucketRelativePath](fileUri)` on the title line (default:
9
+ * plain bucket-relative stem path). Absolute path stays indented beneath
10
+ * either way.
11
+ */
12
+ markdown?: boolean;
7
13
  /** Override home dir / `GROUNDER_HOME` (tests). */
8
14
  homeDir?: string;
9
15
  }
10
16
  /**
11
- * CLI entry for `grounder plan list [--limit <n>]`.
17
+ * CLI entry for `grounder plan list [--limit <n>] [--markdown]`.
12
18
  * `--limit` must be a positive integer when provided.
13
19
  * @returns Exit code (`0` on success, `1` on usage or config errors).
14
20
  */
15
21
  export declare function runPlanList(argv: string[]): Promise<number>;
16
22
  /**
17
- * Resolves the linked project, lists recent plans under `plans/` (newest first).
18
- * Prints a count header (blank line after when non-empty), then each plan as a
19
- * numbered two-line block — `N. ` + filename stem (title), then the indented
20
- * absolute path separated by a blank line. The title line ends with two
21
- * trailing spaces (a Markdown hard line break) so agents can relay stdout
22
- * into chat and keep title and path on separate rendered lines. When `plans/`
23
- * is empty, prints `No plans.` only. The number is positional within this
24
- * listing only (not a stable identifier a later `plan list` call may
25
- * renumber if plans change) and exists purely so a human or agent can refer
26
- * to "plan 2" in the same conversation without retyping the path. Same
27
- * vault/link prerequisites as `grounder plan`.
23
+ * Resolves the linked project, lists recent plans under `plans/` recursively
24
+ * (newest first). Prints a count header (blank line after when non-empty), then
25
+ * each plan as a numbered two-line block — `N. ` + bucket-relative stem path
26
+ * (nested files include subfolders), then the indented absolute path
27
+ * separated by a blank line. With `markdown: true`, the title line is
28
+ * `[bucketRelativePath](fileUri)` under `plans/` (`.md` kept; no `plans/`
29
+ * prefix). The title line ends with two trailing spaces (a Markdown hard line
30
+ * break) so agents can relay stdout into chat and keep title and path on
31
+ * separate rendered lines. When `plans/` is empty, prints `No plans.` only. The
32
+ * number is positional within this listing only (not a stable identifier — a
33
+ * later `plan list` call may renumber if plans change) and exists purely so a
34
+ * human or agent can refer to "plan 2" in the same conversation without
35
+ * retyping the path. Same vault/link prerequisites as `grounder plan`.
28
36
  * @returns Exit code (`0` on success, `1` when vault/link is missing).
29
37
  */
30
38
  export declare function runPlanListWithOptions(options?: PlanListOptions): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/plan/list.ts"],"names":[],"mappings":"AAUA,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAa3F"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/plan/list.ts"],"names":[],"mappings":"AAUA,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCjE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB3F"}