grounder 0.2.0 → 0.3.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 (149) hide show
  1. package/README.md +81 -32
  2. package/dist/agents/claude.d.ts +1 -0
  3. package/dist/agents/claude.d.ts.map +1 -1
  4. package/dist/agents/claude.js +38 -13
  5. package/dist/agents/claude.js.map +1 -1
  6. package/dist/agents/cursor.d.ts +1 -0
  7. package/dist/agents/cursor.d.ts.map +1 -1
  8. package/dist/agents/cursor.js +38 -13
  9. package/dist/agents/cursor.js.map +1 -1
  10. package/dist/agents/hook-runtime.d.ts +65 -21
  11. package/dist/agents/hook-runtime.d.ts.map +1 -1
  12. package/dist/agents/hook-runtime.js +172 -31
  13. package/dist/agents/hook-runtime.js.map +1 -1
  14. package/dist/agents/index.d.ts +18 -0
  15. package/dist/agents/index.d.ts.map +1 -1
  16. package/dist/agents/index.js +27 -4
  17. package/dist/agents/index.js.map +1 -1
  18. package/dist/agents/install-command.d.ts +37 -0
  19. package/dist/agents/install-command.d.ts.map +1 -0
  20. package/dist/agents/install-command.js +65 -0
  21. package/dist/agents/install-command.js.map +1 -0
  22. package/dist/agents/types.d.ts +19 -1
  23. package/dist/agents/types.d.ts.map +1 -1
  24. package/dist/cli.js +58 -60
  25. package/dist/cli.js.map +1 -1
  26. package/dist/commands/apply-agent-installs.d.ts +34 -0
  27. package/dist/commands/apply-agent-installs.d.ts.map +1 -0
  28. package/dist/commands/apply-agent-installs.js +137 -0
  29. package/dist/commands/apply-agent-installs.js.map +1 -0
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +202 -51
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/handoff/list.d.ts.map +1 -1
  34. package/dist/commands/handoff/list.js +5 -0
  35. package/dist/commands/handoff/list.js.map +1 -1
  36. package/dist/commands/handoff/peek.d.ts +5 -2
  37. package/dist/commands/handoff/peek.d.ts.map +1 -1
  38. package/dist/commands/handoff/peek.js +47 -6
  39. package/dist/commands/handoff/peek.js.map +1 -1
  40. package/dist/commands/handoff.d.ts.map +1 -1
  41. package/dist/commands/handoff.js +5 -0
  42. package/dist/commands/handoff.js.map +1 -1
  43. package/dist/commands/migrate.d.ts +23 -0
  44. package/dist/commands/migrate.d.ts.map +1 -0
  45. package/dist/commands/migrate.js +104 -0
  46. package/dist/commands/migrate.js.map +1 -0
  47. package/dist/commands/note.d.ts.map +1 -1
  48. package/dist/commands/note.js +5 -0
  49. package/dist/commands/note.js.map +1 -1
  50. package/dist/commands/package-version-notice.d.ts +18 -0
  51. package/dist/commands/package-version-notice.d.ts.map +1 -0
  52. package/dist/commands/package-version-notice.js +39 -0
  53. package/dist/commands/package-version-notice.js.map +1 -0
  54. package/dist/commands/path/logs.d.ts +1 -1
  55. package/dist/commands/path/logs.d.ts.map +1 -1
  56. package/dist/commands/path/logs.js +6 -1
  57. package/dist/commands/path/logs.js.map +1 -1
  58. package/dist/commands/path/notes.d.ts +1 -1
  59. package/dist/commands/path/notes.d.ts.map +1 -1
  60. package/dist/commands/path/notes.js +6 -1
  61. package/dist/commands/path/notes.js.map +1 -1
  62. package/dist/commands/path/plans.d.ts +7 -0
  63. package/dist/commands/path/plans.d.ts.map +1 -0
  64. package/dist/commands/path/plans.js +22 -0
  65. package/dist/commands/path/plans.js.map +1 -0
  66. package/dist/commands/plan/list.d.ts +23 -0
  67. package/dist/commands/plan/list.d.ts.map +1 -0
  68. package/dist/commands/plan/list.js +69 -0
  69. package/dist/commands/plan/list.js.map +1 -0
  70. package/dist/commands/plan.d.ts +34 -0
  71. package/dist/commands/plan.d.ts.map +1 -0
  72. package/dist/commands/plan.js +121 -0
  73. package/dist/commands/plan.js.map +1 -0
  74. package/dist/commands/repo/init.d.ts.map +1 -1
  75. package/dist/commands/repo/init.js +12 -1
  76. package/dist/commands/repo/init.js.map +1 -1
  77. package/dist/commands/status.d.ts +1 -1
  78. package/dist/commands/status.d.ts.map +1 -1
  79. package/dist/commands/status.js +52 -9
  80. package/dist/commands/status.js.map +1 -1
  81. package/dist/commands/upgrade-banner.d.ts +9 -0
  82. package/dist/commands/upgrade-banner.d.ts.map +1 -0
  83. package/dist/commands/upgrade-banner.js +27 -0
  84. package/dist/commands/upgrade-banner.js.map +1 -0
  85. package/dist/commands/vault/init.d.ts.map +1 -1
  86. package/dist/commands/vault/init.js +18 -29
  87. package/dist/commands/vault/init.js.map +1 -1
  88. package/dist/connector/repo.d.ts +2 -0
  89. package/dist/connector/repo.d.ts.map +1 -1
  90. package/dist/connector/repo.js +12 -1
  91. package/dist/connector/repo.js.map +1 -1
  92. package/dist/connector/state.d.ts +95 -0
  93. package/dist/connector/state.d.ts.map +1 -0
  94. package/dist/connector/state.js +189 -0
  95. package/dist/connector/state.js.map +1 -0
  96. package/dist/connector/unsupported-schema.d.ts +9 -0
  97. package/dist/connector/unsupported-schema.d.ts.map +1 -0
  98. package/dist/connector/unsupported-schema.js +14 -0
  99. package/dist/connector/unsupported-schema.js.map +1 -0
  100. package/dist/connector/vault.d.ts +2 -0
  101. package/dist/connector/vault.d.ts.map +1 -1
  102. package/dist/connector/vault.js +6 -1
  103. package/dist/connector/vault.js.map +1 -1
  104. package/dist/help.d.ts +45 -0
  105. package/dist/help.d.ts.map +1 -0
  106. package/dist/help.js +355 -0
  107. package/dist/help.js.map +1 -0
  108. package/dist/util/fs.d.ts +6 -0
  109. package/dist/util/fs.d.ts.map +1 -1
  110. package/dist/util/fs.js +15 -1
  111. package/dist/util/fs.js.map +1 -1
  112. package/dist/util/hash.d.ts +3 -0
  113. package/dist/util/hash.d.ts.map +1 -0
  114. package/dist/util/hash.js +6 -0
  115. package/dist/util/hash.js.map +1 -0
  116. package/dist/util/path.d.ts +10 -0
  117. package/dist/util/path.d.ts.map +1 -1
  118. package/dist/util/path.js +31 -0
  119. package/dist/util/path.js.map +1 -1
  120. package/dist/util/plan-name.d.ts +10 -0
  121. package/dist/util/plan-name.d.ts.map +1 -0
  122. package/dist/util/plan-name.js +18 -0
  123. package/dist/util/plan-name.js.map +1 -0
  124. package/dist/util/semver.d.ts +10 -0
  125. package/dist/util/semver.d.ts.map +1 -0
  126. package/dist/util/semver.js +40 -0
  127. package/dist/util/semver.js.map +1 -0
  128. package/dist/vault/layout.d.ts +2 -0
  129. package/dist/vault/layout.d.ts.map +1 -1
  130. package/dist/vault/layout.js +4 -0
  131. package/dist/vault/layout.js.map +1 -1
  132. package/dist/vault/list-plans.d.ts +11 -0
  133. package/dist/vault/list-plans.d.ts.map +1 -0
  134. package/dist/vault/list-plans.js +40 -0
  135. package/dist/vault/list-plans.js.map +1 -0
  136. package/dist/vault/write-plan.d.ts +28 -0
  137. package/dist/vault/write-plan.d.ts.map +1 -0
  138. package/dist/vault/write-plan.js +61 -0
  139. package/dist/vault/write-plan.js.map +1 -0
  140. package/package.json +1 -1
  141. package/templates/agents/claude/commands/grounder-note.md +1 -1
  142. package/templates/agents/claude/commands/grounder-plan.md +65 -0
  143. package/templates/agents/claude/commands/grounder-task-handoff.md +3 -3
  144. package/templates/agents/claude/commands/grounder-task.md +2 -2
  145. package/templates/agents/cursor/commands/grounder-note.md +1 -1
  146. package/templates/agents/cursor/commands/grounder-plan.md +65 -0
  147. package/templates/agents/cursor/commands/grounder-task-handoff.md +3 -3
  148. package/templates/agents/cursor/commands/grounder-task.md +2 -2
  149. package/templates/vault/plan.md +16 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/repo/init.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjE;AAED,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsE3F"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/repo/init.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAajE;AAED,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4E3F"}
