@djolex999/vir-cli 0.24.3 → 0.25.1
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 +30 -1
- package/dist/claude/updater.js +83 -7
- package/dist/claude/updater.js.map +1 -1
- package/dist/cli/connect.js +100 -0
- package/dist/cli/connect.js.map +1 -0
- package/dist/cli/initConfig.js +2 -0
- package/dist/cli/initConfig.js.map +1 -1
- package/dist/cli/insightsStatus.js +13 -0
- package/dist/cli/insightsStatus.js.map +1 -0
- package/dist/cli/reviewInsights.js +145 -0
- package/dist/cli/reviewInsights.js.map +1 -0
- package/dist/cli/syncClaude.js +101 -0
- package/dist/cli/syncClaude.js.map +1 -0
- package/dist/cli.js +43 -66
- package/dist/cli.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/connect/calibrate.js +44 -0
- package/dist/connect/calibrate.js.map +1 -0
- package/dist/connect/cluster.js +63 -0
- package/dist/connect/cluster.js.map +1 -0
- package/dist/connect/embed.js +47 -0
- package/dist/connect/embed.js.map +1 -0
- package/dist/connect/extract.js +129 -0
- package/dist/connect/extract.js.map +1 -0
- package/dist/connect/identity.js +65 -0
- package/dist/connect/identity.js.map +1 -0
- package/dist/connect/insightFile.js +61 -0
- package/dist/connect/insightFile.js.map +1 -0
- package/dist/connect/qualify.js +39 -0
- package/dist/connect/qualify.js.map +1 -0
- package/dist/connect/run.js +199 -0
- package/dist/connect/run.js.map +1 -0
- package/dist/connect/text.js +20 -0
- package/dist/connect/text.js.map +1 -0
- package/dist/connect/types.js +2 -0
- package/dist/connect/types.js.map +1 -0
- package/dist/connect/verify.js +77 -0
- package/dist/connect/verify.js.map +1 -0
- package/dist/mcp/server.js +10 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/output/json.js +2 -0
- package/dist/output/json.js.map +1 -1
- package/dist/pipeline/run.js +6 -0
- package/dist/pipeline/run.js.map +1 -1
- package/dist/search/retriever.js +19 -0
- package/dist/search/retriever.js.map +1 -1
- package/dist/search/thresholds.js +22 -2
- package/dist/search/thresholds.js.map +1 -1
- package/dist/state/db.js +238 -0
- package/dist/state/db.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ developer-tools, mcp, local-first, cross-platform, llm-wiki
|
|
|
23
23
|
<a href="https://www.npmjs.com/package/@djolex999/vir-cli"><img src="https://img.shields.io/npm/v/@djolex999/vir-cli?color=7c6af7&label=npm" alt="npm version"></a>
|
|
24
24
|
<a href="https://www.npmjs.com/package/@djolex999/vir-cli"><img src="https://img.shields.io/npm/dw/@djolex999/vir-cli?color=4fd1a0" alt="npm downloads"></a>
|
|
25
25
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22d3ee" alt="license"></a>
|
|
26
|
-
<a href="#project-status"><img src="https://img.shields.io/badge/tests-
|
|
26
|
+
<a href="#project-status"><img src="https://img.shields.io/badge/tests-1222%20passing-22c55e" alt="tests"></a>
|
|
27
27
|
<a href="#project-status"><img src="https://img.shields.io/badge/platforms-macOS%20%7C%20Linux-lightgrey" alt="platforms"></a>
|
|
28
28
|
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-server-c084fc" alt="mcp"></a>
|
|
29
29
|
<a href="#"><img src="https://img.shields.io/badge/local--first-yes-f59e0b" alt="local-first"></a>
|
|
@@ -155,6 +155,15 @@ worse results, not better."_ Fair. Vir addresses it in layers:
|
|
|
155
155
|
recoverable, not deleted.
|
|
156
156
|
- **MMR-diverse retrieval.** Queries return notes covering different aspects
|
|
157
157
|
of the topic, not 5 similar duplicates.
|
|
158
|
+
- **Recurring lessons become rules, only with your yes.** `vir connect` looks
|
|
159
|
+
for a lesson you've written down in at least 3 sessions over at least a
|
|
160
|
+
week (by embedding each "What Was Learned" item), and has the model state it
|
|
161
|
+
as one rule, with a verbatim quote from every note it cites; quotes that
|
|
162
|
+
aren't in the note are thrown out. Proposed rules live in `insights/rules/`,
|
|
163
|
+
stay out of search until you accept them in `vir review --insights`, and
|
|
164
|
+
reach CLAUDE.md only through `vir sync-claude`, which asks about each rule
|
|
165
|
+
separately and never adds one under `--force`. Rejected rules stay rejected
|
|
166
|
+
even after the source notes are rewritten. Needs an embedding provider.
|
|
158
167
|
- **Topic synthesis** via `vir compose "<topic>"`. Embedding-searches the
|
|
159
168
|
vault for related notes and synthesizes them into a single topic page under
|
|
160
169
|
`topics/`, with each source wikilinked so it backlinks in Obsidian's graph.
|
|
@@ -383,6 +392,8 @@ with your distro, init system, and Node version.
|
|
|
383
392
|
| `vir query "<question>"` | cheap | Semantic search your vault |
|
|
384
393
|
| `vir queries` | free | Retrieval report: method split, degraded rate, dead-weight notes |
|
|
385
394
|
| `vir compose "<topic>"` | $$ | Synthesize a topic page from related notes |
|
|
395
|
+
| `vir connect --dry-run` | free | Find lessons you keep re-learning; show candidates + cost |
|
|
396
|
+
| `vir connect` | $ | Propose those lessons as cited rules (≤10 LLM calls) |
|
|
386
397
|
| `vir summarize <project>` | cheap | Cross-session project synthesis |
|
|
387
398
|
| `vir summarize --week` | cheap | Period summary of the week's notes |
|
|
388
399
|
| `vir lint` | cheap | Find orphans, stale notes, contradictions |
|
|
@@ -392,6 +403,7 @@ with your distro, init system, and Node version.
|
|
|
392
403
|
| `vir audit` | cheap | Model judges each note; verdicts feed `vir review --audited` |
|
|
393
404
|
| `vir audit --dry-run` | free | Notes, batches and est. cost, no model call |
|
|
394
405
|
| `vir review --audited` | free | Walk notes vir audit flagged, worst first |
|
|
406
|
+
| `vir review --insights` | free | Accept, edit or reject rules proposed by `vir connect` |
|
|
395
407
|
| `vir audit --apply-rejects` | free | Move fresh reject verdicts to `.rejected/` (reversible) |
|
|
396
408
|
| `vir lint --strays` | free | Note files with no live DB row (retitle debris) |
|
|
397
409
|
| `vir lint --strays --fix` | free | Move retitle debris to `archived/` (only when a live copy exists) |
|
|
@@ -415,6 +427,23 @@ run `vir <command> --help` for the full flag list. `vir query --json` and
|
|
|
415
427
|
`vir doctor --json` are the machine contracts the
|
|
416
428
|
[vir-obsidian](https://github.com/djolex999/vir-obsidian) plugin consumes.
|
|
417
429
|
|
|
430
|
+
## Use vir from any agent (skill)
|
|
431
|
+
|
|
432
|
+
vir ships an [Agent Skills](https://agentskills.io) skill that teaches Claude
|
|
433
|
+
Code, Codex, Cursor and other skill-aware agents to check your notes before
|
|
434
|
+
they work: search with `vir query --json` (free, no LLM call), cite the notes
|
|
435
|
+
they use, and verify them against the current code.
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
npx skills add djolex999/vir
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
The skill is read-only. It never writes your notes, never runs paid commands
|
|
442
|
+
like `vir run` unless you ask, and if vir isn't installed it tells you how to
|
|
443
|
+
set it up instead of installing it. It prefers the MCP server when that's
|
|
444
|
+
registered, and falls back to reading the notes folder directly. Source:
|
|
445
|
+
[`skills/vir/SKILL.md`](skills/vir/SKILL.md).
|
|
446
|
+
|
|
418
447
|
## MCP server (Claude Code integration)
|
|
419
448
|
|
|
420
449
|
Vir runs as an MCP server, letting Claude Code consult your vault mid-session
|
package/dist/claude/updater.js
CHANGED
|
@@ -1,15 +1,68 @@
|
|
|
1
1
|
import { chmodSync, existsSync, readdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
+
import { ruleText } from "../connect/text.js";
|
|
4
5
|
import { kebab } from "../pipeline/writer.js";
|
|
5
6
|
export const VIR_START = "<!-- VIR:START -->";
|
|
6
7
|
export const VIR_END = "<!-- VIR:END -->";
|
|
7
8
|
const TOP_N_PER_CATEGORY = 5;
|
|
8
|
-
|
|
9
|
+
// Which CLAUDE.md a rule's scope lands in, limited to the targets planUpdates
|
|
10
|
+
// builds this run (a project with no distilled notes has no plan).
|
|
11
|
+
function ruleTarget(scope, options, projectSlugs) {
|
|
12
|
+
if (scope === "global")
|
|
13
|
+
return options.project ? null : globalClaudePath();
|
|
14
|
+
if (!scope.startsWith("project:") || options.globalOnly)
|
|
15
|
+
return null;
|
|
16
|
+
const slug = scope.slice("project:".length);
|
|
17
|
+
if (options.project && slug !== options.project)
|
|
18
|
+
return null;
|
|
19
|
+
return projectSlugs.has(slug) ? projectClaudePath(slug) : null;
|
|
20
|
+
}
|
|
21
|
+
function projectSlugsOf(rows) {
|
|
22
|
+
return new Set(rows.map((r) => kebab(r.project)).filter((s) => s.length > 0));
|
|
23
|
+
}
|
|
24
|
+
// Accepted rules not yet promoted or declined, one per target — each becomes
|
|
25
|
+
// its own y/n hunk in sync-claude. Never includes proposed or rejected rules.
|
|
26
|
+
export function planRules(db, options = {}) {
|
|
27
|
+
const slugs = projectSlugsOf(db.listDistilled());
|
|
28
|
+
const out = [];
|
|
29
|
+
for (const insight of db.listInsights()) {
|
|
30
|
+
if (insight.status !== "accepted" || insight.promotion !== "none")
|
|
31
|
+
continue;
|
|
32
|
+
const target = ruleTarget(insight.scope, options, slugs);
|
|
33
|
+
if (target !== null)
|
|
34
|
+
out.push({ target, insight });
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
export function renderRuleHunk(c) {
|
|
39
|
+
const sources = c.insight.evidence
|
|
40
|
+
.map((e) => `[[${e.citeSlug}]] (${e.project || "-"}, ${e.date.slice(0, 10)})`)
|
|
41
|
+
.join(", ");
|
|
42
|
+
return [`+ - rule: ${ruleText(c.insight.rule)}`, ` why: ${ruleText(c.insight.why)}`, ` sources: ${sources}`].join("\n");
|
|
43
|
+
}
|
|
44
|
+
export function planUpdates(_cfg, db, options = {},
|
|
45
|
+
// Rules approved interactively THIS run; rendered alongside promoted ones.
|
|
46
|
+
approvedRuleIds = new Set()) {
|
|
9
47
|
const rows = db.listDistilled();
|
|
10
48
|
const plans = [];
|
|
49
|
+
const slugs = projectSlugsOf(rows);
|
|
50
|
+
const rulesByTarget = new Map();
|
|
51
|
+
for (const ins of db.listInsights()) {
|
|
52
|
+
if (ins.status !== "accepted")
|
|
53
|
+
continue;
|
|
54
|
+
if (ins.promotion !== "promoted" && !(ins.promotion === "none" && approvedRuleIds.has(ins.id)))
|
|
55
|
+
continue;
|
|
56
|
+
const target = ruleTarget(ins.scope, options, slugs);
|
|
57
|
+
if (target === null)
|
|
58
|
+
continue;
|
|
59
|
+
const list = rulesByTarget.get(target) ?? [];
|
|
60
|
+
list.push({ id: ins.id, rule: ins.rule });
|
|
61
|
+
rulesByTarget.set(target, list);
|
|
62
|
+
}
|
|
11
63
|
if (!options.project) {
|
|
12
|
-
|
|
64
|
+
const target = globalClaudePath();
|
|
65
|
+
plans.push(buildPlan(target, rows, { scope: "global" }, rulesByTarget.get(target) ?? []));
|
|
13
66
|
}
|
|
14
67
|
if (options.globalOnly)
|
|
15
68
|
return plans;
|
|
@@ -29,13 +82,13 @@ export function planUpdates(_cfg, db, options = {}) {
|
|
|
29
82
|
}
|
|
30
83
|
for (const [slug, projectRows] of byProject) {
|
|
31
84
|
const target = projectClaudePath(slug);
|
|
32
|
-
plans.push(buildPlan(target, projectRows, { scope: { project: slug } }));
|
|
85
|
+
plans.push(buildPlan(target, projectRows, { scope: { project: slug } }, rulesByTarget.get(target) ?? []));
|
|
33
86
|
}
|
|
34
87
|
return plans;
|
|
35
88
|
}
|
|
36
|
-
function buildPlan(target, rows, meta) {
|
|
89
|
+
function buildPlan(target, rows, meta, rules = []) {
|
|
37
90
|
const entries = selectTopEntries(rows);
|
|
38
|
-
const newBlock = renderBlock(entries);
|
|
91
|
+
const newBlock = renderBlock(entries, rules);
|
|
39
92
|
const existsAtPath = existsSync(target);
|
|
40
93
|
let existingBlock = "";
|
|
41
94
|
let lastUpdated = null;
|
|
@@ -50,7 +103,14 @@ function buildPlan(target, rows, meta) {
|
|
|
50
103
|
}
|
|
51
104
|
}
|
|
52
105
|
const oldEntries = parseEntries(existingBlock);
|
|
53
|
-
const
|
|
106
|
+
const oldRules = parseRules(existingBlock);
|
|
107
|
+
const oldIds = new Set(oldRules.map((r) => r.id));
|
|
108
|
+
const newIds = new Set(rules.map((r) => r.id));
|
|
109
|
+
const diff = {
|
|
110
|
+
...computeDiff(oldEntries, entries),
|
|
111
|
+
rulesAdded: rules.filter((r) => !oldIds.has(r.id)),
|
|
112
|
+
rulesRemoved: oldRules.filter((r) => !newIds.has(r.id)),
|
|
113
|
+
};
|
|
54
114
|
return {
|
|
55
115
|
target,
|
|
56
116
|
exists: existsAtPath,
|
|
@@ -91,7 +151,7 @@ function selectTopEntries(rows) {
|
|
|
91
151
|
}
|
|
92
152
|
return out;
|
|
93
153
|
}
|
|
94
|
-
function renderBlock(entries) {
|
|
154
|
+
export function renderBlock(entries, rules = []) {
|
|
95
155
|
const today = new Date().toISOString().slice(0, 10);
|
|
96
156
|
const lines = [];
|
|
97
157
|
lines.push(VIR_START);
|
|
@@ -126,9 +186,25 @@ function renderBlock(entries) {
|
|
|
126
186
|
}
|
|
127
187
|
lines.push("");
|
|
128
188
|
}
|
|
189
|
+
if (rules.length > 0) {
|
|
190
|
+
lines.push("## Rules (from vir)");
|
|
191
|
+
lines.push("");
|
|
192
|
+
for (const r of rules)
|
|
193
|
+
lines.push(`- rule: ${ruleText(r.rule)} <!-- vir-rule:${r.id} -->`);
|
|
194
|
+
lines.push("");
|
|
195
|
+
}
|
|
129
196
|
lines.push(VIR_END);
|
|
130
197
|
return lines.join("\n");
|
|
131
198
|
}
|
|
199
|
+
function parseRules(block) {
|
|
200
|
+
const out = [];
|
|
201
|
+
for (const line of block.split("\n")) {
|
|
202
|
+
const m = line.match(/^- rule: (.+) <!-- vir-rule:([A-Za-z0-9-]+) -->$/);
|
|
203
|
+
if (m?.[1] !== undefined && m[2] !== undefined)
|
|
204
|
+
out.push({ id: m[2], rule: m[1] });
|
|
205
|
+
}
|
|
206
|
+
return out;
|
|
207
|
+
}
|
|
132
208
|
function extractBlock(raw) {
|
|
133
209
|
const start = raw.indexOf(VIR_START);
|
|
134
210
|
const end = raw.indexOf(VIR_END);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/claude/updater.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/claude/updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import confirm from "@inquirer/confirm";
|
|
2
|
+
import { loadConfig } from "../config.js";
|
|
3
|
+
import { runConnect } from "../connect/run.js";
|
|
4
|
+
import { computeCost, resolvePricing } from "../cost/pricing.js";
|
|
5
|
+
import { callLLM, maybeAnthropicClient, normalizeModelName, resolveModelShorthand, withRateLimitRetry, } from "../pipeline/distiller.js";
|
|
6
|
+
import { resolveActiveProviderCached } from "../search/provider.js";
|
|
7
|
+
import { StateDb } from "../state/db.js";
|
|
8
|
+
import * as ui from "../ui/display.js";
|
|
9
|
+
const VERIFY_MAX_TOKENS = 1200;
|
|
10
|
+
export function formatConnectSummary(s, dryRun, opts = {}) {
|
|
11
|
+
const lines = [`${s.lessons} lessons · ${s.clusters} clusters · ${s.candidates} candidates`];
|
|
12
|
+
const skipped = [];
|
|
13
|
+
if (s.unchanged > 0)
|
|
14
|
+
skipped.push(`${s.unchanged} unchanged`);
|
|
15
|
+
if (s.skippedRejected > 0)
|
|
16
|
+
skipped.push(`${s.skippedRejected} previously rejected`);
|
|
17
|
+
if (skipped.length > 0)
|
|
18
|
+
lines.push(`skipped: ${skipped.join(" · ")}`);
|
|
19
|
+
if (s.deferred > 0)
|
|
20
|
+
lines.push(`${s.deferred} deferred (connectMaxCandidates)`);
|
|
21
|
+
if (dryRun) {
|
|
22
|
+
const calls = s.candidates - s.deferred;
|
|
23
|
+
lines.push(opts.quota === true
|
|
24
|
+
? `${calls} LLM call(s) on your Claude Code subscription quota`
|
|
25
|
+
: s.estCostUsd === null
|
|
26
|
+
? `${calls} LLM call(s), cost unknown (no price for this model)`
|
|
27
|
+
: `up to $${s.estCostUsd.toFixed(2)} for ${calls} LLM call(s)`);
|
|
28
|
+
return lines;
|
|
29
|
+
}
|
|
30
|
+
const out = [`${s.proposed} proposed`, `${s.updated} updated`];
|
|
31
|
+
if (s.additionsFlagged > 0)
|
|
32
|
+
out.push(`${s.additionsFlagged} accepted rule(s) with new evidence`);
|
|
33
|
+
if (s.unverified > 0)
|
|
34
|
+
out.push(`${s.unverified} unverified`);
|
|
35
|
+
if (s.llmFailures > 0)
|
|
36
|
+
out.push(`${s.llmFailures} LLM failure(s)`);
|
|
37
|
+
lines.push(`${s.llmCalls} LLM call(s): ${out.join(" · ")}`);
|
|
38
|
+
if (s.keptRatios.length > 0)
|
|
39
|
+
lines.push(`kept ${s.keptRatios.map(([k, t]) => `${k}/${t}`).join(", ")}`);
|
|
40
|
+
if (s.proposed + s.updated + s.additionsFlagged > 0)
|
|
41
|
+
lines.push("review them with: vir review --insights");
|
|
42
|
+
return lines;
|
|
43
|
+
}
|
|
44
|
+
export async function cmdConnect(opts) {
|
|
45
|
+
const cfg = loadConfig();
|
|
46
|
+
const db = new StateDb();
|
|
47
|
+
try {
|
|
48
|
+
const client = maybeAnthropicClient(cfg);
|
|
49
|
+
const model = normalizeModelName(resolveModelShorthand(cfg.models.distill), cfg.provider);
|
|
50
|
+
const deps = {
|
|
51
|
+
provider: await resolveActiveProviderCached(cfg.embeddingProvider),
|
|
52
|
+
llm: (prompt) => withRateLimitRetry(() => callLLM(cfg, client, { prompt, model, maxTokens: VERIFY_MAX_TOKENS, cost: { stage: "connect" } })),
|
|
53
|
+
model,
|
|
54
|
+
estimateCostUsd: (inTok, outTok) => cfg.provider === "claude-cli"
|
|
55
|
+
? 0
|
|
56
|
+
: resolvePricing(cfg.provider, model, cfg.pricing, cfg.kieTopUpTier) === null
|
|
57
|
+
? null
|
|
58
|
+
: computeCost(cfg.provider, model, inTok, outTok, cfg.pricing, cfg.kieTopUpTier),
|
|
59
|
+
now: () => new Date(),
|
|
60
|
+
};
|
|
61
|
+
ui.header(`connect${opts.dryRun ? " --dry-run" : ""}`);
|
|
62
|
+
ui.blank();
|
|
63
|
+
if (opts.reconsider !== undefined) {
|
|
64
|
+
if (opts.dryRun) {
|
|
65
|
+
const row = db.getInsightBySlug(opts.reconsider);
|
|
66
|
+
ui.line(ui.text(row === null
|
|
67
|
+
? ` no rule with slug ${opts.reconsider}`
|
|
68
|
+
: ` would reset ${opts.reconsider} (${row.status}, ${row.promotion}) to proposed — nothing written`));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
await runConnect(cfg, db, { dryRun: false, reconsider: opts.reconsider }, deps);
|
|
72
|
+
ui.row(ui.success(ui.CHECK), ui.text(`${opts.reconsider} is proposed again — vir review --insights`));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const preview = await runConnect(cfg, db, { dryRun: true }, deps);
|
|
76
|
+
const quota = cfg.provider === "claude-cli";
|
|
77
|
+
for (const l of formatConnectSummary(preview, true, { quota }))
|
|
78
|
+
ui.line(ui.text(` ${l}`));
|
|
79
|
+
if (opts.dryRun || preview.candidates === 0)
|
|
80
|
+
return;
|
|
81
|
+
if (opts.yes !== true) {
|
|
82
|
+
if (process.stdin.isTTY !== true) {
|
|
83
|
+
throw new Error("vir connect makes paid LLM calls — pass --yes to run it non-interactively");
|
|
84
|
+
}
|
|
85
|
+
const proceed = await confirm({ message: "Run the LLM calls now?", default: false });
|
|
86
|
+
if (!proceed) {
|
|
87
|
+
ui.line(ui.dim(" aborted"));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
ui.blank();
|
|
92
|
+
const result = await runConnect(cfg, db, { dryRun: false }, deps);
|
|
93
|
+
for (const l of formatConnectSummary(result, false, { quota }))
|
|
94
|
+
ui.line(ui.text(` ${l}`));
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
db.close();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/cli/connect.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAyC,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,UAAU,oBAAoB,CAClC,CAAiB,EACjB,MAAe,EACf,OAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC;IAC9D,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,sBAAsB,CAAC,CAAC;IACpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,kCAAkC,CAAC,CAAC;IAChF,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC;QACxC,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,KAAK,KAAK,IAAI;YACjB,CAAC,CAAC,GAAG,KAAK,qDAAqD;YAC/D,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI;gBACvB,CAAC,CAAC,GAAG,KAAK,sDAAsD;gBAChE,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CACjE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAgB,qCAAqC,CAAC,CAAC;IACjG,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,iBAAiB,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,iBAAiB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxG,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC3G,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAA8D;IAC7F,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAgB;YACxB,QAAQ,EAAE,MAAM,2BAA2B,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAClE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CACd,kBAAkB,CAAC,GAAG,EAAE,CACtB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAClG;YACH,KAAK;YACL,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACjC,GAAG,CAAC,QAAQ,KAAK,YAAY;gBAC3B,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;oBAC3E,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC;YACtF,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxD,EAAE,CAAC,KAAK,EAAE,CAAC;QAEX,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjD,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI;oBAC1B,CAAC,CAAC,uBAAuB,IAAI,CAAC,UAAU,EAAE;oBAC1C,CAAC,CAAC,iBAAiB,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,iCAAiC,CAAC,CAAC,CAAC;gBACzG,OAAO;YACT,CAAC;YACD,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;YAChF,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,4CAA4C,CAAC,CAAC,CAAC;YACtG,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO;QAEpD,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;QACH,CAAC;QACD,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
package/dist/cli/initConfig.js
CHANGED
|
@@ -31,6 +31,8 @@ export function buildInitConfig(existing, a) {
|
|
|
31
31
|
// Wizard-silent key (0.16.0): without this carry-over a re-init would
|
|
32
32
|
// silently reset a user's logQueries:false back to the zod default.
|
|
33
33
|
logQueries: existing?.logQueries,
|
|
34
|
+
// Wizard-silent connect-pass knob.
|
|
35
|
+
connectMaxCandidates: existing?.connectMaxCandidates,
|
|
34
36
|
projects: { ...existing?.projects, ...a.projects },
|
|
35
37
|
notifications: existing?.notifications,
|
|
36
38
|
workflowTranscripts: existing?.workflowTranscripts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../../src/cli/initConfig.ts"],"names":[],"mappings":"AAuBA,iEAAiE;AACjE,0EAA0E;AAC1E,0EAA0E;AAC1E,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAC7B,QAAuB,EACvB,CAAc;IAEd,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,0EAA0E;QAC1E,4EAA4E;QAC5E,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,QAAQ,EAAE,eAAe;QAC/D,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS;QAC7C,YAAY,EAAE,QAAQ,EAAE,YAAY;QACpC,SAAS,EAAE,QAAQ,EAAE,SAAS;QAC9B,OAAO,EAAE,QAAQ,EAAE,OAAO;QAC1B,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,eAAe,EAAE,QAAQ,EAAE,eAAe;QAC1C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,WAAW,EAAE,QAAQ,EAAE,WAAW;QAClC,eAAe,EAAE,QAAQ,EAAE,eAAe;QAC1C,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;QAChD,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,iBAAiB;QACjB,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;QAC9C,sEAAsE;QACtE,oEAAoE;QACpE,UAAU,EAAE,QAAQ,EAAE,UAAU;QAChC,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE;QAClD,aAAa,EAAE,QAAQ,EAAE,aAAa;QACtC,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB;QAClD,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,QAAQ,EAAE,gBAAgB;QAClE,MAAM,EAAE;YACN,QAAQ,EAAE,CAAC,CAAC,aAAa;YACzB,OAAO,EAAE,CAAC,CAAC,YAAY;YACvB,yEAAyE;YACzE,mEAAmE;YACnE,qEAAqE;YACrE,WAAW,EACT,QAAQ,EAAE,MAAM,EAAE,WAAW;gBAC7B,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK;oBACnB,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,2BAA2B,CAAC;YAClC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,IAAI,IAAI;gBAC5C,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"initConfig.js","sourceRoot":"","sources":["../../src/cli/initConfig.ts"],"names":[],"mappings":"AAuBA,iEAAiE;AACjE,0EAA0E;AAC1E,0EAA0E;AAC1E,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAC7B,QAAuB,EACvB,CAAc;IAEd,OAAO;QACL,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,0EAA0E;QAC1E,4EAA4E;QAC5E,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,QAAQ,EAAE,eAAe;QAC/D,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,QAAQ,EAAE,SAAS;QAC7C,YAAY,EAAE,QAAQ,EAAE,YAAY;QACpC,SAAS,EAAE,QAAQ,EAAE,SAAS;QAC9B,OAAO,EAAE,QAAQ,EAAE,OAAO;QAC1B,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,eAAe,EAAE,QAAQ,EAAE,eAAe;QAC1C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,WAAW,EAAE,QAAQ,EAAE,WAAW;QAClC,eAAe,EAAE,QAAQ,EAAE,eAAe;QAC1C,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;QAChD,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,iBAAiB;QACjB,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;QAC9C,sEAAsE;QACtE,oEAAoE;QACpE,UAAU,EAAE,QAAQ,EAAE,UAAU;QAChC,mCAAmC;QACnC,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB;QACpD,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE;QAClD,aAAa,EAAE,QAAQ,EAAE,aAAa;QACtC,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB;QAClD,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,QAAQ,EAAE,gBAAgB;QAClE,MAAM,EAAE;YACN,QAAQ,EAAE,CAAC,CAAC,aAAa;YACzB,OAAO,EAAE,CAAC,CAAC,YAAY;YACvB,yEAAyE;YACzE,mEAAmE;YACnE,qEAAqE;YACrE,WAAW,EACT,QAAQ,EAAE,MAAM,EAAE,WAAW;gBAC7B,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK;oBACnB,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,2BAA2B,CAAC;YAClC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,IAAI,IAAI;gBAC5C,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function insightCounts(rows) {
|
|
2
|
+
return {
|
|
3
|
+
proposed: rows.filter((r) => r.status === "proposed").length,
|
|
4
|
+
accepted: rows.filter((r) => r.status === "accepted").length,
|
|
5
|
+
awaiting: rows.filter((r) => r.status === "accepted" && r.promotion === "none").length,
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function renderInsightsLine(c) {
|
|
9
|
+
if (c.proposed + c.accepted === 0)
|
|
10
|
+
return null;
|
|
11
|
+
return `insights: ${c.proposed} proposed · ${c.accepted} accepted · ${c.awaiting} awaiting CLAUDE.md approval`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=insightsStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insightsStatus.js","sourceRoot":"","sources":["../../src/cli/insightsStatus.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,aAAa,CAAC,IAAkB;IAC9C,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM;QAC5D,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM;QAC5D,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,MAAM;KACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAgB;IACjD,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,aAAa,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,QAAQ,8BAA8B,CAAC;AACjH,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import select from "@inquirer/select";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { collectLessons } from "../connect/extract.js";
|
|
5
|
+
import { INSIGHTS_RULES_DIR, parseRuleEdit, writeInsightFile } from "../connect/insightFile.js";
|
|
6
|
+
import { MIN_SESSIONS } from "../connect/qualify.js";
|
|
7
|
+
import { ruleText } from "../connect/text.js";
|
|
8
|
+
import { embedNoteWithProvider, resolveActiveProviderCached } from "../search/provider.js";
|
|
9
|
+
import { vaultRoot } from "../search/retriever.js";
|
|
10
|
+
import * as ui from "../ui/display.js";
|
|
11
|
+
import { openInEditor } from "./review.js";
|
|
12
|
+
function load(db, slug) {
|
|
13
|
+
const row = db.getInsightBySlug(slug);
|
|
14
|
+
if (row === null)
|
|
15
|
+
throw new Error(`no rule with slug ${slug}`);
|
|
16
|
+
return row;
|
|
17
|
+
}
|
|
18
|
+
function save(db, cfg, row) {
|
|
19
|
+
db.upsertInsight(row);
|
|
20
|
+
writeInsightFile(vaultRoot(cfg), row);
|
|
21
|
+
return row;
|
|
22
|
+
}
|
|
23
|
+
async function accept(db, cfg, row, deps) {
|
|
24
|
+
const next = save(db, cfg, { ...row, status: "accepted", updatedAt: deps.now().toISOString() });
|
|
25
|
+
const vec = await deps.embed(`${next.rule}\n${next.why}`);
|
|
26
|
+
if (vec !== null && deps.providerModel !== null) {
|
|
27
|
+
db.setInsightEmbedding(next.id, vec, { model: deps.providerModel, dim: vec.length });
|
|
28
|
+
}
|
|
29
|
+
return next;
|
|
30
|
+
}
|
|
31
|
+
export async function applyInsightAction(db, cfg, slug, action, deps) {
|
|
32
|
+
const row = load(db, slug);
|
|
33
|
+
const now = deps.now().toISOString();
|
|
34
|
+
switch (action) {
|
|
35
|
+
case "accept":
|
|
36
|
+
return accept(db, cfg, row, deps);
|
|
37
|
+
case "reject":
|
|
38
|
+
return save(db, cfg, {
|
|
39
|
+
...row,
|
|
40
|
+
status: "rejected",
|
|
41
|
+
promotion: row.promotion === "promoted" ? "declined" : row.promotion,
|
|
42
|
+
evidenceChanged: false,
|
|
43
|
+
pending: null,
|
|
44
|
+
updatedAt: now,
|
|
45
|
+
});
|
|
46
|
+
case "accept-additions": {
|
|
47
|
+
const add = row.pending ?? [];
|
|
48
|
+
const evidence = [...row.evidence, ...add];
|
|
49
|
+
const sessions = [...new Set([...row.memberSessionIds, ...add.map((e) => e.sessionId)])];
|
|
50
|
+
const dates = evidence.map((e) => e.date).filter((d) => Number.isFinite(Date.parse(d))).sort();
|
|
51
|
+
return save(db, cfg, {
|
|
52
|
+
...row,
|
|
53
|
+
evidence,
|
|
54
|
+
memberSessionIds: sessions,
|
|
55
|
+
sessions: sessions.length,
|
|
56
|
+
sources: [...new Set(evidence.map((e) => e.citeSlug))],
|
|
57
|
+
firstSeen: dates[0] ?? row.firstSeen,
|
|
58
|
+
lastSeen: dates[dates.length - 1] ?? row.lastSeen,
|
|
59
|
+
evidenceChanged: false,
|
|
60
|
+
pending: null,
|
|
61
|
+
updatedAt: now,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
case "keep":
|
|
65
|
+
return save(db, cfg, { ...row, evidenceChanged: false, pending: null, updatedAt: now });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// The owner edits only the **Rule:** and **Why:** lines; the DB stays the
|
|
69
|
+
// source of truth and the file is re-rendered from it.
|
|
70
|
+
export async function applyInsightEdit(db, cfg, slug, editedRaw, deps) {
|
|
71
|
+
const row = load(db, slug);
|
|
72
|
+
const parsed = parseRuleEdit(editedRaw);
|
|
73
|
+
if (parsed === null)
|
|
74
|
+
throw new Error("edited file has no **Rule:** line — nothing changed");
|
|
75
|
+
return accept(db, cfg, { ...row, rule: parsed.rule, why: parsed.why || row.why }, deps);
|
|
76
|
+
}
|
|
77
|
+
export function insightQueue(db) {
|
|
78
|
+
const all = db.listInsights();
|
|
79
|
+
const proposed = all
|
|
80
|
+
.filter((r) => r.status === "proposed")
|
|
81
|
+
.sort((a, b) => b.lastSeen.localeCompare(a.lastSeen));
|
|
82
|
+
const changed = all.filter((r) => r.status === "accepted" && r.evidenceChanged);
|
|
83
|
+
return [...proposed, ...changed];
|
|
84
|
+
}
|
|
85
|
+
// Derived on display, never stored: an accepted rule whose source notes were
|
|
86
|
+
// rejected or deleted until fewer than MIN_SESSIONS remain.
|
|
87
|
+
export function isStale(row, liveSessions) {
|
|
88
|
+
return row.memberSessionIds.filter((s) => liveSessions.has(s)).length < MIN_SESSIONS;
|
|
89
|
+
}
|
|
90
|
+
export async function runReviewInsights(cfg, db, io) {
|
|
91
|
+
const queue = insightQueue(db);
|
|
92
|
+
const live = io.liveSessions();
|
|
93
|
+
let acted = 0;
|
|
94
|
+
for (const [i, row] of queue.entries()) {
|
|
95
|
+
const changed = row.status === "accepted";
|
|
96
|
+
io.show(`[${i + 1}/${queue.length}] ${changed ? "accepted rule, new evidence" : "proposed rule"} · ${row.scope} · ${row.sessions} sessions`);
|
|
97
|
+
if (changed && isStale(row, live))
|
|
98
|
+
io.show("stale: fewer than 3 of its source sessions still have notes");
|
|
99
|
+
io.show(`Rule: ${ruleText(row.rule)}`);
|
|
100
|
+
io.show(`Why: ${ruleText(row.why)}`);
|
|
101
|
+
for (const e of changed ? (row.pending ?? []) : row.evidence) {
|
|
102
|
+
io.show(` [[${e.citeSlug}]] (${e.project || "-"}, ${e.date.slice(0, 10)}): ${JSON.stringify(e.quote)}`);
|
|
103
|
+
}
|
|
104
|
+
const choices = changed ? ["accept-additions", "keep", "reject", "skip"] : ["accept", "edit", "reject", "skip"];
|
|
105
|
+
const answer = await io.ask(changed ? "Add the new evidence?" : "Is this rule true?", choices);
|
|
106
|
+
if (answer === "skip")
|
|
107
|
+
continue;
|
|
108
|
+
if (answer === "edit") {
|
|
109
|
+
const raw = await io.edit(join(vaultRoot(cfg), INSIGHTS_RULES_DIR, `${row.slug}.md`));
|
|
110
|
+
await applyInsightEdit(db, cfg, row.slug, raw, io);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
await applyInsightAction(db, cfg, row.slug, answer, io);
|
|
114
|
+
}
|
|
115
|
+
acted += 1;
|
|
116
|
+
}
|
|
117
|
+
return acted;
|
|
118
|
+
}
|
|
119
|
+
// Interactive `vir review --insights`: real prompts, $EDITOR, live sessions
|
|
120
|
+
// from the vault, and rule embeddings through the active provider.
|
|
121
|
+
export async function cmdReviewInsights(cfg, db) {
|
|
122
|
+
const provider = await resolveActiveProviderCached(cfg.embeddingProvider);
|
|
123
|
+
ui.header("review --insights");
|
|
124
|
+
ui.blank();
|
|
125
|
+
if (insightQueue(db).length === 0) {
|
|
126
|
+
ui.line(ui.dim(" no proposed rules — run vir connect to look for some"));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const acted = await runReviewInsights(cfg, db, {
|
|
130
|
+
ask: (message, choices) => select({ message, choices: choices.map((value) => ({ name: value, value })) }),
|
|
131
|
+
show: (text) => ui.line(ui.text(text)),
|
|
132
|
+
edit: async (filePath) => {
|
|
133
|
+
if (!openInEditor(filePath))
|
|
134
|
+
throw new Error("could not start $EDITOR");
|
|
135
|
+
return readFileSync(filePath, "utf8");
|
|
136
|
+
},
|
|
137
|
+
liveSessions: () => new Set(collectLessons(vaultRoot(cfg)).map((l) => l.sessionId)),
|
|
138
|
+
embed: async (text) => (provider === null ? null : embedNoteWithProvider(provider, text)),
|
|
139
|
+
providerModel: provider?.modelName ?? null,
|
|
140
|
+
now: () => new Date(),
|
|
141
|
+
});
|
|
142
|
+
ui.blank();
|
|
143
|
+
ui.line(ui.dim(` ${acted} rule(s) decided — accepted rules go to CLAUDE.md only via vir sync-claude`));
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=reviewInsights.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewInsights.js","sourceRoot":"","sources":["../../src/cli/reviewInsights.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,SAAS,IAAI,CAAC,EAAW,EAAE,IAAY;IACrC,MAAM,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,EAAW,EAAE,GAAW,EAAE,GAAe;IACrD,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACtB,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,EAAW,EAAE,GAAW,EAAE,GAAe,EAAE,IAAuB;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAChD,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAAW,EACX,GAAW,EACX,IAAY,EACZ,MAAqB,EACrB,IAAuB;IAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;gBACnB,GAAG,GAAG;gBACN,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS;gBACpE,eAAe,EAAE,KAAK;gBACtB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/F,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;gBACnB,GAAG,GAAG;gBACN,QAAQ;gBACR,gBAAgB,EAAE,QAAQ;gBAC1B,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACtD,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS;gBACpC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ;gBACjD,eAAe,EAAE,KAAK;gBACtB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,uDAAuD;AACvD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAW,EACX,GAAW,EACX,IAAY,EACZ,SAAiB,EACjB,IAAuB;IAEvB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAW;IACtC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;SACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,6EAA6E;AAC7E,4DAA4D;AAC5D,MAAM,UAAU,OAAO,CAAC,GAAe,EAAE,YAAyB;IAChE,OAAO,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;AACvF,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,EAAW,EAAE,EAAmB;IACnF,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC;QAC1C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,eAAe,MAAM,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,QAAQ,WAAW,CAAC,CAAC;QAC7I,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;YAAE,EAAE,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC1G,EAAE,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7D,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAC/F,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS;QAChC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;YACtF,MAAM,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,kBAAkB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,MAAuB,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,EAAW;IAC9D,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1E,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE;QAC7C,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QACzG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxE,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzF,aAAa,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;QAC1C,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;KACtB,CAAC,CAAC;IACH,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,4EAA4E,CAAC,CAAC,CAAC;AAC1G,CAAC"}
|