grounder 0.1.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.
- package/README.md +115 -28
- package/dist/agents/claude.d.ts +15 -0
- package/dist/agents/claude.d.ts.map +1 -1
- package/dist/agents/claude.js +256 -11
- package/dist/agents/claude.js.map +1 -1
- package/dist/agents/cursor-hook-input.d.ts +14 -0
- package/dist/agents/cursor-hook-input.d.ts.map +1 -0
- package/dist/agents/cursor-hook-input.js +80 -0
- package/dist/agents/cursor-hook-input.js.map +1 -0
- package/dist/agents/cursor.d.ts +11 -0
- package/dist/agents/cursor.d.ts.map +1 -1
- package/dist/agents/cursor.js +206 -11
- package/dist/agents/cursor.js.map +1 -1
- package/dist/agents/hook-runtime.d.ts +152 -0
- package/dist/agents/hook-runtime.d.ts.map +1 -0
- package/dist/agents/hook-runtime.js +401 -0
- package/dist/agents/hook-runtime.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +27 -4
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/install-command.d.ts +37 -0
- package/dist/agents/install-command.d.ts.map +1 -0
- package/dist/agents/install-command.js +65 -0
- package/dist/agents/install-command.js.map +1 -0
- package/dist/agents/types.d.ts +23 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/cli.js +62 -53
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply-agent-installs.d.ts +34 -0
- package/dist/commands/apply-agent-installs.d.ts.map +1 -0
- package/dist/commands/apply-agent-installs.js +137 -0
- package/dist/commands/apply-agent-installs.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +231 -14
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/handoff/list.d.ts +9 -0
- package/dist/commands/handoff/list.d.ts.map +1 -1
- package/dist/commands/handoff/list.js +20 -4
- package/dist/commands/handoff/list.js.map +1 -1
- package/dist/commands/handoff/peek.d.ts +41 -0
- package/dist/commands/handoff/peek.d.ts.map +1 -0
- package/dist/commands/handoff/peek.js +161 -0
- package/dist/commands/handoff/peek.js.map +1 -0
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +5 -0
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/migrate.d.ts +23 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +104 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/note.d.ts.map +1 -1
- package/dist/commands/note.js +5 -0
- package/dist/commands/note.js.map +1 -1
- package/dist/commands/package-version-notice.d.ts +18 -0
- package/dist/commands/package-version-notice.d.ts.map +1 -0
- package/dist/commands/package-version-notice.js +39 -0
- package/dist/commands/package-version-notice.js.map +1 -0
- package/dist/commands/path/logs.d.ts +1 -1
- package/dist/commands/path/logs.d.ts.map +1 -1
- package/dist/commands/path/logs.js +6 -1
- package/dist/commands/path/logs.js.map +1 -1
- package/dist/commands/path/notes.d.ts +1 -1
- package/dist/commands/path/notes.d.ts.map +1 -1
- package/dist/commands/path/notes.js +6 -1
- package/dist/commands/path/notes.js.map +1 -1
- package/dist/commands/path/plans.d.ts +7 -0
- package/dist/commands/path/plans.d.ts.map +1 -0
- package/dist/commands/path/plans.js +22 -0
- package/dist/commands/path/plans.js.map +1 -0
- package/dist/commands/plan/list.d.ts +23 -0
- package/dist/commands/plan/list.d.ts.map +1 -0
- package/dist/commands/plan/list.js +69 -0
- package/dist/commands/plan/list.js.map +1 -0
- package/dist/commands/plan.d.ts +34 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +121 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/repo/init.d.ts.map +1 -1
- package/dist/commands/repo/init.js +12 -1
- package/dist/commands/repo/init.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +52 -9
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade-banner.d.ts +9 -0
- package/dist/commands/upgrade-banner.d.ts.map +1 -0
- package/dist/commands/upgrade-banner.js +27 -0
- package/dist/commands/upgrade-banner.js.map +1 -0
- package/dist/commands/vault/init.d.ts +2 -0
- package/dist/commands/vault/init.d.ts.map +1 -1
- package/dist/commands/vault/init.js +28 -11
- package/dist/commands/vault/init.js.map +1 -1
- package/dist/connector/repo.d.ts +2 -0
- package/dist/connector/repo.d.ts.map +1 -1
- package/dist/connector/repo.js +12 -1
- package/dist/connector/repo.js.map +1 -1
- package/dist/connector/state.d.ts +95 -0
- package/dist/connector/state.d.ts.map +1 -0
- package/dist/connector/state.js +189 -0
- package/dist/connector/state.js.map +1 -0
- package/dist/connector/unsupported-schema.d.ts +9 -0
- package/dist/connector/unsupported-schema.d.ts.map +1 -0
- package/dist/connector/unsupported-schema.js +14 -0
- package/dist/connector/unsupported-schema.js.map +1 -0
- package/dist/connector/vault.d.ts +2 -0
- package/dist/connector/vault.d.ts.map +1 -1
- package/dist/connector/vault.js +6 -1
- package/dist/connector/vault.js.map +1 -1
- package/dist/help.d.ts +45 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +355 -0
- package/dist/help.js.map +1 -0
- package/dist/util/frontmatter.d.ts +11 -0
- package/dist/util/frontmatter.d.ts.map +1 -0
- package/dist/util/frontmatter.js +69 -0
- package/dist/util/frontmatter.js.map +1 -0
- package/dist/util/fs.d.ts +6 -0
- package/dist/util/fs.d.ts.map +1 -1
- package/dist/util/fs.js +15 -1
- package/dist/util/fs.js.map +1 -1
- package/dist/util/hash.d.ts +3 -0
- package/dist/util/hash.d.ts.map +1 -0
- package/dist/util/hash.js +6 -0
- package/dist/util/hash.js.map +1 -0
- package/dist/util/merge-json.d.ts +15 -0
- package/dist/util/merge-json.d.ts.map +1 -0
- package/dist/util/merge-json.js +40 -0
- package/dist/util/merge-json.js.map +1 -0
- package/dist/util/path.d.ts +10 -0
- package/dist/util/path.d.ts.map +1 -1
- package/dist/util/path.js +31 -0
- package/dist/util/path.js.map +1 -1
- package/dist/util/plan-name.d.ts +10 -0
- package/dist/util/plan-name.d.ts.map +1 -0
- package/dist/util/plan-name.js +18 -0
- package/dist/util/plan-name.js.map +1 -0
- package/dist/util/semver.d.ts +10 -0
- package/dist/util/semver.d.ts.map +1 -0
- package/dist/util/semver.js +40 -0
- package/dist/util/semver.js.map +1 -0
- package/dist/vault/find-usable-handoff.d.ts +19 -0
- package/dist/vault/find-usable-handoff.d.ts.map +1 -0
- package/dist/vault/find-usable-handoff.js +28 -0
- package/dist/vault/find-usable-handoff.js.map +1 -0
- package/dist/vault/layout.d.ts +2 -0
- package/dist/vault/layout.d.ts.map +1 -1
- package/dist/vault/layout.js +4 -0
- package/dist/vault/layout.js.map +1 -1
- package/dist/vault/list-plans.d.ts +11 -0
- package/dist/vault/list-plans.d.ts.map +1 -0
- package/dist/vault/list-plans.js +40 -0
- package/dist/vault/list-plans.js.map +1 -0
- package/dist/vault/write-plan.d.ts +28 -0
- package/dist/vault/write-plan.d.ts.map +1 -0
- package/dist/vault/write-plan.js +61 -0
- package/dist/vault/write-plan.js.map +1 -0
- package/package.json +1 -1
- package/templates/agents/claude/commands/grounder-note.md +1 -1
- package/templates/agents/claude/commands/grounder-plan.md +65 -0
- package/templates/agents/claude/commands/grounder-task-handoff.md +3 -3
- package/templates/agents/claude/commands/grounder-task.md +4 -4
- package/templates/agents/cursor/commands/grounder-note.md +1 -1
- package/templates/agents/cursor/commands/grounder-plan.md +65 -0
- package/templates/agents/cursor/commands/grounder-task-handoff.md +3 -3
- package/templates/agents/cursor/commands/grounder-task.md +4 -4
- package/templates/vault/plan.md +16 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { readCursorHookWorkspaceRoot } from "../../agents/cursor-hook-input.js";
|
|
3
|
+
import { ALL_AGENTS } from "../../agents/index.js";
|
|
4
|
+
import { withHomeDir } from "../../connector/home.js";
|
|
5
|
+
import { resolveLinkedProject } from "../../connector/linked.js";
|
|
6
|
+
import { isInstallSchemaStale, readGrounderState } from "../../connector/state.js";
|
|
7
|
+
import { resolveLogsDir } from "../../connector/vault.js";
|
|
8
|
+
import { helpExitCode } from "../../help.js";
|
|
9
|
+
import { parseHandoffFrontmatter } from "../../util/frontmatter.js";
|
|
10
|
+
import { flagBool, parseArgs } from "../../util/parse-args.js";
|
|
11
|
+
import { findUsableHandoff } from "../../vault/find-usable-handoff.js";
|
|
12
|
+
const MIGRATE_TEASER = "[grounder] Install outdated — run: grounder migrate.";
|
|
13
|
+
/** `YYYY-MM-DD-HHmm` or `YYYY-MM-DD-HHmmss`, optionally followed by `-slug`. */
|
|
14
|
+
const TIMESTAMP_STEM = /^(\d{4}-\d{2}-\d{2})-\d{4}(?:\d{2})?(?:-(.*))?$/;
|
|
15
|
+
/**
|
|
16
|
+
* Derive a display label from a handoff filename when frontmatter has no title:
|
|
17
|
+
* strip the timestamp prefix and `.md`, replace `-` with spaces.
|
|
18
|
+
*/
|
|
19
|
+
export function labelFromHandoffFilename(filePath) {
|
|
20
|
+
const stem = path.basename(filePath, ".md");
|
|
21
|
+
const match = TIMESTAMP_STEM.exec(stem);
|
|
22
|
+
if (!match) {
|
|
23
|
+
return stem.replace(/-/g, " ");
|
|
24
|
+
}
|
|
25
|
+
const slug = match[2];
|
|
26
|
+
if (!slug) {
|
|
27
|
+
return "";
|
|
28
|
+
}
|
|
29
|
+
return slug.replace(/-/g, " ");
|
|
30
|
+
}
|
|
31
|
+
function createdDateFromFilename(filePath) {
|
|
32
|
+
const stem = path.basename(filePath, ".md");
|
|
33
|
+
const match = TIMESTAMP_STEM.exec(stem);
|
|
34
|
+
return match?.[1];
|
|
35
|
+
}
|
|
36
|
+
/** Prefer frontmatter `created` ISO prefix; else filename date. */
|
|
37
|
+
function formatCreatedDate(created, filePath) {
|
|
38
|
+
if (created) {
|
|
39
|
+
const match = /^(\d{4}-\d{2}-\d{2})/.exec(created);
|
|
40
|
+
if (match) {
|
|
41
|
+
return match[1];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return createdDateFromFilename(filePath);
|
|
45
|
+
}
|
|
46
|
+
function writePeekOutput(teaser, json) {
|
|
47
|
+
if (json) {
|
|
48
|
+
process.stdout.write(teaser === undefined ? "{}\n" : `${JSON.stringify({ additional_context: teaser })}\n`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (teaser !== undefined) {
|
|
52
|
+
process.stdout.write(`${teaser}\n`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the workspace root for a Cursor sessionStart hook.
|
|
57
|
+
* Prefer stdin `workspace_roots[0]`, then `CURSOR_PROJECT_DIR` (always set for
|
|
58
|
+
* Cursor hook scripts), else leave undefined so callers fall back to `cwd`.
|
|
59
|
+
*/
|
|
60
|
+
function resolveCursorHookCwd(stdinWorkspaceRoot) {
|
|
61
|
+
if (stdinWorkspaceRoot !== undefined) {
|
|
62
|
+
return stdinWorkspaceRoot;
|
|
63
|
+
}
|
|
64
|
+
const fromEnv = process.env.CURSOR_PROJECT_DIR?.trim();
|
|
65
|
+
return fromEnv || undefined;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Whether to print the "run grounder migrate" line from session peek.
|
|
69
|
+
* Only looks at `~/.grounder/state.json` — does not open Cursor/Claude files.
|
|
70
|
+
*
|
|
71
|
+
* If hooks were never enabled (no hooks version in state), that is not "out of
|
|
72
|
+
* date" here. Doctor is the place that checks whether hook files exist on disk.
|
|
73
|
+
* If state is missing or unreadable, stay quiet — doctor reports that.
|
|
74
|
+
*/
|
|
75
|
+
async function schemaMigrateNeeded(homeDir) {
|
|
76
|
+
try {
|
|
77
|
+
const state = await readGrounderState(homeDir);
|
|
78
|
+
return isInstallSchemaStale(state, ALL_AGENTS);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function composeTeaser(handoffLine, migrateNeeded) {
|
|
85
|
+
if (handoffLine && migrateNeeded) {
|
|
86
|
+
return `${handoffLine}\n${MIGRATE_TEASER}`;
|
|
87
|
+
}
|
|
88
|
+
if (handoffLine) {
|
|
89
|
+
return handoffLine;
|
|
90
|
+
}
|
|
91
|
+
if (migrateNeeded) {
|
|
92
|
+
return MIGRATE_TEASER;
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* CLI entry for `grounder handoff peek`.
|
|
98
|
+
* Silent by default: prints nothing and exits 0 when unlinked, empty, or on any error
|
|
99
|
+
* (unless install schemas are stale — then a one-line migrate nudge).
|
|
100
|
+
* Used by session-start hooks — must never crash or print noise on stderr.
|
|
101
|
+
* Reads Cursor hook stdin for `workspace_roots[0]` when present; falls back to
|
|
102
|
+
* `CURSOR_PROJECT_DIR` (user-level hooks often run with cwd under `~/.cursor`).
|
|
103
|
+
* Pass `--json` for Cursor's `additional_context` stdout contract.
|
|
104
|
+
* @returns Always `0`.
|
|
105
|
+
*/
|
|
106
|
+
export async function runHandoffPeek(argv) {
|
|
107
|
+
const helpCode = helpExitCode(argv, "handoff peek");
|
|
108
|
+
if (helpCode !== null) {
|
|
109
|
+
return helpCode;
|
|
110
|
+
}
|
|
111
|
+
const { flags } = parseArgs(argv);
|
|
112
|
+
const stdinWorkspaceRoot = await readCursorHookWorkspaceRoot(process.stdin);
|
|
113
|
+
return runHandoffPeekWithOptions({
|
|
114
|
+
cwd: resolveCursorHookCwd(stdinWorkspaceRoot),
|
|
115
|
+
json: flagBool(flags, "json"),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolves the linked project and prints a one-line teaser for the newest *usable*
|
|
120
|
+
* handoff, or nothing. "Usable" (via {@link findUsableHandoff}) skips empty/unreadable
|
|
121
|
+
* files and falls back to the next-newest — the same selection `grounder handoff list
|
|
122
|
+
* --head` uses, so the teaser and `/grounder-task` never disagree about which handoff
|
|
123
|
+
* is current.
|
|
124
|
+
* Also checks `state.json` and may add a one-line "run grounder migrate" hint
|
|
125
|
+
* for people who never run doctor.
|
|
126
|
+
* Uses {@link resolveLinkedProject} directly (not `requireLinkedProject`) so failures stay silent.
|
|
127
|
+
* @returns Always `0`.
|
|
128
|
+
*/
|
|
129
|
+
export async function runHandoffPeekWithOptions(options = {}) {
|
|
130
|
+
try {
|
|
131
|
+
return await withHomeDir(options.homeDir, async () => {
|
|
132
|
+
let handoffLine;
|
|
133
|
+
try {
|
|
134
|
+
const resolved = await resolveLinkedProject(options.cwd ?? process.cwd());
|
|
135
|
+
if (resolved.ok) {
|
|
136
|
+
const logsDir = resolveLogsDir(resolved.value.home, resolved.value.repo);
|
|
137
|
+
const usable = await findUsableHandoff(logsDir);
|
|
138
|
+
if (usable) {
|
|
139
|
+
const fm = parseHandoffFrontmatter(usable.content);
|
|
140
|
+
const label = fm.title?.trim() || labelFromHandoffFilename(usable.path);
|
|
141
|
+
const createdDate = formatCreatedDate(fm.created, usable.path);
|
|
142
|
+
if (createdDate) {
|
|
143
|
+
handoffLine = `[grounder] Latest handoff: "${label}" (${createdDate}). Run /grounder-task to load it, or ignore if unrelated.`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
handoffLine = undefined;
|
|
150
|
+
}
|
|
151
|
+
const migrateNeeded = await schemaMigrateNeeded(options.homeDir);
|
|
152
|
+
writePeekOutput(composeTeaser(handoffLine, migrateNeeded), options.json);
|
|
153
|
+
return 0;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
writePeekOutput(undefined, options.json);
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=peek.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peek.js","sourceRoot":"","sources":["../../../src/commands/handoff/peek.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../src/commands/handoff.ts"],"names":[],"mappings":"AAQA,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBhE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBpF"}
|
package/dist/commands/handoff.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { currentBranch } from "../connector/git.js";
|
|
2
2
|
import { withHomeDir } from "../connector/home.js";
|
|
3
3
|
import { resolveLogsDir } from "../connector/vault.js";
|
|
4
|
+
import { helpExitCode } from "../help.js";
|
|
4
5
|
import { flagString, parseArgs } from "../util/parse-args.js";
|
|
5
6
|
import { writeHandoff } from "../vault/write-handoff.js";
|
|
6
7
|
import { requireLinkedProject } from "./require-linked.js";
|
|
@@ -9,6 +10,10 @@ import { requireLinkedProject } from "./require-linked.js";
|
|
|
9
10
|
* @returns Exit code (`0` on success, `1` on usage or config errors).
|
|
10
11
|
*/
|
|
11
12
|
export async function runHandoff(argv) {
|
|
13
|
+
const helpCode = helpExitCode(argv, "handoff");
|
|
14
|
+
if (helpCode !== null) {
|
|
15
|
+
return helpCode;
|
|
16
|
+
}
|
|
12
17
|
const { positional, flags } = parseArgs(argv);
|
|
13
18
|
const text = positional.join(" ").trim();
|
|
14
19
|
if (!text) {
|
|
@@ -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,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,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;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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type AgentAdapter } from "../agents/index.js";
|
|
2
|
+
export interface MigrateOptions {
|
|
3
|
+
force?: boolean;
|
|
4
|
+
hooks?: boolean;
|
|
5
|
+
dryRun?: boolean;
|
|
6
|
+
homeDir?: string;
|
|
7
|
+
/** Agent ids to migrate. Defaults to ledger keys, else auto-detect. */
|
|
8
|
+
agents?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Resolve which agents to migrate:
|
|
12
|
+
* 1. Explicit `--agent` ids (unknown ids still throw)
|
|
13
|
+
* 2. Else agents recorded in `~/.grounder/state.json` that this binary knows
|
|
14
|
+
* 3. Else auto-detect installed agents (legacy / pre-ledger)
|
|
15
|
+
*
|
|
16
|
+
* Ledger keys from a newer Grounder (agents this binary does not know) are
|
|
17
|
+
* skipped with a stderr warning — same forward-compat idea as schema hard-stops,
|
|
18
|
+
* but migrate can still refresh the agents it understands.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveMigrateAgents(explicitIds: string[] | undefined, homeDir?: string): Promise<AgentAdapter[]>;
|
|
21
|
+
export declare function runMigrate(argv: string[]): Promise<number>;
|
|
22
|
+
export declare function runMigrateWithOptions(options?: MigrateOptions): Promise<number>;
|
|
23
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,oBAAoB,CAAC;AAQlF,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBzB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAchE;AAED,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DzF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ALL_AGENTS, resolveAgents } from "../agents/index.js";
|
|
2
|
+
import { readHomeConfig, withHomeDir } from "../connector/home.js";
|
|
3
|
+
import { assertAgentSchemasSupported, readGrounderState, statePath } from "../connector/state.js";
|
|
4
|
+
import { isUnsupportedSchemaError } from "../connector/unsupported-schema.js";
|
|
5
|
+
import { helpExitCode } from "../help.js";
|
|
6
|
+
import { flagBool, flagStrings, parseArgs } from "../util/parse-args.js";
|
|
7
|
+
import { applyAgentInstalls } from "./apply-agent-installs.js";
|
|
8
|
+
/**
|
|
9
|
+
* Resolve which agents to migrate:
|
|
10
|
+
* 1. Explicit `--agent` ids (unknown ids still throw)
|
|
11
|
+
* 2. Else agents recorded in `~/.grounder/state.json` that this binary knows
|
|
12
|
+
* 3. Else auto-detect installed agents (legacy / pre-ledger)
|
|
13
|
+
*
|
|
14
|
+
* Ledger keys from a newer Grounder (agents this binary does not know) are
|
|
15
|
+
* skipped with a stderr warning — same forward-compat idea as schema hard-stops,
|
|
16
|
+
* but migrate can still refresh the agents it understands.
|
|
17
|
+
*/
|
|
18
|
+
export async function resolveMigrateAgents(explicitIds, homeDir) {
|
|
19
|
+
if (explicitIds && explicitIds.length > 0) {
|
|
20
|
+
return resolveAgents(explicitIds);
|
|
21
|
+
}
|
|
22
|
+
const state = await readGrounderState(homeDir);
|
|
23
|
+
const recordedIds = state ? Object.keys(state.agents) : [];
|
|
24
|
+
if (recordedIds.length === 0) {
|
|
25
|
+
return resolveAgents();
|
|
26
|
+
}
|
|
27
|
+
const known = ALL_AGENTS.filter((a) => recordedIds.includes(a.id));
|
|
28
|
+
const unknown = recordedIds.filter((id) => !ALL_AGENTS.some((a) => a.id === id));
|
|
29
|
+
if (unknown.length > 0) {
|
|
30
|
+
process.stderr.write(`Skipping unknown agent(s) in install state: ${unknown.join(", ")}. Upgrade grounder to migrate them.\n`);
|
|
31
|
+
}
|
|
32
|
+
return known;
|
|
33
|
+
}
|
|
34
|
+
export async function runMigrate(argv) {
|
|
35
|
+
const helpCode = helpExitCode(argv, "migrate");
|
|
36
|
+
if (helpCode !== null) {
|
|
37
|
+
return helpCode;
|
|
38
|
+
}
|
|
39
|
+
const { flags, repeated } = parseArgs(argv);
|
|
40
|
+
const agents = flagStrings(repeated, "agent");
|
|
41
|
+
return runMigrateWithOptions({
|
|
42
|
+
force: flagBool(flags, "force", "f"),
|
|
43
|
+
hooks: flagBool(flags, "hooks"),
|
|
44
|
+
dryRun: flagBool(flags, "dry-run"),
|
|
45
|
+
agents: agents.length > 0 ? agents : undefined,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export async function runMigrateWithOptions(options = {}) {
|
|
49
|
+
return withHomeDir(options.homeDir, async () => {
|
|
50
|
+
const homeDir = options.homeDir;
|
|
51
|
+
const force = options.force ?? false;
|
|
52
|
+
const hooks = options.hooks ?? false;
|
|
53
|
+
const dryRun = options.dryRun ?? false;
|
|
54
|
+
const home = await readHomeConfig();
|
|
55
|
+
if (!home) {
|
|
56
|
+
process.stderr.write("No home config found. Run `grounder vault init <path>` first.\n");
|
|
57
|
+
return 1;
|
|
58
|
+
}
|
|
59
|
+
const agents = await resolveMigrateAgents(options.agents, homeDir);
|
|
60
|
+
try {
|
|
61
|
+
const state = await readGrounderState(homeDir);
|
|
62
|
+
assertAgentSchemasSupported(state, agents);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (isUnsupportedSchemaError(error)) {
|
|
66
|
+
process.stderr.write(`${error.message}\n`);
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
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");
|
|
76
|
+
if (agents.length === 0) {
|
|
77
|
+
process.stdout.write(" (no agents recorded or detected)\n");
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
for (const agent of agents) {
|
|
81
|
+
for (const artifactPath of agent.expectedArtifacts(homeDir)) {
|
|
82
|
+
process.stdout.write(` ${agent.id.padEnd(8)} ${artifactPath}\n`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
process.stdout.write(" hooks previously installed or --hooks (owned JSON always refreshed)\n");
|
|
86
|
+
process.stdout.write(` state ${statePath(homeDir)}\n`);
|
|
87
|
+
}
|
|
88
|
+
process.stdout.write("\n");
|
|
89
|
+
if (agents.length === 0) {
|
|
90
|
+
process.stdout.write("Nothing to migrate.\n");
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
await applyAgentInstalls({
|
|
94
|
+
agents,
|
|
95
|
+
force,
|
|
96
|
+
hooks,
|
|
97
|
+
refreshInstalledHooks: true,
|
|
98
|
+
dryRun,
|
|
99
|
+
homeDir,
|
|
100
|
+
});
|
|
101
|
+
return 0;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/commands/note.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/commands/note.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { withHomeDir } from "../connector/home.js";
|
|
2
2
|
import { resolveNotesDir } from "../connector/vault.js";
|
|
3
|
+
import { helpExitCode } from "../help.js";
|
|
3
4
|
import { flagString, parseArgs } from "../util/parse-args.js";
|
|
4
5
|
import { writeNote } from "../vault/write-note.js";
|
|
5
6
|
import { requireLinkedProject } from "./require-linked.js";
|
|
6
7
|
export async function runNote(argv) {
|
|
8
|
+
const helpCode = helpExitCode(argv, "note");
|
|
9
|
+
if (helpCode !== null) {
|
|
10
|
+
return helpCode;
|
|
11
|
+
}
|
|
7
12
|
const { positional, flags } = parseArgs(argv);
|
|
8
13
|
const text = positional.join(" ").trim();
|
|
9
14
|
if (!text) {
|
|
@@ -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,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,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,+BAA+B,CAAC,CAAC;QACtD,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;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,+BAA+B,CAAC,CAAC;QACtD,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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type PackageVersionRelation } from "../util/semver.js";
|
|
2
|
+
export interface PackageVersionNotice {
|
|
3
|
+
relation: Exclude<PackageVersionRelation, "match">;
|
|
4
|
+
/** Doctor check message (plain language; versions in parentheses). */
|
|
5
|
+
message: string;
|
|
6
|
+
/** Suggested fix action. */
|
|
7
|
+
fix: string;
|
|
8
|
+
/** One-line stderr banner (includes trailing newlines). */
|
|
9
|
+
banner: string;
|
|
10
|
+
/** `grounder status` value after the Package: label. */
|
|
11
|
+
status: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Plain-language notice when the running Grounder and the version recorded for
|
|
15
|
+
* this machine's configuration disagree.
|
|
16
|
+
*/
|
|
17
|
+
export declare function packageVersionNotice(running: string, recorded: string): PackageVersionNotice | null;
|
|
18
|
+
//# sourceMappingURL=package-version-notice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version-notice.d.ts","sourceRoot":"","sources":["../../src/commands/package-version-notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,mBAAmB,CAAC;AAKxF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IACnD,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,oBAAoB,GAAG,IAAI,CAiC7B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { packageVersionRelation } from "../util/semver.js";
|
|
2
|
+
const MIGRATE = "grounder migrate";
|
|
3
|
+
const UPGRADE = "install a newer Grounder";
|
|
4
|
+
/**
|
|
5
|
+
* Plain-language notice when the running Grounder and the version recorded for
|
|
6
|
+
* this machine's configuration disagree.
|
|
7
|
+
*/
|
|
8
|
+
export function packageVersionNotice(running, recorded) {
|
|
9
|
+
const relation = packageVersionRelation(running, recorded);
|
|
10
|
+
if (relation === "match") {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (relation === "ahead") {
|
|
14
|
+
return {
|
|
15
|
+
relation,
|
|
16
|
+
message: `Grounder ${running} is installed, but your configuration is still from ${recorded}`,
|
|
17
|
+
fix: MIGRATE,
|
|
18
|
+
banner: `Grounder was updated (${running}). Run \`${MIGRATE}\` to update your configuration.\n\n`,
|
|
19
|
+
status: `configuration outdated — run: ${MIGRATE}`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
if (relation === "behind") {
|
|
23
|
+
return {
|
|
24
|
+
relation,
|
|
25
|
+
message: `this Grounder (${running}) is older than your configuration (${recorded})`,
|
|
26
|
+
fix: UPGRADE,
|
|
27
|
+
banner: `This Grounder (${running}) is older than your configuration (${recorded}). Install a newer Grounder.\n\n`,
|
|
28
|
+
status: `older than configuration — ${UPGRADE}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
relation: "differs",
|
|
33
|
+
message: `Grounder version (${running}) doesn't match your configuration (${recorded})`,
|
|
34
|
+
fix: MIGRATE,
|
|
35
|
+
banner: `Grounder version doesn't match your configuration. Run \`${MIGRATE}\`.\n\n`,
|
|
36
|
+
status: `doesn't match configuration — run: ${MIGRATE}`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=package-version-notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-version-notice.js","sourceRoot":"","sources":["../../src/commands/package-version-notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,OAAO,GAAG,kBAAkB,CAAC;AACnC,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAc3C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,QAAgB;IAEhB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,YAAY,OAAO,uDAAuD,QAAQ,EAAE;YAC7F,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,yBAAyB,OAAO,YAAY,OAAO,sCAAsC;YACjG,MAAM,EAAE,iCAAiC,OAAO,EAAE;SACnD,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,kBAAkB,OAAO,uCAAuC,QAAQ,GAAG;YACpF,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,kBAAkB,OAAO,uCAAuC,QAAQ,kCAAkC;YAClH,MAAM,EAAE,8BAA8B,OAAO,EAAE;SAChD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,qBAAqB,OAAO,uCAAuC,QAAQ,GAAG;QACvF,GAAG,EAAE,OAAO;QACZ,MAAM,EAAE,4DAA4D,OAAO,SAAS;QACpF,MAAM,EAAE,sCAAsC,OAAO,EAAE;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -2,6 +2,6 @@ export interface PathLogsOptions {
|
|
|
2
2
|
cwd?: string;
|
|
3
3
|
homeDir?: string;
|
|
4
4
|
}
|
|
5
|
-
export declare function runPathLogs(
|
|
5
|
+
export declare function runPathLogs(argv: string[]): Promise<number>;
|
|
6
6
|
export declare function runPathLogsWithOptions(options?: PathLogsOptions): Promise<number>;
|
|
7
7
|
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/path/logs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/path/logs.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAOjE;AAED,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU3F"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { withHomeDir } from "../../connector/home.js";
|
|
2
2
|
import { resolveLogsDir } from "../../connector/vault.js";
|
|
3
|
+
import { helpExitCode } from "../../help.js";
|
|
3
4
|
import { requireLinkedProject } from "../require-linked.js";
|
|
4
|
-
export async function runPathLogs(
|
|
5
|
+
export async function runPathLogs(argv) {
|
|
6
|
+
const helpCode = helpExitCode(argv, "path logs");
|
|
7
|
+
if (helpCode !== null) {
|
|
8
|
+
return helpCode;
|
|
9
|
+
}
|
|
5
10
|
return runPathLogsWithOptions({});
|
|
6
11
|
}
|
|
7
12
|
export async function runPathLogsWithOptions(options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/path/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/path/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,sBAAsB,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,UAA2B,EAAE;IACxE,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,6 +2,6 @@ export interface PathNotesOptions {
|
|
|
2
2
|
cwd?: string;
|
|
3
3
|
homeDir?: string;
|
|
4
4
|
}
|
|
5
|
-
export declare function runPathNotes(
|
|
5
|
+
export declare function runPathNotes(argv: string[]): Promise<number>;
|
|
6
6
|
export declare function runPathNotesWithOptions(options?: PathNotesOptions): Promise<number>;
|
|
7
7
|
//# sourceMappingURL=notes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/commands/path/notes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/commands/path/notes.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlE;AAED,wBAAsB,uBAAuB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7F"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { withHomeDir } from "../../connector/home.js";
|
|
2
2
|
import { resolveNotesDir } from "../../connector/vault.js";
|
|
3
|
+
import { helpExitCode } from "../../help.js";
|
|
3
4
|
import { requireLinkedProject } from "../require-linked.js";
|
|
4
|
-
export async function runPathNotes(
|
|
5
|
+
export async function runPathNotes(argv) {
|
|
6
|
+
const helpCode = helpExitCode(argv, "path notes");
|
|
7
|
+
if (helpCode !== null) {
|
|
8
|
+
return helpCode;
|
|
9
|
+
}
|
|
5
10
|
return runPathNotesWithOptions({});
|
|
6
11
|
}
|
|
7
12
|
export async function runPathNotesWithOptions(options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../../src/commands/path/notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../../src/commands/path/notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAA4B,EAAE;IAC1E,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface PathPlansOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
homeDir?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function runPathPlans(argv: string[]): Promise<number>;
|
|
6
|
+
export declare function runPathPlansWithOptions(options?: PathPlansOptions): Promise<number>;
|
|
7
|
+
//# sourceMappingURL=plans.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../../src/commands/path/plans.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlE;AAED,wBAAsB,uBAAuB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { withHomeDir } from "../../connector/home.js";
|
|
2
|
+
import { resolvePlansDir } from "../../connector/vault.js";
|
|
3
|
+
import { helpExitCode } from "../../help.js";
|
|
4
|
+
import { requireLinkedProject } from "../require-linked.js";
|
|
5
|
+
export async function runPathPlans(argv) {
|
|
6
|
+
const helpCode = helpExitCode(argv, "path plans");
|
|
7
|
+
if (helpCode !== null) {
|
|
8
|
+
return helpCode;
|
|
9
|
+
}
|
|
10
|
+
return runPathPlansWithOptions({});
|
|
11
|
+
}
|
|
12
|
+
export async function runPathPlansWithOptions(options = {}) {
|
|
13
|
+
return withHomeDir(options.homeDir, async () => {
|
|
14
|
+
const linked = await requireLinkedProject(options.cwd ?? process.cwd());
|
|
15
|
+
if (!linked) {
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
process.stdout.write(`${resolvePlansDir(linked.home, linked.repo)}\n`);
|
|
19
|
+
return 0;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=plans.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../../src/commands/path/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAO5D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,uBAAuB,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,UAA4B,EAAE;IAC1E,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,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Options for {@link runPlanListWithOptions} (CLI parsing and tests). */
|
|
2
|
+
export interface PlanListOptions {
|
|
3
|
+
/** Directory used to find the linked repo (default: `process.cwd()`). */
|
|
4
|
+
cwd?: string;
|
|
5
|
+
/** Max paths to print, newest first (default: 5). */
|
|
6
|
+
limit?: number;
|
|
7
|
+
/** Override home dir / `GROUNDER_HOME` (tests). */
|
|
8
|
+
homeDir?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* CLI entry for `grounder plan list [--limit <n>]`.
|
|
12
|
+
* `--limit` must be a positive integer when provided.
|
|
13
|
+
* @returns Exit code (`0` on success, `1` on usage or config errors).
|
|
14
|
+
*/
|
|
15
|
+
export declare function runPlanList(argv: string[]): Promise<number>;
|
|
16
|
+
/**
|
|
17
|
+
* Resolves the linked project, lists recent plan paths under `plans/` (newest first).
|
|
18
|
+
* Prints one absolute path per line; empty when no plans. Same vault/link
|
|
19
|
+
* prerequisites as `grounder plan`.
|
|
20
|
+
* @returns Exit code (`0` on success, `1` when vault/link is missing).
|
|
21
|
+
*/
|
|
22
|
+
export declare function runPlanListWithOptions(options?: PlanListOptions): Promise<number>;
|
|
23
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/plan/list.ts"],"names":[],"mappings":"AASA,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;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB3F"}
|