grounder 0.5.0 → 0.6.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 +21 -20
- package/dist/agents/claude.d.ts +4 -4
- package/dist/agents/claude.d.ts.map +1 -1
- package/dist/agents/claude.js +158 -179
- package/dist/agents/claude.js.map +1 -1
- package/dist/agents/cursor.d.ts +3 -3
- package/dist/agents/cursor.d.ts.map +1 -1
- package/dist/agents/cursor.js +97 -144
- package/dist/agents/cursor.js.map +1 -1
- package/dist/agents/home-skills.d.ts +46 -0
- package/dist/agents/home-skills.d.ts.map +1 -0
- package/dist/agents/home-skills.js +83 -0
- package/dist/agents/home-skills.js.map +1 -0
- package/dist/agents/hook-fragment.d.ts +52 -0
- package/dist/agents/hook-fragment.d.ts.map +1 -0
- package/dist/agents/hook-fragment.js +76 -0
- package/dist/agents/hook-fragment.js.map +1 -0
- package/dist/agents/hook-install.d.ts +62 -0
- package/dist/agents/hook-install.d.ts.map +1 -0
- package/dist/agents/hook-install.js +74 -0
- package/dist/agents/hook-install.js.map +1 -0
- package/dist/agents/hook-runtime.d.ts +77 -10
- package/dist/agents/hook-runtime.d.ts.map +1 -1
- package/dist/agents/hook-runtime.js +274 -70
- package/dist/agents/hook-runtime.js.map +1 -1
- package/dist/agents/index.d.ts +8 -14
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +13 -19
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/types.d.ts +56 -16
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply.d.ts +69 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +238 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +190 -97
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/handoff/peek.d.ts +1 -1
- package/dist/commands/handoff/peek.d.ts.map +1 -1
- package/dist/commands/handoff/peek.js +28 -12
- package/dist/commands/handoff/peek.js.map +1 -1
- package/dist/commands/install-drift.d.ts +34 -0
- package/dist/commands/install-drift.d.ts.map +1 -0
- package/dist/commands/install-drift.js +72 -0
- package/dist/commands/install-drift.js.map +1 -0
- package/dist/commands/migrate.d.ts +11 -3
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +67 -33
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/overview.d.ts +33 -0
- package/dist/commands/overview.d.ts.map +1 -0
- package/dist/commands/overview.js +150 -0
- package/dist/commands/overview.js.map +1 -0
- package/dist/commands/render-artifact-table.d.ts +85 -0
- package/dist/commands/render-artifact-table.d.ts.map +1 -0
- package/dist/commands/render-artifact-table.js +232 -0
- package/dist/commands/render-artifact-table.js.map +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +15 -4
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +86 -13
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +269 -88
- package/dist/commands/status.js.map +1 -1
- package/dist/connector/ledger-migrations.d.ts +55 -0
- package/dist/connector/ledger-migrations.d.ts.map +1 -0
- package/dist/connector/ledger-migrations.js +94 -0
- package/dist/connector/ledger-migrations.js.map +1 -0
- package/dist/connector/state.d.ts +96 -59
- package/dist/connector/state.d.ts.map +1 -1
- package/dist/connector/state.js +165 -107
- package/dist/connector/state.js.map +1 -1
- package/dist/help.d.ts +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +27 -5
- package/dist/help.js.map +1 -1
- package/dist/reconcile/apply.d.ts +31 -0
- package/dist/reconcile/apply.d.ts.map +1 -0
- package/dist/reconcile/apply.js +97 -0
- package/dist/reconcile/apply.js.map +1 -0
- package/dist/reconcile/core.d.ts +82 -0
- package/dist/reconcile/core.d.ts.map +1 -0
- package/dist/reconcile/core.js +163 -0
- package/dist/reconcile/core.js.map +1 -0
- package/dist/reconcile/disk.d.ts +13 -0
- package/dist/reconcile/disk.d.ts.map +1 -0
- package/dist/reconcile/disk.js +28 -0
- package/dist/reconcile/disk.js.map +1 -0
- package/dist/util/fs.d.ts +14 -0
- package/dist/util/fs.d.ts.map +1 -1
- package/dist/util/fs.js +27 -1
- package/dist/util/fs.js.map +1 -1
- package/dist/util/merge-json.d.ts +13 -2
- package/dist/util/merge-json.d.ts.map +1 -1
- package/dist/util/merge-json.js +24 -10
- package/dist/util/merge-json.js.map +1 -1
- package/dist/vault/list-handoffs.d.ts +13 -3
- package/dist/vault/list-handoffs.d.ts.map +1 -1
- package/dist/vault/list-handoffs.js +28 -13
- package/dist/vault/list-handoffs.js.map +1 -1
- package/dist/vault/list-notes.d.ts +12 -3
- package/dist/vault/list-notes.d.ts.map +1 -1
- package/dist/vault/list-notes.js +13 -7
- package/dist/vault/list-notes.js.map +1 -1
- package/dist/vault/list-plans.d.ts +12 -3
- package/dist/vault/list-plans.d.ts.map +1 -1
- package/dist/vault/list-plans.js +13 -7
- package/dist/vault/list-plans.js.map +1 -1
- package/dist/vault/search.d.ts.map +1 -1
- package/dist/vault/search.js +128 -24
- package/dist/vault/search.js.map +1 -1
- package/package.json +2 -2
- package/templates/agents/claude/skills/grounder-handoff/SKILL.md +73 -0
- package/templates/agents/claude/{commands/grounder-note.md → skills/grounder-note/SKILL.md} +6 -0
- package/templates/agents/claude/skills/grounder-overview/SKILL.md +21 -0
- package/templates/agents/claude/{commands/grounder-plan.md → skills/grounder-plan/SKILL.md} +6 -0
- package/templates/agents/claude/skills/grounder-recall/SKILL.md +34 -0
- package/templates/agents/claude/{commands/grounder-search.md → skills/grounder-search/SKILL.md} +16 -8
- package/templates/agents/cursor/skills/grounder-handoff/SKILL.md +73 -0
- package/templates/agents/cursor/{commands/grounder-note.md → skills/grounder-note/SKILL.md} +6 -0
- package/templates/agents/cursor/skills/grounder-overview/SKILL.md +21 -0
- package/templates/agents/cursor/{commands/grounder-plan.md → skills/grounder-plan/SKILL.md} +6 -0
- package/templates/agents/cursor/skills/grounder-recall/SKILL.md +34 -0
- package/templates/agents/cursor/{commands/grounder-search.md → skills/grounder-search/SKILL.md} +16 -8
- package/templates/vault/plan.md +1 -1
- package/templates/vault/session-handoff.md +2 -1
- package/dist/agents/install-command.d.ts +0 -35
- package/dist/agents/install-command.d.ts.map +0 -1
- package/dist/agents/install-command.js +0 -65
- package/dist/agents/install-command.js.map +0 -1
- package/dist/commands/apply-agent-installs.d.ts +0 -34
- package/dist/commands/apply-agent-installs.d.ts.map +0 -1
- package/dist/commands/apply-agent-installs.js +0 -137
- package/dist/commands/apply-agent-installs.js.map +0 -1
- package/templates/agents/claude/commands/grounder-task-handoff.md +0 -58
- package/templates/agents/claude/commands/grounder-task.md +0 -22
- package/templates/agents/cursor/commands/grounder-task-handoff.md +0 -58
- package/templates/agents/cursor/commands/grounder-task.md +0 -22
package/dist/commands/doctor.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { readFile, stat } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { extractRuntimeNodePath, findRuntimeNodePathsInText, hookFileGrounderPeekCommands, isHookRuntimeStale, } from "../agents/hook-runtime.js";
|
|
4
|
-
import { resolveAgents } from "../agents/index.js";
|
|
4
|
+
import { ownedLedgerFiles, resolveAgents } from "../agents/index.js";
|
|
5
5
|
import { findGitRoot } from "../connector/git.js";
|
|
6
6
|
import { homeConfigPath, readHomeConfig, withHomeDir } from "../connector/home.js";
|
|
7
7
|
import { findLinkedRepoRoot, readRepoConfig } from "../connector/repo.js";
|
|
8
|
-
import {
|
|
8
|
+
import { ledgerFilesFor, readGrounderState, recordedHooksEnabled, statePath, } from "../connector/state.js";
|
|
9
9
|
import { isUnsupportedSchemaError } from "../connector/unsupported-schema.js";
|
|
10
10
|
import { resolveLogsDir, resolveNotesDir, resolvePlansDir, resolveVaultRoot, } from "../connector/vault.js";
|
|
11
11
|
import { helpExitCode } from "../help.js";
|
|
12
12
|
import { VERSION } from "../index.js";
|
|
13
|
+
import { reconcile } from "../reconcile/core.js";
|
|
14
|
+
import { readDiskHashes } from "../reconcile/disk.js";
|
|
13
15
|
import { fileExists, isExecutable } from "../util/fs.js";
|
|
16
|
+
import { hashContent } from "../util/hash.js";
|
|
14
17
|
import { flagBool, parseArgs } from "../util/parse-args.js";
|
|
15
18
|
import { projectsParent } from "../vault/layout.js";
|
|
16
19
|
import { failCheck, okCheck, warnCheck } from "./check.js";
|
|
@@ -136,6 +139,16 @@ async function loadInstallState(homeDir) {
|
|
|
136
139
|
}
|
|
137
140
|
catch (error) {
|
|
138
141
|
const detail = error instanceof Error ? error.message : String(error);
|
|
142
|
+
// Stays `failCheck` either way: `runMachineChecks` derives `stateReadable`
|
|
143
|
+
// from `level !== "fail"`, and that flag is what stops
|
|
144
|
+
// `checkAgentArtifacts`/`checkAgentHooks` from inventing drift against a
|
|
145
|
+
// `null` state.
|
|
146
|
+
if (isUnsupportedSchemaError(error)) {
|
|
147
|
+
return {
|
|
148
|
+
state: null,
|
|
149
|
+
check: failCheck("install-state", `install state unsupported: ${detail}`, UPGRADE_GROUNDER),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
139
152
|
return {
|
|
140
153
|
state: null,
|
|
141
154
|
check: failCheck("install-state", `install state invalid: ${detail}`, `fix or remove ${filePath}, then ${MIGRATE_FORCE}`),
|
|
@@ -153,76 +166,99 @@ function checkPackageVersion(state) {
|
|
|
153
166
|
}
|
|
154
167
|
return warnCheck("package-version", notice.message, notice.fix);
|
|
155
168
|
}
|
|
156
|
-
function
|
|
157
|
-
if (
|
|
158
|
-
return
|
|
159
|
-
}
|
|
160
|
-
return recordedCommandsSchema(state, agent.id) > agent.commandsSchema;
|
|
161
|
-
}
|
|
162
|
-
function commandsSchemaBehind(agent, state, stateReadable) {
|
|
163
|
-
if (!stateReadable || !state?.agents[agent.id]) {
|
|
164
|
-
return false;
|
|
169
|
+
function pendingWriteMessage(kind, created, updated) {
|
|
170
|
+
if (created > 0 && updated > 0) {
|
|
171
|
+
return `${created + updated} ${kind} would install or update on next migrate`;
|
|
165
172
|
}
|
|
166
|
-
|
|
167
|
-
}
|
|
168
|
-
function hooksSchemaAhead(agent, state, stateReadable) {
|
|
169
|
-
if (!stateReadable || agent.hooksSchema === undefined) {
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
return isHooksSchemaAhead(state?.agents[agent.id]?.hooksSchema, agent.hooksSchema);
|
|
173
|
-
}
|
|
174
|
-
/** Match {@link isInstallSchemaStale}: only when a hooks version was recorded. */
|
|
175
|
-
function hooksSchemaBehindInLedger(agent, state, stateReadable) {
|
|
176
|
-
if (!stateReadable || agent.hooksSchema === undefined) {
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
|
-
const recorded = state?.agents[agent.id]?.hooksSchema;
|
|
180
|
-
if (recorded === undefined) {
|
|
181
|
-
return false;
|
|
173
|
+
if (created > 0) {
|
|
174
|
+
return `${created} ${kind} would install on next migrate`;
|
|
182
175
|
}
|
|
183
|
-
return
|
|
176
|
+
return `${updated} ${kind} would update on next migrate`;
|
|
184
177
|
}
|
|
185
178
|
/**
|
|
186
|
-
*
|
|
187
|
-
*
|
|
179
|
+
* Map a reconciled plan onto a doctor check. `conflict` needs `--force`;
|
|
180
|
+
* `create`/`update` would write on plain migrate. `noop`/`forget` count as
|
|
181
|
+
* up to date (a `forget`-only plan has nothing on disk to act on).
|
|
188
182
|
*/
|
|
189
|
-
function
|
|
190
|
-
|
|
191
|
-
|
|
183
|
+
function checkFromPlan(id, agentName, kind, plan, upToDateMessage) {
|
|
184
|
+
const conflicts = plan.filter((e) => e.action === "conflict").length;
|
|
185
|
+
const created = plan.filter((e) => e.action === "create").length;
|
|
186
|
+
const updated = plan.filter((e) => e.action === "update").length;
|
|
187
|
+
const wouldWrite = created + updated;
|
|
188
|
+
if (conflicts === 0 && wouldWrite === 0) {
|
|
189
|
+
return okCheck(id, upToDateMessage);
|
|
190
|
+
}
|
|
191
|
+
if (conflicts === 0) {
|
|
192
|
+
return warnCheck(id, `${agentName}: ${pendingWriteMessage(kind, created, updated)}`, MIGRATE);
|
|
192
193
|
}
|
|
193
|
-
return warnCheck(
|
|
194
|
+
return warnCheck(id, `${agentName}: ${conflicts} ${kind} locally modified (needs --force to refresh)` +
|
|
195
|
+
(wouldWrite > 0 ? `, ${wouldWrite} would auto-update` : ""), MIGRATE_FORCE);
|
|
194
196
|
}
|
|
195
197
|
/**
|
|
196
|
-
* Map
|
|
197
|
-
*
|
|
198
|
-
*
|
|
198
|
+
* Map the hook install preview onto a doctor check. Hooks always-converge —
|
|
199
|
+
* no conflict/`--force` gate (see `AgentAdapter#installHooks`'s own docs) —
|
|
200
|
+
* so unlike {@link checkFromPlan}'s whole-file artifacts, there's no
|
|
201
|
+
* "locally modified" case to report here.
|
|
199
202
|
*/
|
|
200
203
|
function checkFromInstallPreview(id, agentName, kind, preview, upToDateMessage) {
|
|
201
204
|
const statuses = Object.values(preview.artifacts);
|
|
202
|
-
const modified = statuses.filter((s) => s === "modified").length;
|
|
203
205
|
const created = statuses.filter((s) => s === "created").length;
|
|
204
206
|
const overwritten = statuses.filter((s) => s === "overwritten").length;
|
|
205
207
|
const wouldWrite = created + overwritten;
|
|
206
|
-
if (
|
|
208
|
+
if (wouldWrite === 0) {
|
|
207
209
|
return okCheck(id, upToDateMessage);
|
|
208
210
|
}
|
|
209
|
-
|
|
210
|
-
return warnCheck(id, `${agentName}: ${pendingWriteMessage(kind, created, overwritten)}`, MIGRATE);
|
|
211
|
-
}
|
|
212
|
-
return warnCheck(id, `${agentName}: ${modified} ${kind} locally modified (needs --force to refresh)` +
|
|
213
|
-
(wouldWrite > 0 ? `, ${wouldWrite} would auto-update` : ""), MIGRATE_FORCE);
|
|
211
|
+
return warnCheck(id, `${agentName}: ${pendingWriteMessage(kind, created, overwritten)}`, MIGRATE);
|
|
214
212
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
213
|
+
/**
|
|
214
|
+
* One reconcile() call per agent covering desired skill files, tombstoned
|
|
215
|
+
* legacy paths, and any other ledger-recorded path, then split three ways by
|
|
216
|
+
* which side of the diff each path fell on — the same plan `migrate`/`setup`
|
|
217
|
+
* would apply, so doctor can never disagree with what a real run would do
|
|
218
|
+
* (see {@link AgentPlan.orphanedEntries} for why the split isn't just two-way).
|
|
219
|
+
*/
|
|
220
|
+
async function computeAgentPlan(agent, state, homeDir) {
|
|
221
|
+
const desired = await agent.desiredArtifacts(homeDir);
|
|
222
|
+
const tombstones = agent.tombstones(homeDir);
|
|
223
|
+
const ledgerFiles = ownedLedgerFiles(agent, ledgerFilesFor(state, agent.id), homeDir);
|
|
224
|
+
const diskPaths = new Set([
|
|
225
|
+
...Object.keys(desired),
|
|
226
|
+
...Object.keys(ledgerFiles ?? {}),
|
|
227
|
+
...tombstones,
|
|
228
|
+
]);
|
|
229
|
+
const disk = await readDiskHashes(diskPaths);
|
|
230
|
+
const desiredHashes = {};
|
|
231
|
+
for (const [p, content] of Object.entries(desired)) {
|
|
232
|
+
desiredHashes[p] = hashContent(content);
|
|
233
|
+
}
|
|
234
|
+
const plan = reconcile(desiredHashes, tombstones, ledgerFiles, disk, false);
|
|
235
|
+
const desiredPaths = new Set(Object.keys(desired));
|
|
236
|
+
const tombstonePaths = new Set(tombstones);
|
|
237
|
+
return {
|
|
238
|
+
skillEntries: plan.filter((e) => desiredPaths.has(e.path)),
|
|
239
|
+
legacyEntries: plan.filter((e) => tombstonePaths.has(e.path) && !desiredPaths.has(e.path)),
|
|
240
|
+
orphanedEntries: plan.filter((e) => !desiredPaths.has(e.path) && !tombstonePaths.has(e.path)),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Compute each agent's plan exactly once per doctor run, shared between
|
|
245
|
+
* `checkAgentArtifacts` and `checkLegacyCommands` — both split the same
|
|
246
|
+
* `computeAgentPlan` result, so a failure (e.g. an unreadable template) must
|
|
247
|
+
* be caught once here rather than risking an unguarded second call.
|
|
248
|
+
*/
|
|
249
|
+
async function computeAgentPlansSafe(agents, state, homeDir) {
|
|
250
|
+
const results = new Map();
|
|
251
|
+
for (const agent of agents) {
|
|
252
|
+
try {
|
|
253
|
+
results.set(agent.id, { ok: true, plan: await computeAgentPlan(agent, state, homeDir) });
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
results.set(agent.id, { ok: false, error });
|
|
257
|
+
}
|
|
221
258
|
}
|
|
222
|
-
return
|
|
259
|
+
return results;
|
|
223
260
|
}
|
|
224
|
-
async function checkAgentArtifacts(
|
|
225
|
-
const agents = await resolveAgents();
|
|
261
|
+
async function checkAgentArtifacts(agents, agentPlans, stateReadable, homeDir) {
|
|
226
262
|
const checks = [];
|
|
227
263
|
for (const agent of agents) {
|
|
228
264
|
const expected = agent.expectedArtifacts(homeDir);
|
|
@@ -230,7 +266,7 @@ async function checkAgentArtifacts(state, stateReadable, homeDir) {
|
|
|
230
266
|
const presentCount = present.filter(Boolean).length;
|
|
231
267
|
const id = `agent-${agent.id}`;
|
|
232
268
|
if (presentCount === expected.length) {
|
|
233
|
-
// Missing/non-executable baked Node in
|
|
269
|
+
// Missing/non-executable baked Node in skill markdown → fail.
|
|
234
270
|
// Do not compare to process.execPath. Legacy npx / non-runtime shapes skip.
|
|
235
271
|
const texts = await Promise.all(expected.map(async (p) => {
|
|
236
272
|
try {
|
|
@@ -242,42 +278,97 @@ async function checkAgentArtifacts(state, stateReadable, homeDir) {
|
|
|
242
278
|
}));
|
|
243
279
|
const danglingNode = await firstDanglingRuntimeNode(texts.flatMap((text) => findRuntimeNodePathsInText(text)));
|
|
244
280
|
if (danglingNode) {
|
|
245
|
-
checks.push(failCheck(id, `${agent.name}
|
|
246
|
-
}
|
|
247
|
-
else if (commandsSchemaAhead(agent, state, stateReadable)) {
|
|
248
|
-
const recorded = recordedCommandsSchema(state, agent.id);
|
|
249
|
-
checks.push(failCheck(id, `${agent.name} commands schema newer than this grounder (recorded ${recorded}, supported ${agent.commandsSchema})`, UPGRADE_GROUNDER));
|
|
281
|
+
checks.push(failCheck(id, `${agent.name} skill Node interpreter missing or not executable (${danglingNode})`, MIGRATE));
|
|
250
282
|
}
|
|
251
283
|
else if (stateReadable) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
checks.push(applyLedgerSchemaLag(previewCheck, {
|
|
256
|
-
id,
|
|
257
|
-
agentName: agent.name,
|
|
258
|
-
kind: "commands",
|
|
259
|
-
recorded: recordedCommandsSchema(state, agent.id),
|
|
260
|
-
current: agent.commandsSchema,
|
|
261
|
-
behind: commandsSchemaBehind(agent, state, stateReadable),
|
|
262
|
-
}));
|
|
284
|
+
const result = agentPlans.get(agent.id);
|
|
285
|
+
if (result?.ok) {
|
|
286
|
+
checks.push(checkFromPlan(id, agent.name, "skill file(s)", result.plan.skillEntries, `${agent.name} skill files up to date`));
|
|
263
287
|
}
|
|
264
|
-
|
|
265
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
266
|
-
checks.push(warnCheck(id, `${agent.name}: could not verify
|
|
288
|
+
else {
|
|
289
|
+
const detail = result?.error instanceof Error ? result.error.message : String(result?.error);
|
|
290
|
+
checks.push(warnCheck(id, `${agent.name}: could not verify skill drift (${detail})`, MIGRATE));
|
|
267
291
|
}
|
|
268
292
|
}
|
|
269
293
|
else {
|
|
270
|
-
checks.push(okCheck(id, `${agent.name}
|
|
294
|
+
checks.push(okCheck(id, `${agent.name} skill files present`));
|
|
271
295
|
}
|
|
272
296
|
continue;
|
|
273
297
|
}
|
|
274
|
-
|
|
298
|
+
// Missing files are always safe to create with a plain migrate — no
|
|
299
|
+
// conflict to override, since a missing path always plans as `create`.
|
|
300
|
+
const fix = `${MIGRATE} (or --agent=${agent.id})`;
|
|
275
301
|
if (presentCount === 0) {
|
|
276
|
-
checks.push(warnCheck(id, `${agent.name} detected but no Grounder
|
|
302
|
+
checks.push(warnCheck(id, `${agent.name} detected but no Grounder skill files`, fix));
|
|
277
303
|
}
|
|
278
304
|
else {
|
|
279
305
|
const missing = expected.filter((_, i) => !present[i]);
|
|
280
|
-
checks.push(failCheck(id, `${agent.name} missing ${missing.length}
|
|
306
|
+
checks.push(failCheck(id, `${agent.name} missing ${missing.length} skill file(s): ${missing.map((p) => path.join(path.basename(path.dirname(p)), path.basename(p))).join(", ")}`, fix));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return checks;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Detect pre-skill `grounder-*.md` command files a schema-3→4 upgrade should
|
|
313
|
+
* have retired but hasn't — the tombstone side of {@link computeAgentPlan}'s
|
|
314
|
+
* plan, reported separately from the main `agent-<id>` check.
|
|
315
|
+
*
|
|
316
|
+
* Both `conflict` (hand-edited, or a pre-ledger install with no recorded
|
|
317
|
+
* hash — needs `--force`) and `delete` (hash matches; a plain `migrate`
|
|
318
|
+
* would clean it up) are reported. `delete` isn't noise here: doctor can't
|
|
319
|
+
* assume the user's next command is `migrate` — `setup --force` is a
|
|
320
|
+
* documented repair/upgrade path that never retires legacy files, so a
|
|
321
|
+
* hash-matching leftover can sit on disk causing the duplicate-command-menu
|
|
322
|
+
* problem indefinitely unless flagged. `noop`/`forget` stay unreported —
|
|
323
|
+
* nothing left to act on.
|
|
324
|
+
*/
|
|
325
|
+
async function checkLegacyCommands(agents, agentPlans) {
|
|
326
|
+
const checks = [];
|
|
327
|
+
for (const agent of agents) {
|
|
328
|
+
const result = agentPlans.get(agent.id);
|
|
329
|
+
if (!result?.ok) {
|
|
330
|
+
// Already reported by `checkAgentArtifacts`'s "could not verify skill
|
|
331
|
+
// drift" warning — nothing new to add here.
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
for (const entry of result.plan.legacyEntries) {
|
|
335
|
+
if (entry.action === "conflict") {
|
|
336
|
+
checks.push(warnCheck(`agent-${agent.id}-legacy-commands`, `${agent.name}: leftover pre-skill command file (superseded by skill, may duplicate the menu entry): ${entry.path}`, MIGRATE_FORCE));
|
|
337
|
+
}
|
|
338
|
+
else if (entry.action === "delete") {
|
|
339
|
+
checks.push(warnCheck(`agent-${agent.id}-legacy-commands`, `${agent.name}: leftover pre-skill command file, safe to clean up (superseded by skill, may duplicate the menu entry): ${entry.path}`, MIGRATE));
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return checks;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Detect ledger-tracked paths dropped from the current desired set without a
|
|
347
|
+
* matching {@link AgentAdapter.tombstones} entry — the other half of
|
|
348
|
+
* {@link AgentPlan.orphanedEntries}, reported separately from
|
|
349
|
+
* {@link checkLegacyCommands}'s tombstone-derived leftovers since the wording
|
|
350
|
+
* ("superseded by skill") doesn't apply to a plain removed skill file.
|
|
351
|
+
*
|
|
352
|
+
* Same reporting rule as `checkLegacyCommands`: both `conflict` (needs
|
|
353
|
+
* `--force`) and `delete` (a plain `migrate` cleans it up) are reported;
|
|
354
|
+
* `noop`/`forget` stay silent — nothing left to act on.
|
|
355
|
+
*/
|
|
356
|
+
async function checkOrphanedLedgerFiles(agents, agentPlans) {
|
|
357
|
+
const checks = [];
|
|
358
|
+
for (const agent of agents) {
|
|
359
|
+
const result = agentPlans.get(agent.id);
|
|
360
|
+
if (!result?.ok) {
|
|
361
|
+
// Already reported by `checkAgentArtifacts`'s "could not verify skill
|
|
362
|
+
// drift" warning — nothing new to add here.
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
for (const entry of result.plan.orphanedEntries) {
|
|
366
|
+
if (entry.action === "conflict") {
|
|
367
|
+
checks.push(warnCheck(`agent-${agent.id}-orphaned`, `${agent.name}: Grounder-managed file no longer part of the current install, locally modified (needs --force to retire): ${entry.path}`, MIGRATE_FORCE));
|
|
368
|
+
}
|
|
369
|
+
else if (entry.action === "delete") {
|
|
370
|
+
checks.push(warnCheck(`agent-${agent.id}-orphaned`, `${agent.name}: Grounder-managed file no longer part of the current install, safe to clean up: ${entry.path}`, MIGRATE));
|
|
371
|
+
}
|
|
281
372
|
}
|
|
282
373
|
}
|
|
283
374
|
return checks;
|
|
@@ -286,13 +377,12 @@ async function checkAgentArtifacts(state, stateReadable, homeDir) {
|
|
|
286
377
|
* Warn-only: session hooks are opt-in. Missing entry never fails doctor.
|
|
287
378
|
* One check per detected agent that declares `expectedHookArtifacts`.
|
|
288
379
|
*
|
|
289
|
-
*
|
|
380
|
+
* Skills and session hooks both depend on the shared
|
|
290
381
|
* `~/.grounder/runtime` materialization, so it's checked whenever *either* is
|
|
291
382
|
* installed — stale mainly for bare-npx copy installs after an upgrade
|
|
292
383
|
* (symlink installs stay current without re-init).
|
|
293
384
|
*/
|
|
294
|
-
async function checkAgentHooks(state, stateReadable, homeDir) {
|
|
295
|
-
const agents = await resolveAgents();
|
|
385
|
+
async function checkAgentHooks(agents, state, stateReadable, homeDir) {
|
|
296
386
|
const checks = [];
|
|
297
387
|
let anyHooksInstalled = false;
|
|
298
388
|
const commandsPresent = await Promise.all(agents.map((agent) => Promise.all(agent.expectedArtifacts(homeDir).map((p) => fileExists(p)))));
|
|
@@ -320,25 +410,13 @@ async function checkAgentHooks(state, stateReadable, homeDir) {
|
|
|
320
410
|
if (danglingNode) {
|
|
321
411
|
checks.push(failCheck(id, `${agent.name} session hook Node interpreter missing or not executable (${danglingNode})`, MIGRATE));
|
|
322
412
|
}
|
|
323
|
-
else if (hooksSchemaAhead(agent, state, stateReadable)) {
|
|
324
|
-
const recorded = recordedHooksSchema(state, agent.id);
|
|
325
|
-
checks.push(failCheck(id, `${agent.name} hooks schema newer than this grounder (recorded ${recorded}, supported ${agent.hooksSchema})`, UPGRADE_GROUNDER));
|
|
326
|
-
}
|
|
327
413
|
else if (runtimeStale) {
|
|
328
414
|
checks.push(okCheck(id, `${agent.name} session hook installed`));
|
|
329
415
|
}
|
|
330
416
|
else if (stateReadable && agent.installHooks) {
|
|
331
417
|
try {
|
|
332
418
|
const preview = await agent.installHooks({ force: false, dryRun: true, homeDir });
|
|
333
|
-
|
|
334
|
-
checks.push(applyLedgerSchemaLag(previewCheck, {
|
|
335
|
-
id,
|
|
336
|
-
agentName: agent.name,
|
|
337
|
-
kind: "hooks",
|
|
338
|
-
recorded: recordedHooksSchema(state, agent.id),
|
|
339
|
-
current: agent.hooksSchema ?? 0,
|
|
340
|
-
behind: hooksSchemaBehindInLedger(agent, state, stateReadable),
|
|
341
|
-
}));
|
|
419
|
+
checks.push(checkFromInstallPreview(id, agent.name, "session hook file(s)", preview, `${agent.name} session hook up to date`));
|
|
342
420
|
}
|
|
343
421
|
catch (error) {
|
|
344
422
|
const detail = error instanceof Error ? error.message : String(error);
|
|
@@ -349,6 +427,10 @@ async function checkAgentHooks(state, stateReadable, homeDir) {
|
|
|
349
427
|
checks.push(okCheck(id, `${agent.name} session hook installed`));
|
|
350
428
|
}
|
|
351
429
|
}
|
|
430
|
+
else if (recordedHooksEnabled(state, agent.id) === false) {
|
|
431
|
+
// Explicitly turned off via `--no-hooks` — nothing to warn about.
|
|
432
|
+
checks.push(okCheck(id, `${agent.name} session hooks disabled (--no-hooks)`));
|
|
433
|
+
}
|
|
352
434
|
else {
|
|
353
435
|
checks.push(warnCheck(id, `${agent.name} detected but no Grounder session hook`, MIGRATE_HOOKS));
|
|
354
436
|
}
|
|
@@ -368,7 +450,7 @@ async function runMachineChecks(homeDir) {
|
|
|
368
450
|
const { check: vaultCheck, vaultRoot } = await checkVault(home);
|
|
369
451
|
const projectsCheck = await checkProjectsDir(vaultRoot);
|
|
370
452
|
const { state, check: stateCheck } = await loadInstallState(homeDir);
|
|
371
|
-
// Corrupt ledger: don't invent
|
|
453
|
+
// Corrupt ledger: don't invent drift warns on top of the fail.
|
|
372
454
|
const stateReadable = stateCheck.level !== "fail";
|
|
373
455
|
const packageVersionCheck = checkPackageVersion(state);
|
|
374
456
|
return {
|
|
@@ -384,10 +466,21 @@ async function runMachineChecks(homeDir) {
|
|
|
384
466
|
home,
|
|
385
467
|
};
|
|
386
468
|
}
|
|
469
|
+
/**
|
|
470
|
+
* Detect installed agents once per doctor run and hand the same list to every
|
|
471
|
+
* check below. Each `resolveAgents()` call probes the filesystem for every
|
|
472
|
+
* adapter, and — more to the point — re-detecting per check would let two
|
|
473
|
+
* sections of one report disagree about which agents exist if the filesystem
|
|
474
|
+
* changed mid-run.
|
|
475
|
+
*/
|
|
387
476
|
async function runAgentChecks(state, stateReadable, homeDir) {
|
|
388
|
-
const
|
|
389
|
-
const
|
|
390
|
-
|
|
477
|
+
const agents = await resolveAgents();
|
|
478
|
+
const agentPlans = await computeAgentPlansSafe(agents, state, homeDir);
|
|
479
|
+
const agentChecks = await checkAgentArtifacts(agents, agentPlans, stateReadable, homeDir);
|
|
480
|
+
const legacyChecks = await checkLegacyCommands(agents, agentPlans);
|
|
481
|
+
const orphanedChecks = await checkOrphanedLedgerFiles(agents, agentPlans);
|
|
482
|
+
const hookChecks = await checkAgentHooks(agents, state, stateReadable, homeDir);
|
|
483
|
+
return [...agentChecks, ...legacyChecks, ...orphanedChecks, ...hookChecks];
|
|
391
484
|
}
|
|
392
485
|
async function runProjectChecks(cwd, home) {
|
|
393
486
|
const checks = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAkB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAoB,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AASnE,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAC3C,MAAM,OAAO,GAAG,kBAAkB,CAAC;AACnC,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,SAAS,GAAG,eAAe,CAAC;AAClC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAE5C,8FAA8F;AAC9F,KAAK,UAAU,wBAAwB,CAAC,SAA2B;IACjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACvE,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,MAAqB;IACvD,YAAY,CAAC,KAAK,CAAC,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC/D,OAAO,GAAG,MAAM,YAAY,MAAM,YAAY,MAAM,WAAW,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,eAAe;IAI5B,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,CAAC;YAClE,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,qBAAqB,EAAE,UAAU,CAAC;gBAClE,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,wBAAwB,UAAU,GAAG,CAAC;YACpE,IAAI;SACL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,wBAAwB,MAAM,EAAE,EAAE,UAAU,CAAC;YAC7E,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAgD;IAIxE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,uCAAuC,EAAE,UAAU,CAAC;YAC9E,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,SAAS,CACd,OAAO,EACP,GAAG,SAAS,6BAA6B,EACzC,0BAA0B,CAC3B;YACD,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,oBAAoB,SAAS,GAAG,CAAC;QACzD,SAAS;KACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAwB;IACtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,cAAc,EAAE,sCAAsC,EAAE,UAAU,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC,cAAc,EAAE,GAAG,WAAW,UAAU,EAAE,GAAG,UAAU,eAAe,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,OAAO,CAAC,cAAc,EAAE,yBAAyB,WAAW,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IAI9C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,SAAS,CACd,eAAe,EACf,qDAAqD,EACrD,aAAa,CACd;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK;YACL,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,0BAA0B,QAAQ,GAAG,CAAC;SACvE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,2EAA2E;QAC3E,uDAAuD;QACvD,yEAAyE;QACzE,gBAAgB;QAChB,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,8BAA8B,MAAM,EAAE,EAAE,gBAAgB,CAAC;aAC5F,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,SAAS,CACd,eAAe,EACf,0BAA0B,MAAM,EAAE,EAClC,iBAAiB,QAAQ,UAAU,aAAa,EAAE,CACnD;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,SAAS,mBAAmB,CAAC,KAA2B;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,OAAe,EAAE,OAAe;IACzE,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,OAAO,GAAG,OAAO,IAAI,IAAI,0CAA0C,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,IAAI,IAAI,gCAAgC,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,OAAO,IAAI,IAAI,+BAA+B,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,EAAU,EACV,SAAiB,EACjB,IAAY,EACZ,IAA0B,EAC1B,eAAuB;IAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IAErC,IAAI,SAAS,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,EAAE,EAAE,GAAG,SAAS,KAAK,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,SAAS,CACd,EAAE,EACF,GAAG,SAAS,KAAK,SAAS,IAAI,IAAI,8CAA8C;QAC9E,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,EAC7D,aAAa,CACd,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,EAAU,EACV,SAAiB,EACjB,IAAY,EACZ,OAA2B,EAC3B,eAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;IAEzC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC,EAAE,EAAE,GAAG,SAAS,KAAK,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACpG,CAAC;AAkBD;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAC7B,KAAmB,EACnB,KAA2B,EAC3B,OAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS;QAChC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QACvB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QACjC,GAAG,UAAU;KACd,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,aAAa,GAA2B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1F,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC9F,CAAC;AACJ,CAAC;AAID;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAClC,MAA+B,EAC/B,KAA2B,EAC3B,OAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACnD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAA+B,EAC/B,UAAwC,EACxC,aAAsB,EACtB,OAAgB;IAEhB,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACpD,MAAM,EAAE,GAAG,SAAS,KAAK,CAAC,EAAE,EAAE,CAAC;QAE/B,IAAI,YAAY,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrC,8DAA8D;YAC9D,4EAA4E;YAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACvB,IAAI,CAAC;oBACH,OAAO,MAAM,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,wBAAwB,CACjD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAC1D,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CACT,SAAS,CACP,EAAE,EACF,GAAG,KAAK,CAAC,IAAI,sDAAsD,YAAY,GAAG,EAClF,OAAO,CACR,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,aAAa,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxC,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CACT,aAAa,CACX,EAAE,EACF,KAAK,CAAC,IAAI,EACV,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,YAAY,EACxB,GAAG,KAAK,CAAC,IAAI,yBAAyB,CACvC,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GACV,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAChF,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,mCAAmC,MAAM,GAAG,EAAE,OAAO,CAAC,CAClF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC;YAChE,CAAC;YACD,SAAS;QACX,CAAC;QAED,oEAAoE;QACpE,uEAAuE;QACvE,MAAM,GAAG,GAAG,GAAG,OAAO,gBAAgB,KAAK,CAAC,EAAE,GAAG,CAAC;QAClD,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,uCAAuC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CACT,SAAS,CACP,EAAE,EACF,GAAG,KAAK,CAAC,IAAI,YAAY,OAAO,CAAC,MAAM,mBAAmB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACtJ,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAA+B,EAC/B,UAAwC;IAExC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;YAChB,sEAAsE;YACtE,4CAA4C;YAC5C,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CACT,SAAS,CACP,SAAS,KAAK,CAAC,EAAE,kBAAkB,EACnC,GAAG,KAAK,CAAC,IAAI,0FAA0F,KAAK,CAAC,IAAI,EAAE,EACnH,aAAa,CACd,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CACT,SAAS,CACP,SAAS,KAAK,CAAC,EAAE,kBAAkB,EACnC,GAAG,KAAK,CAAC,IAAI,4GAA4G,KAAK,CAAC,IAAI,EAAE,EACrI,OAAO,CACR,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,wBAAwB,CACrC,MAA+B,EAC/B,UAAwC;IAExC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;YAChB,sEAAsE;YACtE,4CAA4C;YAC5C,SAAS;QACX,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CACT,SAAS,CACP,SAAS,KAAK,CAAC,EAAE,WAAW,EAC5B,GAAG,KAAK,CAAC,IAAI,8GAA8G,KAAK,CAAC,IAAI,EAAE,EACvI,aAAa,CACd,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CACT,SAAS,CACP,SAAS,KAAK,CAAC,EAAE,WAAW,EAC5B,GAAG,KAAK,CAAC,IAAI,oFAAoF,KAAK,CAAC,IAAI,EAAE,EAC7G,OAAO,CACR,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,eAAe,CAC5B,MAA+B,EAC/B,KAA2B,EAC3B,aAAsB,EACtB,OAAgB;IAEhB,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/F,CAAC;IACF,MAAM,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,iFAAiF;IACjF,wEAAwE;IACxE,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CACrD,CAAC;QACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClE,MAAM,EAAE,GAAG,SAAS,KAAK,CAAC,EAAE,QAAQ,CAAC;QAErC,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,iBAAiB,GAAG,IAAI,CAAC;YAEzB,8DAA8D;YAC9D,mEAAmE;YACnE,6EAA6E;YAC7E,MAAM,YAAY,GAAG,MAAM,wBAAwB,CACjD,kBAAkB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;gBAC7C,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CACT,SAAS,CACP,EAAE,EACF,GAAG,KAAK,CAAC,IAAI,6DAA6D,YAAY,GAAG,EACzF,OAAO,CACR,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,aAAa,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBAClF,MAAM,CAAC,IAAI,CACT,uBAAuB,CACrB,EAAE,EACF,KAAK,CAAC,IAAI,EACV,sBAAsB,EACtB,OAAO,EACP,GAAG,KAAK,CAAC,IAAI,0BAA0B,CACxC,CACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACtE,MAAM,CAAC,IAAI,CACT,SAAS,CACP,EAAE,EACF,GAAG,KAAK,CAAC,IAAI,0CAA0C,MAAM,GAAG,EAChE,OAAO,CACR,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;aAAM,IAAI,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YAC3D,kEAAkE;YAClE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,sCAAsC,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,wCAAwC,EAAE,aAAa,CAAC,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,IAAI,oBAAoB,EAAE,CAAC;QAC9C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CACT,SAAS,CACP,cAAc,EACd,6EAA6E,EAC7E,OAAO,CACR,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IAM9C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;IAC3D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrE,+DAA+D;IAC/D,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,KAAK,MAAM,CAAC;IAClD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAEvD,OAAO;QACL,MAAM,EAAE;YACN,SAAS;YACT,UAAU;YACV,aAAa;YACb,UAAU;YACV,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD;QACD,KAAK;QACL,aAAa;QACb,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAC3B,KAA2B,EAC3B,aAAsB,EACtB,OAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,GAAW,EACX,IAAgD;IAEhD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE1D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,0BAA0B,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,mBAAmB,EAAE,4CAA4C,EAAE,SAAS,CAAC,CACxF,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,wCAAwC,EAAE,SAAS,CAAC,CAAC,CAAC;QACzF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,uCAAuC,EAAE,SAAS,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,wCAAwC,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAChB,UAAU,KAAK,GAAG;YAChB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,kBAAkB,GAAG,uFAAuF,CAAC;QACnH,MAAM,CAAC,IAAI,CACT,OAAO,CACL,aAAa,EACb,wBAAwB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,YAAY,EAAE,CAClF,CACF,CAAC;QAEF,IAAI,IAAI,GAA+C,IAAI,CAAC;QAC5D,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CACT,SAAS,CACP,mBAAmB,EACnB,8BAA8B,EAC9B,iBAAiB,SAAS,UAAU,CACrC,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,eAAe,GAAG,IAAI,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CACT,SAAS,CACP,mBAAmB,EACnB,wBAAwB,MAAM,EAAE,EAChC,iBAAiB,SAAS,UAAU,CACrC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,CAAC,IAAI;gBAClB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,eAAe;oBACf,CAAC,CAAC,iCAAiC;oBACnC,CAAC,CAAC,sBAAsB,CAAC;YAC7B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,0BAA0B,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,yBAAyB,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,0BAA0B,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAE1C,wFAAwF;YACxF,MAAM,CAAC,IAAI,CACT,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,KAAK,GAAG,CAAC;gBACnD,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,KAAK,GAAG,EAAE,SAAS,CAAC,CACnE,CAAC;YACF,MAAM,CAAC,IAAI,CACT,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,IAAI,GAAG,CAAC;gBAChD,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,kBAAkB,IAAI,GAAG,EAAE,SAAS,CAAC,CAChE,CAAC;YACF,MAAM,CAAC,IAAI,CACT,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,mBAAmB,KAAK,GAAG,CAAC;gBACnD,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,KAAK,GAAG,EAAE,SAAS,CAAC,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,OAAO,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAyB,EAAE;IACpE,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,MAAM,EACJ,MAAM,EAAE,aAAa,EACrB,KAAK,EACL,aAAa,EACb,IAAI,GACL,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC;QAEpE,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -30,7 +30,7 @@ export declare function runHandoffPeek(argv: string[]): Promise<number>;
|
|
|
30
30
|
* Resolves the linked project and prints a one-line teaser for the newest *usable*
|
|
31
31
|
* handoff, or nothing. "Usable" (via {@link findUsableHandoff}) skips empty/unreadable
|
|
32
32
|
* files and falls back to the next-newest — the same selection `grounder handoff list
|
|
33
|
-
* --head` uses, so the teaser and `/grounder-
|
|
33
|
+
* --head` uses, so the teaser and `/grounder-recall` never disagree about which handoff
|
|
34
34
|
* is current.
|
|
35
35
|
* Also checks `state.json` and may add a one-line "run grounder migrate" hint
|
|
36
36
|
* for people who never run doctor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peek.d.ts","sourceRoot":"","sources":["../../../src/commands/handoff/peek.ts"],"names":[],"mappings":"AAYA,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAOD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWjE;
|
|
1
|
+
{"version":3,"file":"peek.d.ts","sourceRoot":"","sources":["../../../src/commands/handoff/peek.ts"],"names":[],"mappings":"AAYA,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAOD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWjE;AAgGD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BjG"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { readCursorHookWorkspaceRoot } from "../../agents/cursor-hook-input.js";
|
|
3
|
-
import { ALL_AGENTS } from "../../agents/index.js";
|
|
4
3
|
import { withHomeDir } from "../../connector/home.js";
|
|
5
4
|
import { resolveLinkedProject } from "../../connector/linked.js";
|
|
6
|
-
import {
|
|
5
|
+
import { readGrounderState } from "../../connector/state.js";
|
|
7
6
|
import { resolveLogsDir } from "../../connector/vault.js";
|
|
8
7
|
import { helpExitCode } from "../../help.js";
|
|
9
8
|
import { parseHandoffFrontmatter } from "../../util/frontmatter.js";
|
|
10
9
|
import { flagBool, parseArgs } from "../../util/parse-args.js";
|
|
11
10
|
import { findUsableHandoff } from "../../vault/find-usable-handoff.js";
|
|
11
|
+
import { installDriftDetected } from "../install-drift.js";
|
|
12
12
|
const MIGRATE_TEASER = "[grounder] Install outdated — run: grounder migrate.";
|
|
13
13
|
/** `YYYY-MM-DD-HHmm` or `YYYY-MM-DD-HHmmss`, optionally followed by `-slug`. */
|
|
14
14
|
const TIMESTAMP_STEM = /^(\d{4}-\d{2}-\d{2})-\d{4}(?:\d{2})?(?:-(.*))?$/;
|
|
@@ -28,6 +28,20 @@ export function labelFromHandoffFilename(filePath) {
|
|
|
28
28
|
}
|
|
29
29
|
return slug.replace(/-/g, " ");
|
|
30
30
|
}
|
|
31
|
+
/** Max characters kept from a handoff title before truncating with an ellipsis. */
|
|
32
|
+
const MAX_LABEL_LENGTH = 80;
|
|
33
|
+
/**
|
|
34
|
+
* Collapse embedded newlines/control characters to single spaces and cap
|
|
35
|
+
* length, so a malformed or unusually long `title` frontmatter value can't
|
|
36
|
+
* blow out the single-line teaser this label renders on.
|
|
37
|
+
*/
|
|
38
|
+
function sanitizeLabel(label) {
|
|
39
|
+
const collapsed = label.replace(/\s+/g, " ").trim();
|
|
40
|
+
if (collapsed.length <= MAX_LABEL_LENGTH) {
|
|
41
|
+
return collapsed;
|
|
42
|
+
}
|
|
43
|
+
return `${collapsed.slice(0, MAX_LABEL_LENGTH - 1)}…`;
|
|
44
|
+
}
|
|
31
45
|
function createdDateFromFilename(filePath) {
|
|
32
46
|
const stem = path.basename(filePath, ".md");
|
|
33
47
|
const match = TIMESTAMP_STEM.exec(stem);
|
|
@@ -66,16 +80,19 @@ function resolveCursorHookCwd(stdinWorkspaceRoot) {
|
|
|
66
80
|
}
|
|
67
81
|
/**
|
|
68
82
|
* Whether to print the "run grounder migrate" line from session peek.
|
|
69
|
-
*
|
|
83
|
+
* Cheap by design: a package-local template render/hash per ledger-recorded
|
|
84
|
+
* agent (`installDriftDetected`) — no Cursor/Claude host-file I/O.
|
|
70
85
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
86
|
+
* Hook-content-only drift is not surfaced here (see
|
|
87
|
+
* `docs/architecture/state-reconciliation.md`) — that ships with a package
|
|
88
|
+
* version bump, which the upgrade banner already covers, and doctor catches
|
|
89
|
+
* it on the next full check. If state is missing or unreadable, stay quiet —
|
|
90
|
+
* doctor reports that.
|
|
74
91
|
*/
|
|
75
92
|
async function schemaMigrateNeeded(homeDir) {
|
|
76
93
|
try {
|
|
77
94
|
const state = await readGrounderState(homeDir);
|
|
78
|
-
return
|
|
95
|
+
return await installDriftDetected(state, homeDir);
|
|
79
96
|
}
|
|
80
97
|
catch {
|
|
81
98
|
return false;
|
|
@@ -119,7 +136,7 @@ export async function runHandoffPeek(argv) {
|
|
|
119
136
|
* Resolves the linked project and prints a one-line teaser for the newest *usable*
|
|
120
137
|
* handoff, or nothing. "Usable" (via {@link findUsableHandoff}) skips empty/unreadable
|
|
121
138
|
* files and falls back to the next-newest — the same selection `grounder handoff list
|
|
122
|
-
* --head` uses, so the teaser and `/grounder-
|
|
139
|
+
* --head` uses, so the teaser and `/grounder-recall` never disagree about which handoff
|
|
123
140
|
* is current.
|
|
124
141
|
* Also checks `state.json` and may add a one-line "run grounder migrate" hint
|
|
125
142
|
* for people who never run doctor.
|
|
@@ -137,11 +154,10 @@ export async function runHandoffPeekWithOptions(options = {}) {
|
|
|
137
154
|
const usable = await findUsableHandoff(logsDir);
|
|
138
155
|
if (usable) {
|
|
139
156
|
const fm = parseHandoffFrontmatter(usable.content);
|
|
140
|
-
const label = fm.title?.trim() || labelFromHandoffFilename(usable.path);
|
|
157
|
+
const label = sanitizeLabel(fm.title?.trim() || labelFromHandoffFilename(usable.path));
|
|
141
158
|
const createdDate = formatCreatedDate(fm.created, usable.path);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
159
|
+
const dateSuffix = createdDate ? ` (${createdDate})` : "";
|
|
160
|
+
handoffLine = `[grounder] Latest handoff: "${label}"${dateSuffix}. Run /grounder-recall to load it, or ignore if unrelated.`;
|
|
145
161
|
}
|
|
146
162
|
}
|
|
147
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peek.js","sourceRoot":"","sources":["../../../src/commands/handoff/peek.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"peek.js","sourceRoot":"","sources":["../../../src/commands/handoff/peek.ts"],"names":[],"mappings":"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"}
|