@@ -4,11 +4,16 @@ import { findGitRoot } from "../../connector/git.js";
4
4
  import { readHomeConfig, withHomeDir } from "../../connector/home.js";
5
5
  import { detectProjectId, formatProjectIdSource } from "../../connector/project-id.js";
6
6
  import { readRepoConfig, repoConfigPath, writeRepoConfig } from "../../connector/repo.js";
7
- import { resolveLogsDir, resolveNotesDir, resolveVaultRoot } from "../../connector/vault.js";
7
+ import { resolveLogsDir, resolveNotesDir, resolvePlansDir, resolveVaultRoot, } from "../../connector/vault.js";
8
+ import { helpExitCode } from "../../help.js";
8
9
  import { flagBool, flagString, parseArgs } from "../../util/parse-args.js";
9
10
  import { resolveUserPath } from "../../util/path.js";
10
11
  import { confirm } from "../../util/prompt.js";
11
12
  export async function runRepoInit(argv) {
13
+ const helpCode = helpExitCode(argv, "init");
14
+ if (helpCode !== null) {
15
+ return helpCode;
16
+ }
12
17
  const { flags } = parseArgs(argv);
13
18
  return runRepoInitWithOptions({
14
19
  yes: flagBool(flags, "yes", "y"),
@@ -37,6 +42,7 @@ export async function runRepoInitWithOptions(options = {}) {
37
42
  const projectConfig = { version: 1, projectId: detected.id };
38
43
  const notesDir = resolveNotesDir(home, projectConfig, options.vault);
39
44
  const logsDir = resolveLogsDir(home, projectConfig, options.vault);
45
+ const plansDir = resolvePlansDir(home, projectConfig, options.vault);
40
46
  process.stdout.write(`✓ Folder: ${cwd}\n`);
41
47
  if (gitRoot) {
42
48
  process.stdout.write(`✓ Git repo: ${gitRoot}\n`);
@@ -45,10 +51,12 @@ export async function runRepoInitWithOptions(options = {}) {
45
51
  process.stdout.write(`✓ Project: ${detected.id} (${formatProjectIdSource(detected.source)})\n\n`);
46
52
  const notesDirRelative = path.relative(vaultRoot, notesDir);
47
53
  const logsDirRelative = path.relative(vaultRoot, logsDir);
54
+ const plansDirRelative = path.relative(vaultRoot, plansDir);
48
55
  process.stdout.write("Will create:\n");
49
56
  process.stdout.write(` link ${repoConfigPath(cwd)}\n`);
50
57
  process.stdout.write(` vault ${notesDirRelative}/\n`);
51
58
  process.stdout.write(` vault ${logsDirRelative}/\n`);
59
+ process.stdout.write(` vault ${plansDirRelative}/\n`);
52
60
  if (!yes) {
53
61
  const proceed = await confirm("Proceed?");
54
62
  if (!proceed) {
@@ -61,6 +69,7 @@ export async function runRepoInitWithOptions(options = {}) {
61
69
  process.stdout.write("✓ Already linked (skipped)\n");
62
70
  await mkdir(notesDir, { recursive: true });
63
71
  await mkdir(logsDir, { recursive: true });
72
+ await mkdir(plansDir, { recursive: true });
64
73
  return 0;
65
74
  }
66
75
  process.stderr.write(`Folder already linked as ${existingRepo.projectId}. Use --force to overwrite.\n`);
@@ -69,9 +78,11 @@ export async function runRepoInitWithOptions(options = {}) {
69
78
  await writeRepoConfig(cwd, { version: 1, projectId: detected.id });
70
79
  await mkdir(notesDir, { recursive: true });
71
80
  await mkdir(logsDir, { recursive: true });
81
+ await mkdir(plansDir, { recursive: true });
72
82
  process.stdout.write("✓ Wrote .grounder.json\n");
73
83
  process.stdout.write(`✓ Created notes folder: ${notesDir}\n`);
74
84
  process.stdout.write(`✓ Created logs folder: ${logsDir}\n`);
85
+ process.stdout.write(`✓ Created plans folder: ${plansDir}\n`);
75
86
  return 0;
76
87
  });
77
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/repo/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/repo/init.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@ export interface StatusOptions {
2
2
  cwd?: string;
3
3
  homeDir?: string;
4
4
  }
5
- export declare function runStatus(_argv: string[]): Promise<number>;
5
+ export declare function runStatus(argv: string[]): Promise<number>;
6
6
  export declare function runStatusWithOptions(options?: StatusOptions): Promise<number>;
7
7
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8CD,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgEvF"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2ED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAO/D;AAED,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA+EvF"}
@@ -1,12 +1,21 @@
1
1
  import path from "node:path";
2
+ import { ALL_AGENTS } from "../agents/index.js";
2
3
  import { currentBranch, findGitRoot } from "../connector/git.js";
3
4
  import { homeConfigPath, readHomeConfig, withHomeDir } from "../connector/home.js";
4
5
  import { findLinkedRepoRoot, readRepoConfig, repoConfigPath, } from "../connector/repo.js";
5
- import { resolveLogsDir, resolveNotesDir, resolveVaultRoot } from "../connector/vault.js";
6
+ import { isInstallSchemaStale, readGrounderState, statePath } from "../connector/state.js";
7
+ import { isUnsupportedSchemaError } from "../connector/unsupported-schema.js";
8
+ import { resolveLogsDir, resolveNotesDir, resolvePlansDir, resolveVaultRoot, } from "../connector/vault.js";
9
+ import { helpExitCode } from "../help.js";
10
+ import { VERSION } from "../index.js";
11
+ import { packageVersionNotice } from "./package-version-notice.js";
6
12
  const LABEL_WIDTH = 12;
7
13
  const VAULT_INIT = "grounder vault init <path>";
8
14
  const REPO_INIT = "grounder init";
9
15
  const REPO_INIT_FORCE = "grounder init --force";
16
+ const MIGRATE = "grounder migrate";
17
+ const MIGRATE_FORCE = "grounder migrate --force";
18
+ const UPGRADE_GROUNDER = "upgrade grounder";
10
19
  function section(title) {
11
20
  return `${title}\n`;
12
21
  }
@@ -34,13 +43,41 @@ async function tryReadHome() {
34
43
  }
35
44
  async function tryReadRepo(linkedRoot) {
36
45
  try {
37
- return { repo: await readRepoConfig(linkedRoot), invalid: null };
46
+ return { repo: await readRepoConfig(linkedRoot), invalid: null, unsupported: false };
38
47
  }
39
48
  catch (error) {
40
- return { repo: null, invalid: errorDetail(error) };
49
+ return {
50
+ repo: null,
51
+ invalid: errorDetail(error),
52
+ unsupported: isUnsupportedSchemaError(error),
53
+ };
41
54
  }
42
55
  }
43
- export async function runStatus(_argv) {
56
+ async function writeInstallStateLine(homeDir) {
57
+ try {
58
+ const state = await readGrounderState(homeDir);
59
+ if (!state) {
60
+ process.stdout.write(statusLine("State:", `missing → run: ${MIGRATE_FORCE}`));
61
+ return;
62
+ }
63
+ process.stdout.write(statusLine("State:", statePath(homeDir)));
64
+ const packageNotice = packageVersionNotice(VERSION, state.grounderVersion);
65
+ if (packageNotice) {
66
+ process.stdout.write(statusLine("Package:", packageNotice.status));
67
+ }
68
+ if (isInstallSchemaStale(state, ALL_AGENTS)) {
69
+ process.stdout.write(statusLine("Schemas:", `stale → run: ${MIGRATE}`));
70
+ }
71
+ }
72
+ catch {
73
+ process.stdout.write(statusLine("State:", `invalid → run: ${MIGRATE_FORCE}`));
74
+ }
75
+ }
76
+ export async function runStatus(argv) {
77
+ const helpCode = helpExitCode(argv, "status");
78
+ if (helpCode !== null) {
79
+ return helpCode;
80
+ }
44
81
  return runStatusWithOptions({});
45
82
  }
46
83
  export async function runStatusWithOptions(options = {}) {
@@ -49,9 +86,9 @@ export async function runStatusWithOptions(options = {}) {
49
86
  const { home, invalid: homeInvalid } = await tryReadHome();
50
87
  const gitRoot = await findGitRoot(cwd);
51
88
  const linkedRoot = await findLinkedRepoRoot(cwd, gitRoot);
52
- const { repo, invalid: repoInvalid } = linkedRoot
89
+ const { repo, invalid: repoInvalid, unsupported: repoUnsupported, } = linkedRoot
53
90
  ? await tryReadRepo(linkedRoot)
54
- : { repo: null, invalid: null };
91
+ : { repo: null, invalid: null, unsupported: false };
55
92
  process.stdout.write(section("Machine"));
56
93
  if (homeInvalid) {
57
94
  process.stdout.write(statusLine("Config:", `invalid → run: ${VAULT_INIT}`));
@@ -62,6 +99,7 @@ export async function runStatusWithOptions(options = {}) {
62
99
  else {
63
100
  process.stdout.write(statusLine("Config:", homeConfigPath()));
64
101
  process.stdout.write(statusLine("Vault:", resolveVaultRoot(home)));
102
+ await writeInstallStateLine(options.homeDir);
65
103
  }
66
104
  process.stdout.write("\n");
67
105
  process.stdout.write(section("Project"));
@@ -73,10 +111,14 @@ export async function runStatusWithOptions(options = {}) {
73
111
  return 0;
74
112
  }
75
113
  if (repoInvalid || !repo) {
76
- const fix = home ? REPO_INIT_FORCE : VAULT_INIT;
77
- process.stdout.write(statusLine("Linked:", `incomplete → run: ${fix}`));
114
+ const fix = repoUnsupported ? UPGRADE_GROUNDER : home ? REPO_INIT_FORCE : VAULT_INIT;
115
+ process.stdout.write(statusLine("Linked:", repoUnsupported ? `unsupported → ${fix}` : `incomplete → run: ${fix}`));
78
116
  process.stdout.write(statusLine("Folder:", linkedRoot));
79
- process.stdout.write(statusLine("Config:", repoInvalid ? `invalid → run: ${REPO_INIT_FORCE}` : `missing → run: ${REPO_INIT}`));
117
+ process.stdout.write(statusLine("Config:", repoUnsupported
118
+ ? `unsupported → ${UPGRADE_GROUNDER}`
119
+ : repoInvalid
120
+ ? `invalid → run: ${REPO_INIT_FORCE}`
121
+ : `missing → run: ${REPO_INIT}`));
80
122
  await writeGitLine(gitRoot);
81
123
  return 0;
82
124
  }
@@ -94,6 +136,7 @@ export async function runStatusWithOptions(options = {}) {
94
136
  process.stdout.write(statusLine("Id:", repo.projectId));
95
137
  process.stdout.write(statusLine("Notes:", resolveNotesDir(home, repo)));
96
138
  process.stdout.write(statusLine("Logs:", resolveLogsDir(home, repo)));
139
+ process.stdout.write(statusLine("Plans:", resolvePlansDir(home, repo)));
97
140
  await writeGitLine(gitRoot);
98
141
  return 0;
99
142
  });
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Stderr notice when the running Grounder version and the version stored for
3
+ * this machine's configuration disagree (ordered by version when both look like
4
+ * x.y.z). Prints on ordinary commands until migrate or vault init updates state.
5
+ * Silent if state is missing or broken. Skip for `handoff peek` (session hooks),
6
+ * `migrate`, and `vault init` (those update state themselves).
7
+ */
8
+ export declare function notifyUpgradeIfNeeded(homeDir?: string): Promise<void>;
9
+ //# sourceMappingURL=upgrade-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-banner.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade-banner.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3E"}
@@ -0,0 +1,27 @@
1
+ import { readGrounderState } from "../connector/state.js";
2
+ import { VERSION } from "../index.js";
3
+ import { packageVersionNotice } from "./package-version-notice.js";
4
+ /**
5
+ * Stderr notice when the running Grounder version and the version stored for
6
+ * this machine's configuration disagree (ordered by version when both look like
7
+ * x.y.z). Prints on ordinary commands until migrate or vault init updates state.
8
+ * Silent if state is missing or broken. Skip for `handoff peek` (session hooks),
9
+ * `migrate`, and `vault init` (those update state themselves).
10
+ */
11
+ export async function notifyUpgradeIfNeeded(homeDir) {
12
+ try {
13
+ const state = await readGrounderState(homeDir);
14
+ if (!state) {
15
+ return;
16
+ }
17
+ const notice = packageVersionNotice(VERSION, state.grounderVersion);
18
+ if (!notice) {
19
+ return;
20
+ }
21
+ process.stderr.write(notice.banner);
22
+ }
23
+ catch {
24
+ // Missing/corrupt state — doctor covers diagnostics.
25
+ }
26
+ }
27
+ //# sourceMappingURL=upgrade-banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-banner.js","sourceRoot":"","sources":["../../src/commands/upgrade-banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAgB;IAC1D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/vault/init.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,gBAAgB;IAC/B,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,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlE;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuFxF"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/vault/init.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,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,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBlE;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiExF"}
@@ -1,12 +1,18 @@
1
1
  import { mkdir } from "node:fs/promises";
2
- import { installHookRuntime, runtimeCliPath } from "../../agents/hook-runtime.js";
2
+ import { runtimeCliPath } from "../../agents/hook-runtime.js";
3
3
  import { resolveAgents } from "../../agents/index.js";
4
4
  import { homeConfigPath, readHomeConfig, withHomeDir, writeHomeConfig, } from "../../connector/home.js";
5
+ import { helpExitCode } from "../../help.js";
5
6
  import { flagBool, flagStrings, parseArgs } from "../../util/parse-args.js";
6
7
  import { resolveUserPath } from "../../util/path.js";
7
8
  import { confirm } from "../../util/prompt.js";
8
9
  import { projectsParent } from "../../vault/layout.js";
10
+ import { applyAgentInstalls } from "../apply-agent-installs.js";
9
11
  export async function runVaultInit(argv) {
12
+ const helpCode = helpExitCode(argv, "vault init");
13
+ if (helpCode !== null) {
14
+ return helpCode;
15
+ }
10
16
  const { positional, flags, repeated } = parseArgs(argv);
11
17
  const vaultPathArg = positional[0];
12
18
  const yes = flagBool(flags, "yes", "y");
@@ -43,13 +49,14 @@ export async function runVaultInitWithOptions(options) {
43
49
  process.stdout.write("Will write:\n");
44
50
  process.stdout.write(` home ${homeConfigPath(homeDir)}\n`);
45
51
  process.stdout.write(" vault 10-Projects/ (if missing)\n");
46
- const hookAgents = hooks ? agents.filter((agent) => agent.installHooks) : [];
47
- if (hookAgents.length > 0) {
48
- // Shared across agents — list once (not under each adapter).
52
+ if (agents.length > 0) {
53
+ // Shared across agents (slash commands + optional hooks) — list once.
49
54
  process.stdout.write(` grounder runtime ${runtimeCliPath(homeDir)}\n`);
50
55
  }
51
56
  for (const agent of agents) {
52
- process.stdout.write(` ${agent.id.padEnd(8)} (${agent.name} artifacts)\n`);
57
+ for (const artifactPath of agent.expectedArtifacts(homeDir)) {
58
+ process.stdout.write(` ${agent.id.padEnd(8)} ${artifactPath}\n`);
59
+ }
53
60
  if (hooks && agent.expectedHookArtifacts) {
54
61
  for (const hookPath of agent.expectedHookArtifacts(homeDir)) {
55
62
  process.stdout.write(` ${agent.id.padEnd(8)} hook ${hookPath}\n`);
@@ -71,30 +78,12 @@ export async function runVaultInitWithOptions(options) {
71
78
  await mkdir(projectsDir, { recursive: true });
72
79
  process.stdout.write("✓ Wrote home config\n");
73
80
  process.stdout.write(`✓ Vault scaffold: ${projectsDir}\n`);
74
- if (hookAgents.length > 0) {
75
- const runtime = await installHookRuntime({ homeDir });
76
- const runtimeLabel = runtime.status === "skipped"
77
- ? "already exists (skipped)"
78
- : `installed (${runtime.mode}): ${runtime.cliPath}`;
79
- process.stdout.write(`✓ Grounder hook runtime ${runtimeLabel}\n`);
80
- }
81
- for (const agent of agents) {
82
- const result = await agent.install({ force, homeDir });
83
- for (const [artifactPath, status] of Object.entries(result.artifacts)) {
84
- const label = status === "skipped" ? "already exists (skipped)" : `installed: ${artifactPath}`;
85
- process.stdout.write(`✓ ${agent.name} command ${label}\n`);
86
- }
87
- if (Object.keys(result.artifacts).length === 0) {
88
- process.stdout.write(`✓ ${agent.name}: no artifacts to install yet\n`);
89
- }
90
- if (hooks && agent.installHooks) {
91
- const hookResult = await agent.installHooks({ force, homeDir });
92
- for (const [artifactPath, status] of Object.entries(hookResult.artifacts)) {
93
- const label = status === "skipped" ? "already exists (skipped)" : `installed: ${artifactPath}`;
94
- process.stdout.write(`✓ ${agent.name} hook ${label}\n`);
95
- }
96
- }
97
- }
81
+ await applyAgentInstalls({
82
+ agents,
83
+ force,
84
+ hooks,
85
+ homeDir,
86
+ });
98
87
  return 0;
99
88
  });
100
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/vault/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/vault/init.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ export interface RepoConfig {
2
2
  version: 1;
3
3
  projectId: string;
4
4
  }
5
+ /** Bump when `.grounder.json` shape changes; older binaries hard-stop on higher. */
6
+ export declare const SUPPORTED_REPO_VERSION: 1;
5
7
  export declare function repoConfigPath(repoRoot: string): string;
6
8
  export declare function findLinkedRepoRoot(cwd: string, gitRoot?: string | null): Promise<string | null>;
7
9
  export declare function readRepoConfig(repoRoot: string): Promise<RepoConfig | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/connector/repo.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,GAAG,IAAW,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAYjF;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzF"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/connector/repo.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAIjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,GAAG,IAAW,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAwBjF;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzF"}
@@ -1,6 +1,9 @@
1
1
  import { readFile, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { fileExists } from "../util/fs.js";
4
+ import { UnsupportedSchemaError } from "./unsupported-schema.js";
5
+ /** Bump when `.grounder.json` shape changes; older binaries hard-stop on higher. */
6
+ export const SUPPORTED_REPO_VERSION = 1;
4
7
  const REPO_MARKER_FILE = ".grounder.json";
5
8
  export function repoConfigPath(repoRoot) {
6
9
  return path.join(repoRoot, REPO_MARKER_FILE);
@@ -29,7 +32,15 @@ export async function readRepoConfig(repoRoot) {
29
32
  return null;
30
33
  }
31
34
  const raw = JSON.parse(await readFile(configPath, "utf8"));
32
- if (raw.version !== 1 || typeof raw.projectId !== "string" || raw.projectId.length === 0) {
35
+ if (typeof raw.version !== "number" || !Number.isInteger(raw.version)) {
36
+ throw new Error(`Invalid repo config at ${configPath}: bad version`);
37
+ }
38
+ if (raw.version > SUPPORTED_REPO_VERSION) {
39
+ throw new UnsupportedSchemaError(`Repo config at ${configPath} requires .grounder.json version ${raw.version}; this grounder supports ${SUPPORTED_REPO_VERSION}. Upgrade grounder.`);
40
+ }
41
+ if (raw.version !== SUPPORTED_REPO_VERSION ||
42
+ typeof raw.projectId !== "string" ||
43
+ raw.projectId.length === 0) {
33
44
  throw new Error(`Invalid repo config at ${configPath}`);
34
45
  }
35
46
  return { version: 1, projectId: raw.projectId };
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/connector/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,UAAyB,IAAI;IAE7B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7D,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,aAAa,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC/C,MAAM;QACR,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM;QACR,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAwB,CAAC;IAClF,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAkB;IACxE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/connector/repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /** Minimal adapter shape for forward-compat schema compares. */
2
+ export interface AgentSchemaSupport {
3
+ id: string;
4
+ name: string;
5
+ commandsSchema: number;
6
+ hooksSchema?: number;
7
+ }
8
+ /** Per-file install record for chezmoi-style drift detection on command markdown. */
9
+ export interface AgentFileState {
10
+ schema: number;
11
+ /** `sha256:…` of the exact bytes Grounder last wrote (see `hashContent`). */
12
+ hash?: string;
13
+ }
14
+ export interface AgentState {
15
+ commandsSchema: number;
16
+ hooksSchema?: number;
17
+ files: Record<string, AgentFileState>;
18
+ }
19
+ export interface GrounderState {
20
+ /** Package version that last wrote install artifacts (via vault init / migrate). */
21
+ grounderVersion: string;
22
+ agents: Record<string, AgentState>;
23
+ }
24
+ export declare function statePath(homeDir?: string): string;
25
+ /**
26
+ * Read `~/.grounder/state.json`. Missing file → `null` (legacy / pre-ledger
27
+ * install — callers should treat missing agent entries as schema 0).
28
+ */
29
+ export declare function readGrounderState(homeDir?: string): Promise<GrounderState | null>;
30
+ export declare function writeGrounderState(state: GrounderState, homeDir?: string): Promise<void>;
31
+ /** Recorded commands schema for an agent, or `0` when missing (legacy). */
32
+ export declare function recordedCommandsSchema(state: GrounderState | null, agentId: string): number;
33
+ /** Hooks version stored for an agent, or `0` if missing (never stored / never installed). */
34
+ export declare function recordedHooksSchema(state: GrounderState | null, agentId: string): number;
35
+ export interface RecordAgentInstallOptions {
36
+ agentId: string;
37
+ /**
38
+ * When set, updates the commands version in state; when omitted, keeps the
39
+ * existing value (or `0` for a new agent). Omit when every command file was
40
+ * skipped as locally edited or from an old install, so state does not look
41
+ * up to date when the files were not updated.
42
+ */
43
+ commandsSchema?: number;
44
+ /** When set, updates the hooks version; when omitted, keeps any existing value. */
45
+ hooksSchema?: number;
46
+ /**
47
+ * Merge into the agent's `files` map (absolute path → state). Omitting leaves
48
+ * existing entries alone; pass `{}` is a no-op merge.
49
+ */
50
+ files?: Record<string, AgentFileState>;
51
+ grounderVersion: string;
52
+ homeDir?: string;
53
+ }
54
+ /**
55
+ * Merge one agent's install info into `~/.grounder/state.json`. Creates the
56
+ * file when missing. Keeps other agents and merges any provided `files` over
57
+ * this agent's existing map.
58
+ */
59
+ export declare function recordAgentInstall(opts: RecordAgentInstallOptions): Promise<GrounderState>;
60
+ /**
61
+ * True when `state.json` says this machine's install is behind what this
62
+ * Grounder version expects. Used by peek/status — they only read `state.json`,
63
+ * they do not look at Cursor/Claude files on disk.
64
+ *
65
+ * If there is no state file, returns false (callers handle that separately).
66
+ * Only agents listed in state are checked.
67
+ *
68
+ * Session hooks: if an agent has no `hooksSchema` in state, that means hooks
69
+ * were never turned on for them. That is not "behind" — otherwise peek would
70
+ * keep telling people who never enabled hooks to run migrate. When hooks
71
+ * actually exist on disk, doctor uses {@link isHooksSchemaBehind} instead.
72
+ */
73
+ export declare function isInstallSchemaStale(state: GrounderState | null, agents: ReadonlyArray<AgentSchemaSupport>): boolean;
74
+ /**
75
+ * True when session-hook install info is behind what this Grounder expects.
76
+ * Call only after you already know Grounder hooks exist on disk (doctor).
77
+ *
78
+ * If state never stored a hooks version, treat that as version 0 so older
79
+ * hook installs still get a migrate hint. Peek/status must not use this —
80
+ * use {@link isInstallSchemaStale}, which leaves "hooks never enabled" alone.
81
+ */
82
+ export declare function isHooksSchemaBehind(recorded: number | undefined, expected: number | undefined): boolean;
83
+ /**
84
+ * True when state says hooks are newer than this Grounder understands.
85
+ * No stored hooks version is not "newer".
86
+ */
87
+ export declare function isHooksSchemaAhead(recorded: number | undefined, expected: number | undefined): boolean;
88
+ /** Last-recorded content hash for a managed file, or `undefined` if unknown. */
89
+ export declare function recordedFileHash(state: GrounderState | null, agentId: string, filePath: string): string | undefined;
90
+ /**
91
+ * Hard stop when `state.json` has install versions newer than this Grounder
92
+ * understands. Missing state or unknown agents are fine (older installs).
93
+ */
94
+ export declare function assertAgentSchemasSupported(state: GrounderState | null, agents: ReadonlyArray<AgentSchemaSupport>): void;
95
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/connector/state.ts"],"names":[],"mappings":"AAMA,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAuDvF;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9F;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC,CA0BhG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,GACxC,OAAO,CAsBT;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAKT;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAEpB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,aAAa,GAAG,IAAI,EAC3B,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,GACxC,IAAI,CAmCN"}